<?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>113965</bug_id>
          
          <creation_ts>2013-04-04 14:57:05 -0700</creation_ts>
          <short_desc>Add interfaces and stubs for audio and video tracks</short_desc>
          <delta_ts>2013-09-25 21:53:32 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>79822</dependson>
    
    <dependson>113522</dependson>
    
    <dependson>114330</dependson>
          <blocked>113514</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Brendan Long">b.long</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>b.long</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>david.corvoysier</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>stephanepublic</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>869386</commentid>
    <comment_count>0</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-04 14:57:05 -0700</bug_when>
    <thetext>Add interfaces and stubs for audio and video tracks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869407</commentid>
    <comment_count>1</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 15:41:53 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Add interfaces and stubs for audio and video tracks

What does that mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869409</commentid>
    <comment_count>2</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-04 15:45:34 -0700</bug_when>
    <thetext>Sorry, I meant to upload a patch immediately after the bug was created, but I noticed something when I was looking through the diff and now I&apos;m waiting for the build to finish again.

I meant for this bug to be an AudioTrack/VideoTrack version of bug #60379.

I&apos;m also working on a GStreamer implementation, but it seemed like it would be easier to give you the generic (non-port specific) part first, then the GStreamer implementation. I can do it as one giant patch if you&apos;d prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869412</commentid>
    <comment_count>3</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-04 15:51:36 -0700</bug_when>
    <thetext>Basically, this patch will:

  * Add AudioTrack, AudioTrackPrivate, AudioTrackList, VideoTrack, VideoTrackPrivate, and VideoTrackList classes (with various clients).
  * Add IDL for the tracks and tracklists.
  * Add an AudioTrackList and VideoTrackList to HTMLMediaElment.

The classes are based on TextTrack, InbandTextTrack, TextTrackPrivate and TextTrackList. All audio and video tracks are in-band, so there&apos;s no need for an AudioTrack + InbandAudioTrack -- it&apos;s just called AudioTrack.

I hid it behind ENABLE_VIDEO_TRACK, like TextTracks are. I could create another feature define if that seems useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869418</commentid>
    <comment_count>4</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 15:58:05 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Sorry, I meant to upload a patch immediately after the bug was created, but I noticed something when I was looking through the diff and now I&apos;m waiting for the build to finish again.
&gt; 
&gt; I meant for this bug to be an AudioTrack/VideoTrack version of bug #60379.

Do you have a class diagram and design doc similar to what was referenced at [1]?

[1] https://bugs.webkit.org/show_bug.cgi?id=60379#c3

&gt; 
&gt; I&apos;m also working on a GStreamer implementation, but it seemed like it would be easier to give you the generic (non-port specific) part first, then the GStreamer implementation. I can do it as one giant patch if you&apos;d prefer.

The larger the patch the less likely it will get reviewed or reviewed in a timely manner. I would suggest you use a meta bug and then a number of blocking bugs that introduce small well defined patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869420</commentid>
    <comment_count>5</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 15:59:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Basically, this patch will:
&gt; 
&gt;   * Add AudioTrack, AudioTrackPrivate, AudioTrackList, VideoTrack, VideoTrackPrivate, and VideoTrackList classes (with various clients).
&gt;   * Add IDL for the tracks and tracklists.
&gt;   * Add an AudioTrackList and VideoTrackList to HTMLMediaElment.
&gt; 
&gt; The classes are based on TextTrack, InbandTextTrack, TextTrackPrivate and TextTrackList. All audio and video tracks are in-band, so there&apos;s no need for an AudioTrack + InbandAudioTrack -- it&apos;s just called AudioTrack.

Are you sure that MSE won&apos;t introduce/entail a need for out-of-band audio tracks in order to do late binding?

&gt; 
&gt; I hid it behind ENABLE_VIDEO_TRACK, like TextTracks are. I could create another feature define if that seems useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869436</commentid>
    <comment_count>6</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-04 16:18:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Are you sure that MSE won&apos;t introduce/entail a need for out-of-band audio tracks in order to do late binding?

What is MSE?

We will need to be able to dynamically add in-band audio and video tracks, but they will all come from the MediaPlayer. There&apos;s no concept of out-of-band audio and video tracks in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869439</commentid>
    <comment_count>7</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-04 16:21:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Do you have a class diagram and design doc similar to what was referenced at [1]?
&gt; 
&gt; [1] https://bugs.webkit.org/show_bug.cgi?id=60379#c3

I&apos;ll look into making those. The changes I&apos;m making are basically identical to the ones for text tracks (but they&apos;re simpler since I don&apos;t need to deal with cues or parsing WebVTT).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869440</commentid>
    <comment_count>8</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 16:21:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Are you sure that MSE won&apos;t introduce/entail a need for out-of-band audio tracks in order to do late binding?
&gt; 
&gt; What is MSE?
&gt; 
&gt; We will need to be able to dynamically add in-band audio and video tracks, but they will all come from the MediaPlayer. There&apos;s no concept of out-of-band audio and video tracks in the spec.

Please review MSE [1] to make certain.

[1] https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869457</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-04 16:50:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; 
&gt; Are you sure that MSE won&apos;t introduce/entail a need for out-of-band audio tracks in order to do late binding?
&gt; 
No, this is to implement an existing part of the spec, media.audioTracks and media.videoTracks [1]. Anything required for MSE will have to be added to that spec, and will be part of that feature.

[1] http://dev.w3.org/html5/spec-author-view/video.html#media-resources-with-multiple-media-tracks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869466</commentid>
    <comment_count>10</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 17:00:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; 
&gt; &gt; Are you sure that MSE won&apos;t introduce/entail a need for out-of-band audio tracks in order to do late binding?
&gt; &gt; 
&gt; No, this is to implement an existing part of the spec, media.audioTracks and media.videoTracks [1]. Anything required for MSE will have to be added to that spec, and will be part of that feature.
&gt; 
&gt; [1] http://dev.w3.org/html5/spec-author-view/video.html#media-resources-with-multiple-media-tracks

OK. I just wanted to make sure we were not making an assumption (about always in-band) that was going to be reverted in short order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869484</commentid>
    <comment_count>11</comment_count>
      <attachid>196560</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-04 17:34:21 -0700</bug_when>
    <thetext>Created attachment 196560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869485</commentid>
    <comment_count>12</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-04 17:37:21 -0700</bug_when>
    <thetext>This patch won&apos;t build in QtWebKit without the changes in bug #113522. Should I just include them in this patch for review purposes? It&apos;s just basic things like adding TextTrack.cpp to Target.pri and making the runtimeEnabledFeature able to be enabled in Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869495</commentid>
    <comment_count>13</comment_count>
      <attachid>196560</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 18:12:42 -0700</bug_when>
    <thetext>Comment on attachment 196560
Patch

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

&gt; Source/WebCore/ChangeLog:9


How about test(s) for presence of the JS signatures introduced here?

&gt; Source/WebCore/ChangeLog:12
&gt; +        * Target.pri:

Where is build support for other platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869496</commentid>
    <comment_count>14</comment_count>
      <attachid>196560</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 18:12:46 -0700</bug_when>
    <thetext>Comment on attachment 196560
Patch

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

&gt; Source/WebCore/ChangeLog:9


How about test(s) for presence of the JS signatures introduced here?

&gt; Source/WebCore/ChangeLog:12
&gt; +        * Target.pri:

Where is build support for other platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869497</commentid>
    <comment_count>15</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 18:13:37 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 196560 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196560&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; 
&gt; 
&gt; How about test(s) for presence of the JS signatures introduced here?
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        * Target.pri:
&gt; 
&gt; Where is build support for other platforms?

Ignore this duplicate set of comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869499</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-04 18:15:00 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; This patch won&apos;t build in QtWebKit without the changes in bug #113522. Should I just include them in this patch for review purposes? It&apos;s just basic things like adding TextTrack.cpp to Target.pri and making the runtimeEnabledFeature able to be enabled in Qt.

No, you should just reattach the patch once bug #113522 has landed so the bots can use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869501</commentid>
    <comment_count>17</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 18:18:23 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; This patch won&apos;t build in QtWebKit without the changes in bug #113522. Should I just include them in this patch for review purposes? It&apos;s just basic things like adding TextTrack.cpp to Target.pri and making the runtimeEnabledFeature able to be enabled in Qt.

For record keeping, also add 113522 to the &quot;Depend on&quot; field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869503</commentid>
    <comment_count>18</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-04 18:21:21 -0700</bug_when>
    <thetext>Also, when you upload a patch, you might want to use:

webkit-patch upload --no-review

And then add the r? flag only after the patch is building/testing properly on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869512</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-04 19:33:28 -0700</bug_when>
    <thetext>I won&apos;t have a chance to look at this in detail before next week, but a high level comment is that it makes me sad to see so much boilerplate code duplicated in all three *Track class. Would it be possible to have all three Track types share a base class? If so, you may also be able to have a single mediaPlayerDidAdd*Track, mediaPlayerDidRemove*Track, etc. 

It may also be possible to have the *TrackPrivate classes share a base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870785</commentid>
    <comment_count>20</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-08 08:20:30 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Would it be possible to have all three Track types share a base class?

The track classes already share a TrackBase class. I think it has most of their shared code. Looking into this more closely made me realize that TrackBase extends EventTarget, but AudioTrack and VideoTrack aren&apos;t EventTargets, so fixing that should simplify things a little bit.

I&apos;m also looking at making a TrackListBase since their interfaces are extremely similar. I might be able to make a TrackList&lt;T&gt; class that has almost all of the code in it.

&gt; If so, you may also be able to have a single mediaPlayerDidAdd*Track, mediaPlayerDidRemove*Track, etc. 

Do you mean just having a mediaPlayerDidAddTrack(TrackBase)? I could look into that. 

&gt; It may also be possible to have the *TrackPrivate classes share a base class.

I&apos;ll look into that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871133</commentid>
    <comment_count>21</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-08 13:12:48 -0700</bug_when>
    <thetext>When making the template for TrackListBase&lt;T&gt;, should I:

  * Include templated member functions in TrackListBase.h

Or

  * Define TrackListBase&lt;AudioTrack&gt;, TrackListBase&lt;TextTrack&gt; and TrackListBase&lt;VideoTrack&gt; at the end of TrackListBase.cpp

There&apos;s not a lot of templated classes in WebKit so I&apos;m not sure what the preferred version is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871151</commentid>
    <comment_count>22</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-08 13:55:39 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; When making the template for TrackListBase&lt;T&gt;, should I:
&gt; 
&gt;   * Include templated member functions in TrackListBase.h
&gt; 
&gt; Or
&gt; 
&gt;   * Define TrackListBase&lt;AudioTrack&gt;, TrackListBase&lt;TextTrack&gt; and TrackListBase&lt;VideoTrack&gt; at the end of TrackListBase.cpp
&gt; 
&gt; There&apos;s not a lot of templated classes in WebKit so I&apos;m not sure what the preferred version is.

Please don&apos;t use a templated base class. (In reply to comment #21)
&gt; When making the template for TrackListBase&lt;T&gt;, should I:
&gt; 
&gt;   * Include templated member functions in TrackListBase.h
&gt; 
&gt; Or
&gt; 
&gt;   * Define TrackListBase&lt;AudioTrack&gt;, TrackListBase&lt;TextTrack&gt; and TrackListBase&lt;VideoTrack&gt; at the end of TrackListBase.cpp
&gt; 
&gt; There&apos;s not a lot of templated classes in WebKit so I&apos;m not sure what the preferred version is.

While I haven&apos;t seen your proposed templated base class yet, it seems like it will be much more complicated than it has to be.  Why not just make a (non templated) TrackListBase, where all the methods take TrackBase* arguments, add specialized {Video,Audio,Text}TrackList classes with non-virtual index accessors, and add &quot;ASSERT(type() == VideoTrack)&quot; checks where necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871153</commentid>
    <comment_count>23</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-08 13:59:17 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Please don&apos;t use a templated base class.

Let me quickly expand on this: templated container classes make sense when the template arguments are unrelated, e.g. Vector&lt;int&gt; and Vector&lt;String&gt;.  But when the set of possible arguments are all similar types (e.g., VideoTrack, AudioTrack, and TextTrack all derive from TrackBase), using a templated container is usually the wrong solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871155</commentid>
    <comment_count>24</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-08 14:01:58 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; While I haven&apos;t seen your proposed templated base class yet, it seems like it will be much more complicated than it has to be.  Why not just make a (non templated) TrackListBase, where all the methods take TrackBase* arguments, add specialized {Video,Audio,Text}TrackList classes with non-virtual index accessors, and add &quot;ASSERT(type() == VideoTrack)&quot; checks where necessary?

Ok, I&apos;ll do it that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871357</commentid>
    <comment_count>25</comment_count>
      <attachid>196979</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-08 18:38:09 -0700</bug_when>
    <thetext>Created attachment 196979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871362</commentid>
    <comment_count>26</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-08 18:47:02 -0700</bug_when>
    <thetext>This patch:

  * Moved as much code as I could into TrackListBase (not templated). This makes TextTrackList slightly more complicated, but audio and video track lists are much simpler.
  * Made TextTrack extend EventTarget instead of TrackBase. AudioTrack and VideoTrack are not EventTargets.

I looked at the *TrackPrivate classes, but they don&apos;t really share any code. Would it be worth it to make them inherit from something just so we could have fewer callbacks? In the callback we&apos;d need to immediately cast them back to their real type.

One thing worth looking at is the JS*Custom files, since I don&apos;t really understand how these work. I based these on JSTextTrackCustom and JSTextTrackListCustom, but I&apos;m not sure if they&apos;re necessary.

I&apos;ll at at adding this to other ports now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871369</commentid>
    <comment_count>27</comment_count>
      <attachid>196979</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-08 19:13:15 -0700</bug_when>
    <thetext>Comment on attachment 196979
Patch

Attachment 196979 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17690003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871372</commentid>
    <comment_count>28</comment_count>
      <attachid>196979</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-08 19:24:07 -0700</bug_when>
    <thetext>Comment on attachment 196979
Patch

Attachment 196979 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17616007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871376</commentid>
    <comment_count>29</comment_count>
      <attachid>196979</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-08 19:28:17 -0700</bug_when>
    <thetext>Comment on attachment 196979
Patch

Attachment 196979 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17686006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871418</commentid>
    <comment_count>30</comment_count>
      <attachid>196990</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-08 21:18:47 -0700</bug_when>
    <thetext>Created attachment 196990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871421</commentid>
    <comment_count>31</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-08 21:20:22 -0700</bug_when>
    <thetext>This should theoretically make EFL and GTK builds work, but I can&apos;t get EFL to build at all on Fedora, and I got started on GTK too late. I&apos;ll try to figure out the Mac version tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871426</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-08 21:39:59 -0700</bug_when>
    <thetext>I don&apos;t have time to do a proper review tonight, but this looks like it is definitely headed in the right direction!

I think it would be useful to split the refactoring out into a separate patch from the new functionality. This will make it much easier to review, but I suspect it will make it easier to figure out build issues on the various bots as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871428</commentid>
    <comment_count>33</comment_count>
      <attachid>196990</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-08 21:47:09 -0700</bug_when>
    <thetext>Comment on attachment 196990
Patch

Attachment 196990 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17603014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871429</commentid>
    <comment_count>34</comment_count>
      <attachid>196990</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-08 21:48:10 -0700</bug_when>
    <thetext>Comment on attachment 196990
Patch

Attachment 196990 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17643015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871445</commentid>
    <comment_count>35</comment_count>
      <attachid>196990</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-08 22:05:34 -0700</bug_when>
    <thetext>Comment on attachment 196990
Patch

Attachment 196990 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17700016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871525</commentid>
    <comment_count>36</comment_count>
      <attachid>196979</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-09 00:31:43 -0700</bug_when>
    <thetext>Comment on attachment 196979
Patch

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

I found some time to do a review.  Overall it looks really good, but I&apos;d like to see more functionality moved into TrackBase, leaving only those things which are truly different across Track types in each subclass.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3022
&gt; +    m_audioTracks-&gt;remove(track);

What happens when someone calls removeAudioTrack() before calling addAudioTrack()?  Should that be an ASSERT(), or should it be an early return?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3038
&gt; +    m_videoTracks-&gt;remove(track);

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3046
&gt; +    for (int i = m_audioTracks-&gt;length() - 1; i &gt;= 0; --i) {

I see why you&apos;re doing it this way, but it still seems awkward.  How about:

while (m_audioTracks-&gt;length())
  removeAudioTrack(m_audioTracks-&gt;itemAt(0));

It would be even easier if there were a convenience &quot;lastItem()&quot; or &quot;firstItem()&quot; method on TrackListBase.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3073
&gt; +    for (int i = m_videoTracks-&gt;length() - 1; i &gt;= 0; --i) {
&gt; +        VideoTrack* track = m_videoTracks-&gt;item(i);
&gt; +        removeVideoTrack(track);

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.h:56
&gt; +class AudioTrackList;

Shouldn&apos;t this be in the #if ENABLE(VIDEO_TRACK)?

&gt; Source/WebCore/html/HTMLMediaElement.h:65
&gt; +class VideoTrackList;

Ditto.

&gt; Source/WebCore/html/track/AudioTrack.cpp:152
&gt; +void AudioTrack::setKind(const AtomicString&amp; kind)
&gt; +{
&gt; +    String oldKind = m_kind;
&gt; +
&gt; +    if (isValidKindKeyword(kind))
&gt; +        m_kind = kind;
&gt; +    else
&gt; +        m_kind = &quot;&quot;;
&gt; +}

It seems like this can be moved into TrackBase, since it&apos;s identical to the code in VideoTrack.cpp.

&gt; Source/WebCore/html/track/AudioTrack.cpp:169
&gt; +int AudioTrack::inbandTrackIndex()
&gt; +{
&gt; +    ASSERT(m_private);
&gt; +    return m_private-&gt;audioTrackIndex();
&gt; +}

This too can get moved into TrackBase.  Just move the m_trackIndex member variable from TextTrack to TrackBase and set the value in the AudioTrack&apos;s constructor.

&gt; Source/WebCore/html/track/AudioTrack.h:58
&gt; +    AtomicString id() const { return m_id; }
&gt; +    void setId(const AtomicString&amp; id) { m_id = id; }

This is common across Audio and VideoTracks, but not TextTracks.  I&apos;d move it up into TrackBase anyway.

&gt; Source/WebCore/html/track/AudioTrack.h:61
&gt; +    AtomicString kind() const { return m_kind; }
&gt; +    void setKind(const AtomicString&amp;);

Move up into TrackBase().

&gt; Source/WebCore/html/track/AudioTrack.h:69
&gt; +    static bool isValidKindKeyword(const AtomicString&amp;);

Turn this into a virtual method, which overrides a pure virtual in TrackBase.

&gt; Source/WebCore/html/track/AudioTrack.h:75
&gt; +    AtomicString label() const { return m_label; }
&gt; +    void setLabel(const AtomicString&amp; label) { m_label = label; }
&gt; +
&gt; +    AtomicString language() const { return m_language; }
&gt; +    void setLanguage(const AtomicString&amp; language) { m_language = language; }

These are all common across track types, so move this up.

&gt; Source/WebCore/html/track/AudioTrack.h:83
&gt; +    int inbandTrackIndex();

Ditto.

&gt; Source/WebCore/html/track/AudioTrack.h:92
&gt; +    AtomicString m_id;
&gt; +    AtomicString m_kind;
&gt; +    AtomicString m_label;
&gt; +    AtomicString m_language;

Ditto.

&gt; Source/WebCore/html/track/VideoTrack.cpp:152
&gt; +void VideoTrack::setKind(const AtomicString&amp; kind)
&gt; +{
&gt; +    String oldKind = m_kind;
&gt; +
&gt; +    if (isValidKindKeyword(kind))
&gt; +        m_kind = kind;
&gt; +    else
&gt; +        m_kind = &quot;&quot;;
&gt; +}

Move into TrackBase.

&gt; Source/WebCore/html/track/VideoTrack.cpp:169
&gt; +int VideoTrack::inbandTrackIndex()
&gt; +{
&gt; +    ASSERT(m_private);
&gt; +    return m_private-&gt;videoTrackIndex();
&gt; +}

Ditto.

&gt; Source/WebCore/html/track/VideoTrack.h:61
&gt; +    AtomicString id() const { return m_id; }
&gt; +    void setId(const AtomicString&amp; id) { m_id = id; }
&gt; +
&gt; +    AtomicString kind() const { return m_kind; }
&gt; +    void setKind(const AtomicString&amp;);

Ditto.

&gt; Source/WebCore/html/track/VideoTrack.h:75
&gt; +    AtomicString label() const { return m_label; }
&gt; +    void setLabel(const AtomicString&amp; label) { m_label = label; }
&gt; +
&gt; +    AtomicString language() const { return m_language; }
&gt; +    void setLanguage(const AtomicString&amp; language) { m_language = language; }

Ditto.

&gt; Source/WebCore/html/track/VideoTrack.h:83
&gt; +    int inbandTrackIndex();

Ditto.

&gt; Source/WebCore/html/track/VideoTrack.h:92
&gt; +    AtomicString m_id;
&gt; +    AtomicString m_kind;
&gt; +    AtomicString m_label;
&gt; +    AtomicString m_language;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871947</commentid>
    <comment_count>37</comment_count>
      <attachid>197143</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 10:37:12 -0700</bug_when>
    <thetext>Created attachment 197143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871958</commentid>
    <comment_count>38</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 10:56:15 -0700</bug_when>
    <thetext>If I didn&apos;t comment on part of this, it means I did it and have nothing to say besides &quot;done&quot;.

(In reply to comment #36)
&gt; I found some time to do a review.  Overall it looks really good, but I&apos;d like to see more functionality moved into TrackBase, leaving only those things which are truly different across Track types in each subclass.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3022
&gt; &gt; +    m_audioTracks-&gt;remove(track);
&gt; 
&gt; What happens when someone calls removeAudioTrack() before calling addAudioTrack()?  Should that be an ASSERT(), or should it be an early return?

I&apos;m not really sure. I&apos;m not familiar with WebKit&apos;s style when handling this yet. Currently, there&apos;s no way for JavaScript to remove any kind of track (per the spec, no remove method, even for added tracks), so right now an ASSERT would probably be fine. I assume someone will eventually realize that it should be possible to remove tracks though, but there probably won&apos;t be a way to remove audio and video tracks.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3046
&gt; &gt; +    for (int i = m_audioTracks-&gt;length() - 1; i &gt;= 0; --i) {
&gt; 
&gt; I see why you&apos;re doing it this way, but it still seems awkward.  How about:
&gt; 
&gt; while (m_audioTracks-&gt;length())
&gt;   removeAudioTrack(m_audioTracks-&gt;itemAt(0));

I changed it to:

while (unsigned length = m_audioTracks-&gt;length())
    removeAudioTrack(m_audioTracks-&gt;item(length - 1));

Does that work?

Since the removeAll*Tracks() methods are all called at the same time (in clearMediaPlayer(), I&apos;m considering if it would be better to just make it removeAllInbandTracks() again and have it remove all three types of tracks.

&gt; &gt; Source/WebCore/html/track/AudioTrack.cpp:169
&gt; &gt; +int AudioTrack::inbandTrackIndex()
&gt; &gt; +{
&gt; &gt; +    ASSERT(m_private);
&gt; &gt; +    return m_private-&gt;audioTrackIndex();
&gt; &gt; +}
&gt; 
&gt; This too can get moved into TrackBase.  Just move the m_trackIndex member variable from TextTrack to TrackBase and set the value in the AudioTrack&apos;s constructor.

This is actually different in TextTracks vs Audio/VideoTrack, since TextTracks aren&apos;t necessarily in-band. I could create an InbandTrackBase for InbandTextTrack, AudioTrack and VideoTrack to extend, but I&apos;m not sure if you want me to go that far.

TextTrack&apos;s trackIndex() does something different (to be honest, I don&apos;t know why the text tracks know their own index in the TextTrackList, but existing code uses it so I assume it&apos;s there for a reason).

&gt; &gt; Source/WebCore/html/track/AudioTrack.h:58
&gt; &gt; +    AtomicString id() const { return m_id; }
&gt; &gt; +    void setId(const AtomicString&amp; id) { m_id = id; }
&gt; 
&gt; This is common across Audio and VideoTracks, but not TextTracks.  I&apos;d move it up into TrackBase anyway.

I&apos;d really prefer not to. I think it would be confusing in the future for TextTrack to have an id() function when it&apos;s not supposed to. I can do this though if you think it&apos;s necessary.

&gt; &gt; Source/WebCore/html/track/AudioTrack.h:69
&gt; &gt; +    static bool isValidKindKeyword(const AtomicString&amp;);
&gt; 
&gt; Turn this into a virtual method, which overrides a pure virtual in TrackBase.

I did this, but it caused some complication because in TextTrack, it&apos;s used as a static method in HTMLMediaElement:

    // 1. If kind is not one of the following strings, then throw a SyntaxError exception and abort these steps
    if (!TextTrack::isValidKindKeyword(kind)) {
        ec = SYNTAX_ERR;
        return 0;
    }

Audio and video tracks won&apos;t need to do this though, so it worked fine. I had to name the virtual method isValidKindKeywordProtected() because it couldn&apos;t have the same name as the static function. I doubt that&apos;s what I should name it though. Any suggestions?

&gt; I think it would be useful to split the refactoring out into a separate patch from the new functionality. This will make it much easier to review, but I suspect it will make it easier to figure out build issues on the various bots as well.

I&apos;ll look into it. There&apos;s a big list of commits at this point so it&apos;ll take time to rearrange it.

---

I also want to mention the TextTrackPrivate/AudioTrackPrivate/VideoTrackPrivate classes. I could create a TrackPrivateBase class, but those classes don&apos;t actually share any functionality except the label() and language() functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871965</commentid>
    <comment_count>39</comment_count>
      <attachid>197143</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-09 11:04:28 -0700</bug_when>
    <thetext>Comment on attachment 197143
Patch

Attachment 197143 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17711022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871966</commentid>
    <comment_count>40</comment_count>
      <attachid>197147</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 11:06:42 -0700</bug_when>
    <thetext>Created attachment 197147
Patch

This should fix the CMake build (I missed some cpp files)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871976</commentid>
    <comment_count>41</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-09 11:21:28 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; If I didn&apos;t comment on part of this, it means I did it and have nothing to say besides &quot;done&quot;.
&gt; 
&gt; (In reply to comment #36)
&gt; &gt; I found some time to do a review.  Overall it looks really good, but I&apos;d like to see more functionality moved into TrackBase, leaving only those things which are truly different across Track types in each subclass.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3022
&gt; &gt; &gt; +    m_audioTracks-&gt;remove(track);
&gt; &gt; 
&gt; &gt; What happens when someone calls removeAudioTrack() before calling addAudioTrack()?  Should that be an ASSERT(), or should it be an early return?
&gt; 
&gt; I&apos;m not really sure. I&apos;m not familiar with WebKit&apos;s style when handling this yet. Currently, there&apos;s no way for JavaScript to remove any kind of track (per the spec, no remove method, even for added tracks), so right now an ASSERT would probably be fine. I assume someone will eventually realize that it should be possible to remove tracks though, but there probably won&apos;t be a way to remove audio and video tracks.

Sounds like you need an ASSERT here then.

&gt; &gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3046
&gt; &gt; &gt; +    for (int i = m_audioTracks-&gt;length() - 1; i &gt;= 0; --i) {
&gt; &gt; 
&gt; &gt; I see why you&apos;re doing it this way, but it still seems awkward.  How about:
&gt; &gt; 
&gt; &gt; while (m_audioTracks-&gt;length())
&gt; &gt;   removeAudioTrack(m_audioTracks-&gt;itemAt(0));
&gt; 
&gt; I changed it to:
&gt; 
&gt; while (unsigned length = m_audioTracks-&gt;length())
&gt;     removeAudioTrack(m_audioTracks-&gt;item(length - 1));
&gt; 
&gt; Does that work?
&gt; 
&gt; Since the removeAll*Tracks() methods are all called at the same time (in clearMediaPlayer(), I&apos;m considering if it would be better to just make it removeAllInbandTracks() again and have it remove all three types of tracks.

That does seem better. :)

&gt; &gt; &gt; Source/WebCore/html/track/AudioTrack.cpp:169
&gt; &gt; &gt; +int AudioTrack::inbandTrackIndex()
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    ASSERT(m_private);
&gt; &gt; &gt; +    return m_private-&gt;audioTrackIndex();
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; This too can get moved into TrackBase.  Just move the m_trackIndex member variable from TextTrack to TrackBase and set the value in the AudioTrack&apos;s constructor.
&gt; 
&gt; This is actually different in TextTracks vs Audio/VideoTrack, since TextTracks aren&apos;t necessarily in-band. I could create an InbandTrackBase for InbandTextTrack, AudioTrack and VideoTrack to extend, but I&apos;m not sure if you want me to go that far.
&gt; 
&gt; TextTrack&apos;s trackIndex() does something different (to be honest, I don&apos;t know why the text tracks know their own index in the TextTrackList, but existing code uses it so I assume it&apos;s there for a reason).

Right, but you could move the member into TrackBase and leave the code which modifies it in TextTrack.

&gt; &gt; &gt; Source/WebCore/html/track/AudioTrack.h:58
&gt; &gt; &gt; +    AtomicString id() const { return m_id; }
&gt; &gt; &gt; +    void setId(const AtomicString&amp; id) { m_id = id; }
&gt; &gt; 
&gt; &gt; This is common across Audio and VideoTracks, but not TextTracks.  I&apos;d move it up into TrackBase anyway.
&gt; 
&gt; I&apos;d really prefer not to. I think it would be confusing in the future for TextTrack to have an id() function when it&apos;s not supposed to. I can do this though if you think it&apos;s necessary.

Eh, that&apos;s fine.

&gt; &gt; &gt; Source/WebCore/html/track/AudioTrack.h:69
&gt; &gt; &gt; +    static bool isValidKindKeyword(const AtomicString&amp;);
&gt; &gt; 
&gt; &gt; Turn this into a virtual method, which overrides a pure virtual in TrackBase.
&gt; 
&gt; I did this, but it caused some complication because in TextTrack, it&apos;s used as a static method in HTMLMediaElement:
&gt; 
&gt;     // 1. If kind is not one of the following strings, then throw a SyntaxError exception and abort these steps
&gt;     if (!TextTrack::isValidKindKeyword(kind)) {
&gt;         ec = SYNTAX_ERR;
&gt;         return 0;
&gt;     }
&gt; 
&gt; Audio and video tracks won&apos;t need to do this though, so it worked fine. I had to name the virtual method isValidKindKeywordProtected() because it couldn&apos;t have the same name as the static function. I doubt that&apos;s what I should name it though. Any suggestions?

Ah, that&apos;s interesting. I&apos;d just call it &quot;isValidKind()&quot; and put it in protected: in TextBase and private: in all the subclasses.

&gt; &gt; I think it would be useful to split the refactoring out into a separate patch from the new functionality. This will make it much easier to review, but I suspect it will make it easier to figure out build issues on the various bots as well.
&gt; 
&gt; I&apos;ll look into it. There&apos;s a big list of commits at this point so it&apos;ll take time to rearrange it.
&gt; 
&gt; ---
&gt; 
&gt; I also want to mention the TextTrackPrivate/AudioTrackPrivate/VideoTrackPrivate classes. I could create a TrackPrivateBase class, but those classes don&apos;t actually share any functionality except the label() and language() functions.

Yeah, I guess there&apos;s an opportunity to make the graph more complicated and introduce an AudioVisualTrackBase.  Seems like the increase in boilerplate overwhelm the reduction in duplication though. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871978</commentid>
    <comment_count>42</comment_count>
      <attachid>197147</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-09 11:24:35 -0700</bug_when>
    <thetext>Comment on attachment 197147
Patch

Attachment 197147 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17676037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871982</commentid>
    <comment_count>43</comment_count>
      <attachid>197147</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-09 11:26:22 -0700</bug_when>
    <thetext>Comment on attachment 197147
Patch

Attachment 197147 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17711031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871988</commentid>
    <comment_count>44</comment_count>
      <attachid>197154</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 11:39:56 -0700</bug_when>
    <thetext>Created attachment 197154
Patch

Fix unused variable warning in EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871992</commentid>
    <comment_count>45</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-09 11:45:56 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; I think it would be useful to split the refactoring out into a separate patch from the new functionality. This will make it much easier to review, but I suspect it will make it easier to figure out build issues on the various bots as well.

I still think it would be helpful to split this into two patches, one for the refactoring of the existing code and another to add the new track types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872005</commentid>
    <comment_count>46</comment_count>
      <attachid>197154</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-09 12:07:37 -0700</bug_when>
    <thetext>Comment on attachment 197154
Patch

Attachment 197154 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17717029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872020</commentid>
    <comment_count>47</comment_count>
      <attachid>197154</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-09 12:19:59 -0700</bug_when>
    <thetext>Comment on attachment 197154
Patch

Attachment 197154 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17673059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872022</commentid>
    <comment_count>48</comment_count>
      <attachid>197154</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-09 12:26:00 -0700</bug_when>
    <thetext>Comment on attachment 197154
Patch

Attachment 197154 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17673052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872023</commentid>
    <comment_count>49</comment_count>
      <attachid>197158</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 12:26:40 -0700</bug_when>
    <thetext>Created attachment 197158
Patch

Fix some review issues and add to DerivedSources.make/cpp, JSBindingsAllInOne.cpp and UseJSC.make</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872033</commentid>
    <comment_count>50</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 12:48:48 -0700</bug_when>
    <thetext>Alright, I have no clue how to get WebKitGTK to generate the JS*.h files. It generates the .cpp ones now, so why not the .h&apos;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872041</commentid>
    <comment_count>51</comment_count>
      <attachid>197158</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-09 13:05:44 -0700</bug_when>
    <thetext>Comment on attachment 197158
Patch

Attachment 197158 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17713073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872044</commentid>
    <comment_count>52</comment_count>
      <attachid>197158</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-09 13:13:08 -0700</bug_when>
    <thetext>Comment on attachment 197158
Patch

Attachment 197158 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17722081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872577</commentid>
    <comment_count>53</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 21:09:11 -0700</bug_when>
    <thetext>I created bug #114330 so we can do the refactoring as one patch and the audio and video tracks as another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872589</commentid>
    <comment_count>54</comment_count>
      <attachid>197206</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 21:56:12 -0700</bug_when>
    <thetext>Created attachment 197206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872590</commentid>
    <comment_count>55</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-09 21:56:46 -0700</bug_when>
    <thetext>This new patch is much simpler, but it won&apos;t build until bug #114330 is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872957</commentid>
    <comment_count>56</comment_count>
      <attachid>197313</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-10 11:00:14 -0700</bug_when>
    <thetext>Created attachment 197313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875009</commentid>
    <comment_count>57</comment_count>
      <attachid>197896</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-12 15:42:48 -0700</bug_when>
    <thetext>Created attachment 197896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875013</commentid>
    <comment_count>58</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-12 15:46:01 -0700</bug_when>
    <thetext>I updated this patch based on comments in #114330:

  * Add toAudioTrack() and toVideoTrack()
  * Added some comments in the ChangeLog

There are only two things that concern me about this patch:

  * I&apos;m still not sure how to get the GTK and Mac builds to pick up the new .idl files.
  * I basically just copied the JS*Custom files and have no idea why they&apos;re necessary (but the build won&apos;t work without them).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875046</commentid>
    <comment_count>59</comment_count>
      <attachid>197896</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-12 16:45:19 -0700</bug_when>
    <thetext>Comment on attachment 197896
Patch

Attachment 197896 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/37192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875050</commentid>
    <comment_count>60</comment_count>
      <attachid>197896</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-12 16:53:31 -0700</bug_when>
    <thetext>Comment on attachment 197896
Patch

Attachment 197896 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/9038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875077</commentid>
    <comment_count>61</comment_count>
      <attachid>197896</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-12 17:45:06 -0700</bug_when>
    <thetext>Comment on attachment 197896
Patch

Attachment 197896 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/2203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875114</commentid>
    <comment_count>62</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-04-13 00:51:51 -0700</bug_when>
    <thetext>If you rebase the patch against trunk I can test it and fix the GTK build...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875160</commentid>
    <comment_count>63</comment_count>
      <attachid>197940</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-13 08:21:54 -0700</bug_when>
    <thetext>Created attachment 197940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875162</commentid>
    <comment_count>64</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-13 08:23:25 -0700</bug_when>
    <thetext>I rebased it again. Sorry, I didn&apos;t notice that the GTK build failed because the patch didn&apos;t apply.

I&apos;m also working on some tests, but almost all of them will fail at first because there&apos;s no way to add audio and video tracks by JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875169</commentid>
    <comment_count>65</comment_count>
      <attachid>197940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-13 09:11:03 -0700</bug_when>
    <thetext>Comment on attachment 197940
Patch

Attachment 197940 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/97171</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875181</commentid>
    <comment_count>66</comment_count>
      <attachid>197940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-13 09:38:11 -0700</bug_when>
    <thetext>Comment on attachment 197940
Patch

Attachment 197940 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/102202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875185</commentid>
    <comment_count>67</comment_count>
      <attachid>197940</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-04-13 09:51:49 -0700</bug_when>
    <thetext>Comment on attachment 197940
Patch

Attachment 197940 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/148155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875199</commentid>
    <comment_count>68</comment_count>
      <attachid>197940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-13 10:38:37 -0700</bug_when>
    <thetext>Comment on attachment 197940
Patch

Attachment 197940 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/143187</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875204</commentid>
    <comment_count>69</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-04-13 10:52:49 -0700</bug_when>
    <thetext>Add this in the webcore_built_sources variable of GNUmakefile.list.am

	DerivedSources/WebCore/JSAudioTrack.cpp \
	DerivedSources/WebCore/JSAudioTrack.h \
	DerivedSources/WebCore/JSVideoTrack.cpp \
	DerivedSources/WebCore/JSVideoTrack.h \
	DerivedSources/WebCore/JSVideoTrackList.cpp \
	DerivedSources/WebCore/JSVideoTrackList.h \</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875211</commentid>
    <comment_count>70</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-04-13 11:13:50 -0700</bug_when>
    <thetext>And:

	DerivedSources/WebCore/JSAudioTrackList.cpp \
	DerivedSources/WebCore/JSAudioTrackList.h \</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875400</commentid>
    <comment_count>71</comment_count>
      <attachid>198010</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-14 14:09:53 -0700</bug_when>
    <thetext>Created attachment 198010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875405</commentid>
    <comment_count>72</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-14 15:04:18 -0700</bug_when>
    <thetext>(In reply to comment #69)
&gt; Add this in the webcore_built_sources variable of GNUmakefile.list.am
&gt; 
&gt;     DerivedSources/WebCore/JSAudioTrack.cpp \
&gt;     DerivedSources/WebCore/JSAudioTrack.h \
&gt;     DerivedSources/WebCore/JSVideoTrack.cpp \
&gt;     DerivedSources/WebCore/JSVideoTrack.h \
&gt;     DerivedSources/WebCore/JSVideoTrackList.cpp \
&gt;     DerivedSources/WebCore/JSVideoTrackList.h \

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875412</commentid>
    <comment_count>73</comment_count>
      <attachid>198010</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-14 16:03:08 -0700</bug_when>
    <thetext>Comment on attachment 198010
Patch

Attachment 198010 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/74216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875414</commentid>
    <comment_count>74</comment_count>
      <attachid>198010</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-14 16:09:39 -0700</bug_when>
    <thetext>Comment on attachment 198010
Patch

Attachment 198010 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/28247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876018</commentid>
    <comment_count>75</comment_count>
      <attachid>198174</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-15 13:11:54 -0700</bug_when>
    <thetext>Created attachment 198174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876049</commentid>
    <comment_count>76</comment_count>
      <attachid>198174</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-15 14:00:27 -0700</bug_when>
    <thetext>Comment on attachment 198174
Patch

Attachment 198174 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/42437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876057</commentid>
    <comment_count>77</comment_count>
      <attachid>198185</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-15 14:10:23 -0700</bug_when>
    <thetext>Created attachment 198185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876080</commentid>
    <comment_count>78</comment_count>
      <attachid>198191</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-15 14:57:43 -0700</bug_when>
    <thetext>Created attachment 198191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876096</commentid>
    <comment_count>79</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-15 15:49:40 -0700</bug_when>
    <thetext>Somehow I&apos;m still missing somewhere where AudioTrackPrivate.h and TextTrackPrivate.h are supposed to be in the Xcode project..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876097</commentid>
    <comment_count>80</comment_count>
      <attachid>198191</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-15 15:51:17 -0700</bug_when>
    <thetext>Comment on attachment 198191
Patch

Attachment 198191 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/154437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876111</commentid>
    <comment_count>81</comment_count>
      <attachid>198191</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-15 16:08:16 -0700</bug_when>
    <thetext>Comment on attachment 198191
Patch

Attachment 198191 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/22257</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876167</commentid>
    <comment_count>82</comment_count>
      <attachid>198191</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-15 17:22:34 -0700</bug_when>
    <thetext>Comment on attachment 198191
Patch

Attachment 198191 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/132048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876555</commentid>
    <comment_count>83</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-16 08:23:40 -0700</bug_when>
    <thetext>I will fix the Mac build problems and update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876574</commentid>
    <comment_count>84</comment_count>
      <attachid>198336</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-16 09:19:42 -0700</bug_when>
    <thetext>Created attachment 198336
Updated to fix Mac builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876594</commentid>
    <comment_count>85</comment_count>
      <attachid>198336</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-16 10:13:53 -0700</bug_when>
    <thetext>Comment on attachment 198336
Updated to fix Mac builds.

Attachment 198336 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/71129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876605</commentid>
    <comment_count>86</comment_count>
      <attachid>198336</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-16 10:31:28 -0700</bug_when>
    <thetext>Comment on attachment 198336
Updated to fix Mac builds.

Attachment 198336 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/21297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876624</commentid>
    <comment_count>87</comment_count>
      <attachid>198336</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-16 11:16:50 -0700</bug_when>
    <thetext>Comment on attachment 198336
Updated to fix Mac builds.

Attachment 198336 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/169088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876722</commentid>
    <comment_count>88</comment_count>
      <attachid>198390</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-16 12:49:10 -0700</bug_when>
    <thetext>Created attachment 198390
Export VideoTrackPrivate.h in private framework headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877504</commentid>
    <comment_count>89</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-17 14:44:54 -0700</bug_when>
    <thetext>JSCustomIsReachable needs to be changed to CustomIsReachable after r148638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877536</commentid>
    <comment_count>90</comment_count>
      <attachid>198390</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-17 15:42:36 -0700</bug_when>
    <thetext>Comment on attachment 198390
Export VideoTrackPrivate.h in private framework headers.

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

&gt; Source/WebCore/bindings/js/JSAudioTrackCustom.cpp:47
&gt; +bool JSAudioTrackOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
&gt; +{
&gt; +    JSAudioTrack* jsAudioTrack = jsCast&lt;JSAudioTrack*&gt;(handle.get().asCell());
&gt; +    AudioTrack* audioTrack = static_cast&lt;AudioTrack*&gt;(jsAudioTrack-&gt;impl());\
&gt; +
&gt; +    // If the track has no custom properties, it is not reachable.
&gt; +    if (!jsAudioTrack-&gt;hasCustomProperties())
&gt; +        return false;
&gt; +
&gt; +    return visitor.containsOpaqueRoot(root(audioTrack));
&gt; +}

It&apos;s unnecessary to do this with a custom function.  Adding &quot;GenerateIsReachable&quot; in the IDL file will do the right thing here.

&gt; Source/WebCore/bindings/js/JSAudioTrackListCustom.cpp:54
&gt; +bool JSAudioTrackListOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
&gt; +{
&gt; +    JSAudioTrackList* jsAudioTrackList = jsCast&lt;JSAudioTrackList*&gt;(handle.get().asCell());
&gt; +    AudioTrackList* audioTrackList = static_cast&lt;AudioTrackList*&gt;(jsAudioTrackList-&gt;impl());
&gt; +
&gt; +    // If the list is firing event listeners, its wrapper is reachable because
&gt; +    // the wrapper is responsible for marking those event listeners.
&gt; +    if (audioTrackList-&gt;isFiringEventListeners())
&gt; +        return true;
&gt; +
&gt; +    // If the list has no event listeners and has no custom properties, it is not reachable.
&gt; +    if (!audioTrackList-&gt;hasEventListeners() &amp;&amp; !jsAudioTrackList-&gt;hasCustomProperties())
&gt; +        return false;
&gt; +
&gt; +    // It is reachable if the media element parent is reachable.
&gt; +    return visitor.containsOpaqueRoot(root(audioTrackList-&gt;owner()));
&gt; +}

This could be generated with &quot;GenerateIsReachable&quot;, if the generator was updated to add the &quot;isFiringEventListeners()&quot; check for classes which inherited from EventTarget. :-D

&gt; Source/WebCore/bindings/js/JSVideoTrackCustom.cpp:47
&gt; +bool JSVideoTrackOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
&gt; +{
&gt; +    JSVideoTrack* jsVideoTrack = jsCast&lt;JSVideoTrack*&gt;(handle.get().asCell());
&gt; +    VideoTrack* videoTrack = static_cast&lt;VideoTrack*&gt;(jsVideoTrack-&gt;impl());
&gt; +
&gt; +    // If the track has no custom properties, it is not reachable.
&gt; +    if (!jsVideoTrack-&gt;hasCustomProperties())
&gt; +        return false;
&gt; +
&gt; +    return visitor.containsOpaqueRoot(root(videoTrack));
&gt; +}

Ditto: &quot;GenerateIsReachable&quot;.

&gt; Source/WebCore/bindings/js/JSVideoTrackListCustom.cpp:54
&gt; +bool JSVideoTrackListOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
&gt; +{
&gt; +    JSVideoTrackList* jsVideoTrackList = jsCast&lt;JSVideoTrackList*&gt;(handle.get().asCell());
&gt; +    VideoTrackList* videoTrackList = static_cast&lt;VideoTrackList*&gt;(jsVideoTrackList-&gt;impl());
&gt; +
&gt; +    // If the list is firing event listeners, its wrapper is reachable because
&gt; +    // the wrapper is responsible for marking those event listeners.
&gt; +    if (videoTrackList-&gt;isFiringEventListeners())
&gt; +        return true;
&gt; +
&gt; +    // If the list has no event listeners and has no custom properties, it is not reachable.
&gt; +    if (!videoTrackList-&gt;hasEventListeners() &amp;&amp; !jsVideoTrackList-&gt;hasCustomProperties())
&gt; +        return false;
&gt; +
&gt; +    // It is reachable if the media element parent is reachable.
&gt; +    return visitor.containsOpaqueRoot(root(videoTrackList-&gt;owner()));
&gt; +}

Ditto with the generator change.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2828
&gt; +    RefPtr&lt;AudioTrack&gt; track = AudioTrack::create(this, prpTrack);
&gt; +
&gt; +    addAudioTrack(track.get());

This seems unfortunate.  If addAudioTrack took a PassRefPtr&lt;AudioTrack&gt;, this could be:

addAudioTrack(AudioTrack::create(this, prpTrack));

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2873
&gt; +    RefPtr&lt;VideoTrack&gt; track = VideoTrack::create(this, prpTrack);
&gt; +
&gt; +    addVideoTrack(track.get());

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2888
&gt; +    // This cast is safe because we created the AudioTrack with the AudioTrackPrivate
&gt; +    // passed to mediaPlayerDidAddAudioTrack.
&gt; +    RefPtr&lt;AudioTrack&gt; track = static_cast&lt;AudioTrack*&gt;(prpTrack-&gt;client());
&gt; +    if (!track)
&gt; +        return;

I still don&apos;t like this. There should be a better way to get from an AudioTrackPrivate to an AudioTrack.  Perhaps the notification needs to come through the AudioTrackPrivate, like so:

void AudioTrackPrivate::willBeRemoved()
{
  client()-&gt;willRemoveAudioTrackPrivate(this);
}

void AudioTrack::willRemoveAudioTrackPrivate(AudioTrackPrivate* trackPrivate)
{
  ASSERT(trackPrivate == m_private);
  mediaElement()-&gt;removeAudioTrack(this);
}

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2922
&gt; +    // This cast is safe because we created the VideoTrack with the VideoTrackPrivate
&gt; +    // passed to mediaPlayerDidAddVideoTrack.
&gt; +    RefPtr&lt;VideoTrack&gt; track = static_cast&lt;VideoTrack*&gt;(prpTrack-&gt;client());
&gt; +    if (!track)
&gt; +        return;

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3003
&gt; +void HTMLMediaElement::addAudioTrack(AudioTrack* track)

Since this is taking ownership, this could take a PassRefPtr&lt;AudioTrack&gt;.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3005
&gt; +    audioTracks()-&gt;append(track);

Add a null check: audioTracks() can return null if tracks are disabled at runtime.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3015
&gt; +void HTMLMediaElement::addVideoTrack(VideoTrack* track)

Ditto w.r.t. PassRefPtr.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3017
&gt; +    videoTracks()-&gt;append(track);

Ditto w.r.t null check.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3022
&gt; +    m_audioTracks-&gt;remove(track);

Ditto w.r.t. null check.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3039
&gt; +    m_videoTracks-&gt;remove(track);

Ditto w.r.t. null check.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3046
&gt; +        while (unsigned length = m_audioTracks-&gt;length())
&gt; +            removeAudioTrack(m_audioTracks-&gt;item(length - 1));

This would be a lot less confusing if AudioTrackList had a &quot;lastItem()&quot; method.  And the &quot;if&quot; could be rolled into the while:

while (m_audioTracks &amp;&amp; m_audioTracks-&gt;length())
  removeAudioTrack(m_audioTracks-&gt;lastItem());

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3060
&gt; +    if (m_videoTracks)
&gt; +        while (unsigned length = m_videoTracks-&gt;length())
&gt; +            removeVideoTrack(m_videoTracks-&gt;item(length - 1));

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.h:245
&gt; +    void addAudioTrack(AudioTrack*);
&gt;      void addTextTrack(TextTrack*);
&gt; +    void addVideoTrack(VideoTrack*);

As before, these can be PassRefPtrs.

&gt; Source/WebCore/html/track/AudioTrack.idl:29
&gt; +    JSCustomIsReachable

As before, this can be GenerateIsReachable.

&gt; Source/WebCore/html/track/AudioTrackList.idl:31
&gt; +    JSCustomIsReachable

With a change to the generator, this could be GenerateIsReachable.

&gt; Source/WebCore/html/track/VideoTrack.idl:29
&gt; +    JSCustomIsReachable

Ditto.

&gt; Source/WebCore/html/track/VideoTrackList.idl:31
&gt; +    JSCustomIsReachable

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877564</commentid>
    <comment_count>91</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-17 16:29:31 -0700</bug_when>
    <thetext>If I switch to GenerateIsReachable, I get these errors:

generated/JSAudioTrack.cpp: In member function &apos;virtual bool WebCore::JSAudioTrackOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt;, void*, JSC::SlotVisitor&amp;)&apos;:
generated/JSAudioTrack.cpp:233:18: error: &apos;root&apos; is not a member of &apos;WebCore&apos;
generated/JSVideoTrack.cpp: In member function &apos;virtual bool WebCore::JSVideoTrackOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt;, void*, JSC::SlotVisitor&amp;)&apos;:
generated/JSVideoTrack.cpp:233:18: error: &apos;root&apos; is not a member of &apos;WebCore&apos;

Even though root(AudioTrack*) and root(VideoTrack*) are unchanged and still in JS*TrackCustom.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877693</commentid>
    <comment_count>92</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-17 21:52:43 -0700</bug_when>
    <thetext>(In reply to comment #91)
&gt; If I switch to GenerateIsReachable, I get these errors:
&gt; 
&gt; generated/JSAudioTrack.cpp: In member function &apos;virtual bool WebCore::JSAudioTrackOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt;, void*, JSC::SlotVisitor&amp;)&apos;:
&gt; generated/JSAudioTrack.cpp:233:18: error: &apos;root&apos; is not a member of &apos;WebCore&apos;
&gt; generated/JSVideoTrack.cpp: In member function &apos;virtual bool WebCore::JSVideoTrackOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt;, void*, JSC::SlotVisitor&amp;)&apos;:
&gt; generated/JSVideoTrack.cpp:233:18: error: &apos;root&apos; is not a member of &apos;WebCore&apos;
&gt; 
&gt; Even though root(AudioTrack*) and root(VideoTrack*) are unchanged and still in JS*TrackCustom.h

Ah, yes, the generator won&apos;t add a #include &quot;JSAudioTrackCustom.h&quot; directive.  It will add a #include &quot;AudioTrack.h&quot;, so you could add the WebCore::root() declaration there, instead.

The relevant code in the generator is in Source/WebCore/bindings/js/CodeGeneratorJS.pm, line ~2648. It shows what the various directive parameters will generate.  One option that might make sense would be to have an element() accessor (in addition to mediaElement()) in TrackBase, and use &quot;GenerateIsReachable(ImplElementRoot)&quot;. 

The reason I&apos;m pushing for getting rid of the JS*TrackCustom files is that when improvements are made to the generator, classes with custom directives don&apos;t automatically benefit; they need to be improved manually, and they may just get forgotten about.  So it&apos;s best not to have custom directives unless strictly necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877695</commentid>
    <comment_count>93</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-17 21:55:37 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=114784 to track adding a generated &quot;isFiringEventListeners()&quot; check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878061</commentid>
    <comment_count>94</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-18 13:42:16 -0700</bug_when>
    <thetext>(In reply to comment #90)
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:2888
&gt; &gt; +    // This cast is safe because we created the AudioTrack with the AudioTrackPrivate
&gt; &gt; +    // passed to mediaPlayerDidAddAudioTrack.
&gt; &gt; +    RefPtr&lt;AudioTrack&gt; track = static_cast&lt;AudioTrack*&gt;(prpTrack-&gt;client());
&gt; &gt; +    if (!track)
&gt; &gt; +        return;
&gt; 
&gt; I still don&apos;t like this. There should be a better way to get from an AudioTrackPrivate to an AudioTrack.  Perhaps the notification needs to come through the AudioTrackPrivate, like so:
&gt; 
&gt; void AudioTrackPrivate::willBeRemoved()
&gt; {
&gt;   client()-&gt;willRemoveAudioTrackPrivate(this);
&gt; }
&gt; 
&gt; void AudioTrack::willRemoveAudioTrackPrivate(AudioTrackPrivate* trackPrivate)
&gt; {
&gt;   ASSERT(trackPrivate == m_private);
&gt;   mediaElement()-&gt;removeAudioTrack(this);
&gt; }

Is there any reason that the AudioTrackPrivate shouldn&apos;t know its parent AudioTrack? I could add AudioTrack* m_track (basically identical to m_client), then:

removeAudioTrack(privateTrack-&gt;audioTrack());

The only weird thing I can think of for this is that m_client and m_track would be the same object, so it&apos;s kind of weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878115</commentid>
    <comment_count>95</comment_count>
      <attachid>198774</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-18 15:29:52 -0700</bug_when>
    <thetext>Created attachment 198774
Updated based on review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878120</commentid>
    <comment_count>96</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-18 15:39:10 -0700</bug_when>
    <thetext>I&apos;m not able to obsolete the previous patch (I incorporated the changes to WebCore.xcodeproj).

Making root() work without the TrackCustom.h files was surprisingly difficult, but I was able to combine everything into root(TrackBase*), so that&apos;s nice.

I didn&apos;t notice that bug #114784 was finished, so I&apos;m including the changes related to that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878128</commentid>
    <comment_count>97</comment_count>
      <attachid>198774</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-18 16:00:07 -0700</bug_when>
    <thetext>Comment on attachment 198774
Updated based on review

Attachment 198774 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/116089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878133</commentid>
    <comment_count>98</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-18 16:10:58 -0700</bug_when>
    <thetext>To do the GenerateIsReachable change for the TrackList classes, I need bug #79822 to be commited. It has a reviewed change, so I&apos;m not sure why it&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878134</commentid>
    <comment_count>99</comment_count>
      <attachid>198774</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-18 16:13:41 -0700</bug_when>
    <thetext>Comment on attachment 198774
Updated based on review

Attachment 198774 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/96380</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878135</commentid>
    <comment_count>100</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-04-18 16:20:25 -0700</bug_when>
    <thetext>(In reply to comment #98)
&gt; To do the GenerateIsReachable change for the TrackList classes, I need bug #79822 to be commited. It has a reviewed change, so I&apos;m not sure why it&apos;s not.

I notice that bug 79822 failed to build on any EWS bot. In any case, someone (such as the reviewer) would need to set cq+ before it would be landed by the cq.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878142</commentid>
    <comment_count>101</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-18 16:55:07 -0700</bug_when>
    <thetext>(In reply to comment #100)
&gt; (In reply to comment #98)
&gt; &gt; To do the GenerateIsReachable change for the TrackList classes, I need bug #79822 to be commited. It has a reviewed change, so I&apos;m not sure why it&apos;s not.
&gt; 
&gt; I notice that bug 79822 failed to build on any EWS bot. In any case, someone (such as the reviewer) would need to set cq+ before it would be landed by the cq.

It will need to be rebaselined and run past the EWS bots again. I&apos;ll take that on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878533</commentid>
    <comment_count>102</comment_count>
      <attachid>198891</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-19 09:07:36 -0700</bug_when>
    <thetext>Created attachment 198891
Add UNUSED_PARAM to willRemove*TrackPrivate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878552</commentid>
    <comment_count>103</comment_count>
      <attachid>198891</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-19 10:08:32 -0700</bug_when>
    <thetext>Comment on attachment 198891
Add UNUSED_PARAM to willRemove*TrackPrivate

Attachment 198891 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/95389</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878570</commentid>
    <comment_count>104</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-19 10:54:13 -0700</bug_when>
    <thetext>(In reply to comment #103)
&gt; (From update of attachment 198891 [details])
&gt; Attachment 198891 [details] did not pass mac-ews (mac):
&gt; Output: http://webkit-queues.appspot.com/results/95389

InbandTextTrackPrivateClient.h needs to be add to the framework&apos;s private interfaces so it is visible to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878634</commentid>
    <comment_count>105</comment_count>
      <attachid>198913</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-19 13:39:27 -0700</bug_when>
    <thetext>Created attachment 198913
Generate isReachableFromOpaqueRoots() and fix mac build again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878668</commentid>
    <comment_count>106</comment_count>
      <attachid>198913</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-19 16:08:24 -0700</bug_when>
    <thetext>Comment on attachment 198913
Generate isReachableFromOpaqueRoots() and fix mac build again

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2889
&gt; +void HTMLMediaElement::mediaPlayerDidRemoveAudioTrack(PassRefPtr&lt;AudioTrackPrivate&gt; prpTrack)
&gt; +{
&gt; +    prpTrack-&gt;willBeRemoved();
&gt; +}
&gt; +
&gt; +void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(PassRefPtr&lt;InbandTextTrackPrivate&gt; prpTrack)
&gt; +{
&gt; +    prpTrack-&gt;willBeRemoved();
&gt; +}
&gt; +
&gt; +void HTMLMediaElement::mediaPlayerDidRemoveVideoTrack(PassRefPtr&lt;VideoTrackPrivate&gt; prpTrack)
&gt; +{
&gt; +    prpTrack-&gt;willBeRemoved();
&gt;  }

This looks much better.  It seems like, in theory, MediaPlayerPrivates could remove the middle-man and just call VideoTrackPrivate::willBeRemoved() directly, but there&apos;s nothing keeping both approaches from working with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878669</commentid>
    <comment_count>107</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-19 16:12:05 -0700</bug_when>
    <thetext>(In reply to comment #106)
It looks like I forgot to mark this as --request-commit. Should I mark it to be committed now? I assume review+ means it&apos;s good to go but I don&apos;t want to accidentally commit it if that wasn&apos;t the intention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878671</commentid>
    <comment_count>108</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-19 16:15:30 -0700</bug_when>
    <thetext>(In reply to comment #107)
&gt; (In reply to comment #106)
&gt; It looks like I forgot to mark this as --request-commit. Should I mark it to be committed now? I assume review+ means it&apos;s good to go but I don&apos;t want to accidentally commit it if that wasn&apos;t the intention.

Yes, r+ means that any committer is free to commit. You can mark it cq? if you don&apos;t have commit access and someone else can change it to cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878681</commentid>
    <comment_count>109</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-04-19 17:11:17 -0700</bug_when>
    <thetext>(In reply to comment #108)
&gt; (In reply to comment #107)
&gt; &gt; (In reply to comment #106)
&gt; &gt; It looks like I forgot to mark this as --request-commit. Should I mark it to be committed now? I assume review+ means it&apos;s good to go but I don&apos;t want to accidentally commit it if that wasn&apos;t the intention.
&gt; 
&gt; Yes, r+ means that any committer is free to commit. You can mark it cq? if you don&apos;t have commit access and someone else can change it to cq+.

I see. I had been assuming the commit bot was commiting anything that was r+ if it was cq?, but I see now that the reviewers set the cq+ also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878689</commentid>
    <comment_count>110</comment_count>
      <attachid>198913</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-19 18:02:00 -0700</bug_when>
    <thetext>Comment on attachment 198913
Generate isReachableFromOpaqueRoots() and fix mac build again

Clearing flags on attachment: 198913

Committed r148785: &lt;http://trac.webkit.org/changeset/148785&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196560</attachid>
            <date>2013-04-04 17:34:21 -0700</date>
            <delta_ts>2013-04-08 18:37:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130404183410.patch</filename>
            <type>text/plain</type>
            <size>112281</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ3MTQyZmYzMTQ2NzFk
M2I0ZDY3MWYwNGJlZDg3NTExNTE1Njc5NC4uMjk1NDczYTg2OWM2NTlmMzkxMTM3N2Y0MTNjNjA0
NWUyN2VhZTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzOSBAQAorMjAxMy0wNC0wNCAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CisKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp+QXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OnRyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbnZhbGlkYXRlVHJhY2tJ
bmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tDbGllbnQ6On5BdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKEF1ZGlv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9UcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
OjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tJbmRleCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChBdWRp
b1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6cmVtb3Zl
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoQXVk
aW9UcmFja0xpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQp
OgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6Cisg
ICAgICAgIChBdWRpb1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChB
dWRpb1RyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
TGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6
YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmludmFsaWRhdGVUcmFj
a0luZGV4KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0NsaWVudDo6flZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6Om1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRJZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldExhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xpc3QpOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChW
aWRlb1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6cmVt
b3ZlKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6
OmNvbnRhaW5zKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6CisgICAgICAgIChWaWRl
b1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlz
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Om93bmVy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQ6On5BdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChBdWRpb1RyYWNrUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjp+QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpraW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjppZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGU6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjphdWRpb1RyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6
OkF1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTA0LTA0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIxNDczNzMpOiBBdXRvLXNpemluZyBkb2Vzbid0IGFsd2F5cyByZXNwZWN0IG1pbmltdW0gd2lk
dGggY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJp
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IGRiZWNhNDcxYTdjNjFj
NzZjZjQyMDE1MTA4Njg1ODVmOTc3MjcyNGYuLjc5MDllMWFlNTFlM2E1Y2JjMTQ2OWNmNTcxNGE1
YmY1NDUxOWIzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTY1MiwxMSArNjUy
LDE1IEBAIGVuYWJsZT8oR0FNRVBBRCkgewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgIElE
TF9CSU5ESU5HUyArPSBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCisg
ICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwv
dHJhY2svVGV4dFRyYWNrLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
aWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAk
JFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNr
L1RyYWNrRXZlbnQuaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwK
KyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAogfQogCiBlbmFibGU/KE1F
RElBX1NPVVJDRSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggODY4MmVkYjkzYmQwMjc2Zjk0MGQ1ZDlhZTkz
NzZlM2ZlNmQ2Y2U1Yi4uMmIyMTJkYzQ2YWU2ZDYxYjgwODQzYzMxNDAzYzYxY2ZjMWJhNjIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC02ODYsNiArNjg2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAgXAogICAgIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgXAorICAgIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHAgXAogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAgXAogICAg
IGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgXAogICAgIGh0bWwvSGlkZGVuSW5wdXRU
eXBlLmNwcCBcCkBAIC03NzcsNiArNzc4LDEyIEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1NwaW5CdXR0b25F
bGVtZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cCBcCisgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBcCisgICAgaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5jcHAgXAorICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBcCisgICAgaHRt
bC90cmFjay9UcmFja0V2ZW50LmNwcCBcCisgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBc
CisgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgXAogICAgIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAgXAogICAgIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIFwK
ICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBcCkBAIC0xOTY5LDYgKzE5NzYsOCBAQCBIRUFE
RVJTICs9IFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmggXAogICAgIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHNBcHBsZS5oIFwKICAgICBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2Vy
Q29udHJvbC5oIFwKKyAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisgICAgaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5oIFwKICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwK
ICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggXAogICAgIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmggXApAQCAtMTk3OCw2ICsxOTg3LDggQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmggXAogICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogICAg
IGh0bWwvdHJhY2svVHJhY2tFdmVudC5oIFwKKyAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBc
CisgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKICAgICBodG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5oIFwKICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmggXAogICAgIGh0bWwvdHJh
Y2svV2ViVlRUVG9rZW5pemVyLmggXApAQCAtMjE5Miw2ICsyMjAzLDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIFwKICAgICBwbGF0
Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggXAogICAgIHBsYXRmb3Jt
L21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nw
dS9hcm0vZmlsdGVycy9ORU9OSGVscGVycy5oIFwKQEAgLTIzMTYsNiArMjMyOCw3IEBAIEhFQURF
UlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0
aW9ucy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRl
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmggXApAQCAtMzk4NiwxMyArMzk5OSwxOSBAQCBlbmFibGU/KEpBVkFT
Q1JJUFRfREVCVUdHRVIpIHsKIAogZW5hYmxlPyhWSURFT19UUkFDSykgewogICAgIFNPVVJDRVMg
Kz0gXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBcCisgICAgICAg
IGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmggXAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTVHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3Rv
bS5jcHAgXAotICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pT
VmlkZW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tM
aXN0Q3VzdG9tLmNwcAogfQogCiBlbmFibGU/KFdFQl9TT0NLRVRTKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MDkwOWYxNDY3YTVlZTAzZGIxY2Q1NWRiYmNmYTNlMTA4ZWQ2ZDdjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0N1c3RvbS5oIgorCisjaW5jbHVk
ZSAiSlNBdWRpb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworYm9vbCBKU0F1ZGlvVHJhY2tPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2sqIGpzQXVkaW9UcmFjayA9IGpzQ2FzdDxK
U0F1ZGlvVHJhY2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEF1ZGlvVHJhY2sqIGF1
ZGlvVHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4oanNBdWRpb1RyYWNrLT5pbXBsKCkp
OworCisgICAgLy8gSWYgdGhlIHRyYWNrIGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3
cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9u
c2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmIChhdWRpb1Ry
YWNrLT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0
b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWF1ZGlvVHJhY2st
Pmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVydGll
cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNrOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2ssICZzX2luZm8pOwor
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJU
KGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFjaywgdmlzaXRvcik7
CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+
KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChh
dWRpb1RyYWNrKSk7CisKKyAgICBhdWRpb1RyYWNrLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4
Y2RlM2IxNzIwZThkNmNjZmJkNjE1YzI1ZTNlM2M1NTI0ZTNkZDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKyNkZWZp
bmUgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKyNp
bmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCogcm9vdChBdWRpb1RyYWNrKiB0cmFjaykKK3sK
KyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhhcyBvbmUuCisg
ICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3QodHJhY2st
Pm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQsIHJldHVybiB0aGUg
dGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisKK30KKworI2VuZGlmCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2MTZiMGQ0YjhhYTkyOTQyMmYwNWFkNzU0OTMyNDA5YWEx
NmFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRp
b1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUg
IkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3Qg
PSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAg
QXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xp
c3QqPihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIGxpc3QgaXMg
ZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UK
KyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVu
dCBsaXN0ZW5lcnMuCisgICAgaWYgKGF1ZGlvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVu
ZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5v
IGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3Qg
cmVhY2hhYmxlLgorICAgIGlmICghYXVkaW9UcmFja0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkg
JiYgIWpzQXVkaW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50
IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVS
b290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBKU0F1ZGlvVHJh
Y2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNBdWRpb1RyYWNrTGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1
ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1
ZGlvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4oanNBdWRpb1RyYWNrTGlzdCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrTGlzdCog
YXVkaW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFj
a0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFj
a0xpc3QtPm93bmVyKCkpKTsKKyAgICBhdWRpb1RyYWNrTGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVu
ZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODU4MTY4NTNjZWM0ZDY0MjliMGE5Mjk3MjAxMWM4NjcxYzBlYmRlMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3Rv
bS5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tDdXN0b20uaCIK
KworI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBqc1ZpZGVvVHJhY2sg
PSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBWaWRl
b1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KGpzVmlkZW9UcmFj
ay0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSB0cmFjayBpcyBmaXJpbmcgZXZlbnQgbGlzdGVu
ZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFwcGVy
IGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBp
ZiAodmlkZW9UcmFjay0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIC8vIElmIHRoZSB0cmFjayBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBo
YXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCF2
aWRlb1RyYWNrLT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1ZpZGVvVHJhY2stPmhhc0N1c3Rv
bVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHZpc2l0
b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit2b2lkIEpTVmlk
ZW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpTVmlkZW9UcmFj
ayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrLCAm
c19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwor
ICAgIEFTU0VSVChqc1ZpZGVvVHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc1ZpZGVvVHJhY2ss
IHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRpY19jYXN0PFZp
ZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3QodmlkZW9UcmFjaykpOworCisgICAgdmlkZW9UcmFjay0+dmlzaXRKU0V2ZW50TGlz
dGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9t
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZTM3NWU1NjdlNmJhMzhhM2ZkNmQyYzk5NWFmMGMxY2RmNmFiM2RhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9t
LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTVmlkZW9UcmFja0N1c3Rv
bV9oCisjZGVmaW5lIEpTVmlkZW9UcmFja0N1c3RvbV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3Vz
dG9tLmgiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJvb3QoVmlkZW9UcmFjayog
dHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50J3Mgcm9vdCBpZiBpdCBo
YXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBy
b290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBtZWRpYSBlbGVtZW50LCBy
ZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOworfQorCit9CisKKyNlbmRp
ZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDk2NzEwZDYwOTMxMGM3ODcyYTdkZjQz
YjZjZGI0MzM1YjFkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1
ZGUgIkpTVmlkZW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
KyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVmlkZW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2tMaXN0KiBqc1ZpZGVv
VHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9UcmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PFZp
ZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlzdC0+aW1wbCgpKTsKKworICAgIC8vIElmIHRo
ZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJs
ZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcg
dGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmICh2aWRlb1RyYWNrTGlzdC0+aXNGaXJpbmdF
dmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRoZSBs
aXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywg
aXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIXZpZGVvVHJhY2tMaXN0LT5oYXNFdmVudExp
c3RlbmVycygpICYmICFqc1ZpZGVvVHJhY2tMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUgbWVk
aWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNvbnRh
aW5zT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7Cit9CisKK3ZvaWQg
SlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlkZW9UcmFja0xpc3QgPSBq
c0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoanNWaWRlb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1RyYWNrTGlzdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFja0xpc3QsIHZpc2l0b3IpOworCisgICAgVmlkZW9U
cmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihq
c1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7CisgICAgdmlkZW9UcmFja0xpc3QtPnZpc2l0SlNF
dmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggN2EyZTEwMGEwNTUwNTNiMGQ1NWI0
ZDFjOTc2YTUwY2U4MjE1ODkxOS4uNzRiZTZiN2E1OWQ4MTA5MzM2MzE4Y2NlNTUwZDZmZTQzOWRk
NDY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF1ZGlvQ29udGV4dDsKKyAgICBjbGFzcyBBdWRp
b1RyYWNrOwogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgRE9N
QXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBAIC02Nyw2ICs2OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTb3VyY2VCdWZmZXJMaXN0OwogICAgIGNs
YXNzIFRleHRUcmFjazsKICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7CisgICAgY2xhc3MgVmlkZW9U
cmFjazsKICAgICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV2ViS2l0TmFtZWRGbG93Owog
ICAgIGNsYXNzIFdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CmluZGV4IGEwYzAxNDQwY2NmYmY3OGE1ZTkyOWJiYWYzNmEwMzU5ZTk1MzI0MjYuLjkwYjhkNjlk
YWY1ODg3OTM3YTExZTg4ZTM4NjJkMDg2MDZkZjY1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMSw2ICsxLDggQEAKIG5hbWVzcGFjZT0iRXZlbnRUYXJn
ZXQiCiAKIEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0F1ZGlvVHJhY2sgY29u
ZGl0aW9uYWw9VklERU9fVFJBQ0sKK0F1ZGlvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RS
QUNLCiBCYXR0ZXJ5TWFuYWdlciBjb25kaXRpb25hbD1CQVRURVJZX1NUQVRVUwogRGVkaWNhdGVk
V29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBET01BcHBsaWNhdGlvbkNhY2hlCkBA
IC0zNyw2ICszOSw4IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKIFRleHRU
cmFjayBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNrQ3VlIGNvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLCiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCitWaWRlb1Ry
YWNrIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCitWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1W
SURFT19UUkFDSwogV2ViS2l0TmFtZWRGbG93CiBXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NP
Q0tFVFMKIFdvcmtlciBjb25kaXRpb25hbD1XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCA5ZjkwMDZmN2VmNDFhZDFmMjJjMDY2ODBiMDg3ZDVhODE5
Y2I5Y2YzLi4xZGJjZWE3MzBjZWQyNDM5ZGJhZDVkZTk3NGZhMDA2M2E0Njk0MjcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTk4LDYgKzk4LDggQEAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0
LmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNl
clByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUg
IkluYmFuZFRleHRUcmFjay5oIgpAQCAtMTA1LDYgKzEwNyw4IEBACiAjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKyNpbmNs
dWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElP
KQpAQCAtMjk1LDcgKzI5OSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX2hh
dmVWaXNpYmxlVGV4dFRyYWNrKGZhbHNlKQogICAgICwgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNo
YW5nZShmYWxzZSkKICAgICAsIG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWUoLTEpCisgICAgLCBt
X2F1ZGlvVHJhY2tzKDApCiAgICAgLCBtX3RleHRUcmFja3MoMCkKKyAgICAsIG1fdmlkZW9UcmFj
a3MoMCkKICAgICAsIG1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlKDApCiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQpAQCAtMzI5LDEyICszMzUsMjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6
fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKHRoaXMpOworICAgIGlmIChtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1f
YXVkaW9UcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYXVkaW9UcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX2F1ZGlvVHJh
Y2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOworICAgIH0KICAgICBpZiAobV90ZXh0VHJhY2tz
KQogICAgICAgICBtX3RleHRUcmFja3MtPmNsZWFyT3duZXIoKTsKICAgICBpZiAobV90ZXh0VHJh
Y2tzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxl
bmd0aCgpOyArK2kpCiAgICAgICAgICAgICBtX3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xp
ZW50KCk7CiAgICAgfQorICAgIGlmIChtX3ZpZGVvVHJhY2tzKSB7CisgICAgICAgIG1fdmlkZW9U
cmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dmlkZW9UcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLT5p
dGVtKGkpLT5jbGVhckNsaWVudCgpOworICAgIH0KICNlbmRpZgogCiAgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKQpAQCAtMTM1Miw2ICsxMzY4LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB9CiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJh
Y2sqIHRyYWNrKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNv
bnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAodHJhY2st
PnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7CkBAIC0xMzg2LDExICsx
NDA3LDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4
dFRyYWNrKiB0cmFjaykKICAgICBpZiAocGxhdGZvcm1UZXh0VHJhY2tNZW51KCkpCiAgICAgICAg
IHBsYXRmb3JtVGV4dFRyYWNrTWVudSgpLT50cmFja1dhc1NlbGVjdGVkKHRyYWNrLT5wbGF0Zm9y
bVRleHRUcmFjaygpKTsKICNlbmRpZgotICAgIAorCiAgICAgY29uZmlndXJlVGV4dFRyYWNrRGlz
cGxheSgpOwogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiB9
CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRl
b1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBXZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRp
YSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlzdAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRy
YWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSAmJiB0cmFjay0+a2lu
ZCgpICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0g
VGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKQpAQCAtMjc5NSw3ICsyODIxLDE3IEBAIGZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJh
Y2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gQXVkaW9UcmFjazo6Y3JlYXRlKEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBwcnBUcmFjayk7CisKKyAgICBh
ZGRBdWRpb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGU+IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyNywxMCArMjg2Mywz
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJhY2soUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPgogICAgIC8vIDkuIEZpcmUgYW4gZXZlbnQgd2l0
aCB0aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5j
ZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50CiAgICAgLy8gaW50ZXJmYWNlLCB3
aXRoIHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBU
ZXh0VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzCiAgICAgLy8gdGV4dFRyYWNr
cyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KLSAgICBhZGRUcmFjayh0ZXh0VHJh
Y2suZ2V0KCkpOworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+
IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFZpZGVvVHJh
Y2s+IHRyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCB0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRWaWRlb1RyYWNrKHRy
YWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJl
bW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7
CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0
aGUgQXVkaW9UcmFjayB3aXRoIHRoZSBBdWRpb1RyYWNrUHJpdmF0ZQorICAgIC8vIHBhc3NlZCB0
byBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2suCisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRy
YWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CisgICAg
aWYgKCF0cmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlQXVkaW9UcmFjayh0cmFj
ay5nZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1v
dmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykK
IHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MzksMTIgKzI5MDIsMjkgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBjYXN0IGlzIHNh
ZmUgYmVjYXVzZSB3ZSBjcmVhdGVkIHRoZSBJbmJhbmRUZXh0VHJhY2sgd2l0aCB0aGUgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZQotICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFRyYWNr
LgorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjay4KICAgICBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJh
Y2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOwogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByZW1vdmVUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIHJlbW92ZVRl
eHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRl
PiBwcnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV92aWRlb1Ry
YWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVz
ZSB3ZSBjcmVhdGVkIHRoZSBWaWRlb1RyYWNrIHdpdGggdGhlIFZpZGVvVHJhY2tQcml2YXRlCisg
ICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjay4KKyAgICBSZWZQdHI8
VmlkZW9UcmFjaz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4ocHJwVHJhY2stPmNs
aWVudCgpKTsKKyAgICBpZiAoIXRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVW
aWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKIH0KIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNL
X01FTlUpCkBAIC0yOTIzLDE0ICszMDAzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xv
c2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjphZGRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIGF1ZGlvVHJhY2tzKCktPmFw
cGVuZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFRl
eHRUcmFjayogdHJhY2spCiB7CiAgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2spOwogICAg
IAogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjphZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIHZpZGVvVHJhY2tz
KCktPmFwcGVuZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVk
aW9UcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUo
dHJhY2spOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0
VHJhY2sqIHRyYWNrKQogewogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMp
OwogICAgIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMgPSB0cmFjay0+Y3VlcygpOwpAQCAtMjk0MSw3
ICszMDM2LDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVHJhY2soVGV4dFRyYWNr
KiB0cmFjaykKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX3ZpZGVv
VHJhY2tzLT5yZW1vdmUodHJhY2spOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUFsbEF1ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZvciAoaW50IGkgPSBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKSAtIDE7IGkg
Pj0gMDsgLS1pKSB7CisgICAgICAgIEF1ZGlvVHJhY2sqIHRyYWNrID0gbV9hdWRpb1RyYWNrcy0+
aXRlbShpKTsKKyAgICAgICAgcmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7CisgICAgfQorfQorCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFuZFRleHRUcmFja3MoKQogewogICAg
IGlmICghbV90ZXh0VHJhY2tzKQogICAgICAgICByZXR1cm47CkBAIC0yOTUxLDcgKzMwNjIsMTgg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQogICAgICAg
ICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOwogCiAgICAgICAgIGlm
ICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgICAgICBy
ZW1vdmVUcmFjayh0cmFjayk7CisgICAgICAgICAgICByZW1vdmVUZXh0VHJhY2sodHJhY2spOwor
ICAgIH0KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcygp
Cit7CisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KGludCBpID0gbV92aWRlb1RyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgeworICAg
ICAgICBWaWRlb1RyYWNrKiB0cmFjayA9IG1fdmlkZW9UcmFja3MtPml0ZW0oaSk7CisgICAgICAg
IHJlbW92ZVZpZGVvVHJhY2sodHJhY2spOwogICAgIH0KIH0KIApAQCAtMjk4MSw3ICszMTAzLDcg
QEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAgICAvLyBmaXJzdCBhcHBlbmQgdGhlIHRyYWNr
IHRvIHRoZSB0ZXh0IHRyYWNrIGxpc3QuCiAKICAgICAvLyA2LiBBZGQgdGhlIG5ldyB0ZXh0IHRy
YWNrIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcy4KLSAgICBhZGRU
cmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkp
OwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIHJlYWRpbmVzcyBzdGF0ZSB0byB0aGUgdGV4
dCB0cmFjayBsb2FkZWQgc3RhdGUgLi4uCiAgICAgdGV4dFRyYWNrLT5zZXRSZWFkaW5lc3NTdGF0
ZShUZXh0VHJhY2s6OkxvYWRlZCk7CkBAIC0yOTkyLDYgKzMxMTQsMTcgQEAgUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFMKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsKIH0KIAorQXVkaW9U
cmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICBtX2F1ZGlvVHJh
Y2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV9hdWRpb1RyYWNrcy5nZXQoKTsK
K30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpIAogewog
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKQEAgLTMwMDMsNyArMzEzNiwxOCBAQCBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzKCkKICAgICByZXR1cm4gbV90ZXh0VHJhY2tzLmdldCgpOwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxl
bWVudCkKK1ZpZGVvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcygpCit7
CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV92aWRlb1RyYWNrcykKKyAgICAg
ICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgcmV0dXJuIG1fdmlkZW9U
cmFja3MuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNr
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICAgICBBU1NFUlQodHJhY2tFbGVt
ZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAKQEAgLTMwMTgsNyArMzE2Miw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVt
ZW50KQogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYWRk
VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgp
KTsKICAgICAKICAgICAvLyBEbyBub3Qgc2NoZWR1bGUgdGhlIHRyYWNrIGxvYWRpbmcgdW50aWwg
cGFyc2luZyBmaW5pc2hlcyBzbyB3ZSBkb24ndCBzdGFydCBiZWZvcmUgYWxsIHRyYWNrcwogICAg
IC8vIGluIHRoZSBtYXJrdXAgaGF2ZSBiZWVuIGFkZGVkLgpAQCAtMzAyOSw3ICszMTczLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFj
a0VsZW1lbnQpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+Y2xvc2VkQ2FwdGlvblRyYWNrc0No
YW5nZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUcmFjayhIVE1M
VHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJl
bW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiB7CiAgICAgQVNT
RVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpOwogCkBAIC0zMDU2LDcgKzMy
MDAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAvLyBXaGVuIGEgdHJhY2sgZWxlbWVudCdzIHBhcmVu
dCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQgcGFyZW50IHdhcyBhIG1lZGlhIGVsZW1lbnQs
IAogICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1vdmUgdGhlIHRyYWNrIGVsZW1l
bnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0aGUgCiAgICAgLy8gbWVkaWEgZWxl
bWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCi0gICAgcmVtb3ZlVHJhY2sodGV4dFRyYWNrLmdl
dCgpKTsKKyAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIAogICAgIHNpemVf
dCBpbmRleCA9IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLmZpbmQodGV4
dFRyYWNrLmdldCgpKTsKICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCkBAIC0zOTMwLDcgKzQw
NzQsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoaW50IGZsYWdz
KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgcmVtb3ZlQWxsSW5iYW5k
VHJhY2tzKCk7CisgICAgcmVtb3ZlQWxsQXVkaW9UcmFja3MoKTsKKyAgICByZW1vdmVBbGxJbmJh
bmRUZXh0VHJhY2tzKCk7CisgICAgcmVtb3ZlQWxsVmlkZW9UcmFja3MoKTsKICNlbmRpZgogCiAj
aWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtNDg4MSw3ICs1MDI3LDkgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNl
LCAibWVkaWFTb3VyY2UiKTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBp
bmZvLmFkZE1lbWJlcihtX2F1ZGlvVHJhY2tzLCAiYXVkaW9UcmFja3MiKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3RleHRUcmFja3MsICJ0ZXh0VHJhY2tzIik7CisgICAgaW5mby5hZGRNZW1iZXIo
bV92aWRlb1RyYWNrcywgInZpZGVvVHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90ZXh0
VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4sICJ0ZXh0VHJhY2tzV2hlblJlc291cmNl
U2VsZWN0aW9uQmVnYW4iKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2N1ZVRyZWUsICJjdWVUcmVl
Iik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdXJyZW50bHlBY3RpdmVDdWVzLCAiY3VycmVudGx5
QWN0aXZlQ3VlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAx
MWRlNmM2MWY0ZWUwMmVmNDFkNjhjNzU3MzVmMmIxY2I4MThkZWI5Li4yODY3NGQ5ZTRlZGI3YzE5
NjYzYmVkOWUxN2RhMDQ3NjM0YWEzNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMzksOSArMzksMTEgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUu
aCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNp
bmNsdWRlICJWaWRlb1RyYWNrLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTAsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb1NvdXJjZVByb3Zp
ZGVyOwogY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogI2VuZGlmCitjbGFzcyBB
dWRpb1RyYWNrTGlzdDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBj
bGFzcyBIVE1MVHJhY2tFbGVtZW50OwpAQCAtNTgsNiArNjEsNyBAQCBjbGFzcyBNZWRpYUNvbnRy
b2xzOwogY2xhc3MgTWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CiBjbGFzcyBUZXh0VHJhY2tMaXN0
OworY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogY2xhc3MgV2lkZ2V0OwpAQCAtNzAsNyArNzQsOSBAQCBj
bGFzcyBNZWRpYUtleXM7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNz
IEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKK2NsYXNz
IFZpZGVvVHJhY2tQcml2YXRlOwogCiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxkb3VibGUsIFRl
eHRUcmFja0N1ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2YWxUcmVlOjpJ
bnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CkBAIC04Myw3ICs4OSw5IEBAIHR5cGVkZWYgVmVjdG9y
PEN1ZUludGVydmFsPiBDdWVMaXN0OwogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGlj
IEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXll
clN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQKICAgICAs
IHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2YXRlIFZpZGVvVHJhY2tDbGllbnQK
ICNlbmRpZgogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBwdWJsaWMg
UGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CkBAIC0yMjQsMjAgKzIzMiwzMyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGRU
ZXh0VHJhY2soa2luZCwgbGFiZWwsIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogICAgIFBhc3NSZWZQ
dHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBFeGNlcHRpb25D
b2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVtcHR5U3RyaW5nKCksIGVtcHR5
U3RyaW5nKCksIGVjKTsgfQogCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCk7CiAg
ICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrcygpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRl
b1RyYWNrcygpOworCiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKLSAgICB2b2lkIGFkZFRyYWNrKFRleHRU
cmFjayopOwotICAgIHZvaWQgcmVtb3ZlVHJhY2soVGV4dFRyYWNrKik7Ci0gICAgdm9pZCByZW1v
dmVBbGxJbmJhbmRUcmFja3MoKTsKKyAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayop
OworICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQgYWRkVmlkZW9U
cmFjayhWaWRlb1RyYWNrKik7CisgICAgdm9pZCByZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sq
KTsKKyAgICB2b2lkIHJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIHJlbW92
ZVZpZGVvVHJhY2soVmlkZW9UcmFjayopOworICAgIHZvaWQgcmVtb3ZlQWxsQXVkaW9UcmFja3Mo
KTsKKyAgICB2b2lkIHJlbW92ZUFsbEluYmFuZFRleHRUcmFja3MoKTsKKyAgICB2b2lkIHJlbW92
ZUFsbFZpZGVvVHJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7
CiAgICAgdm9pZCBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVtb3ZlVHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRGlkQWRkVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQ
cml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVGV4
dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRp
ZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZh
dGU+KSBPVkVSUklERTsKIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0
VHJhY2s+KSBPVkVSUklERTsKQEAgLTI3Niw2ICsyOTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNw
bGF5KCk7CiAKKyAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlv
VHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKik7CisKICAgICAvLyBUZXh0VHJhY2tDbGll
bnQKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNr
Kik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopOwpA
QCAtMjg1LDYgKzMwOSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRk
Q3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAgICAgdmlydHVhbCB2
b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZT4pOwogCisgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1Ry
YWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKTsKKwogICAgIGJvb2wgcmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNlbmRpZgpAQCAtNjk4LDcgKzcy
NSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hhbmdlIDog
MTsKICAgICBmbG9hdCBtX2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lOwogCisgICAgUmVmUHRyPEF1
ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0cjxUZXh0VHJhY2tMaXN0PiBt
X3RleHRUcmFja3M7CisgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tzOwog
ICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNl
bGVjdGlvbkJlZ2FuOwogCiAgICAgQ3VlSW50ZXJ2YWxUcmVlIG1fY3VlVHJlZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IDkzOTQ1MmRjMjNjNmRkZmY1YWYw
YjgzNThlNWMwMmM3YjUzMGU3YmIuLjhlOTIwNzBjNzYxYTBiOTA3MDIyNjI3NDU0NTk2OTBiMDk2
ZDRjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE2
LDcgKzExNiw5IEBAIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9TUVESUFfU1RBVElT
VElDU10gdW5zaWduZWQgbG9uZyB3ZWJraXRWaWRlb0RlY29kCiAjaWYgZGVmaW5lZChFTkFCTEVf
VklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogW1Y4RW5hYmxlZEF0UnVudGltZT13
ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVGV4dFRyYWNrKGluIERPTVN0cmluZyBraW5k
LCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcg
bGFuZ3VhZ2UpCiAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworcmVhZG9ubHkgYXR0cmlidXRl
IFtWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gQXVkaW9UcmFja0xpc3QgYXVk
aW9UcmFja3M7CiByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT13ZWJraXRW
aWRlb1RyYWNrXSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7CityZWFkb25seSBhdHRyaWJ1dGUg
W1Y4RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBWaWRlb1RyYWNrTGlzdCB2aWRl
b1RyYWNrczsKICNlbmRpZgogCiBbUmVmbGVjdCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0
cmlidXRlIERPTVN0cmluZyBtZWRpYUdyb3VwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHAKaW5kZXggZmJiYjNlODVlMGRhNjc4MDExYWY4NGVmYzlhNTc5OWM2M2Y0NjNk
NC4uMDEwNTg1NWZjZjI1NzE5NzQ5YzUxNjA4YjQ2NDkyYTIwMWFjMTMwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC04MCwxNCArODAsMTQgQEAgTm9kZTo6
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSoKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlv
blBvaW50KTsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKTsK
ICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQgPT0gcGFyZW50KQotICAgICAgICBwYXJlbnQtPmRpZEFk
ZFRyYWNrKHRoaXMpOworICAgICAgICBwYXJlbnQtPmRpZEFkZFRleHRUcmFjayh0aGlzKTsKICAg
ICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpyZW1v
dmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBpZiAoIXBhcmVu
dE5vZGUoKSAmJiBXZWJDb3JlOjppc01lZGlhRWxlbWVudChpbnNlcnRpb25Qb2ludCkpCi0gICAg
ICAgIHRvTWVkaWFFbGVtZW50KGluc2VydGlvblBvaW50KS0+ZGlkUmVtb3ZlVHJhY2sodGhpcyk7
CisgICAgICAgIHRvTWVkaWFFbGVtZW50KGluc2VydGlvblBvaW50KS0+ZGlkUmVtb3ZlVGV4dFRy
YWNrKHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVlYTk5YTIxOTBhNDQ2MTgxMDljYjNiZDYxMzMyZjgzNDJhODBjMjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAgKzEs
MTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFj
a0xpc3QuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGludCBpbnZhbGlkVHJhY2tJbmRl
eCA9IC0xOworCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFs
dGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJkZXNjcmlwdGlvbiIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRp
b247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluLCAoIm1h
aW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1h
aW47Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3Jk
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbkRl
c2MsICgibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBtYWluRGVzYzsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNr
Ojp0cmFuc2xhdGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCB0cmFuc2xhdGlvbiwgKCJ0cmFuc2xhdGlvbiIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gdHJhbnNsYXRpb247Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNv
bW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0
dXJuIGNvbW1lbnRhcnk7Cit9CisKK0F1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRy
PEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgOiBUcmFja0Jhc2UoY29udGV4
dCwgVHJhY2tCYXNlOjpBdWRpb1RyYWNrKQorICAgICwgbV9tZWRpYUVsZW1lbnQoMCkKKyAgICAs
IG1faWQodHJhY2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9sYWJlbCh0cmFja1ByaXZhdGUtPmxh
YmVsKCkpCisgICAgLCBtX2xhbmd1YWdlKHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAs
IG1fZW5hYmxlZCh0cmFja1ByaXZhdGUtPmVuYWJsZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVu
dCkKKyAgICAsIG1fdHJhY2tJbmRleChpbnZhbGlkVHJhY2tJbmRleCkKKyAgICAsIG1fcHJpdmF0
ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAg
ICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0
ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVL
ZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpE
ZXNjcmlwdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdv
cmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW46
CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW5EZXNjOgorICAgICAgICBzZXRL
aW5kKEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6VHJhbnNsYXRpb246CisgICAgICAgIHNldEtpbmQoQXVk
aW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEF1ZGlvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlv
VHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitBdWRpb1RyYWNrOjp+QXVkaW9UcmFjaygpCit7
CisgICAgY2xlYXJDbGllbnQoKTsKK30KKworYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtl
eXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gYWx0
ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1
ZSA9PSBtYWluRGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IHRyYW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0S2luZChjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmQpCit7CisgICAgU3RyaW5nIG9sZEtpbmQgPSBtX2tpbmQ7CisKKyAg
ICBpZiAoaXNWYWxpZEtpbmRLZXl3b3JkKGtpbmQpKQorICAgICAgICBtX2tpbmQgPSBraW5kOwor
ICAgIGVsc2UKKyAgICAgICAgbV9raW5kID0gIiI7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0
RW5hYmxlZChjb25zdCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2Vk
KHRoaXMpOworfQorCitpbnQgQXVkaW9UcmFjazo6dHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJU
KG1fbWVkaWFFbGVtZW50KTsKKworICAgIGlmIChtX3RyYWNrSW5kZXggPT0gaW52YWxpZFRyYWNr
SW5kZXgpCisgICAgICAgIG1fdHJhY2tJbmRleCA9IG1fbWVkaWFFbGVtZW50LT5hdWRpb1RyYWNr
cygpLT5nZXRUcmFja0luZGV4KHRoaXMpOworCisgICAgcmV0dXJuIG1fdHJhY2tJbmRleDsKK30K
KworaW50IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgoKQoreworICAgIEFTU0VSVChtX3By
aXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvVHJhY2tJbmRleCgpOworfQorCit2
b2lkIEF1ZGlvVHJhY2s6OmludmFsaWRhdGVUcmFja0luZGV4KCkKK3sKKyAgICBtX3RyYWNrSW5k
ZXggPSBpbnZhbGlkVHJhY2tJbmRleDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNi
NzQ1NDgxMDY3YWZkZTc2MTE4MTVhMzNlZmIzYjk4YjM3MDY1NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC0wLDAgKzEsMTExIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tfaAorI2RlZmluZSBBdWRp
b1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJh
Y2tQcml2YXRlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRyYWNr
QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgQXVkaW9UcmFjazsKKwor
Y2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFj
a0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQo
QXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBwdWJsaWMgVHJhY2tC
YXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QXVkaW9UcmFjayhjb250ZXh0LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2
aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAgICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBlbGVtZW50KSB7IG1fbWVkaWFFbGVtZW50ID0gZWxlbWVudDsgfQorICAgIEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9
CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9p
ZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgQXRv
bWljU3RyaW5nIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICB2b2lkIHNldEtp
bmQoY29uc3QgQXRvbWljU3RyaW5nJik7CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBk
ZXNjcmlwdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWlu
S2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5EZXNjS2V5d29y
ZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zbGF0aW9uS2V5d29yZCgp
OworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7Cisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYpOwor
CisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAg
IHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFi
ZWw7IH0KKworICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFu
Z3VhZ2U7IH0KKyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3Vh
Z2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisKKyAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChjb25z
dCBib29sKTsKKworICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAg
IEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBp
bnQgdHJhY2tJbmRleCgpOworICAgIGludCBpbmJhbmRUcmFja0luZGV4KCk7CisgICAgdm9pZCBp
bnZhbGlkYXRlVHJhY2tJbmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAgQXVkaW9UcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgQXVkaW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGU+KTsKKworcHJpdmF0ZToKKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVk
aWFFbGVtZW50OworICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIEF0b21pY1N0cmluZyBtX2tp
bmQ7CisgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CisgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3Vh
Z2U7CisgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQ7
CisgICAgaW50IG1fdHJhY2tJbmRleDsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4g
bV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVh
NDkyNThiYjA4Y2YyZTc1OGI5OWQzMjUyM2ViNzZiNGRlYjJkZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIFY4RW5h
YmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9u
LAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUsCisgICAgVjhTa2lwVlRhYmxlVmFsaWRhdGlvbgor
XSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBpZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGxhbmd1YWdlOworCisgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI2OGUwNDYzMWQ1Njk5YWUyZWE3OGJlM2VhZjhmNTJmNDkyZGEzYjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApAQCAtMCww
ICsxLDIxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5j
bHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIlRyYWNrRXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV9vd25lcihvd25lcikKKyAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIodGhpcywgJkF1
ZGlvVHJhY2tMaXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fZGlzcGF0Y2hpbmdF
dmVudHMoMCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKK30KKworQXVk
aW9UcmFja0xpc3Q6On5BdWRpb1RyYWNrTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIEF1ZGlvVHJh
Y2tMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYWNrcy5zaXplKCk7Cit9
CisKK2ludCBBdWRpb1RyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleChBdWRpb1RyYWNrICp0cmFjaykK
K3sKKyAgICByZXR1cm4gbV90cmFja3MuZmluZCh0cmFjayk7Cit9CisKK0F1ZGlvVHJhY2sqIEF1
ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmIChpbmRleCA8IG1f
dHJhY2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2tzW2luZGV4XS5nZXQoKTsKKwor
ICAgIHJldHVybiAwOworfQorCit2b2lkIEF1ZGlvVHJhY2tMaXN0OjppbnZhbGlkYXRlVHJhY2tJ
bmRleGVzQWZ0ZXJUcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXgg
PSBtX3RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IG1fdHJhY2tzLnNp
emUoKTsgKytpKQorICAgICAgICBtX3RyYWNrcy5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0lu
ZGV4KCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPEF1ZGlv
VHJhY2s+IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IHBycFRy
YWNrOworCisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRlci4KKyAg
ICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOworICAgIG1fdHJhY2tz
Lmluc2VydChpbmRleCwgdHJhY2spOworCisgICAgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVy
VHJhY2sodHJhY2suZ2V0KCkpOworCisgICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkg
fHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1fb3duZXIpOworICAgIHRyYWNrLT5zZXRNZWRp
YUVsZW1lbnQobV9vd25lcik7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2sucmVs
ZWFzZSgpKTsKK30KKwordm9pZCBBdWRpb1RyYWNrTGlzdDo6cmVtb3ZlKEF1ZGlvVHJhY2sqIHRy
YWNrKQoreworICAgIHNpemVfdCBpbmRleCA9IG1fdHJhY2tzLmZpbmQodHJhY2spOworICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW52YWxpZGF0ZVRy
YWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2spOworCisgICAgQVNTRVJUKHRyYWNrLT5tZWRpYUVs
ZW1lbnQoKSA9PSBtX293bmVyKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KDApOworCisg
ICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrUmVmID0gbV90cmFja3NbaW5kZXhdOworCisgICAg
bV90cmFja3MucmVtb3ZlKGluZGV4KTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFj
a1JlZi5yZWxlYXNlKCkpOworfQorCitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3RyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBBdWRpb1RyYWNrKiB0
cmFjayA9IG1fdHJhY2tzW2ldLmdldCgpOworICAgICAgICBpZiAodHJhY2stPmlkKCkgPT0gaWQp
CisgICAgICAgICAgICByZXR1cm4gdHJhY2s7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiti
b29sIEF1ZGlvVHJhY2tMaXN0Ojpjb250YWlucyhBdWRpb1RyYWNrKiB0cmFjaykgY29uc3QKK3sK
KyAgICByZXR1cm4gbV90cmFja3MuZmluZCh0cmFjaykgIT0gbm90Rm91bmQ7Cit9CisKK2NvbnN0
IEF0b21pY1N0cmluZyYgQXVkaW9UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQXVkaW9UcmFja0xpc3Q7Cit9CisK
K3ZvaWQgQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPEF1
ZGlvVHJhY2s+IHRyYWNrKQoreworICAgIC8vIDQuOC4xMC41IExvYWRpbmcgdGhlIG1lZGlhIHJl
c291cmNlCisgICAgLy8gLi4uCisgICAgLy8gRmlyZSBhIHRydXN0ZWQgZXZlbnQgd2l0aCB0aGUg
bmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCisgICAgLy8gbm90IGNh
bmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRoIHRo
ZSB0cmFjaworICAgIC8vIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUgbmV3IEF1ZGlvVHJh
Y2sgb2JqZWN0LCBhdCB0aGlzCisgICAgLy8gQXVkaW9UcmFja0xpc3Qgb2JqZWN0LgorCisgICAg
UmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQg
aW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0
aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZh
bHNlOworCisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRp
bmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3Rh
cnRPbmVTaG90KDApOworfQorCit2b2lkIEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZVJlbW92ZVRy
YWNrRXZlbnQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiB0cmFjaykKK3sKKyAgICAvLyA0LjguMTAu
NiBPZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291cmNlCisgICAgLy8gSWYgYXQgYW55IHRpbWUg
dGhlIHVzZXIgYWdlbnQgbGVhcm5zIHRoYXQgYW4gYXVkaW8gb3IgdmlkZW8gdHJhY2sgaGFzCisg
ICAgLy8gZW5kZWQgYW5kIGFsbCBtZWRpYSBkYXRhIHJlbGF0aW5nIHRvIHRoYXQgdHJhY2sgY29y
cmVzcG9uZHMgdG8gcGFydHMgb2YKKyAgICAvLyB0aGUgbWVkaWEgdGltZWxpbmUgdGhhdCBhcmUg
YmVmb3JlIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgdGhlCisgICAgLy8gdXNlciBh
Z2VudCBtYXkgcXVldWUgYSB0YXNrIHRvIHJlbW92ZSB0aGUgdHJhY2sgZnJvbSB0aGUgYXVkaW9U
cmFja3MKKyAgICAvLyBhdHRyaWJ1dGUncyBBdWRpb1RyYWNrTGlzdCBvYmplY3Qgb3IgdGhlIHZp
ZGVvVHJhY2tzIGF0dHJpYnV0ZSdzCisgICAgLy8gVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGFzIGFw
cHJvcHJpYXRlIGFuZCB0aGVuIGZpcmUgYSB0cnVzdGVkIGV2ZW50CisgICAgLy8gd2l0aCB0aGUg
bmFtZSByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxh
YmxlLAorICAgIC8vIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRo
IHRoZSB0cmFjayBhdHRyaWJ1dGUKKyAgICAvLyBpbml0aWFsaXplZCB0byB0aGUgQXVkaW9UcmFj
ayBvciBWaWRlb1RyYWNrIG9iamVjdCByZXByZXNlbnRpbmcgdGhlCisgICAgLy8gdHJhY2ssIGF0
IHRoZSBtZWRpYSBlbGVtZW50J3MgYWZvcmVtZW50aW9uZWQgQXVkaW9UcmFja0xpc3Qgb3IKKyAg
ICAvLyBWaWRlb1RyYWNrTGlzdCBvYmplY3QuCisKKyAgICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJh
Y2tSZWYgPSB0cmFjazsKKyAgICBUcmFja0V2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0
aWFsaXplci50cmFjayA9IHRyYWNrUmVmOworICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBmYWxz
ZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7CisKKyAgICBtX3BlbmRpbmdF
dmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tF
dmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisK
K3ZvaWQgQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlQ2hhbmdlRXZlbnQoKQoreworICAgIC8vIDQu
OC4xMC42IE9mZnNldHMgaW50byB0aGUgbWVkaWEgcmVzb3VyY2UKKyAgICAvLyBXaGVuZXZlciBh
biBhdWRpbyB0cmFjayBpbiBhbiBBdWRpb1RyYWNrTGlzdCBpcyBlbmFibGVkIG9yIGRpc2FibGVk
LCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IG11c3QgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1w
bGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZQorICAgIC8vIEF1ZGlvVHJhY2tMaXN0IG9iamVj
dC4KKworICAgIEV2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0aWFsaXplci5idWJibGVz
ID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgbV9w
ZW5kaW5nRXZlbnRzLmFwcGVuZChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVu
dCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3Zv
aWQgQXVkaW9UcmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPEF1ZGlvVHJhY2tM
aXN0PiopCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOworCisg
ICAgKyttX2Rpc3BhdGNoaW5nRXZlbnRzOworICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRp
bmdFdmVudHMpOworICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIElHTk9SRV9FWENF
UFRJT04pOworICAgIC0tbV9kaXNwYXRjaGluZ0V2ZW50czsKK30KKworTm9kZSogQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vd25lcjsKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDdhOTRkZDAzYTAyYmY2MTExYmZjMmFhMTBlZGNjYjMwOWQwM2U5MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAtMCwwICsx
LDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tMaXN0X2gKKyNkZWZp
bmUgQXVkaW9UcmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3Mg
QXVkaW9UcmFjazsKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0OworCitjbGFzcyBBdWRpb1RyYWNrTGlz
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvVHJhY2tMaXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrTGlzdD4gY3JlYXRl
KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrTGlzdChvd25l
ciwgY29udGV4dCkpOworICAgIH0KKyAgICB+QXVkaW9UcmFja0xpc3QoKTsKKworICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0OworICAgIGludCBnZXRUcmFja0luZGV4KEF1ZGlvVHJhY2sqKTsK
KyAgICBib29sIGNvbnRhaW5zKEF1ZGlvVHJhY2sqKSBjb25zdDsKKworICAgIEF1ZGlvVHJhY2sq
IGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8QXVkaW9U
cmFjaz4pOworICAgIHZvaWQgcmVtb3ZlKEF1ZGlvVHJhY2sqKTsKKworICAgIEF1ZGlvVHJhY2sq
IGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworICAgIC8vIEV2ZW50
VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdDsKKyAgICB1c2luZyBSZWZDb3VudGVkPEF1ZGlvVHJhY2tMaXN0Pjo6cmVmOworICAgIHVz
aW5nIFJlZkNvdW50ZWQ8QXVkaW9UcmFja0xpc3Q+OjpkZXJlZjsKKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHQ7IH0KKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRk
dHJhY2spOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2hhbmdlKTsKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXRyYWNrKTsKKworICAgIHZv
aWQgY2xlYXJPd25lcigpIHsgbV9vd25lciA9IDA7IH0KKyAgICBOb2RlKiBvd25lcigpIGNvbnN0
OworCisgICAgYm9vbCBpc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9kaXNwYXRj
aGluZ0V2ZW50czsgfQorCisgICAgLy8gTmVlZHMgdG8gYmUgcHVibGljIHNvIEF1ZGlvVHJhY2sg
Y2FuIGNhbGwgaXQKKyAgICB2b2lkIHNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKworcHJpdmF0ZToK
KyAgICBBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7
IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRh
KCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0
YTsgfQorCisgICAgdm9pZCBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxBdWRpb1Ry
YWNrPik7CisgICAgdm9pZCBzY2hlZHVsZVJlbW92ZVRyYWNrRXZlbnQoUGFzc1JlZlB0cjxBdWRp
b1RyYWNrPik7CisKKyAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPEF1ZGlvVHJh
Y2tMaXN0PiopOworCisgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayhB
dWRpb1RyYWNrKik7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7Cisg
ICAgSFRNTE1lZGlhRWxlbWVudCogbV9vd25lcjsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+
ID4gbV9wZW5kaW5nRXZlbnRzOworICAgIFRpbWVyPEF1ZGlvVHJhY2tMaXN0PiBtX3BlbmRpbmdF
dmVudFRpbWVyOworCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAg
IFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4gPiBtX3RyYWNrczsKKworICAgIGludCBtX2Rpc3Bh
dGNoaW5nRXZlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMTNlYTY1MDJlYzBhODdhZjFiMjQzOWY3NTRjNGQ4NjJmMGM2ODZmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJB
Q0ssCisgICAgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCisgICAgSW5kZXhl
ZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAg
ICBKU0N1c3RvbUlzUmVhY2hhYmxlLAorICAgIFY4R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsT3du
ZXJSb290CitdIGludGVyZmFjZSBBdWRpb1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgIEF1ZGlvVHJhY2sgaXRlbShpbiB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKKyAgICBBdWRpb1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcg
aWQpOworCisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnJlbW92ZXRyYWNrOworCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmlu
ZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7CisgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAg
ICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZjE1YzliNDc3ZjZkYzlmYTVjMjM1MjkxZDk4
YzhjYzU1MTk1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suY3BwCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFj
ay5oIgorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2lu
Y2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IGNvbnN0IGludCBpbnZhbGlkVHJhY2tJbmRleCA9IC0xOworCitjb25zdCBBdG9taWNTdHJpbmcm
IFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2
ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9u
cywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6
bWFpbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRl
b1RyYWNrOjpzaWduS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIHNpZ24sICgic2lnbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gc2lnbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRl
b1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoInN1YnRpdGxlcyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21t
ZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVy
biBjb21tZW50YXJ5OworfQorCitWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKGNvbnRleHQs
IFRyYWNrQmFzZTo6VmlkZW9UcmFjaykKKyAgICAsIG1fbWVkaWFFbGVtZW50KDApCisgICAgLCBt
X2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fbGFiZWwodHJhY2tQcml2YXRlLT5sYWJl
bCgpKQorICAgICwgbV9sYW5ndWFnZSh0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBt
X3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS0+c2VsZWN0ZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVu
dCkKKyAgICAsIG1fdHJhY2tJbmRleChpbnZhbGlkVHJhY2tJbmRleCkKKyAgICAsIG1fcHJpdmF0
ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAg
ICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVL
ZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpD
YXB0aW9uczoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAg
ICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlNpZ246CisgICAgICAgIHNldEtpbmQoVmlkZW9U
cmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFj
a1ByaXZhdGU6OlN1YnRpdGxlczoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRs
ZXNLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRl
OjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3
b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25l
OgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCitWaWRlb1RyYWNrOjp+VmlkZW9UcmFjaygpCit7CisgICAgbV9wcml2YXRlLT5z
ZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgVmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZl
S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY2FwdGlv
bnNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWlu
S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc2lnbktl
eXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHN1YnRpdGxl
c0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1l
bnRhcnlLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFZpZGVvVHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBraW5k
KQoreworICAgIFN0cmluZyBvbGRLaW5kID0gbV9raW5kOworCisgICAgaWYgKGlzVmFsaWRLaW5k
S2V5d29yZChraW5kKSkKKyAgICAgICAgbV9raW5kID0ga2luZDsKKyAgICBlbHNlCisgICAgICAg
IG1fa2luZCA9ICIiOworfQorCit2b2lkIFZpZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJv
b2wgc2VsZWN0ZWQpCit7CisgICAgaWYgKG1fc2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKKworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQodGhpcyk7Cit9
CisKK2ludCBWaWRlb1RyYWNrOjp0cmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9tZWRpYUVs
ZW1lbnQpOworCisgICAgaWYgKG1fdHJhY2tJbmRleCA9PSBpbnZhbGlkVHJhY2tJbmRleCkKKyAg
ICAgICAgbV90cmFja0luZGV4ID0gbV9tZWRpYUVsZW1lbnQtPnZpZGVvVHJhY2tzKCktPmdldFRy
YWNrSW5kZXgodGhpcyk7CisKKyAgICByZXR1cm4gbV90cmFja0luZGV4OworfQorCitpbnQgVmlk
ZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7Cit9CisKK3ZvaWQgVmlkZW9U
cmFjazo6aW52YWxpZGF0ZVRyYWNrSW5kZXgoKQoreworICAgIG1fdHJhY2tJbmRleCA9IGludmFs
aWRUcmFja0luZGV4OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTQ4YmE1N2RjYTJi
Y2YzMmM5NmYzMWMyZWJmMTIyOTFlZjFlZTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisjZGVmaW5lIFZpZGVvVHJhY2tfaAor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRl
b1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xpZW50KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJs
aWMgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFZpZGVvVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBW
aWRlb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRy
YWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFj
ayhjb250ZXh0LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5W
aWRlb1RyYWNrKCk7CisKKyAgICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50KSB7IG1fbWVkaWFFbGVtZW50ID0gZWxlbWVudDsgfQorICAgIEhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CisKKyAgICBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgQXRvbWljU3RyaW5n
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICB2b2lkIHNldEtpbmQoY29uc3Qg
QXRvbWljU3RyaW5nJik7CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5h
dGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tl
eXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgc3RhdGljIGJvb2wgaXNW
YWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYpOworCisgICAgQXRvbWljU3RyaW5n
IGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29u
c3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKworICAgIEF0b21p
Y1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KKyAgICB2b2lk
IHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9
IGxhbmd1YWdlOyB9CisKKyAgICBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3RlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChjb25zdCBib29sKTsKKworICAg
IHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tDbGll
bnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBpbnQgdHJhY2tJbmRleCgp
OworICAgIGludCBpbmJhbmRUcmFja0luZGV4KCk7CisgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJ
bmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBy
aXZhdGVUcmFjayk7CisKK3ByaXZhdGU6CisKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlh
RWxlbWVudDsKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBBdG9taWNTdHJpbmcgbV9raW5k
OworICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOworICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdl
OworICAgIGJvb2wgbV9zZWxlY3RlZDsKKyAgICBWaWRlb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBpbnQgbV90cmFja0luZGV4OworCisgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBt
X3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2Vj
YWM0YmRhODFiMmFjYmQ3ZjgxNWFkZjA1YzIwY2M2Mjg3YWI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAgVjhFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24s
CisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZSwKKyAgICBWOFNraXBWVGFibGVWYWxpZGF0aW9uCitd
IGludGVyZmFjZSBWaWRlb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzZWxlY3RlZDsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0ZmEyNDZjMmJlZTI1YjAwNWJiM2VlYjE1NTI2ZTNlMjI3ZjQ1YWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApAQCAtMCww
ICsxLDIyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVHJhY2tFdmVudC5oIgor
I2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1Zp
ZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV9vd25lcihvd25lcikKKyAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIodGhpcywgJlZp
ZGVvVHJhY2tMaXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fZGlzcGF0Y2hpbmdF
dmVudHMoMCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKK30KKworVmlk
ZW9UcmFja0xpc3Q6On5WaWRlb1RyYWNrTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIFZpZGVvVHJh
Y2tMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYWNrcy5zaXplKCk7Cit9
CisKK2ludCBWaWRlb1RyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleChWaWRlb1RyYWNrICp0cmFjaykK
K3sKKyAgICByZXR1cm4gbV90cmFja3MuZmluZCh0cmFjayk7Cit9CisKK1ZpZGVvVHJhY2sqIFZp
ZGVvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmIChpbmRleCA8IG1f
dHJhY2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2tzW2luZGV4XS5nZXQoKTsKKwor
ICAgIHJldHVybiAwOworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjppbnZhbGlkYXRlVHJhY2tJ
bmRleGVzQWZ0ZXJUcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXgg
PSBtX3RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IG1fdHJhY2tzLnNp
emUoKTsgKytpKQorICAgICAgICBtX3RyYWNrcy5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0lu
ZGV4KCk7Cit9CisKK3ZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFZpZGVv
VHJhY2s+IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHBycFRy
YWNrOworCisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRlci4KKyAg
ICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOworICAgIG1fdHJhY2tz
Lmluc2VydChpbmRleCwgdHJhY2spOworCisgICAgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVy
VHJhY2sodHJhY2suZ2V0KCkpOworCisgICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkg
fHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1fb3duZXIpOworICAgIHRyYWNrLT5zZXRNZWRp
YUVsZW1lbnQobV9vd25lcik7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2sucmVs
ZWFzZSgpKTsKK30KKwordm9pZCBWaWRlb1RyYWNrTGlzdDo6cmVtb3ZlKFZpZGVvVHJhY2sqIHRy
YWNrKQoreworICAgIHNpemVfdCBpbmRleCA9IG1fdHJhY2tzLmZpbmQodHJhY2spOworICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW52YWxpZGF0ZVRy
YWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2spOworCisgICAgQVNTRVJUKHRyYWNrLT5tZWRpYUVs
ZW1lbnQoKSA9PSBtX293bmVyKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KDApOworCisg
ICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrUmVmID0gbV90cmFja3NbaW5kZXhdOworCisgICAg
bV90cmFja3MucmVtb3ZlKGluZGV4KTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFj
a1JlZi5yZWxlYXNlKCkpOworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3RyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBWaWRlb1RyYWNrKiB0
cmFjayA9IG1fdHJhY2tzW2ldLmdldCgpOworICAgICAgICBpZiAodHJhY2stPmlkKCkgPT0gaWQp
CisgICAgICAgICAgICByZXR1cm4gdHJhY2s7CisgICAgfQorICAgIHJldHVybiAwOworfQorCits
b25nIFZpZGVvVHJhY2tMaXN0OjpzZWxlY3RlZEluZGV4KCkgY29uc3QKK3sKKyAgICAvLyA0Ljgu
MTAuMTAuMSBBdWRpb1RyYWNrTGlzdCBhbmQgVmlkZW9UcmFja0xpc3Qgb2JqZWN0cworICAgIC8v
IFRoZSBWaWRlb1RyYWNrTGlzdC5zZWxlY3RlZEluZGV4IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0
aGUgaW5kZXggb2YgdGhlCisgICAgLy8gY3VycmVudGx5IHNlbGVjdGVkIHRyYWNrLCBpZiBhbnku
IElmIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgZG9lcyBub3QKKyAgICAvLyBjdXJyZW50bHkg
cmVwcmVzZW50IGFueSB0cmFja3MsIG9yIGlmIG5vbmUgb2YgdGhlIHRyYWNrcyBhcmUgc2VsZWN0
ZWQsCisgICAgLy8gaXQgbXVzdCBpbnN0ZWFkIHJldHVybiDiiJIxLgorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV90cmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdHJhY2tz
W2ldLT5zZWxlY3RlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVy
biAtMTsKK30KKworYm9vbCBWaWRlb1RyYWNrTGlzdDo6Y29udGFpbnMoVmlkZW9UcmFjayogdHJh
Y2spIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5k
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclZpZGVvVHJh
Y2tMaXN0OworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQo
UGFzc1JlZlB0cjxWaWRlb1RyYWNrPiB0cmFjaykKK3sKKyAgICAvLyA0LjguMTAuNSBMb2FkaW5n
IHRoZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIC4uLgorICAgIC8vIEZpcmUgYSB0cnVzdGVkIGV2
ZW50IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcwor
ICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVy
ZmFjZSwgd2l0aCB0aGUgdHJhY2sKKyAgICAvLyBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhl
IG5ldyBWaWRlb1RyYWNrIG9iamVjdCwgYXQgdGhpcworICAgIC8vIFZpZGVvVHJhY2tMaXN0IG9i
amVjdC4KKworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFja1JlZiA9IHRyYWNrOworICAgIFRy
YWNrRXZlbnRJbml0IGluaXRpYWxpemVyOworICAgIGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tS
ZWY7CisgICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNh
bmNlbGFibGUgPSBmYWxzZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBpbml0aWFsaXplcikpOworICAg
IGlmICghbV9wZW5kaW5nRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdF
dmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBWaWRlb1RyYWNrTGlzdDo6c2No
ZWR1bGVSZW1vdmVUcmFja0V2ZW50KFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2spCit7Cisg
ICAgLy8gNC44LjEwLjYgT2Zmc2V0cyBpbnRvIHRoZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIElm
IGF0IGFueSB0aW1lIHRoZSB1c2VyIGFnZW50IGxlYXJucyB0aGF0IGFuIGF1ZGlvIG9yIHZpZGVv
IHRyYWNrIGhhcworICAgIC8vIGVuZGVkIGFuZCBhbGwgbWVkaWEgZGF0YSByZWxhdGluZyB0byB0
aGF0IHRyYWNrIGNvcnJlc3BvbmRzIHRvIHBhcnRzIG9mCisgICAgLy8gdGhlIG1lZGlhIHRpbWVs
aW5lIHRoYXQgYXJlIGJlZm9yZSB0aGUgZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24sIHRoZQor
ICAgIC8vIHVzZXIgYWdlbnQgbWF5IHF1ZXVlIGEgdGFzayB0byByZW1vdmUgdGhlIHRyYWNrIGZy
b20gdGhlIGF1ZGlvVHJhY2tzCisgICAgLy8gYXR0cmlidXRlJ3MgVmlkZW9UcmFja0xpc3Qgb2Jq
ZWN0IG9yIHRoZSB2aWRlb1RyYWNrcyBhdHRyaWJ1dGUncworICAgIC8vIFZpZGVvVHJhY2tMaXN0
IG9iamVjdCBhcyBhcHByb3ByaWF0ZSBhbmQgdGhlbiBmaXJlIGEgdHJ1c3RlZCBldmVudAorICAg
IC8vIHdpdGggdGhlIG5hbWUgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBp
cyBub3QgY2FuY2VsYWJsZSwKKyAgICAvLyBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGlu
dGVyZmFjZSwgd2l0aCB0aGUgdHJhY2sgYXR0cmlidXRlCisgICAgLy8gaW5pdGlhbGl6ZWQgdG8g
dGhlIFZpZGVvVHJhY2sgb3IgVmlkZW9UcmFjayBvYmplY3QgcmVwcmVzZW50aW5nIHRoZQorICAg
IC8vIHRyYWNrLCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzIGFmb3JlbWVudGlvbmVkIFZpZGVvVHJh
Y2tMaXN0IG9yCisgICAgLy8gVmlkZW9UcmFja0xpc3Qgb2JqZWN0LgorCisgICAgUmVmUHRyPFZp
ZGVvVHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6
ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5i
dWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisg
ICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnJlbW92ZXRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVu
dFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVT
aG90KDApOworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUNoYW5nZUV2ZW50KCkK
K3sKKyAgICAvLyA0LjguMTAuNiBPZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291cmNlCisgICAg
Ly8gV2hlbmV2ZXIgYW4gYXVkaW8gdHJhY2sgaW4gYW4gVmlkZW9UcmFja0xpc3QgaXMgZW5hYmxl
ZCBvciBkaXNhYmxlZCwgdGhlCisgICAgLy8gdXNlciBhZ2VudCBtdXN0IHF1ZXVlIGEgdGFzayB0
byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUKKyAgICAvLyBWaWRlb1Ry
YWNrTGlzdCBvYmplY3QuCisKKyAgICBFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlh
bGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxz
ZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2hhbmdlRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90
KDApOworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1l
cjxWaWRlb1RyYWNrTGlzdD4qKQoreworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGlu
Z0V2ZW50czsKKworICAgICsrbV9kaXNwYXRjaGluZ0V2ZW50czsKKyAgICBtX3BlbmRpbmdFdmVu
dHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nRXZlbnRz
LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpCisgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgp
LCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAtLW1fZGlzcGF0Y2hpbmdFdmVudHM7Cit9CisKK05v
ZGUqIFZpZGVvVHJhY2tMaXN0Ojpvd25lcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3duZXI7
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg1YTM4MjY4MjA5NjQ2MzEyYjcyMWQ0MDE1M2M4YWVlMjBhNmUyYTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWaWRlb1RyYWNr
TGlzdF9oCisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxl
bWVudDsKK2NsYXNzIFZpZGVvVHJhY2s7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKKworY2xhc3Mg
VmlkZW9UcmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrTGlzdD4sIHB1Ymxp
YyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFj
a0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9U
cmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAgflZpZGVvVHJhY2tMaXN0KCk7
CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBpbnQgZ2V0VHJhY2tJbmRleChW
aWRlb1RyYWNrKik7CisgICAgYm9vbCBjb250YWlucyhWaWRlb1RyYWNrKikgY29uc3Q7CisKKyAg
ICBWaWRlb1RyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIGFwcGVuZChQYXNz
UmVmUHRyPFZpZGVvVHJhY2s+KTsKKyAgICB2b2lkIHJlbW92ZShWaWRlb1RyYWNrKik7CisKKyAg
ICBWaWRlb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Cisg
ICAgbG9uZyBzZWxlY3RlZEluZGV4KCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAg
dXNpbmcgUmVmQ291bnRlZDxWaWRlb1RyYWNrTGlzdD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPFZpZGVvVHJhY2tMaXN0Pjo6ZGVyZWY7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
OyB9CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHRyYWNrKTsKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNoYW5nZSk7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmV0cmFjayk7CisKKyAgICB2b2lkIGNsZWFyT3du
ZXIoKSB7IG1fb3duZXIgPSAwOyB9CisgICAgTm9kZSogb3duZXIoKSBjb25zdDsKKworICAgIGJv
b2wgaXNGaXJpbmdFdmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZGlzcGF0Y2hpbmdFdmVudHM7
IH0KKworICAgIC8vIE5lZWRzIHRvIGJlIHB1YmxpYyBzbyBWaWRlb1RyYWNrIGNhbiBjYWxsIGl0
CisgICAgdm9pZCBzY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKK3ByaXZhdGU6CisgICAgVmlkZW9U
cmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwor
ICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyBy
ZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9
CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1
cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKworICAg
IHZvaWQgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4pOworICAg
IHZvaWQgc2NoZWR1bGVSZW1vdmVUcmFja0V2ZW50KFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4pOwor
CisgICAgdm9pZCBhc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxWaWRlb1RyYWNrTGlzdD4qKTsK
KworICAgIHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVmlkZW9UcmFjayop
OworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1fb3duZXI7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGlu
Z0V2ZW50czsKKyAgICBUaW1lcjxWaWRlb1RyYWNrTGlzdD4gbV9wZW5kaW5nRXZlbnRUaW1lcjsK
KworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBWZWN0b3I8UmVm
UHRyPFZpZGVvVHJhY2s+ID4gbV90cmFja3M7CisKKyAgICBpbnQgbV9kaXNwYXRjaGluZ0V2ZW50
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFk
OWQ4ZWVkOThhYWM2N2FiMGI1MGY5MmI1MDI5NDRjMzBjNTRlMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIFY4
RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrLAorICAgIEluZGV4ZWRHZXR0ZXIsCisg
ICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21J
c1JlYWNoYWJsZSwKKyAgICBWOEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbE93bmVyUm9vdAorXSBp
bnRlcmZhY2UgVmlkZW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKKyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgVmlkZW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0
cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhF
dmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODFmZWQzN2E0Yjk2NzFl
MzFlMzgyNTM0YjA0MzkwOTQzYWE4YjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFj
a1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3Mg
QXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1
ZGlvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0
ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNs
aWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50
KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVu
YWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0g
S2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0
aW9uLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsg
cmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29u
c3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3Vh
Z2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlv
VHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlv
VHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgeworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAg
Ym9vbCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9U
cmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQwMmUzYmNjNDVi
M2JiYjEyODczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFZpZGVvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVfaAorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5W
aWRlb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZh
dGUgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRl
KCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAg
dm9pZCBzZXRDbGllbnQoVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2Vs
ZWN0ZWQpIHsgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBzZWxl
Y3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFs
dGVybmF0aXZlLCBDYXB0aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBO
b25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisK
KyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsg
fQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlB
dG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVy
biBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRleCgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2YXRlKCkKKyAg
ICAgICAgOiBtX3NlbGVjdGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
VmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zZWxlY3RlZDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196979</attachid>
            <date>2013-04-08 18:38:09 -0700</date>
            <delta_ts>2013-04-09 00:31:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130408193750.patch</filename>
            <type>text/plain</type>
            <size>126237</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQzODZjZjA5NzQxNmVj
MWU2OThlMmM0NGIxYTRkMDE3NjhjNTA0YS4uMWE1NTY4NWZmOTI1MTI0ZTZkYTUzN2U3OWJmODJk
YTI4ZWUzN2MyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0MSBAQAogMjAxMy0wNC0wOCAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CiAKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp+QXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OnRyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbnZhbGlkYXRlVHJhY2tJ
bmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tDbGllbnQ6On5BdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKEF1ZGlv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9UcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
OjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tJbmRleCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChBdWRp
b1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6cmVtb3Zl
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoQXVk
aW9UcmFja0xpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQp
OgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6Cisg
ICAgICAgIChBdWRpb1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChB
dWRpb1RyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
TGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6
YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmludmFsaWRhdGVUcmFj
a0luZGV4KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0NsaWVudDo6flZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6Om1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRJZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldExhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xpc3QpOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChW
aWRlb1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6cmVt
b3ZlKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6
OmNvbnRhaW5zKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6CisgICAgICAgIChWaWRl
b1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlz
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Om93bmVy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQ6On5BdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChBdWRpb1RyYWNrUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjp+QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpraW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjppZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGU6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjphdWRpb1RyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6
OkF1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCisyMDEzLTA0LTA4ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKwogICAgICAgICBbUXRdIEVuYWJsZSB0
ZXh0IHRyYWNrcyBmcm9tIHRyYWNrIGVsZW1lbnRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM1MjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJp
CmluZGV4IGRiZWNhNDcxYTdjNjFjNzZjZjQyMDE1MTA4Njg1ODVmOTc3MjcyNGYuLjc5MDllMWFl
NTFlM2E1Y2JjMTQ2OWNmNTcxNGE1YmY1NDUxOWIzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5wcmkKQEAgLTY1MiwxMSArNjUyLDE1IEBAIGVuYWJsZT8oR0FNRVBBRCkgewogCiBlbmFibGU/
KFZJREVPX1RSQUNLKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQV0QvaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5p
ZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAgICAgJCRQV0QvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUxpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwK
ICAgICAkJFBXRC9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKyAgICAkJFBXRC9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmlkbAogfQogCiBlbmFibGU/KE1FRElBX1NPVVJDRSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNTQ0M2Jj
ZGU3MDBlNmM1NGE2YzM2Yzg1MjYwNjM3NzM3NzY3YmFiNS4uYzMyYTAxNTYzNTE2Yzc4NjA3NGI0
YjBiOWI0YjJhYWIxNTYzYWRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zOTY2LDkgKzM5NjYsMTMgQEAg
ZW5hYmxlPyhKQVZBU0NSSVBUX0RFQlVHR0VSKSB7CiAKIGVuYWJsZT8oVklERU9fVFJBQ0spIHsK
ICAgICBIRUFERVJTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5oIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuaCBcCisgICAg
ICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmggXApAQCAtMzk3OCwyMCArMzk4MiwzMSBAQCBlbmFibGU/KFZJREVPX1RSQUNL
KSB7CiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90
cmFjay9UcmFja0Jhc2UuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5oIFwKKyAg
ICAgICAgaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorICAgICAgICBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZU
VFRva2VuLmggXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5oIFwKICAgICAg
ICAgbG9hZGVyL1RleHRUcmFja0xvYWRlci5oIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
QXVkaW9UcmFja1ByaXZhdGUuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRl
eHRUcmFja1ByaXZhdGUuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRU
cmFja1ByaXZhdGVDbGllbnQuaAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNr
UHJpdmF0ZS5oIFwKIAogICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlz
dEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
VHJhY2tFdmVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xp
c3RDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNw
cCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIFwKICAg
ICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVk
aW9UcmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBcCiAg
ICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svTG9hZGFibGVUZXh0VHJhY2suY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwIFwKQEAgLTQwMDEsNiArNDAxNiw5IEBAIGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgICAg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJh
Y2tCYXNlLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXAorICAgICAg
ICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwKICAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZDVjMWU0MjczOWNlNjdkNWQ1MjdkMzBhMzJkOTE0MDU1OTM2YTBh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0N1
c3RvbS5oIgorCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0F1ZGlvVHJhY2tPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2sqIGpzQXVk
aW9UcmFjayA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwor
ICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4oanNB
dWRpb1RyYWNrLT5pbXBsKCkpO1wKKworICAgIC8vIElmIHRoZSB0cmFjayBoYXMgbm8gY3VzdG9t
IHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFqc0F1ZGlvVHJhY2st
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFjaykpOworfQorCit2
b2lkIEpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0PEpT
QXVkaW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNBdWRp
b1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc0F1
ZGlvVHJhY2ssIHZpc2l0b3IpOworCisgICAgQXVkaW9UcmFjayogYXVkaW9UcmFjayA9IHN0YXRp
Y19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFjaykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJh
Y2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGNkZTNiMTcyMGU4ZDZjY2ZiZDYxNWMyNWUzZTNjNTUy
NGUzZGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpT
QXVkaW9UcmFja0N1c3RvbV9oCisjZGVmaW5lIEpTQXVkaW9UcmFja0N1c3RvbV9oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNBdWRpb1RyYWNrLmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJv
b3QoQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50
J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBt
ZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOwor
fQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNjE2YjBkNGI4
YWE5Mjk0MjJmMDVhZDc1NDkzMjQwOWFhMTZhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFja0xpc3RP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJh
Y2tMaXN0KiBqc0F1ZGlvVHJhY2tMaXN0ID0ganNDYXN0PEpTQXVkaW9UcmFja0xpc3QqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9
IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2tMaXN0Kj4oanNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsK
KworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFw
cGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2li
bGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmIChhdWRpb1RyYWNr
TGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0
b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWF1ZGlvVHJhY2tM
aXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc0F1ZGlvVHJhY2tMaXN0LT5oYXNDdXN0b21Q
cm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNo
YWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2tMaXN0LT5vd25lcigp
KSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVk
aW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNBdWRpb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNBdWRp
b1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFja0xpc3QsIHZpc2l0b3Ip
OworCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVk
aW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2tMaXN0LT5vd25lcigpKSk7CisgICAgYXVkaW9UcmFj
a0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1ZpZGVvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NDA2OWQ1NGY5NTRhNWIzMDEwYTQ1
NWI5NjZiZTBmM2VjOWFkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVk
ZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suaCIKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVmlk
ZW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
VmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpTVmlkZW9UcmFjayo+KGhhbmRsZS5n
ZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRpY19jYXN0
PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgdHJh
Y2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlm
ICghanNWaWRlb1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHZpZGVv
VHJhY2spKTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9U
cmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGpzVmlkZW9UcmFjaywgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1RyYWNrLT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrLCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2sqIHZp
ZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1RyYWNrLT5pbXBsKCkp
OworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2spKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzNzVlNTY3ZTZiYTM4YTNm
ZDZkMmM5OTVhZjBjMWNkZjZhYjNkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBKU1ZpZGVvVHJhY2tDdXN0b21faAorI2RlZmluZSBKU1ZpZGVvVHJhY2tD
dXN0b21faAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorI2luY2x1ZGUgIkpTVmlkZW9U
cmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2lubGluZSB2b2lkKiByb290KFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIC8vIFJldHVybiB0
aGUgbWVkaWEgZWxlbWVudCdzIHJvb3QgaWYgaXQgaGFzIG9uZS4KKyAgICBpZiAodHJhY2stPm1l
ZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+bWVkaWFFbGVtZW50KCkp
OworCisgICAgLy8gTm8gbWVkaWEgZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0IHRyYWNrLgorICAg
IHJldHVybiB0cmFjazsKK30KKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYmQ5NjcxMGQ2MDkzMTBjNzg3MmE3ZGY0M2I2Y2RiNDMzNWIxZDU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0LmgiCisK
KyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBK
U1ZpZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU1ZpZGVv
VHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBWaWRlb1RyYWNrTGlzdCog
dmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrTGlzdCo+KGpzVmlkZW9UcmFj
a0xpc3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlz
dGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFw
cGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAg
ICBpZiAodmlkZW9UcmFja0xpc3QtPmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBoYXMgbm8gZXZlbnQgbGlzdGVuZXJz
IGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAg
aWYgKCF2aWRlb1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAhanNWaWRlb1RyYWNr
TGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVsZW1lbnQgcGFyZW50IGlzIHJlYWNo
YWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCh2aWRlb1Ry
YWNrTGlzdC0+b3duZXIoKSkpOworfQorCit2b2lkIEpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVv
VHJhY2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9UcmFja0xpc3QqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlkZW9UcmFja0xpc3QsICZz
X2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Cisg
ICAgQVNTRVJUKGpzVmlkZW9UcmFja0xpc3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc1ZpZGVvVHJh
Y2tMaXN0LCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrTGlzdCA9
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlzdC0+aW1wbCgpKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrTGlzdC0+b3duZXIoKSkp
OworICAgIHZpZGVvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5oCmluZGV4IDgyNzc3YTg2ZWVmZGZiZWJlNjg5YzliOTIzMzY4ODI5NTgzOTFjM2UuLmVhMDc5
OWJiNWQwZDczNGMwMWY0NjhhNjNlMWQ1YjIyMDVjZmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBBdWRpb0NvbnRleHQ7CisgICAgY2xhc3MgQXVkaW9UcmFja0xpc3Q7CiAgICAgY2xhc3MgRGVk
aWNhdGVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogICAg
IGNsYXNzIERPTVdpbmRvdzsKQEAgLTY3LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFNvdXJjZUJ1ZmZlckxpc3Q7CiAgICAgY2xhc3MgVGV4dFRyYWNrOwogICAgIGNs
YXNzIFRleHRUcmFja0N1ZTsKKyAgICBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKICAgICBjbGFzcyBX
ZWJTb2NrZXQ7CiAgICAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogICAgIGNsYXNzIFdvcmtlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDQ3NmQxYjUzZjE0
NWJiMjczNDk4OTkzZjM5ZjFkMWNiYWE2MjM1ODMuLjhlYTViN2IwM2FiYWNhMDJmMjVmNDhhMmVk
NTU5OTI2M2VhNDcwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgpAQCAtMSw2ICsxLDcgQEAKIG5hbWVzcGFjZT0iRXZlbnRUYXJnZXQiCiAKIEF1ZGlvQ29udGV4
dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0F1ZGlvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVP
X1RSQUNLCiBCYXR0ZXJ5TWFuYWdlciBjb25kaXRpb25hbD1CQVRURVJZX1NUQVRVUwogRGVkaWNh
dGVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBET01BcHBsaWNhdGlvbkNhY2hl
CkBAIC0zNyw2ICszOCw3IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKIFRl
eHRUcmFjayBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNrQ3VlIGNvbmRpdGlvbmFs
PVZJREVPX1RSQUNLCiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCitWaWRl
b1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogV2ViS2l0TmFtZWRGbG93CiBXZWJT
b2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBjb25kaXRpb25hbD1XT1JLRVJT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAyNjBkMGE2NzU5
ZjUyYTY1MzZkMDYwMzQwNzIyZWY1YTlhNGQ5M2FjLi45NjE1NjFhNGQ5YTY2OGE0YjcwNGI2NzM2
MDE4MDUxMThjNTRjZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTk4LDYgKzk4LDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
I2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUu
aCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiSFRNTFRy
YWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFjay5oIgpAQCAtMTA1LDYgKzEw
Nyw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRl
eHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCisjaW5jbHVkZSAi
VmlkZW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMjk2LDcgKzMwMCw5IEBAIEhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtCiAgICAgLCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hhbmdlKGZhbHNlKQog
ICAgICwgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZSgtMSkKICAgICAsIG1fY2FwdGlvbkRpc3Bs
YXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYykKKyAgICAsIG1fYXVkaW9U
cmFja3MoMCkKICAgICAsIG1fdGV4dFRyYWNrcygwKQorICAgICwgbV92aWRlb1RyYWNrcygwKQog
ICAgICwgbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUoMCkKICNlbmRpZgogI2lmIEVOQUJMRShX
RUJfQVVESU8pCkBAIC0zMzAsMTIgKzMzNiwyMiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3ModGhpcyk7CisgICAgaWYgKG1fYXVkaW9UcmFja3MpIHsKKyAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9h
dWRpb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fYXVkaW9UcmFja3MtPml0
ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogICAgIGlmIChtX3RleHRUcmFja3MpCiAgICAg
ICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOwogICAgIGlmIChtX3RleHRUcmFja3MpIHsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7
ICsraSkKICAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQoKTsK
ICAgICB9CisgICAgaWYgKG1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+
Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92aWRlb1Ry
YWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdmlkZW9UcmFja3MtPml0ZW0oaSkt
PmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXIpCkBAIC0xMzQ5LDYgKzEzNjUsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIH0KIH0KIAordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayogdHJh
Y2spCit7CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMg
aGVyZSBvbmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+dHJhY2tU
eXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsKQEAgLTEzODgsNiArMTQwOSwxMSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayog
dHJhY2spCiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKIH0K
IAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVv
VHJhY2sqIHRyYWNrKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFuZ2UgdGhlIG1lZGlh
IGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAodHJh
Y2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5k
KCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBU
ZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCkBAIC0yNzkyLDcgKzI4MTgsMTcgQEAgZmxvYXQg
SFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExvYWRlZCgpIGNvbnN0CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUcmFj
ayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJh
Y2spOworCisgICAgYWRkQXVkaW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4
MjQsMTAgKzI4NjAsMzcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4KICAgICAvLyA5LiBGaXJl
IGFuIGV2ZW50IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFu
ZCBpcyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudAogICAgIC8v
IGludGVyZmFjZSwgd2l0aCB0aGUgdHJhY2sgYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSB0
ZXh0IHRyYWNrJ3MgVGV4dFRyYWNrIG9iamVjdCwgYXQgdGhlIG1lZGlhIGVsZW1lbnQncwogICAg
IC8vIHRleHRUcmFja3MgYXR0cmlidXRlJ3MgVGV4dFRyYWNrTGlzdCBvYmplY3QuCi0gICAgYWRk
VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgp
KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJh
Y2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBWaWRlb1RyYWNrOjpj
cmVhdGUodGhpcywgcHJwVHJhY2spOworCisgICAgYWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1Ry
YWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEF1ZGlvVHJh
Y2sgd2l0aCB0aGUgQXVkaW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5
ZXJEaWRBZGRBdWRpb1RyYWNrLgorICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IHN0YXRp
Y19jYXN0PEF1ZGlvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2sp
CisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4
MzYsMTIgKzI4OTksMjkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJl
bW92ZVRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmEKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVzZSB3ZSBjcmVhdGVkIHRoZSBJbmJh
bmRUZXh0VHJhY2sgd2l0aCB0aGUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZQotICAgIC8vIHBhc3Nl
ZCB0byBtZWRpYVBsYXllckRpZEFkZFRyYWNrLgorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXll
ckRpZEFkZFRleHRUcmFjay4KICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrPiB0ZXh0VHJhY2sg
PSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOwogICAg
IGlmICghdGV4dFRyYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICByZW1vdmVUcmFjayh0ZXh0
VHJhY2suZ2V0KCkpOworICAgIHJlbW92ZVRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworfQor
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQ
YXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV92aWRlb1RyYWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVzZSB3ZSBjcmVhdGVkIHRoZSBWaWRlb1RyYWNrIHdp
dGggdGhlIFZpZGVvVHJhY2tQcml2YXRlCisgICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlk
QWRkVmlkZW9UcmFjay4KKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBzdGF0aWNfY2Fz
dDxWaWRlb1RyYWNrKj4ocHJwVHJhY2stPmNsaWVudCgpKTsKKyAgICBpZiAoIXRyYWNrKQorICAg
ICAgICByZXR1cm47CisKKyAgICByZW1vdmVWaWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKIH0KIAog
I2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCkBAIC0yOTIwLDE0ICszMDAwLDI5IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpCiAjZW5k
aWYKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUcmFjayhUZXh0VHJhY2sqIHRyYWNr
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNr
KQoreworICAgIGF1ZGlvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgdGV4dFRy
YWNrcygpLT5hcHBlbmQodHJhY2spOwogICAgIAogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5n
ZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUcmFjayhUZXh0VHJhY2sq
IHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2sq
IHRyYWNrKQoreworICAgIHZpZGVvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7Cit9CisKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKK3sK
KyAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUodHJhY2spOworfQorCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIFRyYWNrRGlz
cGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwogICAgIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMg
PSB0cmFjay0+Y3VlcygpOwpAQCAtMjkzOCw3ICszMDMzLDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlVHJhY2soVGV4dFRyYWNrKiB0cmFjaykKICAgICBjbG9zZUNhcHRpb25UcmFj
a3NDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5k
VHJhY2tzKCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1Ry
YWNrKiB0cmFjaykKK3sKKyAgICBtX3ZpZGVvVHJhY2tzLT5yZW1vdmUodHJhY2spOworfQorCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEF1ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAo
IW1fYXVkaW9UcmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSBtX2F1
ZGlvVHJhY2tzLT5sZW5ndGgoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIEF1ZGlvVHJh
Y2sqIHRyYWNrID0gbV9hdWRpb1RyYWNrcy0+aXRlbShpKTsKKyAgICAgICAgcmVtb3ZlQXVkaW9U
cmFjayh0cmFjayk7CisgICAgfQorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFs
bEluYmFuZFRleHRUcmFja3MoKQogewogICAgIGlmICghbV90ZXh0VHJhY2tzKQogICAgICAgICBy
ZXR1cm47CkBAIC0yOTQ4LDcgKzMwNTksMTggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVBbGxJbmJhbmRUcmFja3MoKQogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJh
Y2tzLT5pdGVtKGkpOwogCiAgICAgICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRy
YWNrOjpJbkJhbmQpCi0gICAgICAgICAgICByZW1vdmVUcmFjayh0cmFjayk7CisgICAgICAgICAg
ICByZW1vdmVUZXh0VHJhY2sodHJhY2spOworICAgIH0KK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcygpCit7CisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGludCBpID0gbV92aWRlb1RyYWNrcy0+bGVuZ3Ro
KCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBWaWRlb1RyYWNrKiB0cmFjayA9IG1fdmlk
ZW9UcmFja3MtPml0ZW0oaSk7CisgICAgICAgIHJlbW92ZVZpZGVvVHJhY2sodHJhY2spOwogICAg
IH0KIH0KIApAQCAtMjk3OCw3ICszMTAwLDcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxN
ZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAg
ICAvLyBmaXJzdCBhcHBlbmQgdGhlIHRyYWNrIHRvIHRoZSB0ZXh0IHRyYWNrIGxpc3QuCiAKICAg
ICAvLyA2LiBBZGQgdGhlIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlz
dCBvZiB0ZXh0IHRyYWNrcy4KLSAgICBhZGRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIGFk
ZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNr
IHJlYWRpbmVzcyBzdGF0ZSB0byB0aGUgdGV4dCB0cmFjayBsb2FkZWQgc3RhdGUgLi4uCiAgICAg
dGV4dFRyYWNrLT5zZXRSZWFkaW5lc3NTdGF0ZShUZXh0VHJhY2s6OkxvYWRlZCk7CkBAIC0yOTg5
LDYgKzMxMTEsMTcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAgICByZXR1cm4gdGV4dFRy
YWNrLnJlbGVhc2UoKTsKIH0KIAorQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlv
VHJhY2tzKQorICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0
aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICBy
ZXR1cm4gbV9hdWRpb1RyYWNrcy5nZXQoKTsKK30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrcygpIAogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAgLTMwMDAsNyArMzEzMywxOCBAQCBUZXh0
VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkKICAgICByZXR1cm4gbV90
ZXh0VHJhY2tzLmdldCgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRyYWNr
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKK1ZpZGVvVHJhY2tMaXN0KiBIVE1MTWVk
aWFFbGVtZW50Ojp2aWRlb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGlmICghbV92aWRlb1RyYWNrcykKKyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tM
aXN0OjpjcmVhdGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOworCisgICAgcmV0dXJuIG1fdmlkZW9UcmFja3MuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVu
dCkKIHsKICAgICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAK
QEAgLTMwMTUsNyArMzE1OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2so
SFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogICAgIGlmICghdGV4dFRyYWNrKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgYWRkVHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICBh
ZGRUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKICAgICAKICAgICAvLyBEbyBub3Qgc2NoZWR1
bGUgdGhlIHRyYWNrIGxvYWRpbmcgdW50aWwgcGFyc2luZyBmaW5pc2hlcyBzbyB3ZSBkb24ndCBz
dGFydCBiZWZvcmUgYWxsIHRyYWNrcwogICAgIC8vIGluIHRoZSBtYXJrdXAgaGF2ZSBiZWVuIGFk
ZGVkLgpAQCAtMzAyNiw3ICszMTcwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRU
cmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiAgICAgICAgIG1lZGlhQ29udHJv
bHMoKS0+Y2xvc2VkQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpkaWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50
KiB0cmFja0VsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0
cmFja1RhZykpOwogCkBAIC0zMDUzLDcgKzMxOTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmRpZFJlbW92ZVRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAvLyBX
aGVuIGEgdHJhY2sgZWxlbWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQg
cGFyZW50IHdhcyBhIG1lZGlhIGVsZW1lbnQsIAogICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQg
bXVzdCByZW1vdmUgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sg
ZnJvbSB0aGUgCiAgICAgLy8gbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCi0g
ICAgcmVtb3ZlVHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICByZW1vdmVUZXh0VHJhY2sodGV4
dFRyYWNrLmdldCgpKTsKIAogICAgIHNpemVfdCBpbmRleCA9IG1fdGV4dFRyYWNrc1doZW5SZXNv
dXJjZVNlbGVjdGlvbkJlZ2FuLmZpbmQodGV4dFRyYWNrLmdldCgpKTsKICAgICBpZiAoaW5kZXgg
IT0gbm90Rm91bmQpCkBAIC0zOTM1LDcgKzQwNzksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNsZWFyTWVkaWFQbGF5ZXIoaW50IGZsYWdzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCi0gICAgcmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CisgICAgcmVtb3ZlQWxsSW5iYW5k
VGV4dFRyYWNrcygpOwogI2VuZGlmCiAKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCkBAIC00OTA2LDcgKzUwNTAsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2UsICJtZWRpYVNvdXJjZSIpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGluZm8uYWRkTWVtYmVyKG1fYXVkaW9UcmFja3MsICJh
dWRpb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdGV4dFRyYWNrcywgInRleHRUcmFj
a3MiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3ZpZGVvVHJhY2tzLCAidmlkZW9UcmFja3MiKTsK
ICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdh
biwgInRleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbiIpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fY3VlVHJlZSwgImN1ZVRyZWUiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2N1cnJl
bnRseUFjdGl2ZUN1ZXMsICJjdXJyZW50bHlBY3RpdmVDdWVzIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGNhMDE2YzA3ZDQ2ZmYyMTM3ZmEwZTFhYTg2NzMyNDNi
ZDEyN2UxOGMuLmFjNjMzMTlmNWRjY2M3MTAyMTgwNmJjOGIwNDI1ZGZkMTA4YjZiNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zOSwxMCArMzksMTIgQEAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIK
ICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiUE9ESW50ZXJ2
YWxUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3Vl
LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTUxLDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9Tb3Vy
Y2VQcm92aWRlcjsKIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKICNlbmRpZgor
Y2xhc3MgQXVkaW9UcmFja0xpc3Q7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEhUTUxTb3VyY2VFbGVt
ZW50OwogY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKQEAgLTU5LDYgKzYyLDcgQEAgY2xhc3MgTWVk
aWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwogY2xhc3MgVGV4dFRy
YWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OwogY2xhc3MgVGltZVJhbmdlczsKICNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKIGNsYXNzIFdpZGdldDsKQEAgLTcxLDcgKzc1
LDkgQEAgY2xhc3MgTWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7
CitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogdHlwZWRlZiBQT0RJbnRlcnZhbFRyZWU8ZG91
YmxlLCBUZXh0VHJhY2tDdWUqPiBDdWVJbnRlcnZhbFRyZWU7CiB0eXBlZGVmIEN1ZUludGVydmFs
VHJlZTo6SW50ZXJ2YWxUeXBlIEN1ZUludGVydmFsOwpAQCAtODQsNyArOTAsOSBAQCB0eXBlZGVm
IFZlY3RvcjxDdWVJbnRlcnZhbD4gQ3VlTGlzdDsKIAogY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6
IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVk
aWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVy
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICwgcHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50
CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAorICAgICwgcHJpdmF0ZSBWaWRlb1RyYWNr
Q2xpZW50CiAjZW5kaWYKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgICwg
cHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudApAQCAtMjI2LDIwICsyMzQsMzMgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBlbXB0eVN0cmluZygpLCBlYyk7IH0KICAgICBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZFRleHRUcmFjayhraW5kLCBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpLCBlYyk7IH0KIAorICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNr
cygpOwogICAgIFRleHRUcmFja0xpc3QqIHRleHRUcmFja3MoKTsKKyAgICBWaWRlb1RyYWNrTGlz
dCogdmlkZW9UcmFja3MoKTsKKwogICAgIEN1ZUxpc3QgY3VycmVudGx5QWN0aXZlQ3VlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudGx5QWN0aXZlQ3VlczsgfQogCi0gICAgdm9pZCBhZGRUcmFj
ayhUZXh0VHJhY2sqKTsKLSAgICB2b2lkIHJlbW92ZVRyYWNrKFRleHRUcmFjayopOwotICAgIHZv
aWQgcmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CisgICAgdm9pZCBhZGRBdWRpb1RyYWNrKEF1ZGlv
VHJhY2sqKTsKKyAgICB2b2lkIGFkZFRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIGFk
ZFZpZGVvVHJhY2soVmlkZW9UcmFjayopOworICAgIHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhBdWRp
b1RyYWNrKik7CisgICAgdm9pZCByZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9p
ZCByZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZUFsbEF1ZGlv
VHJhY2tzKCk7CisgICAgdm9pZCByZW1vdmVBbGxJbmJhbmRUZXh0VHJhY2tzKCk7CisgICAgdm9p
ZCByZW1vdmVBbGxWaWRlb1RyYWNrcygpOwogICAgIHZvaWQgY2xvc2VDYXB0aW9uVHJhY2tzQ2hh
bmdlZCgpOwogICAgIHZvaWQgbm90aWZ5TWVkaWFQbGF5ZXJPZlRleHRUcmFja0NoYW5nZXMoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlbW92ZVRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92
ZVRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRp
ZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJh
Y2tQcml2YXRlPikgT1ZFUlJJREU7CiAKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5V
KQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhQYXNzUmVmUHRyPFBsYXRm
b3JtVGV4dFRyYWNrPikgT1ZFUlJJREU7CkBAIC0yNzUsNiArMjk2LDkgQEAgcHVibGljOgogICAg
IHZvaWQgY29uZmlndXJlVGV4dFRyYWNrRGlzcGxheSgpOwogICAgIHZvaWQgdXBkYXRlVGV4dFRy
YWNrRGlzcGxheSgpOwogCisgICAgLy8gQXVkaW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9p
ZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopOworCiAgICAgLy8gVGV4dFRy
YWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRl
eHRUcmFjayopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJh
Y2sqKTsKQEAgLTI4NCw2ICszMDgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+KTsKIAorICAgIC8vIFZpZGVvVHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKik7CisKICAgICBib29sIHJlcXVp
cmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKik7CiAjZW5kaWYKQEAgLTY5
OSw3ICs3MjYsOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fbGFzdFRleHRUcmFja1VwZGF0ZVRp
bWU7CiAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIG1fY2Fw
dGlvbkRpc3BsYXlNb2RlOwogCisgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJh
Y2tzOwogICAgIFJlZlB0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CisgICAgUmVmUHRy
PFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPiA+IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwogCiAgICAgQ3Vl
SW50ZXJ2YWxUcmVlIG1fY3VlVHJlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsCmluZGV4IDkyMDUyMGJmMDI0ZTJjMTRiZmQ2YWFhZGFlNzgwZjRkNDk1NzFmMGYuLmFl
YjliYTlkOGY0YmNhNzA0YTJmOTdhMmY3NDNkNTI0Y2NjOThiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE2LDcgKzExNiw5IEBAIHZvaWQgd2Via2l0
Q2FuY2VsS2V5UmVxdWVzdChpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmlu
ZWRBcz1OdWxsU3RyCiAjaWYgZGVmaW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9W
SURFT19UUkFDSwogVGV4dFRyYWNrIGFkZFRleHRUcmFjayhpbiBET01TdHJpbmcga2luZCwgaW4g
W09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1
YWdlKQogICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBBdWRp
b1RyYWNrTGlzdCBhdWRpb1RyYWNrczsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0
IHRleHRUcmFja3M7CityZWFkb25seSBhdHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFj
a3M7CiAjZW5kaWYKIAogW1JlZmxlY3QsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0
ZSBET01TdHJpbmcgbWVkaWFHcm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuY3BwCmluZGV4IGZiYmIzZTg1ZTBkYTY3ODAxMWFmODRlZmM5YTU3OTljNjNmNDYzZDQuLjAx
MDU4NTVmY2YyNTcxOTc0OWM1MTYwOGI0NjQ5MmEyMDFhYzEzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtODAsMTQgKzgwLDE0IEBAIE5vZGU6Okluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFRyYWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUqCiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2lu
dCk7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CiAgICAg
aWYgKGluc2VydGlvblBvaW50ID09IHBhcmVudCkKLSAgICAgICAgcGFyZW50LT5kaWRBZGRUcmFj
ayh0aGlzKTsKKyAgICAgICAgcGFyZW50LT5kaWRBZGRUZXh0VHJhY2sodGhpcyk7CiAgICAgcmV0
dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKCFwYXJlbnROb2Rl
KCkgJiYgV2ViQ29yZTo6aXNNZWRpYUVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQpKQotICAgICAgICB0
b01lZGlhRWxlbWVudChpbnNlcnRpb25Qb2ludCktPmRpZFJlbW92ZVRyYWNrKHRoaXMpOworICAg
ICAgICB0b01lZGlhRWxlbWVudChpbnNlcnRpb25Qb2ludCktPmRpZFJlbW92ZVRleHRUcmFjayh0
aGlzKTsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzIw
Nzc2OGJlYjY2ZGVlNjY5NGYzZWEyMDkwYmM2YjM1ZmRmMjQxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApAQCAtMCwwICsxLDE3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0
LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJu
YXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFsdGVybmF0aXZlOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0
aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1h
aW4sICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gbWFpbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjptYWluRGVz
Y0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIG1haW5EZXNjOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1
ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0aW9uLCAoInRyYW5zbGF0aW9uIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiB0cmFuc2xhdGlvbjsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRh
cnksICgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICByZXR1cm4gY29tbWVudGFyeTsKK30KKworQXVkaW9UcmFjazo6QXVkaW9UcmFjayhBdWRp
b1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNr
UHJpdmF0ZSkKKyAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OkF1ZGlvVHJhY2spCisgICAgLCBt
X2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fbGFiZWwodHJhY2tQcml2YXRlLT5sYWJl
bCgpKQorICAgICwgbV9sYW5ndWFnZSh0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBt
X2VuYWJsZWQodHJhY2tQcml2YXRlLT5lbmFibGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQp
CisgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xp
ZW50KHRoaXMpOworCisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2Ug
QXVkaW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6RGVzY3JpcHRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
ZGVzY3JpcHRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJh
Y2tQcml2YXRlOjpNYWluOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5LZXl3b3Jk
KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluRGVz
YzoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OlRyYW5zbGF0aW9uOgorICAg
ICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAg
c2V0S2luZChBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0
eVN0cmluZygpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQXVkaW9UcmFjazo6
fkF1ZGlvVHJhY2soKQoreworICAgIGNsZWFyQ2xpZW50KCk7Cit9CisKK2Jvb2wgQXVkaW9UcmFj
azo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7CisgICAg
aWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xhdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEF1ZGlvVHJhY2s6
OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQoreworICAgIFN0cmluZyBvbGRLaW5k
ID0gbV9raW5kOworCisgICAgaWYgKGlzVmFsaWRLaW5kS2V5d29yZChraW5kKSkKKyAgICAgICAg
bV9raW5kID0ga2luZDsKKyAgICBlbHNlCisgICAgICAgIG1fa2luZCA9ICIiOworfQorCit2b2lk
IEF1ZGlvVHJhY2s6OnNldEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVkKQoreworICAgIGlmICht
X2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZCh0aGlzKTsKK30KKworaW50IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNr
SW5kZXgoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUt
PmF1ZGlvVHJhY2tJbmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTlmNGFm
YmFiYjFjZjViYzM2ZWNhMWI0MTY1YmFlMzZjMDI2ZjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja19oCisjZGVmaW5lIEF1ZGlvVHJh
Y2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1By
aXZhdGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVHJhY2tCYXNl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1ZGlvVHJhY2tDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSA9IDA7Cit9OworCitjbGFz
cyBBdWRpb1RyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiBjcmVh
dGUoQXVkaW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRl
PiB0cmFja1ByaXZhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
VHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QXVkaW9U
cmFjaygpOworCisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQor
ICAgIHZvaWQgc2V0SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKwor
ICAgIEF0b21pY1N0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgdm9p
ZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpOworCisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluRGVz
Y0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2xhdGlvbktl
eXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29y
ZCgpOworICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNTdHJp
bmcmKTsKKworICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7
IH0KKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwpIHsgbV9sYWJl
bCA9IGxhYmVsOyB9CisKKyAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVy
biBtX2xhbmd1YWdlOyB9CisgICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcm
IGxhbmd1YWdlKSB7IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQorCisgICAgYm9vbCBlbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJs
ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xp
ZW50ID0gMDsgfQorICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpZW50OyB9CisKKyAgICBpbnQgaW5iYW5kVHJhY2tJbmRleCgpOworCitwcm90ZWN0ZWQ6
CisgICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiwgUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4pOworCitwcml2YXRlOgorICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIEF0b21p
Y1N0cmluZyBtX2tpbmQ7CisgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CisgICAgQXRvbWljU3Ry
aW5nIG1fbGFuZ3VhZ2U7CisgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgQXVkaW9UcmFja0NsaWVu
dCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYjYzYzg1ZGQ5ODE4
NGU2NjVmMWRiNjQyNzFjYTQ0YmRlNmUzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5j
dGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBBdWRpb1RyYWNrIHsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxh
YmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBh
dHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRiYmNlODM1ZmUzMGViYjM2YTNhNzBl
YWU3YTdiNmVmMDE0NzU3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitBdWRpb1Ry
YWNrTGlzdDo6QXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250
ZXh0KQoreworfQorCitBdWRpb1RyYWNrTGlzdDo6fkF1ZGlvVHJhY2tMaXN0KCkKK3sKK30KKwor
dm9pZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJh
Y2spCit7CisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAv
LyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRl
eCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0
KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0
cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxl
bWVudChvd25lcigpKTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNl
KCkpOworfQorCitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpIHsKKyAg
ICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAg
ICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPih0cmFjayk7CisgICAgfQorCisg
ICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IGl0ZW0o
aSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFzZTo6QXVkaW9UcmFj
ayk7CisgICAgICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sgPSBkeW5hbWljX2Nhc3Q8QXVkaW9U
cmFjayo+KHRyYWNrKTsKKyAgICAgICAgaWYgKGF1ZGlvVHJhY2stPmlkKCkgPT0gaWQpCisgICAg
ICAgICAgICByZXR1cm4gYXVkaW9UcmFjazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQXVkaW9UcmFja0xpc3Q7Cit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwNzE4YTNiYjQ1ZjhlYWNkYTM0MWEyZjEwY2NkNTY3ZGFjOTMwNTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tMaXN0
X2gKKyNkZWZpbmUgQXVkaW9UcmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
CisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlz
dEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tMaXN0
KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5BdWRpb1RyYWNrTGlzdCgpOworCisgICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPik7CisgICAgQXVkaW9UcmFjayogaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgQXVkaW9UcmFjayogZ2V0VHJhY2tCeUlkKGNv
bnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJjMWNlMDhjMjRjOTQwNDE5NDBkNjM3ODhiMzBiNGU5NDZjNjVlYzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywK
KyAgICBJbmRleGVkR2V0dGVyLAorICAgIEV2ZW50VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFya0Z1
bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2tM
aXN0IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAg
QXVkaW9UcmFjayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIEF1ZGlvVHJhY2sg
Z2V0VHJhY2tCeUlkKGluIERPTVN0cmluZyBpZCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmNoYW5nZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNrOwor
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3ZldHJhY2s7CisKKyAgICB2b2lkIGFk
ZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50
TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3BhdGNo
RXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IDNjMjc0YjFlMTRi
OWI5MDYxZmQ4N2Y0MmY4NmFiYTIyZTVjODg0MTAuLjQ1MGVmNjhiNDhlNzFjODU2YzViZjM4ZmJi
NTU3MWI5YTg5ZTFiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAK
QEAgLTEwOCwxMiArMTA4LDEyIEBAIFRleHRUcmFjayogVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1
dG9tYXRpY0l0ZW0oKQogfQogCiBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5cGUpCi0gICAgOiBUcmFja0Jhc2UoY29udGV4dCwg
VHJhY2tCYXNlOjpUZXh0VHJhY2spCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpUZXh0VHJh
Y2spCiAgICAgLCBtX2N1ZXMoMCkKKyAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250
ZXh0KQogI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKICAgICAsIG1fcmVnaW9ucygwKQogI2Vu
ZGlmCi0gICAgLCBtX21lZGlhRWxlbWVudCgwKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAs
IG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCiAgICAgLCBtX21vZGUoZGlzYWJsZWRLZXl3b3JkKCkuc3Ry
aW5nKCkpCkBAIC0xNDMsNiArMTQzLDI2IEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAg
Y2xlYXJDbGllbnQoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
VGV4dFRyYWNrOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2s6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrOjpldmVudFRhcmdldERh
dGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0
RGF0YSogVGV4dFRyYWNrOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAm
bV9ldmVudFRhcmdldERhdGE7Cit9CisKIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdv
cmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gc3VidGl0
bGVzS2V5d29yZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXggNTc2
OTQ1YmJlNTIxY2Q2YTJmNmZmZmZkMzdlNTZhZDY2NzI2MGZmMy4uYjFiNjkzY2JmNTk2NmEyMDVm
NjE0Y2ZmOTVlM2Q2MGZlYmZhYzU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5oCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRN
TE1lZGlhRWxlbWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBUZXh0
VHJhY2s7CiBjbGFzcyBUZXh0VHJhY2tDdWU7CiBjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OwpAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1
ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pID0gMDsKIH07CiAKLWNsYXNz
IFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UKK2NsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBU
cmFja0Jhc2UsIHB1YmxpYyBFdmVudFRhcmdldAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNL
X01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQKICNlbmRpZgpAQCAt
NzMsMTIgKzczLDEyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7
CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0OworCiAgICAgc3RhdGljIFRleHRUcmFjayogY2FwdGlvbk1lbnVPZmZJdGVt
KCk7CiAgICAgc3RhdGljIFRleHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCk7CiAK
LSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7IG1f
bWVkaWFFbGVtZW50ID0gZWxlbWVudDsgfQotICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0KICAgICBBdG9taWNTdHJpbmcga2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIHZvaWQgc2V0S2luZChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKIApAQCAtMTA5LDggKzEwOSw4IEBAIHB1YmxpYzoKICAgICBUZXh0VHJhY2tD
dWVMaXN0KiBjdWVzKCk7CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogYWN0aXZlQ3VlcygpIGNvbnN0
OwogCi0gICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9Ci0gICAgVGV4dFRy
YWNrQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNsaWVudCgpIE9WRVJSSURFIHsgbV9jbGllbnQgPSAwOyB9CisgICAgVGV4dFRyYWNr
Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgdm9pZCBh
ZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2b2lkIHJlbW92ZUN1ZShUZXh0
VHJhY2tDdWUqLCBFeGNlcHRpb25Db2RlJik7CkBAIC0xNTQsMTYgKzE1NCwyNSBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UZXh0VHJhY2soKTsK
ICNlbmRpZgogCisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpyZWY7CisgICAgdXNp
bmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpkZXJlZjsKKwogcHJvdGVjdGVkOgogICAgIFRleHRU
cmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRv
bWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKICAgICBUZXh0VHJhY2tSZWdpb25MaXN0KiByZWdp
b25MaXN0KCk7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCk7CisKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2
YXRlOgogCisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKICAgICBUZXh0VHJhY2tS
ZWdpb25MaXN0KiBlbnN1cmVUZXh0VHJhY2tSZWdpb25MaXN0KCk7CiAgICAgUmVmUHRyPFRleHRU
cmFja1JlZ2lvbkxpc3Q+IG1fcmVnaW9uczsKQEAgLTE3Nyw3ICsxODYsOCBAQCBwcml2YXRlOgog
CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOwogCi0gICAg
SFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2
ZW50VGFyZ2V0RGF0YTsKICAgICBBdG9taWNTdHJpbmcgbV9raW5kOwogICAgIEF0b21pY1N0cmlu
ZyBtX2xhYmVsOwogICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKaW5kZXggMjkzYjNkMDI3MDFiMDk1NWQyZmE4
Yjc2OTQ4MGRhY2IwMWQ3ZDBlYy4uYzZhZDJkMTdiZTY5Y2VkODNiMGQ2NDk4MWIzMzRjZWQwNzlk
Y2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBA
IC0zMCwyMyArMzAsMTYgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkluYmFuZFRleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIK
ICNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKLSNpbmNsdWRlICJUcmFja0V2ZW50
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBUZXh0VHJhY2tMaXN0OjpUZXh0VHJh
Y2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX293bmVyKG93bmVyKQot
ICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVu
dFRpbWVyRmlyZWQpCi0gICAgLCBtX2Rpc3BhdGNoaW5nRXZlbnRzKDApCisgICAgOiBUcmFja0xp
c3RCYXNlKG93bmVyLCBjb250ZXh0KQogewotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50
KCkpOwogfQogCiBUZXh0VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlzdCgpCkBAIC01OCw4ICs1MSwx
MiBAQCB1bnNpZ25lZCBUZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBt
X2FkZFRyYWNrVHJhY2tzLnNpemUoKSArIG1fZWxlbWVudFRyYWNrcy5zaXplKCkgKyBtX2luYmFu
ZFRyYWNrcy5zaXplKCk7CiB9CiAKLWludCBUZXh0VHJhY2tMaXN0OjpnZXRUcmFja0luZGV4KFRl
eHRUcmFjayAqdGV4dFRyYWNrKQoraW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXgoVHJh
Y2tCYXNlICp0cmFjaykKIHsKKyAgICBpZiAodHJhY2stPnR5cGUoKSAhPSBUcmFja0Jhc2U6OlRl
eHRUcmFjaykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFRleHRUcmFjayogdGV4dFRyYWNrID0g
c3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOworCiAgICAgaWYgKHRleHRUcmFjay0+dHJh
Y2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxMb2FkYWJsZVRleHRUcmFjayo+KHRleHRUcmFjayktPnRyYWNrRWxlbWVudEluZGV4
KCk7CiAKQEAgLTk4LDcgKzk1LDcgQEAgaW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXhS
ZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRyYWNrICp0ZXh0VHJhY2spCiAgICAgfQogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAoIW1faW5iYW5kVHJhY2tzW2ldLT5pc1JlbmRlcmVkKCkpCisgICAgICAgIGlm
ICghZ2V0SW5iYW5kVHJhY2soaSktPmlzUmVuZGVyZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKICAgICAgICAgaWYgKG1faW5iYW5kVHJhY2tzW2ldID09IHRleHRUcmFjaykK
QEAgLTExMSw3ICsxMDgsNyBAQCBpbnQgVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleFJlbGF0
aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sgKnRleHRUcmFjaykKICAgICByZXR1cm4gLTE7
CiB9CiAKLVRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKK1Rl
eHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAg
ICAvLyA0LjguMTAuMTIuMSBUZXh0IHRyYWNrIG1vZGVsCiAgICAgLy8gVGhlIHRleHQgdHJhY2tz
IGFyZSBzb3J0ZWQgYXMgZm9sbG93czoKQEAgLTEyOSwzNiArMTI2LDQ1IEBAIFRleHRUcmFjayog
VGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIAogICAgIGluZGV4IC09IG1fYWRk
VHJhY2tUcmFja3Muc2l6ZSgpOwogICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIGdldEluYmFuZFRyYWNrKGluZGV4KTsKIAogICAgIHJldHVybiAwOwogfQogCi12b2lk
IFRleHRUcmFja0xpc3Q6OmludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKFRleHRUcmFj
ayogdHJhY2spCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6OmdldEluYmFuZFRyYWNrKHVuc2ln
bmVkIGluZGV4KSBjb25zdAogewotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFj
a3MgPSAwOworICAgIFRyYWNrQmFzZSogdHJhY2sgPSBtX2luYmFuZFRyYWNrc1tpbmRleF0uZ2V0
KCk7CisgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpUZXh0VHJhY2spOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayk7Cit9CiAKK3ZvaWQgVGV4
dFRyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKiB0
cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBub3RGb3VuZDsKICAgICBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7Ci0gICAgICAgIHRyYWNrcyA9
ICZtX2VsZW1lbnRUcmFja3M7CisgICAgICAgIGluZGV4ID0gbV9lbGVtZW50VHJhY2tzLmZpbmQo
dHJhY2spOworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IG1fZWxlbWVudFRyYWNrcy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fZWxlbWVudFRyYWNrcy5hdChpbmRleCktPmludmFs
aWRhdGVUcmFja0luZGV4KCk7CisgICAgfSBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0g
VGV4dFRyYWNrOjpBZGRUcmFjaykgeworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsK
KyAgICAgICAgICAgIGluZGV4ID0gbV9hZGRUcmFja1RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICAg
ICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FkZFRyYWNrVHJhY2tz
LnNpemUoKTsgKytpKQogICAgICAgICAgICAgbV9hZGRUcmFja1RyYWNrc1tpXS0+aW52YWxpZGF0
ZVRyYWNrSW5kZXgoKTsKKyAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0
VHJhY2s6OkluQmFuZCkgeworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgICAgIGluZGV4ID0gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFjayk7CisgICAgICAgICAgICBp
ZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICBtX2luYmFuZFRyYWNrc1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgo
KTsKLSAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRy
YWNrKSB7Ci0gICAgICAgIHRyYWNrcyA9ICZtX2FkZFRyYWNrVHJhY2tzOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgbV9pbmJhbmRUcmFja3NbaV0tPmludmFsaWRhdGVUcmFja0luZGV4KCk7Ci0gICAgfSBlbHNl
IGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgIHRy
YWNrcyA9ICZtX2luYmFuZFRyYWNrczsKLSAgICBlbHNlCisgICAgICAgICAgICBnZXRJbmJhbmRU
cmFjayhpKS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKKyAgICB9IGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJh
Y2spOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdHJhY2tzLT5zaXplKCk7ICsraSkKLSAgICAgICAg
dHJhY2tzLT5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0luZGV4KCk7CiB9CiAKIHZvaWQgVGV4
dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBwcnBUcmFjaykKQEAgLTE3
Myw1OCArMTc5LDY3IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4
dFRyYWNrPiBwcnBUcmFjaykKICAgICAgICAgbV9lbGVtZW50VHJhY2tzLmluc2VydChpbmRleCwg
dHJhY2spOwogICAgIH0gZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6
SW5CYW5kKSB7CiAgICAgICAgIC8vIEluc2VydCB0cmFja3MgYWRkZWQgZm9yIGluLWJhbmQgaW4g
dGhlIG1lZGlhIGZpbGUgb3JkZXIuCi0gICAgICAgIHNpemVfdCBpbmRleCA9IHN0YXRpY19jYXN0
PEluYmFuZFRleHRUcmFjayo+KHRyYWNrLmdldCgpKS0+aW5iYW5kVHJhY2tJbmRleCgpOworICAg
ICAgICBzaXplX3QgaW5kZXggPSBkeW5hbWljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrKj4odHJhY2su
Z2V0KCkpLT5pbmJhbmRUcmFja0luZGV4KCk7CiAgICAgICAgIG1faW5iYW5kVHJhY2tzLmluc2Vy
dChpbmRleCwgdHJhY2spOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRyYWNrLmdldCgpKTsK
IAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1l
bnQoKSA9PSBtX293bmVyKTsKLSAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG1fb3duZXIpOwor
ICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQo
KSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOwogCiAg
ICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgVGV4
dFRyYWNrTGlzdDo6cmVtb3ZlKFRleHRUcmFjayogdHJhY2spCit2b2lkIFRleHRUcmFja0xpc3Q6
OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQogewotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
PiA+KiB0cmFja3MgPSAwOwotCi0gICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OlRyYWNrRWxlbWVudCkKLSAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNrczsKLSAg
ICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKLSAg
ICAgICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0gICAgZWxzZSBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAgICB0cmFja3MgPSAmbV9pbmJh
bmRUcmFja3M7CisgICAgaWYgKHRyYWNrLT50eXBlKCkgIT0gVHJhY2tCYXNlOjpUZXh0VHJhY2sp
CisgICAgICAgIHJldHVybjsKKyAgICBUZXh0VHJhY2sqIHRleHRUcmFjayA9IHN0YXRpY19jYXN0
PFRleHRUcmFjayo+KHRyYWNrKTsKKworICAgIHNpemVfdCBpbmRleCA9IG5vdEZvdW5kOworICAg
IGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQor
ICAgICAgICBtX2VsZW1lbnRUcmFja3MuZmluZCh0ZXh0VHJhY2spOworICAgIGVsc2UgaWYgKHRl
eHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKKyAgICAgICAgbV9h
ZGRUcmFja1RyYWNrcy5maW5kKHRleHRUcmFjayk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgbV9pbmJhbmRUcmFja3Mu
ZmluZCh0ZXh0VHJhY2spOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJhY2spOwogICAgIGlmIChpbmRl
eCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW52YWxpZGF0ZVRyYWNrSW5k
ZXhlc0FmdGVyVHJhY2sodHJhY2spOworICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRy
YWNrKHRleHRUcmFjayk7CiAKLSAgICBBU1NFUlQodHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1f
b3duZXIpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7CisgICAgQVNTRVJUKHRyYWNr
LT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0ZXh0VHJhY2stPnNldE1lZGlhRWxl
bWVudCgwKTsKIAotICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKKyAgICBpZiAodGV4dFRyYWNr
LT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKKyAgICAgICAgbV9lbGVt
ZW50VHJhY2tzLnJlbW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50cmFja1R5
cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQorICAgICAgICBtX2FkZFRyYWNrVHJhY2tzLnJl
bW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0
VHJhY2s6OkluQmFuZCkKKyAgICAgICAgbV9pbmJhbmRUcmFja3MucmVtb3ZlKGluZGV4KTsKKyAg
ICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIFRleHRUcmFj
a0xpc3Q6OmNvbnRhaW5zKFRleHRUcmFjayogdHJhY2spIGNvbnN0Citib29sIFRleHRUcmFja0xp
c3Q6OmNvbnRhaW5zKFRyYWNrQmFzZSogdHJhY2spIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7Ci0gICAgCi0gICAgaWYgKHRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKLSAgICAgICAgdHJhY2tzID0g
Jm1fZWxlbWVudFRyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpBZGRUcmFjaykKLSAgICAgICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0g
ICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAg
ICAgICB0cmFja3MgPSAmbV9pbmJhbmRUcmFja3M7Ci0gICAgZWxzZQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBpZiAodHJhY2stPnR5cGUoKSAhPSBUcmFja0Jhc2U6OlRleHRU
cmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFRleHRUcmFjayogdGV4dFRyYWNrID0g
c3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOwogICAgIAotICAgIHJldHVybiB0cmFja3Mt
PmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgp
ID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQorICAgICAgICByZXR1cm4gbV9lbGVtZW50VHJh
Y2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCisgICAgICAgIHJldHVybiBtX2FkZFRyYWNrVHJh
Y2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICByZXR1cm4gbV9pbmJhbmRUcmFja3Mu
ZmluZCh0cmFjaykgIT0gbm90Rm91bmQ7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0xpc3Q6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdApAQCAtMjMyLDQxICsyNDcsNCBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAogICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrTGlzdDsKIH0KIAotdm9pZCBUZXh0VHJhY2tM
aXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNrKQot
ewotICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCi0g
ICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKLSAgICAvLyAuLi4gdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMg
bm90IAotICAgIC8vIGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMg
dGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRoIAotICAgIC8vIHRoZSB0cmFjayBhdHRyaWJ1
dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0VHJhY2sgb2JqZWN0LCBhdCAK
LSAgICAvLyB0aGUgbWVkaWEgZWxlbWVudCdzIHRleHRUcmFja3MgYXR0cmlidXRlJ3MgVGV4dFRy
YWNrTGlzdCBvYmplY3QuCi0KLSAgICBSZWZQdHI8VGV4dFRyYWNrPiB0cmFja1JlZiA9IHRyYWNr
OwotICAgIFRyYWNrRXZlbnRJbml0IGluaXRpYWxpemVyOwotICAgIGluaXRpYWxpemVyLnRyYWNr
ID0gdHJhY2tSZWY7Ci0gICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOwotICAgIGluaXRp
YWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKLQotICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQo
VHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBpbml0aWFsaXpl
cikpOwotICAgIGlmICghbV9wZW5kaW5nRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBt
X3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBUZXh0VHJhY2tM
aXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tMaXN0PiopCi17Ci0gICAg
VmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOwotCi0gICAgKyttX2Rpc3BhdGNo
aW5nRXZlbnRzOwotICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOwotICAg
IHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChw
ZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIElHTk9SRV9FWENFUFRJT04pOwotICAgIC0t
bV9kaXNwYXRjaGluZ0V2ZW50czsKLX0KLQotTm9kZSogVGV4dFRyYWNrTGlzdDo6b3duZXIoKSBj
b25zdAotewotICAgIHJldHVybiBtX293bmVyOwotfQotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggMWVlMTVjOTNjOTg3OWU1YzlhYTVlNWQ0
YjY5MWQ0N2MwNTQ2MmEyMS4uZWY1MjY3ZDQxNThkODU5MDY5MzU0NDBmNmM4MmYwODhlNGVkMzE0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKQEAgLTI4LDIx
ICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSAiRXZlbnRM
aXN0ZW5lci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
ICJUcmFja0xpc3RCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKIGNsYXNzIFRleHRUcmFjazsKLWNsYXNzIFRleHRUcmFja0xpc3Q7CiAKLWNs
YXNzIFRleHRUcmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0PiwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRleHRUcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0
QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIHsKQEAgLTUwLDU0ICs0MiwyNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5UZXh0
VHJhY2tMaXN0KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBpbnQgZ2V0
VHJhY2tJbmRleChUZXh0VHJhY2sqKTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJlbGF0aXZlVG9S
ZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sqKTsKLSAgICBib29sIGNvbnRhaW5zKFRleHRUcmFjayop
IGNvbnN0OwogCi0gICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGdl
dFRyYWNrSW5kZXgoVHJhY2tCYXNlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRh
aW5zKFRyYWNrQmFzZSopIGNvbnN0IE9WRVJSSURFOworCisgICAgVGV4dFRyYWNrKiBpdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFj
az4pOwotICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoVHJhY2tCYXNlKikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Ci0gICAgdXNpbmcg
UmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4
dFRyYWNrTGlzdD46OmRlcmVmOwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQotCi0g
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0cmFjayk7Ci0KLSAgICB2b2lk
IGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAwOyB9Ci0gICAgTm9kZSogb3duZXIoKSBjb25zdDsK
LQotICAgIGJvb2wgaXNGaXJpbmdFdmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZGlzcGF0Y2hp
bmdFdmVudHM7IH0KIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1l
bnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0K
LSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0KLSAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tF
dmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwotICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmly
ZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKTsKLQorICAgIFRleHRUcmFjayogZ2V0SW5iYW5kVHJh
Y2sodW5zaWduZWQpIGNvbnN0OwogICAgIHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVy
VHJhY2soVGV4dFRyYWNrKik7CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRl
eHQ7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9vd25lcjsKLQotICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOwotICAgIFRpbWVyPFRleHRUcmFja0xpc3Q+IG1fcGVu
ZGluZ0V2ZW50VGltZXI7Ci0KLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7
Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV9hZGRUcmFja1RyYWNrczsKLSAgICBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX2VsZW1lbnRUcmFja3M7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxUZXh0VHJhY2s+ID4gbV9pbmJhbmRUcmFja3M7Ci0KLSAgICBpbnQgbV9kaXNwYXRjaGlu
Z0V2ZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlRleHRUcmFjaz4gPiBtX2FkZFRy
YWNrVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6VGV4dFRyYWNrPiA+IG1fZWxl
bWVudFRyYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRleCA2YTJjMzU4MjNlNjE5NjJhMzdjOWY4ZjRjZWZk
OTg5ZGRhYjUwZGZlLi5hNmE4ZjM1YjY4N2MwNThhOWY5Mjg4YTUxYjE0M2I5YzFlM2EzNDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCkBAIC0zMCw4ICszMCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVHJhY2tCYXNlOjpUcmFja0Jhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSB0eXBlKQotICAgIDogbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KGNvbnRleHQpCitUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUpCisgICAg
OiBtX21lZGlhRWxlbWVudCgwKQogewogICAgIEFTU0VSVCh0eXBlICE9IEJhc2VUcmFjayk7CiAg
ICAgbV90eXBlID0gdHlwZTsKQEAgLTQxLDI2ICs0MSw2IEBAIFRyYWNrQmFzZTo6flRyYWNrQmFz
ZSgpCiB7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVHJhY2tCYXNlOjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRleHRUcmFj
azsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVHJhY2tCYXNlOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotfQotCi1FdmVudFRhcmdldERhdGEqIFRyYWNrQmFzZTo6ZXZlbnRUYXJnZXREYXRhKCkKLXsK
LSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEqIFRy
YWNrQmFzZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKaW5kZXggYzAwNjYwZjA1M2FkNjQ5NDE2NThmMjBk
NzUwMzBjYWJjOTMyNzk4OS4uNjQ2ZDQ4N2RhNzRhOWFjNjQzZWFlMzM3NmZjOTNmNzg2MTJkNjAy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0zMywzNSArMzMsMjcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIAotY2xhc3MgVHJhY2tCYXNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8VHJhY2tCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRyYWNrQmFz
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4gewogcHVibGljOgogICAgIHZpcnR1YWwg
flRyYWNrQmFzZSgpOwogCiAgICAgZW51bSBUeXBlIHsgQmFzZVRyYWNrLCBUZXh0VHJhY2ssIEF1
ZGlvVHJhY2ssIFZpZGVvVHJhY2sgfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgCi0gICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jh
c2U+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpkZXJlZjsKKyAgICB2
b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7IG1fbWVkaWFF
bGVtZW50ID0gZWxlbWVudDsgfQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgp
IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGll
bnQoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFR5cGUpOwotICAgIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCk7CisgICAgVHJhY2tCYXNlKFR5cGUpOworCisgICAgSFRNTE1lZGlhRWxlbWVudCog
bV9tZWRpYUVsZW1lbnQ7CiAKIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgCi0gICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgCi0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIEV2ZW50VGFyZ2V0RGF0
YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZGM1
Y2UzYzJlMzc5ZTZiYzEwM2FlNWYxZGIwYzNlM2FjZmE5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCkBAIC0wLDAgKzEsMTU4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUg
IlRyYWNrRXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1RyYWNrTGlzdEJh
c2U6OlRyYWNrTGlzdEJhc2UoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fb3du
ZXIob3duZXIpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHRoaXMsICZUcmFja0xpc3RCYXNl
Ojphc3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fZGlzcGF0Y2hpbmdFdmVudHMoMCkKK3sK
KyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKK30KKworVHJhY2tMaXN0QmFzZTo6
flRyYWNrTGlzdEJhc2UoKQoreworfQorCit1bnNpZ25lZCBUcmFja0xpc3RCYXNlOjpsZW5ndGgo
KSBjb25zdAoreworICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5zaXplKCk7Cit9CisKK2ludCBU
cmFja0xpc3RCYXNlOjpnZXRUcmFja0luZGV4KFRyYWNrQmFzZSAqdHJhY2spCit7CisgICAgcmV0
dXJuIG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spOworfQorCit2b2lkIFRyYWNrTGlzdEJhc2U6
OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQoreworICAgIHNpemVfdCBpbmRleCA9IG1faW5iYW5k
VHJhY2tzLmZpbmQodHJhY2spOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtX293bmVyKTsK
KyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KDApOworCisgICAgUmVmUHRyPFRyYWNrQmFzZT4g
dHJhY2tSZWYgPSBtX2luYmFuZFRyYWNrc1tpbmRleF07CisKKyAgICBtX2luYmFuZFRyYWNrcy5y
ZW1vdmUoaW5kZXgpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrUmVmLnJlbGVh
c2UoKSk7Cit9CisKK2Jvb2wgVHJhY2tMaXN0QmFzZTo6Y29udGFpbnMoVHJhY2tCYXNlKiB0cmFj
aykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFjaykgIT0gbm90
Rm91bmQ7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVBZGRUcmFja0V2ZW50KFBh
c3NSZWZQdHI8VHJhY2tCYXNlPiB0cmFjaykKK3sKKyAgICAvLyA0LjguMTAuNSBMb2FkaW5nIHRo
ZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIC4uLgorICAgIC8vIEZpcmUgYSB0cnVzdGVkIGV2ZW50
IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcworICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgd2l0aCB0aGUgdHJhY2sKKyAgICAvLyBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIG5l
dyBUIG9iamVjdCwgYXQgdGhpcworICAgIC8vIFRyYWNrTGlzdEJhc2Ugb2JqZWN0LgorCisgICAg
UmVmUHRyPFRyYWNrQmFzZT4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBUcmFja0V2ZW50SW5pdCBp
bml0aWFsaXplcjsKKyAgICBpbml0aWFsaXplci50cmFjayA9IHRyYWNrUmVmOworICAgIGluaXRp
YWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFs
c2U7CisKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAoIW1fcGVuZGlu
Z0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFy
dE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVSZW1vdmVUcmFj
a0V2ZW50KFBhc3NSZWZQdHI8VHJhY2tCYXNlPiB0cmFjaykKK3sKKyAgICAvLyA0LjguMTAuNiBP
ZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291cmNlCisgICAgLy8gSWYgYXQgYW55IHRpbWUgdGhl
IHVzZXIgYWdlbnQgbGVhcm5zIHRoYXQgYW4gYXVkaW8gb3IgdmlkZW8gdHJhY2sgaGFzCisgICAg
Ly8gZW5kZWQgYW5kIGFsbCBtZWRpYSBkYXRhIHJlbGF0aW5nIHRvIHRoYXQgdHJhY2sgY29ycmVz
cG9uZHMgdG8gcGFydHMgb2YKKyAgICAvLyB0aGUgbWVkaWEgdGltZWxpbmUgdGhhdCBhcmUgYmVm
b3JlIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgdGhlCisgICAgLy8gdXNlciBhZ2Vu
dCBtYXkgcXVldWUgYSB0YXNrIHRvIHJlbW92ZSB0aGUgdHJhY2sgZnJvbSB0aGUgYXVkaW9UcmFj
a3MKKyAgICAvLyBhdHRyaWJ1dGUncyBUcmFja0xpc3RCYXNlIG9iamVjdCBvciB0aGUgdmlkZW9U
cmFja3MgYXR0cmlidXRlJ3MKKyAgICAvLyBUcmFja0xpc3RCYXNlIG9iamVjdCBhcyBhcHByb3By
aWF0ZSBhbmQgdGhlbiBmaXJlIGEgdHJ1c3RlZCBldmVudAorICAgIC8vIHdpdGggdGhlIG5hbWUg
cmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QgY2FuY2VsYWJsZSwK
KyAgICAvLyBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgd2l0aCB0aGUg
dHJhY2sgYXR0cmlidXRlCisgICAgLy8gaW5pdGlhbGl6ZWQgdG8gdGhlIFQgb3IgVCBvYmplY3Qg
cmVwcmVzZW50aW5nIHRoZQorICAgIC8vIHRyYWNrLCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzIGFm
b3JlbWVudGlvbmVkIFRyYWNrTGlzdEJhc2Ugb3IKKyAgICAvLyBUcmFja0xpc3RCYXNlIG9iamVj
dC4KKworICAgIFJlZlB0cjxUcmFja0Jhc2U+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tF
dmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsK
KyAgICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2Vs
YWJsZSA9IGZhbHNlOworCisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAg
aWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2
ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKQoreworICAgIC8vIDQuOC4xMC42IE9mZnNldHMgaW50byB0aGUgbWVk
aWEgcmVzb3VyY2UKKyAgICAvLyBXaGVuZXZlciBhbiBhdWRpbyB0cmFjayBpbiBhbiBUcmFja0xp
c3RCYXNlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIHRoZQorICAgIC8vIHVzZXIgYWdlbnQgbXVz
dCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhl
CisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QuCisKKyAgICBFdmVudEluaXQgaW5pdGlhbGl6
ZXI7CisgICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNh
bmNlbGFibGUgPSBmYWxzZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFt
X3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OmFzeW5jRXZlbnRU
aW1lckZpcmVkKFRpbWVyPFRyYWNrTGlzdEJhc2U+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50PiA+IHBlbmRpbmdFdmVudHM7CisKKyAgICArK21fZGlzcGF0Y2hpbmdFdmVudHM7CisgICAg
bV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0g
cGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5k
ZXhdLnJlbGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgLS1tX2Rpc3BhdGNoaW5nRXZl
bnRzOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDVmYTU2MmViNzRhZTQ1OTY3NjJhYjM1NTczM2NkZTQ2NTNkNWNiMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFz
ZS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVHJhY2tMaXN0
QmFzZV9oCisjZGVmaW5lIFRyYWNrTGlzdEJhc2VfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Lmgi
CisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBUcmFja0Jhc2U7
CisKK2NsYXNzIFRyYWNrTGlzdEJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNl
PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB+VHJhY2tMaXN0QmFzZSgpOwor
CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBn
ZXRUcmFja0luZGV4KFRyYWNrQmFzZSopOworICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhUcmFj
a0Jhc2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopOworCisg
ICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+
OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPjo6ZGVyZWY7CisgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGFkZHRyYWNrKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmV0cmFj
ayk7CisKKyAgICB2b2lkIGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAwOyB9CisgICAgSFRNTE1l
ZGlhRWxlbWVudCogb3duZXIoKSBjb25zdCB7IHJldHVybiBtX293bmVyOyB9CisKKyAgICBib29s
IGlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2Rpc3BhdGNoaW5nRXZlbnRzOyB9
CisKKyAgICAvLyBOZWVkcyB0byBiZSBwdWJsaWMgc28gdHJhY2tzIGNhbiBjYWxsIGl0CisgICAg
dm9pZCBzY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICBUcmFja0xpc3RC
YXNlKEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICB2
b2lkIHNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPFRyYWNrQmFzZT4pOworICAgIHZv
aWQgc2NoZWR1bGVSZW1vdmVUcmFja0V2ZW50KFBhc3NSZWZQdHI8VHJhY2tCYXNlPik7CisKKyAg
ICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4gPiBtX2luYmFuZFRyYWNrczsKKworcHJpdmF0ZToK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsg
cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsg
fQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAg
ICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRyYWNrTGlzdEJhc2U+Kik7CisKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgSFRNTE1lZGlhRWxlbWVu
dCogbV9vd25lcjsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRz
OworICAgIFRpbWVyPFRyYWNrTGlzdEJhc2U+IG1fcGVuZGluZ0V2ZW50VGltZXI7CisKKyAgICBF
dmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisKKyAgICBpbnQgbV9kaXNwYXRjaGlu
Z0V2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNzhl
NzlhODJjOTdkOTc1ZThlMzg3N2JhNDBmNWE4MWZiZTkwZDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC0wLDAgKzEsMTczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgiY2FwdGlvbnMiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgibWFp
biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY2Fw
dGlvbnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6c2lnbktleXdvcmQo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzaWduLCAo
InNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJu
IHNpZ247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1
YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRl
b1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVudGFyeTsKK30KKwor
VmlkZW9UcmFjazo6VmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRyYWNrQmFzZShUcmFj
a0Jhc2U6OlZpZGVvVHJhY2spCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAs
IG1fbGFiZWwodHJhY2tQcml2YXRlLT5sYWJlbCgpKQorICAgICwgbV9sYW5ndWFnZSh0cmFja1By
aXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS0+c2VsZWN0
ZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZh
dGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1f
cHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRp
dmU6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKKyAg
ICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQo
VmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6OlNpZ246CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1
YnRpdGxlczoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5
OgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBz
ZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitW
aWRlb1RyYWNrOjp+VmlkZW9UcmFjaygpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7
Cit9CisKK2Jvb2wgVmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY2FwdGlvbnNLZXl3b3JkKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc2lnbktleXdvcmQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3Jk
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFZpZGVvVHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQoreworICAgIFN0
cmluZyBvbGRLaW5kID0gbV9raW5kOworCisgICAgaWYgKGlzVmFsaWRLaW5kS2V5d29yZChraW5k
KSkKKyAgICAgICAgbV9raW5kID0ga2luZDsKKyAgICBlbHNlCisgICAgICAgIG1fa2luZCA9ICIi
OworfQorCit2b2lkIFZpZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQp
Cit7CisgICAgaWYgKG1fc2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQodGhpcyk7Cit9CisKK2ludCBWaWRl
b1RyYWNrOjppbmJhbmRUcmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT52aWRlb1RyYWNrSW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGY0NGRmYThlZGQ5M2MzMjY2ZGU1YzI2ODkxNmM5MWY5YTZiYTQ4NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBA
IC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tf
aAorI2RlZmluZSBWaWRlb1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRl
ICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRl
b1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xpZW50KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJs
aWMgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlk
KSB7IG1faWQgPSBpZDsgfQorCisgICAgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7IHJldHVy
biBtX2tpbmQ7IH0KKyAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJik7CisKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
c3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1l
bnRhcnlLZXl3b3JkKCk7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0
IEF0b21pY1N0cmluZyYpOworCisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1
cm4gbV9sYWJlbDsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJl
bCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKworICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KKyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0
b21pY1N0cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisKKyAgICBi
b29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZChjb25zdCBib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNs
aWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CisgICAgVmlkZW9UcmFja0NsaWVudCogY2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIGludCBpbmJhbmRUcmFja0luZGV4KCk7
CisKK3Byb3RlY3RlZDoKKyAgICBWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqLCBQYXNzUmVm
UHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcml2YXRlVHJhY2spOworCitwcml2YXRlOgorICAgIEF0
b21pY1N0cmluZyBtX2lkOworICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7CisgICAgQXRvbWljU3Ry
aW5nIG1fbGFiZWw7CisgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CisgICAgYm9vbCBtX3Nl
bGVjdGVkOworICAgIFZpZGVvVHJhY2tDbGllbnQqIG1fY2xpZW50OworCisgICAgUmVmUHRyPFZp
ZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NTI2ZDMzMDcxNDdmMzFkZDI0ZGEyZDg1ZGZiMjA4NzIwYzcyNzAzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlk
bApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9f
VFJBQ0ssCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJs
ZQorXSBpbnRlcmZhY2UgVmlkZW9UcmFjayB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBpZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGxhbmd1YWdlOworCisgICAgYXR0cmlidXRlIGJvb2xlYW4gc2VsZWN0ZWQ7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMDQ1MzgxNjVjNDAwOWNiZmMyMThkNjA4NjJiYzI3YTdkMjNjMzc2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitWaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoSFRN
TE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQoreworfQorCitWaWRlb1RyYWNrTGlz
dDo6flZpZGVvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBWaWRlb1RyYWNrTGlzdDo6YXBwZW5k
KFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gcHJwVHJhY2spCit7CisgICAgUmVmUHRyPFZpZGVvVHJh
Y2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRp
YSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4
KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NF
UlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3du
ZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsKKworICAgIHNjaGVk
dWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQorCitWaWRlb1RyYWNrKiBWaWRl
b1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXgg
PCBtX2luYmFuZFRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IG1f
aW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkg
PT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZp
ZGVvVHJhY2sqPih0cmFjayk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK1ZpZGVvVHJh
Y2sqIFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IGl0ZW0oaSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+
dHlwZSgpID09IFRyYWNrQmFzZTo6VmlkZW9UcmFjayk7CisgICAgICAgIFZpZGVvVHJhY2sqIHZp
ZGVvVHJhY2sgPSBkeW5hbWljX2Nhc3Q8VmlkZW9UcmFjayo+KHRyYWNrKTsKKyAgICAgICAgaWYg
KHZpZGVvVHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gdmlkZW9UcmFjazsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2xvbmcgVmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVk
SW5kZXgoKSBjb25zdAoreworICAgIC8vIDQuOC4xMC4xMC4xIEF1ZGlvVHJhY2tMaXN0IGFuZCBW
aWRlb1RyYWNrTGlzdCBvYmplY3RzCisgICAgLy8gVGhlIFZpZGVvVHJhY2tMaXN0LnNlbGVjdGVk
SW5kZXggYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUKKyAgICAvLyBjdXJy
ZW50bHkgc2VsZWN0ZWQgdHJhY2ssIGlmIGFueS4gSWYgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVj
dCBkb2VzIG5vdAorICAgIC8vIGN1cnJlbnRseSByZXByZXNlbnQgYW55IHRyYWNrcywgb3IgaWYg
bm9uZSBvZiB0aGUgdHJhY2tzIGFyZSBzZWxlY3RlZCwKKyAgICAvLyBpdCBtdXN0IGluc3RlYWQg
cmV0dXJuIOKIkjEuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIFRyYWNrQmFzZSogdHJhY2sgPSBpdGVtKGkpOworICAgICAgICBBU1NFUlQodHJh
Y2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgICAgICBpZiAoZHluYW1p
Y19jYXN0PFZpZGVvVHJhY2sqPihpdGVtKGkpKS0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
VmlkZW9UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yVmlkZW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTE1MTM0
YWMzOWNiNzkyMTAxMzUyNmFkNjQyN2Y5ZDA3NDc1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tMaXN0X2gKKyNkZWZpbmUgVmlkZW9U
cmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tM
aXN0QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisK
K2NsYXNzIFZpZGVvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7
CisgICAgfQorICAgIH5WaWRlb1RyYWNrTGlzdCgpOworCisgICAgdm9pZCBhcHBlbmQoUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrPik7CisgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25lZCkgY29uc3Q7
CisgICAgVmlkZW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0
OworICAgIGxvbmcgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmQzNmFmNjIwYjg0NDU1YWY3MzhkZWIxNDg0MDQxNjNmNGE1NTJiZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlND
dXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2Ug
VmlkZW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKKyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
VmlkZW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKwor
ICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xl
YW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2Vw
dGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BdWRpb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QXVkaW9UcmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODFmZWQzN2E0Yjk2NzFlMzFlMzgyNTM0
YjA0MzkwOTQzYWE4YjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVf
aAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQXVkaW9UcmFj
a1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+
IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQ
cml2YXRlKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQor
CisgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFs
dGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21t
ZW50YXJ5LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBO
b25lOyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVt
cHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2
YXRlKCkKKyAgICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2Vu
YWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQwMmUzYmNjNDViM2JiYjEyODcz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVv
VHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNr
UHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFZpZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlKCkpOworICAg
IH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRD
bGllbnQoVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVu
dDsgfQorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2Ns
aWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsg
bV9zZWxlY3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZl
LCBDYXB0aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07Cisg
ICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZp
cnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9Cisg
ICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0
b207IH0KKworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBt
X3NlbGVjdGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFj
a1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zZWxlY3RlZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196990</attachid>
            <date>2013-04-08 21:18:47 -0700</date>
            <delta_ts>2013-04-09 10:37:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130408221830.patch</filename>
            <type>text/plain</type>
            <size>132947</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3OTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODcyYzA1NDM4ZDgzN2Jj
NmI0MjE4ZjQxYWUxMmM5ZjBhNjdmYmU5NS4uNGZkN2ViMTk2MzQxODRhYTEyZThlOTkxYjJkNTc3
YTUzYTk5NTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzOSBAQAorMjAxMy0wNC0wOCAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CisKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp+QXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OnRyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbnZhbGlkYXRlVHJhY2tJ
bmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tDbGllbnQ6On5BdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKEF1ZGlv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9UcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
OjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tJbmRleCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChBdWRp
b1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6cmVtb3Zl
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoQXVk
aW9UcmFja0xpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQp
OgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6Cisg
ICAgICAgIChBdWRpb1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChB
dWRpb1RyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
TGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6
YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmludmFsaWRhdGVUcmFj
a0luZGV4KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0NsaWVudDo6flZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6Om1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRJZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldExhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xpc3QpOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChW
aWRlb1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6cmVt
b3ZlKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6
OmNvbnRhaW5zKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6CisgICAgICAgIChWaWRl
b1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlz
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Om93bmVy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQ6On5BdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChBdWRpb1RyYWNrUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjp+QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpraW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjppZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGU6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjphdWRpb1RyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6
OkF1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTA0LTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgSFRN
TCBOb3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDYxODMyNWEzY2ZhY2VhYWQ2
ZWFlNzczMGQ2ZWU3MDViYjkwODRhNS4uYWQ5OTQ1YzZiNmZlZGY3YjUxNGM0MTNlZTM5MzNhNjgw
ZDUxOTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0OSwxMiArNTQ5LDYgQEAgc2V0KFdl
YkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbAog
ICAgIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbAogCi0gICAgaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCi0gICAgaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5p
ZGwKLSAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCi0KICAgICBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRs
CiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCkBAIC0xNTkzLDE5ICsxNTg3
LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKIAot
ICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAotICAgIGh0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCi0gICAgaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmlj
LmNwcAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKLSAgICBodG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuY3BwCi0gICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCi0gICAgaHRt
bC90cmFjay9UcmFja0V2ZW50LmNwcAotICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAK
LSAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKLSAgICBodG1sL3RyYWNrL1dlYlZUVFRv
a2VuaXplci5jcHAKLQogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKICAgICBpbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAogICAgIGluc3BlY3Rvci9ET01FZGl0b3IuY3Bw
CkBAIC0xNzM4LDcgKzE3MTksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKLSAgICBsb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKIApAQCAtMjY5Niw3ICsyNjc2
LDM1IEBAIGlmIChFTkFCTEVfV0VCR0wpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1ZJREVPX1RS
QUNLKQorICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCisgICAgICAgIGh0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwK
KyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCisgICAgICAgIGh0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmlkbAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsCisg
ICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKKyAgICAgICAgaHRtbC90cmFjay9U
cmFja0V2ZW50LmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCisgICAgICAg
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCisgICAgKQorCiAgICAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAor
ICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorICAgICAgICBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisg
ICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKyAgICAgICAgaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorICAgICAgICBodG1sL3Ry
YWNrL1RyYWNrRXZlbnQuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAK
KyAgICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorICAgICAgICBodG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAKKyAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3Bw
CisKKyAgICAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKwogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKICAgICApCiBlbmRp
ZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IGRiZWNhNDcxYTdjNjFjNzZjZjQy
MDE1MTA4Njg1ODVmOTc3MjcyNGYuLjc5MDllMWFlNTFlM2E1Y2JjMTQ2OWNmNTcxNGE1YmY1NDUx
OWIzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTY1MiwxMSArNjUyLDE1IEBA
IGVuYWJsZT8oR0FNRVBBRCkgewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgIElETF9CSU5E
SU5HUyArPSBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCisgICAgJCRQ
V0QvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwK
ICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAkJFBXRC9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RyYWNr
RXZlbnQuaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAk
JFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAogfQogCiBlbmFibGU/KE1FRElBX1NP
VVJDRSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZWUxYWU1OGVhNDdiZjZm
MTE1MmQzYjg1YzVmZjI0NjcwZDM4NTA4Yi4uNTBlNmM5ZjhjZmQ5MzU2MjFjYjEzZTdmZWMxOWZj
OWQxMzM2OWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNTg2LDExICsx
NTg2LDE1IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1MU2hh
ZG93RWxlbWVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBc
CisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3Jl
KS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5p
ZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAJJChXZWJD
b3JlKS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5p
ZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgXAogCSQo
V2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAogCSQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsIFwKQEAgLTIzMjAsNiArMjMyNCw5
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dHRyQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZl
clNvdXJjZU5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvQ29udGV4dEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0
ZXJOb2RlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDREFUQVNlY3Rpb25DdXN0
b20uY3BwIFwKQEAgLTI0NzQsNiArMjQ4MSw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIFwKQEAg
LTM3NjcsNiArMzc3NywxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvVGltZUlucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaCBcCisJU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xp
c3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXApAQCAtMzc4NSw2ICszNzk5LDEyIEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jh
c2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2su
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBcCisJU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBc
CkBAIC01NDkzLDYgKzU1MTMsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0luaXRpYWxpemVMb2dnaW5nLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9HcmFwaGljc0NvbnRleHQzRE5FT04uaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL05FT05I
ZWxwZXJzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmls
dGVycy9GRUJsZW5kTkVPTi5oIFwKQEAgLTU3NzMsNiArNTc5NCw3IEBAIHdlYmNvcmVfcGxhdGZv
cm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVHlwZXNldHRpbmdGZWF0dXJlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Vbml0QmV6aWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjOGE0YTk0ZTU4Zjc2NTQ1MmRiZTA2
NzYwNDgwNWE3M2Y2MGVlNzI4Li4xOWJiMWZiNzlmNmZiN2RkNjk0Mzk5MTc3Y2JjNmI2ZGZkNDJj
ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM5NjUsOSArMzk2NSwxMyBAQCBlbmFibGU/KEpBVkFTQ1JJ
UFRfREVCVUdHRVIpIHsKIAogZW5hYmxlPyhWSURFT19UUkFDSykgewogICAgIEhFQURFUlMgKz0g
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1Ry
YWNrQ3VzdG9tLmggXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaCBc
CiAgICAgICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oIFwKKyAgICAgICAgaHRtbC90cmFjay9B
dWRpb1RyYWNrLmggXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggXAogICAg
ICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKICAgICAgICAgaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5oIFwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2suaCBcCkBA
IC0zOTc3LDIwICszOTgxLDMxIEBAIGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgICAgICAgaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5o
IFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmggXAorICAgICAgICBodG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuaCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oIFwKKyAg
ICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmggXAogICAgICAgICBsb2FkZXIvVGV4dFRy
YWNrTG9hZGVyLmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0
ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggXAogCiAg
ICAgU09VUkNFUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5j
cHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9t
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAor
ICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAgICAgYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBodG1sL0hUTUxU
cmFja0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBcCisg
ICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFj
ay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9Mb2FkYWJsZVRleHRU
cmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5jcHAgXApAQCAtNDAwMCw2
ICs0MDE1LDkgQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIFwKICAg
ICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVHJh
Y2tMaXN0QmFzZS5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIFwKKyAg
ICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
IFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkNWMxZTQyNzM5Y2U2N2Q1ZDUyN2QzMGEzMmQ5MTQwNTU5MzZhMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNs
dWRlICJKU0F1ZGlvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0
PEpTQXVkaW9UcmFjayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFjayog
YXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwo
KSk7XAorCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQg
aXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzQXVkaW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVy
dGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250
YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNr
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2ssICZzX2luZm8p
OworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNT
RVJUKGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFjaywgdmlzaXRv
cik7CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFj
ayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9v
dChhdWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ4Y2RlM2IxNzIwZThkNmNjZmJkNjE1YzI1ZTNlM2M1NTI0ZTNkZDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
aApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNBdWRpb1RyYWNrQ3VzdG9t
X2gKKyNkZWZpbmUgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJh
Y2suaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCogcm9vdChBdWRpb1RyYWNrKiB0
cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhh
cyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJv
b3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQsIHJl
dHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisKK30KKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2MTZiMGQ0YjhhYTkyOTQyMmYwNWFkNzU0
OTMyNDA5YWExNmFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVk
ZSAiSlNBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgor
I2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9U
cmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVk
aW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhl
IGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxl
IGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0
aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKGF1ZGlvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2
ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIGxp
c3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBp
dCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghYXVkaW9UcmFja0xpc3QtPmhhc0V2ZW50TGlz
dGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRp
YSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFp
bnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBK
U0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrTGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpz
Q2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhqc0F1ZGlvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrTGlzdCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1Ry
YWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpz
QXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qo
YXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICBhdWRpb1RyYWNrTGlzdC0+dmlzaXRKU0V2
ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzQ0MDY5ZDU0Zjk1NGE1YjMwMTBhNDU1Yjk2NmJlMGYzZWM5YWRh
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tD
dXN0b20uaCIKKworI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBqc1Zp
ZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
KyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KGpz
VmlkZW9UcmFjay0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSB0cmFjayBoYXMgbm8gY3VzdG9t
IHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFqc1ZpZGVvVHJhY2st
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit2
b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpT
VmlkZW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRl
b1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc1Zp
ZGVvVHJhY2ssIHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRp
Y19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJh
Y2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTM3NWU1NjdlNmJhMzhhM2ZkNmQyYzk5NWFmMGMxY2Rm
NmFiM2RhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpT
VmlkZW9UcmFja0N1c3RvbV9oCisjZGVmaW5lIEpTVmlkZW9UcmFja0N1c3RvbV9oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJv
b3QoVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50
J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBt
ZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOwor
fQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDk2NzEwZDYw
OTMxMGM3ODcyYTdkZjQzYjZjZGI0MzM1YjFkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVmlkZW9UcmFja0xpc3RP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJh
Y2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9UcmFja0xpc3QqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrTGlzdCA9
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlzdC0+aW1wbCgpKTsK
KworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFw
cGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2li
bGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmICh2aWRlb1RyYWNr
TGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0
b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIXZpZGVvVHJhY2tM
aXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1ZpZGVvVHJhY2tMaXN0LT5oYXNDdXN0b21Q
cm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNo
YWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigp
KSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlk
ZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRl
b1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFja0xpc3QsIHZpc2l0b3Ip
OworCisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8Vmlk
ZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7CisgICAgdmlkZW9UcmFj
a0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggODI3Nzdh
ODZlZWZkZmJlYmU2ODljOWI5MjMzNjg4Mjk1ODM5MWMzZS4uZWEwNzk5YmI1ZDBkNzM0YzAxZjQ2
OGE2M2UxZDViMjIwNWNmYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTQxLDYg
KzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF1ZGlvQ29udGV4dDsK
KyAgICBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93
OwpAQCAtNjcsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU291cmNl
QnVmZmVyTGlzdDsKICAgICBjbGFzcyBUZXh0VHJhY2s7CiAgICAgY2xhc3MgVGV4dFRyYWNrQ3Vl
OworICAgIGNsYXNzIFZpZGVvVHJhY2tMaXN0OwogICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBj
bGFzcyBXZWJLaXROYW1lZEZsb3c7CiAgICAgY2xhc3MgV29ya2VyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNDc2ZDFiNTNmMTQ1YmIyNzM0OTg5OTNmMzlm
MWQxY2JhYTYyMzU4My4uOGVhNWI3YjAzYWJhY2EwMmYyNWY0OGEyZWQ1NTk5MjYzZWE0NzBiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xLDYgKzEsNyBA
QAogbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKIAogQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdF
Ql9BVURJTworQXVkaW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIEJhdHRlcnlN
YW5hZ2VyIGNvbmRpdGlvbmFsPUJBVFRFUllfU1RBVFVTCiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IGNvbmRpdGlvbmFsPVdPUktFUlMKIERPTUFwcGxpY2F0aW9uQ2FjaGUKQEAgLTM3LDYgKzM4LDcg
QEAgU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFsPVNWRwogVGV4dFRyYWNrIGNvbmRpdGlv
bmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tDdWUgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFRl
eHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKK1ZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXROYW1lZEZsb3cKIFdlYlNvY2tldCBjb25kaXRpb25h
bD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDI2MGQwYTY3NTlmNTJhNjUzNmQwNjAzNDA3
MjJlZjVhOWE0ZDkzYWMuLjk2MTU2MWE0ZDlhNjY4YTRiNzA0YjY3MzYwMTgwNTExOGM1NGNlNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTgsNiArOTgs
OCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9U
cmFja0xpc3QuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCkBAIC0xMDUsNiArMTA3LDggQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5o
IgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVESU8pCkBAIC0yOTYsNyArMzAwLDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAg
ICAsIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UoZmFsc2UpCiAgICAgLCBtX2xhc3RUZXh0
VHJhY2tVcGRhdGVUaW1lKC0xKQogICAgICwgbV9jYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6QXV0b21hdGljKQorICAgICwgbV9hdWRpb1RyYWNrcygwKQogICAgICwg
bV90ZXh0VHJhY2tzKDApCisgICAgLCBtX3ZpZGVvVHJhY2tzKDApCiAgICAgLCBtX2lnbm9yZVRy
YWNrRGlzcGxheVVwZGF0ZSgwKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTMz
MCwxMiArMzM2LDIyIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBkb2N1bWVudCgpLT51
bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyAg
ICBpZiAobV9hdWRpb1RyYWNrcykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzLT5jbGVhck93bmVy
KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLT5sZW5n
dGgoKTsgKytpKQorICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGll
bnQoKTsKKyAgICB9CiAgICAgaWYgKG1fdGV4dFRyYWNrcykKICAgICAgICAgbV90ZXh0VHJhY2tz
LT5jbGVhck93bmVyKCk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAg
ICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwogICAgIH0KKyAgICBpZiAo
bV92aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhck93bmVyKCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKTsg
KytpKQorICAgICAgICAgICAgbV92aWRlb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQoKTsK
KyAgICB9CiAjZW5kaWYKIAogICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKQEAgLTEzNDksNiAr
MTM2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFu
Z2VkKFRleHRUcmFjayogdHJhY2spCiAgICAgfQogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBX
ZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBl
eGlzdAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRl
eHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OlRyYWNrRWxlbWVudCkgewpAQCAtMTM4OCw2ICsxNDA5LDExIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogfQogCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCit7
CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMgaGVyZSBv
bmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5k
Q2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRl
eHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2lu
Z0tleXdvcmQoKSkKQEAgLTI3OTIsNyArMjgxOCwxNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50
OjpwZXJjZW50TG9hZGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRyYWNrKFBhc3NSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNr
PiB0cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRB
dWRpb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyNCwxMCArMjg2MCwzNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJhY2soUGFzc1JlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPgogICAgIC8vIDkuIEZpcmUgYW4gZXZlbnQgd2l0aCB0
aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxh
YmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50CiAgICAgLy8gaW50ZXJmYWNlLCB3aXRo
IHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0
VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzCiAgICAgLy8gdGV4dFRyYWNrcyBh
dHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KLSAgICBhZGRUcmFjayh0ZXh0VHJhY2su
Z2V0KCkpOworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZp
ZGVvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IFZpZGVvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBU
cmFjayk7CisKKyAgICBhZGRWaWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgY2Fz
dCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0aGUgQXVkaW9UcmFjayB3aXRoIHRoZSBBdWRp
b1RyYWNrUHJpdmF0ZQorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJh
Y2suCisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFj
ayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAgcmV0dXJu
OworCisgICAgcmVtb3ZlQXVkaW9UcmFjayh0cmFjay5nZXQoKSk7CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgzNiwxMiArMjg5OSwyOSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlz
IGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEluYmFuZFRleHRUcmFjayB3aXRo
IHRoZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlCi0gICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVy
RGlkQWRkVHJhY2suCisgICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNr
LgogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2s+IHRleHRUcmFjayA9IHN0YXRpY19jYXN0PElu
YmFuZFRleHRUcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CiAgICAgaWYgKCF0ZXh0VHJhY2sp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJlbW92ZVRyYWNrKHRleHRUcmFjay5nZXQoKSk7Cisg
ICAgcmVtb3ZlVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMg
c2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIFZpZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFj
a1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgor
ICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihw
cnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlbW92ZVZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogfQogCiAjaWYgVVNFKFBMQVRGT1JN
X1RFWFRfVFJBQ0tfTUVOVSkKQEAgLTI5MjAsMTQgKzMwMDAsMjkgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCkKICNlbmRpZgogfQogCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKFRleHRUcmFjayogdHJhY2spCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgYXVkaW9U
cmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0
cmFjayk7CiAgICAgCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRyYWNrKFRleHRUcmFjayogdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2spCit7CisgICAg
dmlkZW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIG1fYXVkaW9UcmFj
a3MtPnJlbW92ZSh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4
dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUg
c2NvcGUodGhpcyk7CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcyA9IHRyYWNrLT5jdWVzKCk7
CkBAIC0yOTM4LDcgKzMwMzMsMjMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUcmFj
ayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQorewor
ICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MoKQoreworICAgIGlmICghbV9hdWRpb1RyYWNrcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9IG1fYXVkaW9UcmFja3MtPmxlbmd0
aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgQXVkaW9UcmFjayogdHJhY2sgPSBtX2F1
ZGlvVHJhY2tzLT5pdGVtKGkpOworICAgICAgICByZW1vdmVBdWRpb1RyYWNrKHRyYWNrKTsKKyAg
ICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNr
cygpCiB7CiAgICAgaWYgKCFtX3RleHRUcmFja3MpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NDgs
NyArMzA1OSwxOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFuZFRyYWNr
cygpCiAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CiAK
ICAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKLSAg
ICAgICAgICAgIHJlbW92ZVRyYWNrKHRyYWNrKTsKKyAgICAgICAgICAgIHJlbW92ZVRleHRUcmFj
ayh0cmFjayk7CisgICAgfQorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbFZp
ZGVvVHJhY2tzKCkKK3sKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoaW50IGkgPSBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKSAtIDE7IGkgPj0gMDsg
LS1pKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gbV92aWRlb1RyYWNrcy0+aXRlbShp
KTsKKyAgICAgICAgcmVtb3ZlVmlkZW9UcmFjayh0cmFjayk7CiAgICAgfQogfQogCkBAIC0yOTc4
LDcgKzMxMDAsNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRk
VGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIC8vIGZpcnN0IGFwcGVu
ZCB0aGUgdHJhY2sgdG8gdGhlIHRleHQgdHJhY2sgbGlzdC4KIAogICAgIC8vIDYuIEFkZCB0aGUg
bmV3IHRleHQgdHJhY2sgdG8gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tz
LgotICAgIGFkZFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CisgICAgYWRkVGV4dFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sgcmVhZGluZXNzIHN0YXRl
IHRvIHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBzdGF0ZSAuLi4KICAgICB0ZXh0VHJhY2stPnNldFJl
YWRpbmVzc1N0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKQEAgLTI5ODksNiArMzExMSwxNyBAQCBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIHJldHVybiB0ZXh0VHJhY2sucmVsZWFzZSgpOwog
fQogCitBdWRpb1RyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja3MoKQorewor
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAg
IG1fYXVkaW9UcmFja3MgPSBBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX2F1ZGlvVHJh
Y2tzLmdldCgpOworfQorCiBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tzKCkgCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQpAQCAtMzAwMCw3ICszMTMzLDE4IEBAIFRleHRUcmFja0xpc3QqIEhUTUxN
ZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKQogICAgIHJldHVybiBtX3RleHRUcmFja3MuZ2V0KCk7
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVu
dCogdHJhY2tFbGVtZW50KQorVmlkZW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVv
VHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3ZpZGVvVHJh
Y2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlz
LCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1
cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRB
ZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogICAgIEFTU0VS
VCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKIApAQCAtMzAxNSw3ICszMTU5
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUcmFjayhIVE1MVHJhY2tFbGVtZW50
KiB0cmFja0VsZW1lbnQpCiAgICAgaWYgKCF0ZXh0VHJhY2spCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBhZGRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIGFkZFRleHRUcmFjayh0ZXh0
VHJhY2suZ2V0KCkpOwogICAgIAogICAgIC8vIERvIG5vdCBzY2hlZHVsZSB0aGUgdHJhY2sgbG9h
ZGluZyB1bnRpbCBwYXJzaW5nIGZpbmlzaGVzIHNvIHdlIGRvbid0IHN0YXJ0IGJlZm9yZSBhbGwg
dHJhY2tzCiAgICAgLy8gaW4gdGhlIG1hcmt1cCBoYXZlIGJlZW4gYWRkZWQuCkBAIC0zMDI2LDcg
KzMxNzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAgICAgbWVkaWFDb250cm9scygpLT5jbG9zZWRDYXB0
aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92
ZVRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkK
IHsKICAgICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAKQEAg
LTMwNTMsNyArMzE5Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2so
SFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogICAgIC8vIFdoZW4gYSB0cmFjayBlbGVt
ZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhlIG9sZCBwYXJlbnQgd2FzIGEgbWVk
aWEgZWxlbWVudCwgCiAgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSB0aGUg
dHJhY2sgZWxlbWVudCdzIGNvcnJlc3BvbmRpbmcgdGV4dCB0cmFjayBmcm9tIHRoZSAKICAgICAv
LyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcy4KLSAgICByZW1vdmVUcmFjayh0
ZXh0VHJhY2suZ2V0KCkpOworICAgIHJlbW92ZVRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwog
CiAgICAgc2l6ZV90IGluZGV4ID0gbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVn
YW4uZmluZCh0ZXh0VHJhY2suZ2V0KCkpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKQEAg
LTM5MzUsNyArNDA3OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBsYXll
cihpbnQgZmxhZ3MpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICByZW1v
dmVBbGxJbmJhbmRUcmFja3MoKTsKKyAgICByZW1vdmVBbGxJbmJhbmRUZXh0VHJhY2tzKCk7CiAj
ZW5kaWYKIAogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTQ5MDYsNyAr
NTA1MCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgaW5mby5hZGRNZW1iZXIobV9t
ZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgaW5mby5hZGRNZW1iZXIobV9hdWRpb1RyYWNrcywgImF1ZGlvVHJhY2tzIik7CiAg
ICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzLCAidGV4dFRyYWNrcyIpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fdmlkZW9UcmFja3MsICJ2aWRlb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVt
YmVyKG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLCAidGV4dFRyYWNrc1do
ZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdWVUcmVl
LCAiY3VlVHJlZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VycmVudGx5QWN0aXZlQ3Vlcywg
ImN1cnJlbnRseUFjdGl2ZUN1ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggY2EwMTZjMDdkNDZmZjIxMzdmYTBlMWFhODY3MzI0M2JkMTI3ZTE4Yy4uYWM2MzMx
OWY1ZGNjYzcxMDIxODA2YmM4YjA0MjVkZmQxMDhiNmI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTM5LDEwICszOSwxMiBAQAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNiArNTMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xh
c3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogI2VuZGlmCitjbGFzcyBBdWRpb1RyYWNr
TGlzdDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBIVE1M
VHJhY2tFbGVtZW50OwpAQCAtNTksNiArNjIsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xh
c3MgTWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CiBjbGFzcyBUZXh0VHJhY2tMaXN0OworY2xhc3Mg
VmlkZW9UcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogI2lmIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQogY2xhc3MgV2lkZ2V0OwpAQCAtNzEsNyArNzUsOSBAQCBjbGFzcyBNZWRp
YUtleXM7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIEF1ZGlvVHJh
Y2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKK2NsYXNzIFZpZGVvVHJh
Y2tQcml2YXRlOwogCiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxkb3VibGUsIFRleHRUcmFja0N1
ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5
cGUgQ3VlSW50ZXJ2YWw7CkBAIC04NCw3ICs5MCw5IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVy
dmFsPiBDdWVMaXN0OwogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRz
VHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUg
VGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2YXRlIFZpZGVvVHJhY2tDbGllbnQKICNlbmRpZgog
I2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1U
ZXh0VHJhY2tNZW51Q2xpZW50CkBAIC0yMjYsMjAgKzIzNCwzMyBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2so
a2luZCwgbGFiZWwsIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCks
IGVjKTsgfQogCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRy
YWNrTGlzdCogdGV4dFRyYWNrcygpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygp
OworCiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKLSAgICB2b2lkIGFkZFRyYWNrKFRleHRUcmFjayopOwot
ICAgIHZvaWQgcmVtb3ZlVHJhY2soVGV4dFRyYWNrKik7Ci0gICAgdm9pZCByZW1vdmVBbGxJbmJh
bmRUcmFja3MoKTsKKyAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayopOworICAgIHZv
aWQgYWRkVGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRl
b1RyYWNrKik7CisgICAgdm9pZCByZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKKyAgICB2
b2lkIHJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJh
Y2soVmlkZW9UcmFjayopOworICAgIHZvaWQgcmVtb3ZlQWxsQXVkaW9UcmFja3MoKTsKKyAgICB2
b2lkIHJlbW92ZUFsbEluYmFuZFRleHRUcmFja3MoKTsKKyAgICB2b2lkIHJlbW92ZUFsbFZpZGVv
VHJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiAgICAgdm9p
ZCBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlVHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRU
ZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVU
ZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRGlkQWRkVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZUF1
ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVS
UklERTsKIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+KSBP
VkVSUklERTsKQEAgLTI3NSw2ICsyOTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1cmVU
ZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAK
KyAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrKik7CisKICAgICAvLyBUZXh0VHJhY2tDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CiAgICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopOwpAQCAtMjg0LDYg
KzMwOCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRU
cmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogCisg
ICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0
ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKTsKKwogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24o
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNlbmRpZgpAQCAtNjk5LDcgKzcyNiw5IEBAIHBy
aXZhdGU6CiAgICAgZmxvYXQgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZTsKICAgICBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgbV9jYXB0aW9uRGlzcGxheU1vZGU7
CiAKKyAgICBSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja3M7CiAgICAgUmVmUHRy
PFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKKyAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+
IG1fdmlkZW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJh
Y2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW47CiAKICAgICBDdWVJbnRlcnZhbFRyZWUgbV9j
dWVUcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggOTIw
NTIwYmYwMjRlMmMxNGJmZDZhYWFkYWU3ODBmNGQ0OTU3MWYwZi4uYWViOWJhOWQ4ZjRiY2E3MDRh
MmY5N2EyZjc0M2Q1MjRjY2M5OGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaWRsCkBAIC0xMTYsNyArMTE2LDkgQEAgdm9pZCB3ZWJraXRDYW5jZWxLZXlSZXF1ZXN0
KGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHIKICNp
ZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiBUZXh0
VHJhY2sgYWRkVGV4dFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0
cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpCiAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOworcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlv
VHJhY2tzOwogcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKK3Jl
YWRvbmx5IGF0dHJpYnV0ZSBWaWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNrczsKICNlbmRpZgogCiBb
UmVmbGVjdCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBtZWRp
YUdyb3VwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggZmJi
YjNlODVlMGRhNjc4MDExYWY4NGVmYzlhNTc5OWM2M2Y0NjNkNC4uMDEwNTg1NWZjZjI1NzE5NzQ5
YzUxNjA4YjQ2NDkyYTIwMWFjMTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuY3BwCkBAIC04MCwxNCArODAsMTQgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSoKICAg
ICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBIVE1MTWVk
aWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKTsKICAgICBpZiAoaW5zZXJ0aW9uUG9p
bnQgPT0gcGFyZW50KQotICAgICAgICBwYXJlbnQtPmRpZEFkZFRyYWNrKHRoaXMpOworICAgICAg
ICBwYXJlbnQtPmRpZEFkZFRleHRUcmFjayh0aGlzKTsKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9u
ZTsKIH0KIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
KiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBpZiAoIXBhcmVudE5vZGUoKSAmJiBXZWJDb3JlOjpp
c01lZGlhRWxlbWVudChpbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIHRvTWVkaWFFbGVtZW50KGlu
c2VydGlvblBvaW50KS0+ZGlkUmVtb3ZlVHJhY2sodGhpcyk7CisgICAgICAgIHRvTWVkaWFFbGVt
ZW50KGluc2VydGlvblBvaW50KS0+ZGlkUmVtb3ZlVGV4dFRyYWNrKHRoaXMpOwogICAgIEhUTUxF
bGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMjA3NzY4YmViNjZkZWU2Njk0
ZjNlYTIwOTBiYzZiMzVmZGYyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
QXVkaW9UcmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJF
dmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2
ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9U
cmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRpb24sICgiZGVzY3JpcHRpb24iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBtYWluOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1h
aW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1
cm4gbWFpbkRlc2M7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6dHJhbnNs
YXRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgdHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHRyYW5zbGF0aW9uOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21t
ZW50YXJ5OworfQorCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQqIGNs
aWVudCwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDog
VHJhY2tCYXNlKFRyYWNrQmFzZTo6QXVkaW9UcmFjaykKKyAgICAsIG1faWQodHJhY2tQcml2YXRl
LT5pZCgpKQorICAgICwgbV9sYWJlbCh0cmFja1ByaXZhdGUtPmxhYmVsKCkpCisgICAgLCBtX2xh
bmd1YWdlKHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAsIG1fZW5hYmxlZCh0cmFja1By
aXZhdGUtPmVuYWJsZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0
ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAg
ICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0
ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVL
ZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpE
ZXNjcmlwdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdv
cmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW46
CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW5EZXNjOgorICAgICAgICBzZXRL
aW5kKEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6VHJhbnNsYXRpb246CisgICAgICAgIHNldEtpbmQoQXVk
aW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEF1ZGlvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJh
Y2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlv
VHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitBdWRpb1RyYWNrOjp+QXVkaW9UcmFjaygpCit7
CisgICAgY2xlYXJDbGllbnQoKTsKK30KKworYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtl
eXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gYWx0
ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1
ZSA9PSBtYWluRGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IHRyYW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0S2luZChjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmQpCit7CisgICAgU3RyaW5nIG9sZEtpbmQgPSBtX2tpbmQ7CisKKyAg
ICBpZiAoaXNWYWxpZEtpbmRLZXl3b3JkKGtpbmQpKQorICAgICAgICBtX2tpbmQgPSBraW5kOwor
ICAgIGVsc2UKKyAgICAgICAgbV9raW5kID0gIiI7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0
RW5hYmxlZChjb25zdCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2Vk
KHRoaXMpOworfQorCitpbnQgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAg
QVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9UcmFja0luZGV4
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1OWY0YWZiYWJiMWNmNWJjMzZlY2Ex
YjQxNjViYWUzNmMwMjZmNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19oCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5h
YmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBw
dWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFjayhjbGllbnQsIHRy
YWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAgICBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgQXRvbWljU3RyaW5n
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICB2b2lkIHNldEtpbmQoY29uc3Qg
QXRvbWljU3RyaW5nJik7CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5h
dGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZXNjcmlwdGlv
bktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgp
OworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zbGF0aW9uS2V5d29yZCgpOworICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYpOworCisgICAgQXRv
bWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZvaWQgc2V0
TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKwor
ICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0K
KyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpIHsgbV9s
YW5ndWFnZSA9IGxhbmd1YWdlOyB9CisKKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChjb25zdCBib29sKTsK
KworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CisgICAg
QXVkaW9UcmFja0NsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKwor
ICAgIGludCBpbmJhbmRUcmFja0luZGV4KCk7CisKK3Byb3RlY3RlZDoKKyAgICBBdWRpb1RyYWNr
KEF1ZGlvVHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7CisKK3By
aXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgQXRvbWljU3RyaW5nIG1fa2luZDsK
KyAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsK
KyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKwor
ICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRiNjNjODVkZDk4MTg0ZTY2NWYxZGI2NDI3MWNh
NDRiZGU2ZTMxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3Vz
dG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBr
aW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFu
IGVuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNGJiY2U4MzVmZTMwZWJiMzZhM2E3MGVhZTdhN2I2ZWYwMTQ3NTcw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNr
TGlzdC5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvVHJhY2tMaXN0OjpBdWRpb1Ry
YWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK0F1
ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QoKQoreworfQorCit2b2lkIEF1ZGlvVHJhY2tM
aXN0OjphcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQ
dHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3Mg
aW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFu
ZFRyYWNrSW5kZXgoKTsKKyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsK
KworICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1l
bnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOwor
CisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK0F1ZGlv
VHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAg
IGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUoKSkgeworICAgICAgICBUcmFja0Jhc2Uq
IHRyYWNrID0gbV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAgICBBU1NFUlQodHJh
Y2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2spOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
KworQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBUcmFja0Jhc2UqIHRyYWNrID0gaXRlbShpKTsKKyAgICAgICAgQVNT
RVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAgICAgICAgQXVk
aW9UcmFjayogYXVkaW9UcmFjayA9IGR5bmFtaWNfY2FzdDxBdWRpb1RyYWNrKj4odHJhY2spOwor
ICAgICAgICBpZiAoYXVkaW9UcmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBh
dWRpb1RyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA3MThh
M2JiNDVmOGVhY2RhMzQxYTJmMTBjY2Q1NjdkYWM5MzA1MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDU5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3RfaAorI2RlZmluZSBBdWRp
b1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUcmFj
a0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsK
KworY2xhc3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQp
KTsKKyAgICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICB2b2lkIGFwcGVuZChQYXNz
UmVmUHRyPEF1ZGlvVHJhY2s+KTsKKyAgICBBdWRpb1RyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKKyAgICBBdWRpb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFj
a0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMxY2UwOGMyNGM5
NDA0MTk0MGQ2Mzc4OGIzMGI0ZTk0NmM2NWVjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0
ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlND
dXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgeworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRpb1RyYWNrIGl0ZW0o
aW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRUcmFja0J5SWQoaW4g
RE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOwor
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5l
ciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBl
dnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggM2MyNzRiMWUxNGI5YjkwNjFmZDg3ZjQyZjg2
YWJhMjJlNWM4ODQxMC4uNDUwZWY2OGI0OGU3MWM4NTZjNWJmMzhmYmI1NTcxYjlhODllMWJjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTA4LDEyICsxMDgs
MTIgQEAgVGV4dFRyYWNrKiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiB9
CiAKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UsIFRleHRU
cmFja1R5cGUgdHlwZSkKLSAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFja0Jhc2U6OlRleHRU
cmFjaykKKyAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaykKICAgICAsIG1fY3Vl
cygwKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiAjaWYgRU5BQkxF
KFdFQlZUVF9SRUdJT05TKQogICAgICwgbV9yZWdpb25zKDApCiAjZW5kaWYKLSAgICAsIG1fbWVk
aWFFbGVtZW50KDApCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShsYW5n
dWFnZSkKICAgICAsIG1fbW9kZShkaXNhYmxlZEtleXdvcmQoKS5zdHJpbmcoKSkKQEAgLTE0Myw2
ICsxNDMsMjYgQEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKICAgICBjbGVhckNsaWVudCgpOwog
fQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUZXh0VHJhY2s7Cit9CisK
K1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFjazo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK30KKwor
RXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2s6OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0
dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2s6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0
YTsKK30KKwogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA1NzY5NDViYmU1MjFjZDZhMmY2
ZmZmZmQzN2U1NmFkNjY3MjYwZmYzLi5iMWI2OTNjYmY1OTY2YTIwNWY2MTRjZmY5NWUzZDYwZmVi
ZmFjNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTQxLDcgKzQx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50Owor
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRl
eHRUcmFja0N1ZTsKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgPSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDogcHVi
bGljIFRyYWNrQmFzZQorY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGlj
IEV2ZW50VGFyZ2V0CiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAsIHB1
YmxpYyBQbGF0Zm9ybVRleHRUcmFja0NsaWVudAogI2VuZGlmCkBAIC03MywxMiArNzMsMTIgQEAg
cHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKIAorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisK
ICAgICBzdGF0aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAgICBzdGF0aWMg
VGV4dFRyYWNrKiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKIAotICAgIHZvaWQgc2V0TWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQgPSBl
bGVtZW50OyB9Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4g
bV9tZWRpYUVsZW1lbnQ7IH0KLQogICAgIEF0b21pY1N0cmluZyBraW5kKCkgY29uc3QgeyByZXR1
cm4gbV9raW5kOyB9CiAgICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCkBA
IC0xMDksOCArMTA5LDggQEAgcHVibGljOgogICAgIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMoKTsK
ICAgICBUZXh0VHJhY2tDdWVMaXN0KiBhY3RpdmVDdWVzKCkgY29uc3Q7CiAKLSAgICB2b2lkIGNs
ZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KLSAgICBUZXh0VHJhY2tDbGllbnQqIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkg
T1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICB2b2lkIGFkZEN1ZShQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4pOwogICAgIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKQEAgLTE1NCwxNiArMTU0LDI1IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PFBsYXRmb3JtVGV4dFRyYWNrPiBwbGF0Zm9ybVRleHRUcmFjaygpOwogI2VuZGlmCiAKKyAgICB1
c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRy
YWNrQmFzZT46OmRlcmVmOworCiBwcm90ZWN0ZWQ6CiAgICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2Us
IFRleHRUcmFja1R5cGUpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZU
VF9SRUdJT05TKQogICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIHJlZ2lvbkxpc3QoKTsKICNlbmRp
ZgogCisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOworICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKKwogICAg
IFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBtX2N1ZXM7CiAKIHByaXZhdGU6CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQogICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIGVuc3Vy
ZVRleHRUcmFja1JlZ2lvbkxpc3QoKTsKICAgICBSZWZQdHI8VGV4dFRyYWNrUmVnaW9uTGlzdD4g
bV9yZWdpb25zOwpAQCAtMTc3LDcgKzE4Niw4IEBAIHByaXZhdGU6CiAKICAgICBUZXh0VHJhY2tD
dWVMaXN0KiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50
KiBtX21lZGlhRWxlbWVudDsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwog
ICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CiAgICAg
QXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcAppbmRleCAyOTNiM2QwMjcwMWIwOTU1ZDJmYThiNzY5NDgwZGFjYjAxZDdk
MGVjLi5jNmFkMmQxN2JlNjljZWQ4M2IwZDY0OTgxYjMzNGNlZDA3OWRjZmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKQEAgLTMwLDIzICszMCwxNiBA
QAogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
LSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNr
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvYWRh
YmxlVGV4dFRyYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRUcmFjay5oIgotI2luY2x1ZGUgIlRyYWNrRXZlbnQuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIFRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QoSFRNTE1lZGlh
RWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBt
X2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fb3duZXIob3duZXIpCi0gICAgLCBtX3BlbmRpbmdF
dmVudFRpbWVyKHRoaXMsICZUZXh0VHJhY2tMaXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZCkKLSAg
ICAsIG1fZGlzcGF0Y2hpbmdFdmVudHMoMCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNv
bnRleHQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiB9CiAKIFRleHRU
cmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KCkKQEAgLTU4LDggKzUxLDEyIEBAIHVuc2lnbmVkIFRl
eHRUcmFja0xpc3Q6Omxlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYWRkVHJhY2tUcmFja3Mu
c2l6ZSgpICsgbV9lbGVtZW50VHJhY2tzLnNpemUoKSArIG1faW5iYW5kVHJhY2tzLnNpemUoKTsK
IH0KIAotaW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXgoVGV4dFRyYWNrICp0ZXh0VHJh
Y2spCitpbnQgVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleChUcmFja0Jhc2UgKnRyYWNrKQog
eworICAgIGlmICh0cmFjay0+dHlwZSgpICE9IFRyYWNrQmFzZTo6VGV4dFRyYWNrKQorICAgICAg
ICByZXR1cm4gLTE7CisgICAgVGV4dFRyYWNrKiB0ZXh0VHJhY2sgPSBzdGF0aWNfY2FzdDxUZXh0
VHJhY2sqPih0cmFjayk7CisKICAgICBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0
VHJhY2s6OlRyYWNrRWxlbWVudCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExvYWRhYmxl
VGV4dFRyYWNrKj4odGV4dFRyYWNrKS0+dHJhY2tFbGVtZW50SW5kZXgoKTsKIApAQCAtOTgsNyAr
OTUsNyBAQCBpbnQgVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJl
ZFRyYWNrcyhUZXh0VHJhY2sgKnRleHRUcmFjaykKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbV9p
bmJhbmRUcmFja3NbaV0tPmlzUmVuZGVyZWQoKSkKKyAgICAgICAgaWYgKCFnZXRJbmJhbmRUcmFj
ayhpKS0+aXNSZW5kZXJlZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAg
ICAgICBpZiAobV9pbmJhbmRUcmFja3NbaV0gPT0gdGV4dFRyYWNrKQpAQCAtMTExLDcgKzEwOCw3
IEBAIGludCBUZXh0VHJhY2tMaXN0OjpnZXRUcmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJh
Y2tzKFRleHRUcmFjayAqdGV4dFRyYWNrKQogICAgIHJldHVybiAtMTsKIH0KIAotVGV4dFRyYWNr
KiBUZXh0VHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQorVGV4dFRyYWNrKiBUZXh0VHJh
Y2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIC8vIDQuOC4xMC4xMi4x
IFRleHQgdHJhY2sgbW9kZWwKICAgICAvLyBUaGUgdGV4dCB0cmFja3MgYXJlIHNvcnRlZCBhcyBm
b2xsb3dzOgpAQCAtMTI5LDM2ICsxMjYsNDUgQEAgVGV4dFRyYWNrKiBUZXh0VHJhY2tMaXN0Ojpp
dGVtKHVuc2lnbmVkIGluZGV4KQogCiAgICAgaW5kZXggLT0gbV9hZGRUcmFja1RyYWNrcy5zaXpl
KCk7CiAgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpKQotICAgICAgICByZXR1
cm4gbV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAgICByZXR1cm4gZ2V0SW5iYW5k
VHJhY2soaW5kZXgpOwogCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTGlzdDo6
aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK1RleHRU
cmFjayogVGV4dFRyYWNrTGlzdDo6Z2V0SW5iYW5kVHJhY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0
CiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7CisgICAgVHJh
Y2tCYXNlKiB0cmFjayA9IG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICBBU1NFUlQo
dHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlRleHRUcmFjayk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRleHRUcmFjayo+KHRyYWNrKTsKK30KIAordm9pZCBUZXh0VHJhY2tMaXN0OjppbnZh
bGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQoreworICAgIHNp
emVfdCBpbmRleCA9IG5vdEZvdW5kOwogICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsKLSAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNr
czsKKyAgICAgICAgaW5kZXggPSBtX2VsZW1lbnRUcmFja3MuZmluZCh0cmFjayk7CisgICAgICAg
IGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IGluZGV4OyBpIDwgbV9lbGVtZW50VHJhY2tzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgbV9lbGVtZW50VHJhY2tzLmF0KGluZGV4KS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgo
KTsKKyAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRy
YWNrKSB7CisgICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgaW5k
ZXggPSBtX2FkZFRyYWNrVHJhY2tzLmZpbmQodHJhY2spOworICAgICAgICAgICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWRkVHJhY2tUcmFja3Muc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBtX2FkZFRyYWNrVHJhY2tzW2ldLT5pbnZhbGlkYXRlVHJhY2tJbmRleCgpOwor
ICAgIH0gZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKSB7
CisgICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgaW5kZXggPSBt
X2luYmFuZFRyYWNrcy5maW5kKHRyYWNrKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBub3RG
b3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IG1faW5iYW5kVHJhY2tzW2ldLT5pbnZhbGlkYXRlVHJhY2tJbmRleCgpOwotICAgIH0gZWxzZSBp
ZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spIHsKLSAgICAgICAg
dHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2luYmFuZFRyYWNr
c1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKLSAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFj
a1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKLSAgICAgICAgdHJhY2tzID0gJm1faW5iYW5k
VHJhY2tzOwotICAgIGVsc2UKKyAgICAgICAgICAgIGdldEluYmFuZFRyYWNrKGkpLT5pbnZhbGlk
YXRlVHJhY2tJbmRleCgpOworICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLQotICAgIHNpemVfdCBpbmRleCA9IHRyYWNrcy0+ZmluZCh0cmFjayk7Ci0gICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0g
aW5kZXg7IGkgPCB0cmFja3MtPnNpemUoKTsgKytpKQotICAgICAgICB0cmFja3MtPmF0KGluZGV4
KS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKIH0KIAogdm9pZCBUZXh0VHJhY2tMaXN0OjphcHBl
bmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHBycFRyYWNrKQpAQCAtMTczLDU4ICsxNzksNjcgQEAg
dm9pZCBUZXh0VHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHBycFRyYWNr
KQogICAgICAgICBtX2VsZW1lbnRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CiAgICAgfSBl
bHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpIHsKICAgICAg
ICAgLy8gSW5zZXJ0IHRyYWNrcyBhZGRlZCBmb3IgaW4tYmFuZCBpbiB0aGUgbWVkaWEgZmlsZSBv
cmRlci4KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNr
Kj4odHJhY2suZ2V0KCkpLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgICAgIHNpemVfdCBpbmRl
eCA9IGR5bmFtaWNfY2FzdDxJbmJhbmRUZXh0VHJhY2sqPih0cmFjay5nZXQoKSktPmluYmFuZFRy
YWNrSW5kZXgoKTsKICAgICAgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7
CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgaW52YWxp
ZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2suZ2V0KCkpOwogCi0gICAgQVNTRVJUKCF0
cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1fb3duZXIp
OwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobV9vd25lcik7CisgICAgQVNTRVJUKCF0cmFj
ay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkpOwor
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQob3duZXIoKSk7CiAKICAgICBzY2hlZHVsZUFkZFRy
YWNrRXZlbnQodHJhY2sucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1v
dmUoVGV4dFRyYWNrKiB0cmFjaykKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRyYWNrQmFz
ZSogdHJhY2spCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7
Ci0KLSAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50
KQotICAgICAgICB0cmFja3MgPSAmbV9lbGVtZW50VHJhY2tzOwotICAgIGVsc2UgaWYgKHRyYWNr
LT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQotICAgICAgICB0cmFja3MgPSAm
bV9hZGRUcmFja1RyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgIHRyYWNrcyA9ICZtX2luYmFuZFRyYWNrczsKKyAgICBp
ZiAodHJhY2stPnR5cGUoKSAhPSBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAgICAgcmV0dXJu
OworICAgIFRleHRUcmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJh
Y2spOworCisgICAgc2l6ZV90IGluZGV4ID0gbm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+
dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCisgICAgICAgIG1fZWxlbWVu
dFRyYWNrcy5maW5kKHRleHRUcmFjayk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50cmFja1R5
cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQorICAgICAgICBtX2FkZFRyYWNrVHJhY2tzLmZp
bmQodGV4dFRyYWNrKTsKKyAgICBlbHNlIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRl
eHRUcmFjazo6SW5CYW5kKQorICAgICAgICBtX2luYmFuZFRyYWNrcy5maW5kKHRleHRUcmFjayk7
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIHNpemVfdCBp
bmRleCA9IHRyYWNrcy0+ZmluZCh0cmFjayk7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayh0
cmFjayk7CisgICAgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodGV4dFRyYWNrKTsK
IAotICAgIEFTU0VSVCh0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7Ci0gICAgdHJh
Y2stPnNldE1lZGlhRWxlbWVudCgwKTsKKyAgICBBU1NFUlQodHJhY2stPm1lZGlhRWxlbWVudCgp
ID09IG93bmVyKCkpOworICAgIHRleHRUcmFjay0+c2V0TWVkaWFFbGVtZW50KDApOwogCi0gICAg
dHJhY2tzLT5yZW1vdmUoaW5kZXgpOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09
IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQorICAgICAgICBtX2VsZW1lbnRUcmFja3MucmVtb3Zl
KGluZGV4KTsKKyAgICBlbHNlIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFj
azo6QWRkVHJhY2spCisgICAgICAgIG1fYWRkVHJhY2tUcmFja3MucmVtb3ZlKGluZGV4KTsKKyAg
ICBlbHNlIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQor
ICAgICAgICBtX2luYmFuZFRyYWNrcy5yZW1vdmUoaW5kZXgpOworICAgIGVsc2UKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wgVGV4dFRyYWNrTGlzdDo6Y29udGFpbnMo
VGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK2Jvb2wgVGV4dFRyYWNrTGlzdDo6Y29udGFpbnMoVHJh
Y2tCYXNlKiB0cmFjaykgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFRleHRUcmFj
az4gPiogdHJhY2tzID0gMDsKLSAgICAKLSAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRl
eHRUcmFjazo6VHJhY2tFbGVtZW50KQotICAgICAgICB0cmFja3MgPSAmbV9lbGVtZW50VHJhY2tz
OwotICAgIGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNr
KQotICAgICAgICB0cmFja3MgPSAmbV9hZGRUcmFja1RyYWNrczsKLSAgICBlbHNlIGlmICh0cmFj
ay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgIHRyYWNrcyA9ICZt
X2luYmFuZFRyYWNrczsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIGlmICh0cmFjay0+dHlwZSgpICE9IFRyYWNrQmFzZTo6VGV4dFRyYWNrKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgVGV4dFRyYWNrKiB0ZXh0VHJhY2sgPSBzdGF0aWNfY2FzdDxUZXh0
VHJhY2sqPih0cmFjayk7CiAgICAgCi0gICAgcmV0dXJuIHRyYWNrcy0+ZmluZCh0cmFjaykgIT0g
bm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpU
cmFja0VsZW1lbnQpCisgICAgICAgIHJldHVybiBtX2VsZW1lbnRUcmFja3MuZmluZCh0cmFjaykg
IT0gbm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNr
OjpBZGRUcmFjaykKKyAgICAgICAgcmV0dXJuIG1fYWRkVHJhY2tUcmFja3MuZmluZCh0cmFjaykg
IT0gbm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNr
OjpJbkJhbmQpCisgICAgICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5maW5kKHRyYWNrKSAhPSBu
b3RGb3VuZDsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0CkBAIC0yMzIsNDEgKzI0Nyw0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlz
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JUZXh0VHJhY2tMaXN0OwogfQogCi12b2lkIFRleHRUcmFja0xpc3Q6OnNjaGVkdWxlQWRk
VHJhY2tFdmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCi17Ci0gICAgLy8gNC44LjEw
LjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKLSAgICAvLyA0LjguMTAuMTIu
NCBUZXh0IHRyYWNrIEFQSQotICAgIC8vIC4uLiB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFu
IGV2ZW50IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgCi0gICAgLy8gYnVi
YmxlIGFuZCBpcyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBp
bnRlcmZhY2UsIHdpdGggCi0gICAgLy8gdGhlIHRyYWNrIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0
byB0aGUgdGV4dCB0cmFjaydzIFRleHRUcmFjayBvYmplY3QsIGF0IAotICAgIC8vIHRoZSBtZWRp
YSBlbGVtZW50J3MgdGV4dFRyYWNrcyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4K
LQotICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7Ci0gICAgVHJhY2tFdmVu
dEluaXQgaW5pdGlhbGl6ZXI7Ci0gICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKLSAg
ICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7Ci0gICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJs
ZSA9IGZhbHNlOwotCi0gICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7Ci0gICAgaWYgKCFt
X3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcGVuZGluZ0V2ZW50VGlt
ZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIFRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRU
aW1lckZpcmVkKFRpbWVyPFRleHRUcmFja0xpc3Q+KikKLXsKLSAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50PiA+IHBlbmRpbmdFdmVudHM7Ci0KLSAgICArK21fZGlzcGF0Y2hpbmdFdmVudHM7Ci0gICAg
bV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7Ci0gICAgc2l6ZV90IGNvdW50ID0g
cGVuZGluZ0V2ZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IGNvdW50OyArK2luZGV4KQotICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5k
ZXhdLnJlbGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgLS1tX2Rpc3BhdGNoaW5nRXZl
bnRzOwotfQotCi1Ob2RlKiBUZXh0VHJhY2tMaXN0Ojpvd25lcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fb3duZXI7Ci19Ci0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaAppbmRleCAxZWUxNWM5M2M5ODc5ZTVjOWFhNWU1ZDRiNjkxZDQ3YzA1NDYyYTIx
Li5lZjUyNjdkNDE1OGQ4NTkwNjkzNTQ0MGY2YzgyZjA4OGU0ZWQzMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaApAQCAtMjgsMjEgKzI4LDEzIEBACiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCi0jaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xh
c3MgVGV4dFRyYWNrOwotY2xhc3MgVGV4dFRyYWNrTGlzdDsKIAotY2xhc3MgVGV4dFRyYWNrTGlz
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0xpc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXQg
eworY2xhc3MgVGV4dFRyYWNrTGlzdCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewpAQCAt
NTAsNTQgKzQyLDI3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgflRleHRUcmFja0xpc3QoKTsKIAot
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIGludCBnZXRUcmFja0luZGV4KFRleHRU
cmFjayopOwogICAgIGludCBnZXRUcmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKFRl
eHRUcmFjayopOwotICAgIGJvb2wgY29udGFpbnMoVGV4dFRyYWNrKikgY29uc3Q7CiAKLSAgICBU
ZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgZ2V0VHJhY2tJbmRleChUcmFj
a0Jhc2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlKikg
Y29uc3QgT1ZFUlJJREU7CisKKyAgICBUZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNv
bnN0OwogICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7Ci0gICAgdm9pZCBy
ZW1vdmUoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UqKSBP
VkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICB1c2luZyBSZWZDb3VudGVkPFRleHRU
cmFja0xpc3Q+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6ZGVy
ZWY7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0KLSAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGFkZHRyYWNrKTsKLQotICAgIHZvaWQgY2xlYXJPd25lcigpIHsg
bV9vd25lciA9IDA7IH0KLSAgICBOb2RlKiBvd25lcigpIGNvbnN0OwotCi0gICAgYm9vbCBpc0Zp
cmluZ0V2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9kaXNwYXRjaGluZ0V2ZW50czsgfQogCiBw
cml2YXRlOgogICAgIFRleHRUcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7IH0KLQotICAgIHZvaWQgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8
VGV4dFRyYWNrPik7Ci0gICAgdm9pZCBhc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJh
Y2tMaXN0PiopOwotCisgICAgVGV4dFRyYWNrKiBnZXRJbmJhbmRUcmFjayh1bnNpZ25lZCkgY29u
c3Q7CiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayhUZXh0VHJhY2sq
KTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKLSAgICBIVE1MTWVk
aWFFbGVtZW50KiBtX293bmVyOwotCi0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRp
bmdFdmVudHM7Ci0gICAgVGltZXI8VGV4dFRyYWNrTGlzdD4gbV9wZW5kaW5nRXZlbnRUaW1lcjsK
LQotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLSAgICBWZWN0b3I8UmVm
UHRyPFRleHRUcmFjaz4gPiBtX2FkZFRyYWNrVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrPiA+IG1fZWxlbWVudFRyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiBtX2luYmFuZFRyYWNrczsKLQotICAgIGludCBtX2Rpc3BhdGNoaW5nRXZlbnRzOworICAgIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6VGV4dFRyYWNrPiA+IG1fYWRkVHJhY2tUcmFja3M7CisgICAg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpUZXh0VHJhY2s+ID4gbV9lbGVtZW50VHJhY2tzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jh
c2UuY3BwCmluZGV4IDZhMmMzNTgyM2U2MTk2MmEzN2M5ZjhmNGNlZmQ5ODlkZGFiNTBkZmUuLmE2
YThmMzViNjg3YzA1OGE5ZjkyODhhNTFiMTQzYjljMWUzYTM0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1UcmFja0Jhc2U6OlRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBUeXBlIHR5cGUpCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4
dCkKK1RyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSkKKyAgICA6IG1fbWVkaWFFbGVtZW50
KDApCiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gQmFzZVRyYWNrKTsKICAgICBtX3R5cGUgPSB0eXBl
OwpAQCAtNDEsMjYgKzQxLDYgQEAgVHJhY2tCYXNlOjp+VHJhY2tCYXNlKCkKIHsKIH0KIAotY29u
c3QgQXRvbWljU3RyaW5nJiBUcmFja0Jhc2U6OmludGVyZmFjZU5hbWUoKSBjb25zdAotewotICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrOwotfQotCi1TY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBUcmFja0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAotewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci19Ci0KLUV2ZW50VGFy
Z2V0RGF0YSogVHJhY2tCYXNlOjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogVHJhY2tCYXNlOjplbnN1cmVF
dmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0Jhc2UuaAppbmRleCBjMDA2NjBmMDUzYWQ2NDk0MTY1OGYyMGQ3NTAzMGNhYmM5MzI3OTg5
Li42NDZkNDg3ZGE3NGE5YWM2NDNlYWUzMzc2ZmM5M2Y3ODYxMmQ2MDI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKQEAgLTMzLDM1ICszMywyNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OwogCi1jbGFzcyBUcmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jh
c2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworY2xhc3MgVHJhY2tCYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8VHJhY2tCYXNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhY2tCYXNlKCk7CiAK
ICAgICBlbnVtIFR5cGUgeyBCYXNlVHJhY2ssIFRleHRUcmFjaywgQXVkaW9UcmFjaywgVmlkZW9U
cmFjayB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKLSAgICAKLSAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OmRlcmVmOworICAgIHZvaWQgc2V0TWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50
OyB9CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRp
YUVsZW1lbnQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpID0gMDsKIAogcHJv
dGVjdGVkOgotICAgIFRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVHlwZSk7Ci0g
ICAgCi0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwotICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKKyAgICBU
cmFja0Jhc2UoVHlwZSk7CisKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsK
IAogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSB7IGRlcmVmKCk7IH0KLSAgICAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXRE
YXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBkYzVjZTNjMmUzNzllNmJjMTAz
YWU1ZjFkYjBjM2UzYWNmYTkzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisj
aW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSAiVHJhY2tFdmVudC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworVHJhY2tMaXN0QmFzZTo6VHJhY2tMaXN0QmFz
ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9vd25lcihvd25lcikKKyAgICAs
IG1fcGVuZGluZ0V2ZW50VGltZXIodGhpcywgJlRyYWNrTGlzdEJhc2U6OmFzeW5jRXZlbnRUaW1l
ckZpcmVkKQorICAgICwgbV9kaXNwYXRjaGluZ0V2ZW50cygwKQoreworICAgIEFTU0VSVChjb250
ZXh0LT5pc0RvY3VtZW50KCkpOworfQorCitUcmFja0xpc3RCYXNlOjp+VHJhY2tMaXN0QmFzZSgp
Cit7Cit9CisKK3Vuc2lnbmVkIFRyYWNrTGlzdEJhc2U6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW5iYW5kVHJhY2tzLnNpemUoKTsKK30KKworaW50IFRyYWNrTGlzdEJhc2U6Omdl
dFRyYWNrSW5kZXgoVHJhY2tCYXNlICp0cmFjaykKK3sKKyAgICByZXR1cm4gbV9pbmJhbmRUcmFj
a3MuZmluZCh0cmFjayk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6cmVtb3ZlKFRyYWNrQmFz
ZSogdHJhY2spCit7CisgICAgc2l6ZV90IGluZGV4ID0gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFj
ayk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQodHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1fb3duZXIpOworICAgIHRyYWNrLT5zZXRN
ZWRpYUVsZW1lbnQoMCk7CisKKyAgICBSZWZQdHI8VHJhY2tCYXNlPiB0cmFja1JlZiA9IG1faW5i
YW5kVHJhY2tzW2luZGV4XTsKKworICAgIG1faW5iYW5kVHJhY2tzLnJlbW92ZShpbmRleCk7CisK
KyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2tSZWYucmVsZWFzZSgpKTsKK30KKworYm9v
bCBUcmFja0xpc3RCYXNlOjpjb250YWlucyhUcmFja0Jhc2UqIHRyYWNrKSBjb25zdAoreworICAg
IHJldHVybiBtX2luYmFuZFRyYWNrcy5maW5kKHRyYWNrKSAhPSBub3RGb3VuZDsKK30KKwordm9p
ZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUcmFja0Jh
c2U+IHRyYWNrKQoreworICAgIC8vIDQuOC4xMC41IExvYWRpbmcgdGhlIG1lZGlhIHJlc291cmNl
CisgICAgLy8gLi4uCisgICAgLy8gRmlyZSBhIHRydXN0ZWQgZXZlbnQgd2l0aCB0aGUgbmFtZSBh
ZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCisgICAgLy8gbm90IGNhbmNlbGFi
bGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRoIHRoZSB0cmFj
aworICAgIC8vIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUgbmV3IFQgb2JqZWN0LCBhdCB0
aGlzCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QuCisKKyAgICBSZWZQdHI8VHJhY2tCYXNl
PiB0cmFja1JlZiA9IHRyYWNrOworICAgIFRyYWNrRXZlbnRJbml0IGluaXRpYWxpemVyOworICAg
IGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7CisgICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9
IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKKworICAgIG1fcGVu
ZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFj
a0V2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICghbV9wZW5kaW5nRXZlbnRUaW1lci5pc0Fj
dGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30K
Kwordm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZVJlbW92ZVRyYWNrRXZlbnQoUGFzc1JlZlB0
cjxUcmFja0Jhc2U+IHRyYWNrKQoreworICAgIC8vIDQuOC4xMC42IE9mZnNldHMgaW50byB0aGUg
bWVkaWEgcmVzb3VyY2UKKyAgICAvLyBJZiBhdCBhbnkgdGltZSB0aGUgdXNlciBhZ2VudCBsZWFy
bnMgdGhhdCBhbiBhdWRpbyBvciB2aWRlbyB0cmFjayBoYXMKKyAgICAvLyBlbmRlZCBhbmQgYWxs
IG1lZGlhIGRhdGEgcmVsYXRpbmcgdG8gdGhhdCB0cmFjayBjb3JyZXNwb25kcyB0byBwYXJ0cyBv
ZgorICAgIC8vIHRoZSBtZWRpYSB0aW1lbGluZSB0aGF0IGFyZSBiZWZvcmUgdGhlIGVhcmxpZXN0
IHBvc3NpYmxlIHBvc2l0aW9uLCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IG1heSBxdWV1ZSBhIHRh
c2sgdG8gcmVtb3ZlIHRoZSB0cmFjayBmcm9tIHRoZSBhdWRpb1RyYWNrcworICAgIC8vIGF0dHJp
YnV0ZSdzIFRyYWNrTGlzdEJhc2Ugb2JqZWN0IG9yIHRoZSB2aWRlb1RyYWNrcyBhdHRyaWJ1dGUn
cworICAgIC8vIFRyYWNrTGlzdEJhc2Ugb2JqZWN0IGFzIGFwcHJvcHJpYXRlIGFuZCB0aGVuIGZp
cmUgYSB0cnVzdGVkIGV2ZW50CisgICAgLy8gd2l0aCB0aGUgbmFtZSByZW1vdmV0cmFjaywgdGhh
dCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxhYmxlLAorICAgIC8vIGFuZCB0aGF0
IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRoIHRoZSB0cmFjayBhdHRyaWJ1dGUK
KyAgICAvLyBpbml0aWFsaXplZCB0byB0aGUgVCBvciBUIG9iamVjdCByZXByZXNlbnRpbmcgdGhl
CisgICAgLy8gdHJhY2ssIGF0IHRoZSBtZWRpYSBlbGVtZW50J3MgYWZvcmVtZW50aW9uZWQgVHJh
Y2tMaXN0QmFzZSBvcgorICAgIC8vIFRyYWNrTGlzdEJhc2Ugb2JqZWN0LgorCisgICAgUmVmUHRy
PFRyYWNrQmFzZT4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBUcmFja0V2ZW50SW5pdCBpbml0aWFs
aXplcjsKKyAgICBpbml0aWFsaXplci50cmFjayA9IHRyYWNrUmVmOworICAgIGluaXRpYWxpemVy
LmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7CisK
KyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucmVtb3ZldHJhY2tFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAoIW1fcGVuZGluZ0V2
ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFydE9u
ZVNob3QoMCk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVDaGFuZ2VFdmVudCgp
Cit7CisgICAgLy8gNC44LjEwLjYgT2Zmc2V0cyBpbnRvIHRoZSBtZWRpYSByZXNvdXJjZQorICAg
IC8vIFdoZW5ldmVyIGFuIGF1ZGlvIHRyYWNrIGluIGFuIFRyYWNrTGlzdEJhc2UgaXMgZW5hYmxl
ZCBvciBkaXNhYmxlZCwgdGhlCisgICAgLy8gdXNlciBhZ2VudCBtdXN0IHF1ZXVlIGEgdGFzayB0
byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUKKyAgICAvLyBUcmFja0xp
c3RCYXNlIG9iamVjdC4KKworICAgIEV2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0aWFs
aXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNl
OworCisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jaGFuZ2VFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFydE9uZVNob3Qo
MCk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8
VHJhY2tMaXN0QmFzZT4qKQoreworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2
ZW50czsKKworICAgICsrbV9kaXNwYXRjaGluZ0V2ZW50czsKKyAgICBtX3BlbmRpbmdFdmVudHMu
c3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nRXZlbnRzLnNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgp
CisgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgpLCBJ
R05PUkVfRVhDRVBUSU9OKTsKKyAgICAtLW1fZGlzcGF0Y2hpbmdFdmVudHM7Cit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NWZhNTYyZWI3NGFlNDU5Njc2MmFiMzU1NzMzY2RlNDY1M2Q1Y2IyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTAsMCArMSwx
MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBUcmFja0xpc3RCYXNlX2gKKyNkZWZpbmUg
VHJhY2tMaXN0QmFzZV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJUaW1l
ci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFRyYWNrQmFzZTsKKworY2xhc3MgVHJhY2tM
aXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRU
YXJnZXQgeworcHVibGljOgorICAgIH5UcmFja0xpc3RCYXNlKCk7CisKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGdldFRyYWNrSW5kZXgoVHJh
Y2tCYXNlKik7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNlKik7CisKKyAgICAvLyBFdmVudFRhcmdl
dAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Qg
PSAwOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OnJlZjsKKyAgICB1c2lu
ZyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+OjpkZXJlZjsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHQ7IH0KKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkdHJh
Y2spOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2hhbmdlKTsKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXRyYWNrKTsKKworICAgIHZvaWQg
Y2xlYXJPd25lcigpIHsgbV9vd25lciA9IDA7IH0KKyAgICBIVE1MTWVkaWFFbGVtZW50KiBvd25l
cigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KKworICAgIGJvb2wgaXNGaXJpbmdFdmVudExp
c3RlbmVycygpIHsgcmV0dXJuIG1fZGlzcGF0Y2hpbmdFdmVudHM7IH0KKworICAgIC8vIE5lZWRz
IHRvIGJlIHB1YmxpYyBzbyB0cmFja3MgY2FuIGNhbGwgaXQKKyAgICB2b2lkIHNjaGVkdWxlQ2hh
bmdlRXZlbnQoKTsKKworcHJvdGVjdGVkOgorICAgIFRyYWNrTGlzdEJhc2UoSFRNTE1lZGlhRWxl
bWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgc2NoZWR1bGVBZGRU
cmFja0V2ZW50KFBhc3NSZWZQdHI8VHJhY2tCYXNlPik7CisgICAgdm9pZCBzY2hlZHVsZVJlbW92
ZVRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUcmFja0Jhc2U+KTsKKworICAgIFZlY3RvcjxSZWZQdHI8
VHJhY2tCYXNlPiA+IG1faW5iYW5kVHJhY2tzOworCitwcml2YXRlOgorICAgIC8vIEV2ZW50VGFy
Z2V0CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0
RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKworICAgIHZvaWQgYXN5bmNFdmVu
dFRpbWVyRmlyZWQoVGltZXI8VHJhY2tMaXN0QmFzZT4qKTsKKworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIG1fY29udGV4dDsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX293bmVyOworCisg
ICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8VHJh
Y2tMaXN0QmFzZT4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKKworICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIGludCBtX2Rpc3BhdGNoaW5nRXZlbnRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I3OGU3OWE4MmM5N2Q5NzVlOGUz
ODc3YmE0MGY1YTgxZmJlOTBkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJW
aWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNl
LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZl
LCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjpjYXB0aW9uc0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNpZ24sICgic2lnbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc2lnbjsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoInN1YnRp
dGxlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
c3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRh
cnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitWaWRlb1RyYWNrOjpWaWRl
b1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6VmlkZW9UcmFj
aykKKyAgICAsIG1faWQodHJhY2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9sYWJlbCh0cmFja1By
aXZhdGUtPmxhYmVsKCkpCisgICAgLCBtX2xhbmd1YWdlKHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2Uo
KSkKKyAgICAsIG1fc2VsZWN0ZWQodHJhY2tQcml2YXRlLT5zZWxlY3RlZCgpKQorICAgICwgbV9j
bGllbnQoY2xpZW50KQorICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBtX3By
aXZhdGUtPnNldENsaWVudCh0aGlzKTsKKworICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkp
IHsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKKyAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRpb25zOgorICAgICAgICBzZXRLaW5kKFZp
ZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBW
aWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWlu
S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6
U2lnbjoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgorICAgICAg
ICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6CisgICAgICAgIHNldEtp
bmQoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU6CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJp
bmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK1ZpZGVvVHJhY2s6On5WaWRl
b1RyYWNrKCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCgwKTsKK30KKworYm9vbCBWaWRl
b1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBpZiAodmFsdWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKHZhbHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICh2YWx1ZSA9PSBzaWduS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29yZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6c2V0
S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCit7CisgICAgU3RyaW5nIG9sZEtpbmQgPSBt
X2tpbmQ7CisKKyAgICBpZiAoaXNWYWxpZEtpbmRLZXl3b3JkKGtpbmQpKQorICAgICAgICBtX2tp
bmQgPSBraW5kOworICAgIGVsc2UKKyAgICAgICAgbV9raW5kID0gIiI7Cit9CisKK3ZvaWQgVmlk
ZW9UcmFjazo6c2V0U2VsZWN0ZWQoY29uc3QgYm9vbCBzZWxlY3RlZCkKK3sKKyAgICBpZiAobV9z
ZWxlY3RlZCA9PSBzZWxlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZWxlY3RlZCA9
IHNlbGVjdGVkOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dmlkZW9U
cmFja1NlbGVjdGVkQ2hhbmdlZCh0aGlzKTsKK30KKworaW50IFZpZGVvVHJhY2s6OmluYmFuZFRy
YWNrSW5kZXgoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZh
dGUtPnZpZGVvVHJhY2tJbmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjQ0
ZGZhOGVkZDkzYzMyNjZkZTVjMjY4OTE2YzkxZjlhNmJhNDg1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKQEAgLTAsMCArMSwxMDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisjZGVmaW5lIFZpZGVv
VHJhY2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJhY2tDbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikgPSAwOworfTsKKwor
Y2xhc3MgVmlkZW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBWaWRlb1RyYWNrUHJp
dmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4g
Y3JlYXRlKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBW
aWRlb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZp
ZGVvVHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9
CisKKyAgICBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorICAg
IHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGFsdGVybmF0aXZlS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIG1haW5LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2lnbktl
eXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3Jk
KCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsK
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJik7
CisKKyAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9Cisg
ICAgdm9pZCBzZXRMYWJlbChjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBs
YWJlbDsgfQorCisgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9s
YW5ndWFnZTsgfQorICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBsYW5n
dWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KKworICAgIGJvb2wgc2VsZWN0ZWQoKSBj
b25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVk
KGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVu
dCA9IDA7IH0KKyAgICBWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWVudDsgfQorCisgICAgaW50IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgor
ICAgIFZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGU+IHByaXZhdGVUcmFjayk7CisKK3ByaXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7
CisgICAgQXRvbWljU3RyaW5nIG1fa2luZDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKKyAg
ICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBib29sIG1fc2VsZWN0ZWQ7CisgICAgVmlk
ZW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+
IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1
MjZkMzMwNzE0N2YzMWRkMjRkYTJkODVkZmIyMDg3MjBjNzI3MDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1
c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBW
aWRlb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3Vh
Z2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzZWxlY3RlZDsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwNDUzODE2NWM0
MDA5Y2JmYzIxOGQ2MDg2MmJjMjdhN2QyM2MzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApAQCAtMCwwICsxLDEwNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1ZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBv
d25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJh
c2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK1ZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xp
c3QoKQoreworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxWaWRl
b1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBwcnBU
cmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCisg
ICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsKKyAgICBtX2luYmFu
ZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCghdHJhY2stPm1lZGlh
RWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFj
ay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50
KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK1ZpZGVvVHJhY2sqIFZpZGVvVHJhY2tMaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tz
LnNpemUoKSkgeworICAgICAgICBUcmFja0Jhc2UqIHRyYWNrID0gbV9pbmJhbmRUcmFja3NbaW5k
ZXhdLmdldCgpOworICAgICAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlZp
ZGVvVHJhY2spOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KHRyYWNr
KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9UcmFjayogVmlkZW9UcmFja0xp
c3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAgICBUcmFja0Jhc2Uq
IHRyYWNrID0gaXRlbShpKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tC
YXNlOjpWaWRlb1RyYWNrKTsKKyAgICAgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IGR5bmFt
aWNfY2FzdDxWaWRlb1RyYWNrKj4odHJhY2spOworICAgICAgICBpZiAodmlkZW9UcmFjay0+aWQo
KSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB2aWRlb1RyYWNrOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKworbG9uZyBWaWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0Cit7
CisgICAgLy8gNC44LjEwLjEwLjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IG9i
amVjdHMKKyAgICAvLyBUaGUgVmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRleCBhdHRyaWJ1dGUg
bXVzdCByZXR1cm4gdGhlIGluZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRseSBzZWxlY3RlZCB0
cmFjaywgaWYgYW55LiBJZiB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRvZXMgbm90CisgICAg
Ly8gY3VycmVudGx5IHJlcHJlc2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25lIG9mIHRoZSB0cmFj
a3MgYXJlIHNlbGVjdGVkLAorICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1cm4g4oiSMS4KKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVHJhY2tC
YXNlKiB0cmFjayA9IGl0ZW0oaSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRy
YWNrQmFzZTo6VmlkZW9UcmFjayk7CisgICAgICAgIGlmIChkeW5hbWljX2Nhc3Q8VmlkZW9UcmFj
ayo+KGl0ZW0oaSkpLT5zZWxlY3RlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQor
ICAgIHJldHVybiAtMTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrTGlzdDo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JWaWRlb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMTUxMzRhYzM5Y2I3OTIxMDEzNTI2
YWQ2NDI3ZjlkMDc0NzU4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgVmlkZW9UcmFja0xpc3RfaAorI2RlZmluZSBWaWRlb1RyYWNrTGlzdF9oCisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFjazsKKworY2xhc3MgVmlkZW9UcmFj
a0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VmlkZW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVmlkZW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAgflZp
ZGVvVHJhY2tMaXN0KCk7CisKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+
KTsKKyAgICBWaWRlb1RyYWNrKiBpdGVtKHVuc2lnbmVkKSBjb25zdDsKKyAgICBWaWRlb1RyYWNr
KiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgbG9uZyBzZWxl
Y3RlZEluZGV4KCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
VmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZDM2YWY2MjBiODQ0NTVhZjczOGRlYjE0ODQwNDE2M2Y0YTU1MmJlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAg
SW5kZXhlZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlv
biwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBWaWRlb1RyYWNrTGlzdCB7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgIFZpZGVv
VHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBWaWRlb1RyYWNrIGdldFRy
YWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0cmFjazsKKyAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOworCisgICAgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBb
T3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBF
dmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBb
T3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKK307CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4MWZlZDM3YTRiOTY3MWUzMWUzODI1MzRiMDQzOTA5NDNhYThiMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRp
b1RyYWNrUHJpdmF0ZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9U
cmFja1ByaXZhdGVfaAorI2RlZmluZSBBdWRpb1RyYWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQ
cml2YXRlQ2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEF1ZGlvVHJhY2tQcml2YXRlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQXVkaW9UcmFja1ByaXZhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGUoKSk7CisgICAg
fQorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlKCkgeyB9CisKKyAgICB2b2lkIHNldENs
aWVudChBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50
OyB9CisgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9l
bmFibGVkID0gZW5hYmxlZDsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5hYmxlZDsgfQorCisgICAgZW51bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIERlc2Ny
aXB0aW9uLCBNYWluLCBNYWluRGVzYywgVHJhbnNsYXRpb24sIENvbW1lbnRhcnksIE5vbmUgfTsK
KyAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIE5vbmU7IH0KKworICAgIHZp
cnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0K
KyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
QXRvbTsgfQorCisgICAgdmlydHVhbCBpbnQgYXVkaW9UcmFja0luZGV4KCkgY29uc3QgeyByZXR1
cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgQXVkaW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6
IG1fZW5hYmxlZChmYWxzZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIEF1ZGlvVHJh
Y2tQcml2YXRlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1fZW5hYmxlZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY0NjEwM2NiMTgxNWE1YzlhYTU2NDAyZTNiY2M0NWIzYmJiMTI4NzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5o
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja1ByaXZhdGVfaAor
I2RlZmluZSBWaWRlb1RyYWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KCkg
eyB9Cit9OworCitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZp
ZGVvVHJhY2tQcml2YXRlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1By
aXZhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVmlkZW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwg
flZpZGVvVHJhY2tQcml2YXRlKCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChWaWRlb1RyYWNr
UHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkgeyBtX3NlbGVjdGVkID0gc2Vs
ZWN0ZWQ7IH07CisgICAgdmlydHVhbCBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3RlZDsgfQorCisgICAgZW51bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIENhcHRpb25zLCBNYWlu
LCBTaWduLCBTdWJ0aXRsZXMsIENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQg
a2luZCgpIGNvbnN0IHsgcmV0dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5n
IGlkKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21p
Y1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmly
dHVhbCBpbnQgdmlkZW9UcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0
ZWQ6CisgICAgVmlkZW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fc2VsZWN0ZWQoZmFsc2Up
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCog
bV9jbGllbnQ7CisgICAgYm9vbCBtX3NlbGVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197143</attachid>
            <date>2013-04-09 10:37:12 -0700</date>
            <delta_ts>2013-04-09 11:06:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130409113656.patch</filename>
            <type>text/plain</type>
            <size>139575</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE5NTFiMjQyMDQ1OWRh
MDViMTYwOTg1YzFkYzhmNzk1OTI0NGVlMy4uZTdlMjkxZjZmNGY0YzhkZmZjOTMwMGMzYTEwYTA5
MjYwODMyOWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzOSBAQAorMjAxMy0wNC0wOCAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CisKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp+QXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OnRyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbnZhbGlkYXRlVHJhY2tJ
bmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tDbGllbnQ6On5BdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKEF1ZGlv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9UcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
OjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tJbmRleCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChBdWRp
b1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6cmVtb3Zl
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoQXVk
aW9UcmFja0xpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQp
OgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6Cisg
ICAgICAgIChBdWRpb1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChB
dWRpb1RyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
TGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6
YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmludmFsaWRhdGVUcmFj
a0luZGV4KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0NsaWVudDo6flZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6Om1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRJZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldExhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xpc3QpOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChW
aWRlb1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6cmVt
b3ZlKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6
OmNvbnRhaW5zKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6CisgICAgICAgIChWaWRl
b1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlz
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Om93bmVy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQ6On5BdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChBdWRpb1RyYWNrUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjp+QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpraW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjppZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGU6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjphdWRpb1RyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6
OkF1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTA0LTA5ICBKZWZm
IFJvZ2VycyAgPGpyb2dlcnNAcmltLmNvbT4KIAogICAgICAgICBBZGQgd2VicCB0byBzdXBwb3J0
ZWQgaW1hZ2UgbWltZSB0eXBlcyBpZiBXRUJQIGZlYXR1cmUgaXMgZW5hYmxlZC91c2VkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDQ2MTgzMjVhM2NmYWNlYWFkNmVhZTc3MzBkNmVlNzA1YmI5MDg0
YTUuLmFkOTk0NWM2YjZmZWRmN2I1MTRjNDEzZWUzOTMzYTY4MGQ1MTk0YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NDksMTIgKzU0OSw2IEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAg
IGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwKICAgICBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5pZGwKIAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAotICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlz
dC5pZGwKLSAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCi0gICAgaHRtbC90cmFjay9U
cmFja0V2ZW50LmlkbAotCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAogICAgIGluc3BlY3Rvci9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmlkbApAQCAtMTU5MywxOSArMTU4Nyw2IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCiAKLSAgICBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5jcHAKLSAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAotICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKLSAgICBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZUxpc3QuY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAot
ICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAotICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAKLSAgICBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCi0gICAgaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCi0gICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCi0KICAgICBp
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCiAgICAgaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMTczOCw3ICsxNzE5LDYg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
ICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKICAgICBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCiAKQEAgLTI2OTYsNyArMjY3NiwzNSBAQCBpZiAoRU5BQkxFX1dF
QkdMKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKKyAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisg
ICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAorICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmlkbAorICAgICkKKwogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisg
ICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZUdlbmVyaWMuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlz
dC5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorICAgICAgICBodG1s
L3RyYWNrL1RyYWNrQmFzZS5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAor
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCisgICAgICAgIGh0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5jcHAKKyAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisg
ICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAorCisgICAgICAgIGxvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCiAgICAgKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLnByaQppbmRleCBkYmVjYTQ3MWE3YzYxYzc2Y2Y0MjAxNTEwODY4NTg1Zjk3NzI3MjRm
Li43OTA5ZTFhZTUxZTNhNWNiYzE0NjljZjU3MTRhNWJmNTQ1MTliMzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCkBAIC02NTIsMTEgKzY1MiwxNSBAQCBlbmFibGU/KEdBTUVQQUQpIHsK
IAogZW5hYmxlPyhWSURFT19UUkFDSykgewogICBJRExfQklORElOR1MgKz0gXAorICAgICQkUFdE
L2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAg
ICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJCRQ
V0QvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5pZGwKIH0KIAogZW5hYmxlPyhNRURJQV9TT1VSQ0UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IGVlMWFlNThlYTQ3YmY2ZjExNTJkM2I4NWM1ZmYyNDY3MGQz
ODUwOGIuLjUwZTZjOWY4Y2ZkOTM1NjIxY2IxM2U3ZmVjMTlmYzlkMTMzNjlhZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTU4NiwxMSArMTU4NiwxNSBAQCBkb21fYmluZGlu
Z19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5p
ZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90
cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJh
Y2suaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAJJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFj
a0V2ZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmlkbCBcCkBAIC0yMzIwLDYgKzIzMjQsOSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBcCisJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0yNDc0LDYg
KzI0ODEsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVHJhY2tDdXN0b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFj
a0V2ZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fs
a2VyQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3Vz
dG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0
b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1l
UnVsZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBcCkBAIC0zNzY3LDYgKzM3NzcsMTAgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lUmFuZ2VzLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kVGV4dFRyYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwIFwKQEAgLTM3ODUsNiArMzc5OSwxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJh
c2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBcCisJ
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgXApAQCAtNTQ5Myw2ICs1NTEzLDcg
QEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Jbml0aWFsaXplTG9nZ2luZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9ORU9OSGVscGVycy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaCBc
CkBAIC01NzczLDYgKzU3OTQsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1R5cGVz
ZXR0aW5nRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVW5p
dEJlemllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNr
UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggYzhhNGE5NGU1OGY3NjU0NTJkYmUwNjc2MDQ4MDVhNzNmNjBlZTcyOC4u
MTliYjFmYjc5ZjZmYjdkZDY5NDM5OTE3N2NiYzZiNmRmZDQyY2ViZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0zOTY1LDkgKzM5NjUsMTMgQEAgZW5hYmxlPyhKQVZBU0NSSVBUX0RFQlVHR0VSKSB7CiAKIGVu
YWJsZT8oVklERU9fVFJBQ0spIHsKICAgICBIRUFERVJTICs9IFwKKyAgICAgICAgYmluZGluZ3Mv
anMvSlNBdWRpb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1c3RvbS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKKyAgICAg
ICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBodG1sL0hUTUxU
cmFja0VsZW1lbnQuaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKyAgICAg
ICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJh
bmRUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBc
CiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmggXApAQCAtMzk3NywyMCArMzk4MSwzMSBA
QCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5oIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuaCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svVHJhY2tFdmVudC5oIFwKKyAgICAgICAgaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAor
ICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggXAogICAg
ICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmggXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZU
VFRva2VuaXplci5oIFwKICAgICAgICAgbG9hZGVyL1RleHRUcmFja0xvYWRlci5oIFwKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBcCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAorICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIFwKIAogICAgIFNPVVJDRVMgKz0gXAorICAg
ICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9K
U1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMv
SlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFj
a0xpc3RDdXN0b20uY3BwIFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBcCisg
ICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNw
cCBcCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIFwKICAgICAgICAg
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwIFwKQEAgLTQwMDAsNiArNDAxNSw5IEBAIGVuYWJsZT8o
VklERU9fVFJBQ0spIHsKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBcCiAg
ICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJh
Y2tFdmVudC5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKKyAg
ICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBc
CiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svV2ViVlRUVG9rZW5pemVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCBmMzIyZDY0Y2M3ZDE3YTdmYjc1NDAzZWFiZDIxOWJm
ZDNlZWQ5MTk3Li5lZWVlZWJhMTBhMzJlNjVhMjk5YzJjYzBjYzc4MmY0MDhjZTMxNjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KQEAgLTQz
MywxOCArNDMzLDI0IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X2hfYXBpICs9IFwKIAogaWYgRU5B
QkxFX1ZJREVPCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCisJJCh0b3BfYnVpbGRk
aXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmggXAorCSQo
dG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFj
a0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01IVE1MQXVkaW9FbGVtZW50LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFjay5oIFwKIAkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0xp
c3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UZXh0VHJhY2tDdWUuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmggXAotCSQodG9wX2J1aWxkZGlyKS9EZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oCisJJCh0b3BfYnVpbGRk
aXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50LmggXAorCSQo
dG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFj
ay5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERP
TVZpZGVvVHJhY2tMaXN0LmgKIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRQcml2YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1l
bnRQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1Ry
YWNrLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tM
aXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFjay5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tQcml2YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmNw
cCBcCkBAIC00NTMsNiArNDU5LDggQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3Qu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlz
dFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJh
Y2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFja0xp
c3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0
ZS5oCiBlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFj
a0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1YzFlNDI3MzljZTY3ZDVkNTI3ZDMwYTMyZDkxNDA1
NTkzNmEwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlv
VHJhY2tDdXN0b20uaCIKKworI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5oIgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNr
KiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2Vs
bCgpKTsKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFj
ayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTtcCisKKyAgICAvLyBJZiB0aGUgdHJhY2sgaGFzIG5v
IGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghanNBdWRp
b1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2spKTsK
K30KKwordm9pZCBKU0F1ZGlvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2sqIGpzQXVkaW9UcmFjayA9IGpz
Q2FzdDxKU0F1ZGlvVHJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGpzQXVkaW9UcmFjaywgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxh
Z3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91
dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNBdWRpb1RyYWNrLT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4oanNBdWRpb1RyYWNrLCB2aXNpdG9yKTsKKworICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sg
PSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4oanNBdWRpb1RyYWNrLT5pbXBsKCkpOworICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2spKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjZGUzYjE3MjBlOGQ2Y2NmYmQ2MTVjMjVl
M2UzYzU1MjRlM2RkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBKU0F1ZGlvVHJhY2tDdXN0b21faAorI2RlZmluZSBKU0F1ZGlvVHJhY2tDdXN0b21faAor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgorI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSB2
b2lkKiByb290KEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIC8vIFJldHVybiB0aGUgbWVkaWEg
ZWxlbWVudCdzIHJvb3QgaWYgaXQgaGFzIG9uZS4KKyAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVu
dCgpKQorICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+bWVkaWFFbGVtZW50KCkpOworCisgICAg
Ly8gTm8gbWVkaWEgZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0IHRyYWNrLgorICAgIHJldHVybiB0
cmFjazsKK30KKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzYx
NmIwZDRiOGFhOTI5NDIyZjA1YWQ3NTQ5MzI0MDlhYTE2YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAg
LTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0F1ZGlvVHJh
Y2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNB
dWRpb1RyYWNrTGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0
Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFj
a0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmlt
cGwoKSk7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBp
dHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJl
c3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBpZiAoYXVk
aW9UcmFja0xpc3QtPmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMg
bm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFhdWRp
b1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAhanNBdWRpb1RyYWNrTGlzdC0+aGFz
Q3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJdCBp
cyByZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVsZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJsZS4KKyAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrTGlzdC0+
b3duZXIoKSkpOworfQorCit2b2lkIEpTQXVkaW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2tMaXN0
KiBqc0F1ZGlvVHJhY2tMaXN0ID0ganNDYXN0PEpTQXVkaW9UcmFja0xpc3QqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzQXVkaW9UcmFja0xpc3QsICZzX2luZm8pOwor
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJU
KGpzQXVkaW9UcmFja0xpc3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2tMaXN0LCB2
aXNpdG9yKTsKKworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0YXRpY19j
YXN0PEF1ZGlvVHJhY2tMaXN0Kj4oanNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKyAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOworICAgIGF1
ZGlvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDQwNjlkNTRmOTU0YTVi
MzAxMGE0NTViOTY2YmUwZjNlYzlhZGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
I2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3RvbS5oIgorCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNr
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9v
bCBKU1ZpZGVvVHJhY2tPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9UcmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPiho
YW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJhY2sqIHZpZGVvVHJhY2sgPSBzdGF0
aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1RyYWNrLT5pbXBsKCkpOworCisgICAgLy8gSWYg
dGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4K
KyAgICBpZiAoIWpzVmlkZW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9v
dCh2aWRlb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBq
c1ZpZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2ssICZzX2luZm8pOworICAgIENPTVBJTEVfQVNT
RVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzVmlkZW9UcmFjay0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFjaywgdmlzaXRvcik7CisKKyAgICBWaWRlb1Ry
YWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KGpzVmlkZW9UcmFjay0+
aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMzc1ZTU2N2U2
YmEzOGEzZmQ2ZDJjOTk1YWYwYzFjZGY2YWIzZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgSlNWaWRlb1RyYWNrQ3VzdG9tX2gKKyNkZWZpbmUgSlNWaWRl
b1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKyNpbmNsdWRlICJK
U1ZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitpbmxpbmUgdm9pZCogcm9vdChWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBS
ZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhhcyBvbmUuCisgICAgaWYgKHRy
YWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3QodHJhY2stPm1lZGlhRWxl
bWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQsIHJldHVybiB0aGUgdGV4dCB0cmFj
ay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisKK30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmJkOTY3MTBkNjA5MzEwYzc4NzJhN2RmNDNiNmNkYjQzMzViMWQ1NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xp
c3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlz
dC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1
c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2Jvb2wgSlNWaWRlb1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlkZW9UcmFja0xpc3QgPSBqc0Nhc3Q8
SlNWaWRlb1RyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFj
a0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihqc1Zp
ZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2
ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0
aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5l
cnMuCisgICAgaWYgKHZpZGVvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxp
c3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxl
LgorICAgIGlmICghdmlkZW9UcmFja0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzVmlk
ZW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBp
cyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qo
dmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2tM
aXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2tM
aXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0Zs
YWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNW
aWRlb1RyYWNrTGlzdCwgdmlzaXRvcik7CisKKyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFj
a0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrTGlzdCo+KGpzVmlkZW9UcmFja0xpc3QtPmlt
cGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93
bmVyKCkpKTsKKyAgICB2aWRlb1RyYWNrTGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0
b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaAppbmRleCA4Mjc3N2E4NmVlZmRmYmViZTY4OWM5YjkyMzM2ODgyOTU4MzkxYzNl
Li5lYTA3OTliYjVkMGQ3MzRjMDFmNDY4YTYzZTFkNWIyMjA1Y2ZiNGE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaApAQCAtNDEsNiArNDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgQXVkaW9Db250ZXh0OworICAgIGNsYXNzIEF1ZGlvVHJhY2tMaXN0OwogICAgIGNs
YXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNo
ZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBAIC02Nyw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTb3VyY2VCdWZmZXJMaXN0OwogICAgIGNsYXNzIFRleHRUcmFjazsK
ICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7CisgICAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAgICAg
Y2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKICAgICBjbGFzcyBX
b3JrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA0NzZk
MWI1M2YxNDViYjI3MzQ5ODk5M2YzOWYxZDFjYmFhNjIzNTgzLi44ZWE1YjdiMDNhYmFjYTAyZjI1
ZjQ4YTJlZDU1OTkyNjNlYTQ3MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KQEAgLTEsNiArMSw3IEBACiBuYW1lc3BhY2U9IkV2ZW50VGFyZ2V0IgogCiBBdWRp
b0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCitBdWRpb1RyYWNrTGlzdCBjb25kaXRpb25h
bD1WSURFT19UUkFDSwogQmF0dGVyeU1hbmFnZXIgY29uZGl0aW9uYWw9QkFUVEVSWV9TVEFUVVMK
IERlZGljYXRlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9V09SS0VSUwogRE9NQXBwbGljYXRp
b25DYWNoZQpAQCAtMzcsNiArMzgsNyBAQCBTVkdFbGVtZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9
U1ZHCiBUZXh0VHJhY2sgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFRleHRUcmFja0N1ZSBjb25k
aXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFD
SworVmlkZW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFdlYktpdE5hbWVkRmxv
dwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdFQl9TT0NLRVRTCiBXb3JrZXIgY29uZGl0aW9uYWw9
V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjYw
ZDBhNjc1OWY1MmE2NTM2ZDA2MDM0MDcyMmVmNWE5YTRkOTNhYy4uNGEyZDIzMmQzODk1ZmI5NTJl
NDJhNTQ2ZWIxNTUyOTU5NWYxNjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC05OCw2ICs5OCw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUg
IkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2suaCIKQEAgLTEw
NSw2ICsxMDcsOCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorI2lu
Y2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTI5Niw3ICszMDAsOSBAQCBIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bQogICAgICwgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZShm
YWxzZSkKICAgICAsIG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWUoLTEpCiAgICAgLCBtX2NhcHRp
b25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpBdXRvbWF0aWMpCisgICAgLCBt
X2F1ZGlvVHJhY2tzKDApCiAgICAgLCBtX3RleHRUcmFja3MoMCkKKyAgICAsIG1fdmlkZW9UcmFj
a3MoMCkKICAgICAsIG1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlKDApCiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQpAQCAtMzMwLDEyICszMzYsMjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6
fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKHRoaXMpOworICAgIGlmIChtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1f
YXVkaW9UcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYXVkaW9UcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX2F1ZGlvVHJh
Y2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOworICAgIH0KICAgICBpZiAobV90ZXh0VHJhY2tz
KQogICAgICAgICBtX3RleHRUcmFja3MtPmNsZWFyT3duZXIoKTsKICAgICBpZiAobV90ZXh0VHJh
Y2tzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxl
bmd0aCgpOyArK2kpCiAgICAgICAgICAgICBtX3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xp
ZW50KCk7CiAgICAgfQorICAgIGlmIChtX3ZpZGVvVHJhY2tzKSB7CisgICAgICAgIG1fdmlkZW9U
cmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dmlkZW9UcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLT5p
dGVtKGkpLT5jbGVhckNsaWVudCgpOworICAgIH0KICNlbmRpZgogCiAgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyKQpAQCAtMTM0OSw2ICsxMzY1LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB9CiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJh
Y2sqIHRyYWNrKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNv
bnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAodHJhY2st
PnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7CkBAIC0xMzg4LDYgKzE0
MDksMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0
VHJhY2sqIHRyYWNrKQogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUo
KSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdl
ZChWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBXZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRo
ZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlzdAorfQorCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAg
aWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSAmJiB0cmFj
ay0+a2luZCgpICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpICYmIHRyYWNrLT5tb2Rl
KCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKQpAQCAtMjc5Miw3ICsyODE4LDE3IEBA
IGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlk
QWRkVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQ
dHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gQXVkaW9UcmFjazo6Y3JlYXRlKHRoaXMs
IHBycFRyYWNrKTsKKworICAgIGFkZEF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CkBAIC0yODI0LDEwICsyODYwLDM3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+CiAgICAgLy8g
OS4gRmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1
YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQK
ICAgICAvLyBpbnRlcmZhY2UsIHdpdGggdGhlIHRyYWNrIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0
byB0aGUgdGV4dCB0cmFjaydzIFRleHRUcmFjayBvYmplY3QsIGF0IHRoZSBtZWRpYSBlbGVtZW50
J3MKICAgICAvLyB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSdzIFRleHRUcmFja0xpc3Qgb2JqZWN0Lgot
ICAgIGFkZFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CisgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFj
ay5nZXQoKSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1v
dmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUodGhpcywg
cHJwVHJhY2spOworCisgICAgYWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQ
dHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlz
IGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEF1ZGlvVHJhY2sgd2l0aCB0aGUg
QXVkaW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRBdWRp
b1RyYWNrLgorICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PEF1ZGlv
VHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJl
dHVybjsKKworICAgIHJlbW92ZUF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CkBAIC0yODM2LDEyICsyODk5LDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRSZW1vdmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0
aGUgSW5iYW5kVGV4dFRyYWNrIHdpdGggdGhlIEluYmFuZFRleHRUcmFja1ByaXZhdGUKLSAgICAv
LyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRUcmFjay4KKyAgICAvLyBwYXNzZWQgdG8gbWVk
aWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2suCiAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFjaz4gdGV4
dFRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrKj4ocHJwVHJhY2stPmNsaWVudCgp
KTsKICAgICBpZiAoIXRleHRUcmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVtb3ZlVHJh
Y2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgp
KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVv
VHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0aGUgVmlkZW9U
cmFjayB3aXRoIHRoZSBWaWRlb1RyYWNrUHJpdmF0ZQorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBs
YXllckRpZEFkZFZpZGVvVHJhY2suCisgICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gc3Rh
dGljX2Nhc3Q8VmlkZW9UcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CisgICAgaWYgKCF0cmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7
CiB9CiAKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQpAQCAtMjkyMCwxNCArMzAw
MCwyOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQo
KQogI2VuZGlmCiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVHJhY2soVGV4dFRyYWNr
KiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayhBdWRpb1RyYWNr
KiB0cmFjaykKK3sKKyAgICBhdWRpb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOworfQorCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAg
IHRleHRUcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKICAgICAKICAgICBjbG9zZUNhcHRpb25UcmFj
a3NDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVHJhY2soVGV4
dFRyYWNrKiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayhWaWRl
b1RyYWNrKiB0cmFjaykKK3sKKyAgICB2aWRlb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOworfQor
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJh
Y2spCit7CisgICAgbV9hdWRpb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBU
cmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKICAgICBUZXh0VHJhY2tDdWVMaXN0
KiBjdWVzID0gdHJhY2stPmN1ZXMoKTsKQEAgLTI5MzgsNyArMzAzMywyMSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZVRyYWNrKFRleHRUcmFjayogdHJhY2spCiAgICAgY2xvc2VDYXB0
aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFs
bEluYmFuZFRyYWNrcygpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2so
VmlkZW9UcmFjayogdHJhY2spCit7CisgICAgbV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsK
K30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxBdWRpb1RyYWNrcygpCit7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAodW5z
aWduZWQgbGVuZ3RoID0gbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAgIHJlbW92ZUF1
ZGlvVHJhY2sobV9hdWRpb1RyYWNrcy0+aXRlbShsZW5ndGggLSAxKSk7Cit9CisKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcygpCiB7CiAgICAgaWYgKCFt
X3RleHRUcmFja3MpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NDgsMTAgKzMwNTcsMTkgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQogICAgICAgICBUZXh0
VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOwogCiAgICAgICAgIGlmICh0cmFj
ay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgICAgICByZW1vdmVU
cmFjayh0cmFjayk7CisgICAgICAgICAgICByZW1vdmVUZXh0VHJhY2sodHJhY2spOwogICAgIH0K
IH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcygpCit7Cisg
ICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAodW5z
aWduZWQgbGVuZ3RoID0gbV92aWRlb1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAgIHJlbW92ZVZp
ZGVvVHJhY2sobV92aWRlb1RyYWNrcy0+aXRlbShsZW5ndGggLSAxKSk7Cit9CisKIFBhc3NSZWZQ
dHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5n
JiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0yOTc4LDcgKzMwOTYsNyBAQCBQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2lu
ZCwgY29uc3QgUwogICAgIC8vIGZpcnN0IGFwcGVuZCB0aGUgdHJhY2sgdG8gdGhlIHRleHQgdHJh
Y2sgbGlzdC4KIAogICAgIC8vIDYuIEFkZCB0aGUgbmV3IHRleHQgdHJhY2sgdG8gdGhlIG1lZGlh
IGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLgotICAgIGFkZFRyYWNrKHRleHRUcmFjay5n
ZXQoKSk7CisgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiAKICAgICAvLyAuLi4g
aXRzIHRleHQgdHJhY2sgcmVhZGluZXNzIHN0YXRlIHRvIHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBz
dGF0ZSAuLi4KICAgICB0ZXh0VHJhY2stPnNldFJlYWRpbmVzc1N0YXRlKFRleHRUcmFjazo6TG9h
ZGVkKTsKQEAgLTI5ODksNiArMzEwNywxNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgUwogICAg
IHJldHVybiB0ZXh0VHJhY2sucmVsZWFzZSgpOwogfQogCitBdWRpb1RyYWNrTGlzdCogSFRNTE1l
ZGlhRWxlbWVudDo6YXVkaW9UcmFja3MoKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1RyYWNr
TGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKworICAgIHJldHVybiBtX2F1ZGlvVHJhY2tzLmdldCgpOworfQorCiBUZXh0VHJhY2tM
aXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkgCiB7CiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMzAwMCw3ICsz
MTI5LDE4IEBAIFRleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKQog
ICAgIHJldHVybiBtX3RleHRUcmFja3MuZ2V0KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQorVmlkZW9UcmFj
a0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tz
ID0gVmlkZW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsKK30K
Kwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVu
dCogdHJhY2tFbGVtZW50KQogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUo
dHJhY2tUYWcpKTsKIApAQCAtMzAxNSw3ICszMTU1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRBZGRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiAgICAgaWYgKCF0
ZXh0VHJhY2spCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBhZGRUcmFjayh0ZXh0VHJhY2su
Z2V0KCkpOworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogICAgIAogICAgIC8v
IERvIG5vdCBzY2hlZHVsZSB0aGUgdHJhY2sgbG9hZGluZyB1bnRpbCBwYXJzaW5nIGZpbmlzaGVz
IHNvIHdlIGRvbid0IHN0YXJ0IGJlZm9yZSBhbGwgdHJhY2tzCiAgICAgLy8gaW4gdGhlIG1hcmt1
cCBoYXZlIGJlZW4gYWRkZWQuCkBAIC0zMDI2LDcgKzMxNjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAg
ICAgbWVkaWFDb250cm9scygpLT5jbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRy
YWNrRWxlbWVudCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKEhU
TUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICAgICBBU1NFUlQodHJhY2tFbGVtZW50
LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAKQEAgLTMwNTMsNyArMzE5Myw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVt
ZW50KQogICAgIC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdl
cyBhbmQgdGhlIG9sZCBwYXJlbnQgd2FzIGEgbWVkaWEgZWxlbWVudCwgCiAgICAgLy8gdGhlbiB0
aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSB0aGUgdHJhY2sgZWxlbWVudCdzIGNvcnJlc3BvbmRp
bmcgdGV4dCB0cmFjayBmcm9tIHRoZSAKICAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcy4KLSAgICByZW1vdmVUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIHJlbW92
ZVRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogCiAgICAgc2l6ZV90IGluZGV4ID0gbV90ZXh0
VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4uZmluZCh0ZXh0VHJhY2suZ2V0KCkpOwog
ICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKQEAgLTM5MzUsNyArNDA3NSw5IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBsYXllcihpbnQgZmxhZ3MpCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICByZW1vdmVBbGxJbmJhbmRUcmFja3MoKTsKKyAgICBy
ZW1vdmVBbGxBdWRpb1RyYWNrcygpOworICAgIHJlbW92ZUFsbEluYmFuZFRleHRUcmFja3MoKTsK
KyAgICByZW1vdmVBbGxWaWRlb1RyYWNrcygpOwogI2VuZGlmCiAKICNpZiAhRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCkBAIC00OTA2LDcgKzUwNDgsOSBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbgogICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2UsICJtZWRpYVNvdXJjZSIp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGluZm8uYWRkTWVtYmVyKG1f
YXVkaW9UcmFja3MsICJhdWRpb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdGV4dFRy
YWNrcywgInRleHRUcmFja3MiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3ZpZGVvVHJhY2tzLCAi
dmlkZW9UcmFja3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3NXaGVuUmVzb3Vy
Y2VTZWxlY3Rpb25CZWdhbiwgInRleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbiIp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VlVHJlZSwgImN1ZVRyZWUiKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX2N1cnJlbnRseUFjdGl2ZUN1ZXMsICJjdXJyZW50bHlBY3RpdmVDdWVzIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGNhMDE2YzA3ZDQ2ZmYyMTM3
ZmEwZTFhYTg2NzMyNDNiZDEyN2UxOGMuLmVhOTE4MmUzNmMyYTg1YWJjZTQxOGMzOWVkODc0NzQ4
NGJjZjQ2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zOSwx
MCArMzksMTIgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUg
IkF1ZGlvVHJhY2suaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5j
bHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVk
ZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDcgKzYwLDYgQEAgY2xhc3MgTWVkaWFDb250cm9sbGVy
OwogY2xhc3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwot
Y2xhc3MgVGV4dFRyYWNrTGlzdDsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCiBjbGFzcyBXaWRnZXQ7CkBAIC03MSw3ICs3MiwxMiBAQCBjbGFz
cyBNZWRpYUtleXM7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIEF1
ZGlvVHJhY2tMaXN0OworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGU7CiBjbGFzcyBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0
OworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CiAKIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRv
dWJsZSwgVGV4dFRyYWNrQ3VlKj4gQ3VlSW50ZXJ2YWxUcmVlOwogdHlwZWRlZiBDdWVJbnRlcnZh
bFRyZWU6OkludGVydmFsVHlwZSBDdWVJbnRlcnZhbDsKQEAgLTg0LDcgKzkwLDkgQEAgdHlwZWRl
ZiBWZWN0b3I8Q3VlSW50ZXJ2YWw+IEN1ZUxpc3Q7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1l
ZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAsIHByaXZhdGUgQXVkaW9UcmFja0NsaWVu
dAogICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKKyAgICAsIHByaXZhdGUgVmlkZW9UcmFj
a0NsaWVudAogI2VuZGlmCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAs
IHB1YmxpYyBQbGF0Zm9ybVRleHRUcmFja01lbnVDbGllbnQKQEAgLTIyNiwyMCArMjM0LDMzIEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIGFkZFRleHRUcmFjayhraW5kLCBsYWJlbCwgZW1wdHlTdHJpbmcoKSwgZWMpOyB9CiAgICAg
UGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwgZW1wdHlTdHJpbmco
KSwgZW1wdHlTdHJpbmcoKSwgZWMpOyB9CiAKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFj
a3MoKTsKICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tzKCk7CisgICAgVmlkZW9UcmFja0xp
c3QqIHZpZGVvVHJhY2tzKCk7CisKICAgICBDdWVMaXN0IGN1cnJlbnRseUFjdGl2ZUN1ZXMoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRseUFjdGl2ZUN1ZXM7IH0KIAotICAgIHZvaWQgYWRkVHJh
Y2soVGV4dFRyYWNrKik7Ci0gICAgdm9pZCByZW1vdmVUcmFjayhUZXh0VHJhY2sqKTsKLSAgICB2
b2lkIHJlbW92ZUFsbEluYmFuZFRyYWNrcygpOworICAgIHZvaWQgYWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrKik7CisgICAgdm9pZCBhZGRUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCBh
ZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlvVHJhY2soQXVk
aW9UcmFjayopOworICAgIHZvaWQgcmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZv
aWQgcmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CisgICAgdm9pZCByZW1vdmVBbGxBdWRp
b1RyYWNrcygpOworICAgIHZvaWQgcmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcygpOworICAgIHZv
aWQgcmVtb3ZlQWxsVmlkZW9UcmFja3MoKTsKICAgICB2b2lkIGNsb3NlQ2FwdGlvblRyYWNrc0No
YW5nZWQoKTsKICAgICB2b2lkIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CisgICAgdmly
dHVhbCB2b2lkIGRpZEFkZFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1v
dmVUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJE
aWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVm
UHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNr
KFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1Ry
YWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVO
VSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0
Zm9ybVRleHRUcmFjaz4pIE9WRVJSSURFOwpAQCAtMjc1LDYgKzI5Niw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRU
cmFja0Rpc3BsYXkoKTsKIAorICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKTsKKwogICAgIC8vIFRleHRU
cmFja0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChU
ZXh0VHJhY2sqKTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRy
YWNrKik7CkBAIC0yODQsNiArMzA4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4
dFRyYWNrQ3VlPik7CiAKKyAgICAvLyBWaWRlb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lk
IHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopOworCiAgICAgYm9vbCByZXF1
aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopOwogI2VuZGlmCkBAIC02
OTksNyArNzI2LDkgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2xhc3RUZXh0VHJhY2tVcGRhdGVU
aW1lOwogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBtX2Nh
cHRpb25EaXNwbGF5TW9kZTsKIAorICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRpb1Ry
YWNrczsKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOworICAgIFJlZlB0
cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPFRleHRU
cmFjaz4gPiBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbjsKIAogICAgIEN1
ZUludGVydmFsVHJlZSBtX2N1ZVRyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAppbmRleCA5MjA1MjBiZjAyNGUyYzE0YmZkNmFhYWRhZTc4MGY0ZDQ5NTcxZjBmLi5h
ZWI5YmE5ZDhmNGJjYTcwNGEyZjk3YTJmNzQzZDUyNGNjYzk4YjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTExNiw3ICsxMTYsOSBAQCB2b2lkIHdlYmtp
dENhbmNlbEtleVJlcXVlc3QoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZp
bmVkQXM9TnVsbFN0cgogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVf
VklERU9fVFJBQ0sKIFRleHRUcmFjayBhZGRUZXh0VHJhY2soaW4gRE9NU3RyaW5nIGtpbmQsIGlu
IFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYW5n
dWFnZSkKICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CityZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9UcmFja0xpc3QgYXVkaW9UcmFja3M7CiByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrTGlz
dCB0ZXh0VHJhY2tzOworcmVhZG9ubHkgYXR0cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVvVHJh
Y2tzOwogI2VuZGlmCiAKIFtSZWZsZWN0LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG1lZGlhR3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmNwcAppbmRleCBmYmJiM2U4NWUwZGE2NzgwMTFhZjg0ZWZjOWE1Nzk5YzYzZjQ2M2Q0Li4w
MTA1ODU1ZmNmMjU3MTk3NDljNTE2MDhiNDY0OTJhMjAxYWMxMzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTgwLDE0ICs4MCwxNCBAQCBOb2RlOjpJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxUcmFja0VsZW1lbnQ6Omluc2VydGVkSW50byhD
b250YWluZXJOb2RlKgogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9p
bnQpOwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpOwogICAg
IGlmIChpbnNlcnRpb25Qb2ludCA9PSBwYXJlbnQpCi0gICAgICAgIHBhcmVudC0+ZGlkQWRkVHJh
Y2sodGhpcyk7CisgICAgICAgIHBhcmVudC0+ZGlkQWRkVGV4dFRyYWNrKHRoaXMpOwogICAgIHJl
dHVybiBJbnNlcnRpb25Eb25lOwogfQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIGlmICghcGFyZW50Tm9k
ZSgpICYmIFdlYkNvcmU6OmlzTWVkaWFFbGVtZW50KGluc2VydGlvblBvaW50KSkKLSAgICAgICAg
dG9NZWRpYUVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQpLT5kaWRSZW1vdmVUcmFjayh0aGlzKTsKKyAg
ICAgICAgdG9NZWRpYUVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQpLT5kaWRSZW1vdmVUZXh0VHJhY2so
dGhpcyk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZh
OTQzNTNkM2UxZTUxOTk0NzA2ZWMxNGRiMTkyODA3ODk1NmU2OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlz
dC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmFsdGVy
bmF0aXZlS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRv
bWljU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJkZXNjcmlw
dGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
ZGVzY3JpcHRpb247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbktl
eXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBt
YWluLCAoIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
cmV0dXJuIG1haW47Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbkRl
c2NLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgbWFpbkRlc2MsICgibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBtYWluRGVzYzsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBB
dWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFuc2xhdGlvbiwgKCJ0cmFuc2xhdGlvbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gdHJhbnNsYXRpb247
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50
YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIGNvbW1lbnRhcnk7Cit9CisKK0F1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soQXVk
aW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFj
a1ByaXZhdGUpCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpBdWRpb1RyYWNrLCB0cmFja1By
aXZhdGUtPmxhYmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAsIG1faWQodHJh
Y2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9lbmFibGVkKHRyYWNrUHJpdmF0ZS0+ZW5hYmxlZCgp
KQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
K3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKKworICAgIHN3aXRjaCAobV9wcml2
YXRlLT5raW5kKCkpIHsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToK
KyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgorICAg
ICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbjoKKyAgICAgICAgc2V0S2lu
ZChBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
dWRpb1RyYWNrUHJpdmF0ZTo6TWFpbkRlc2M6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
bWFpbkRlc2NLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQ
cml2YXRlOjpUcmFuc2xhdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjp0cmFuc2xh
dGlvbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZh
dGU6OkNvbW1lbnRhcnk6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6Y29tbWVudGFyeUtl
eXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5v
bmU6CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK0F1ZGlvVHJhY2s6On5BdWRpb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZhdGUt
PnNldENsaWVudCgwKTsKK30KKworYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmRQ
cm90ZWN0ZWQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAodmFs
dWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh2YWx1ZSA9PSBkZXNjcmlwdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHZhbHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh2YWx1ZSA9PSBtYWluRGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHZhbHVlID09IHRyYW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0RW5h
YmxlZChjb25zdCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRo
aXMpOworfQorCitpbnQgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNT
RVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9UcmFja0luZGV4KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1Yjg0NWQzYTcyMDliNzA2Zjc0ZDBjYWNi
YzkxZjA4ODZkM2YzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEF1ZGlvVHJhY2tfaAorI2RlZmluZSBBdWRpb1RyYWNrX2gKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1Ry
YWNrOworCitjbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5B
dWRpb1RyYWNrQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVk
Q2hhbmdlZChBdWRpb1RyYWNrKikgPSAwOworfTsKKworY2xhc3MgQXVkaW9UcmFjayA6IHB1Ymxp
YyBUcmFja0Jhc2UsIHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gY3JlYXRlKEF1ZGlvVHJhY2tDbGllbnQq
IGNsaWVudCwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrKGNsaWVudCwgdHJhY2tQ
cml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKKworICAgIEF0b21p
Y1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBkZXNjcmlwdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5E
ZXNjS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zbGF0aW9u
S2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3
b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29y
ZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgYm9vbCBlbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoY29u
c3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0g
MDsgfQorICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9CisKKyAgICBpbnQgaW5iYW5kVHJhY2tJbmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAg
QXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZT4pOworCisgICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5kS2V5d29yZFByb3RlY3RlZChjb25z
dCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBBdG9taWNT
dHJpbmcgbV9pZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBt
X2NsaWVudDsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRiNjNjODVkZDk4MTg0ZTY2
NWYxZGI2NDI3MWNhNDRiZGU2ZTMxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9u
LAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBraW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJp
YnV0ZSBib29sZWFuIGVuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGJiY2U4MzVmZTMwZWJiMzZhM2E3MGVhZTdh
N2I2ZWYwMTQ3NTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvVHJhY2tM
aXN0OjpBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQp
Cit7Cit9CisKK0F1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QoKQoreworfQorCit2b2lk
IEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiBwcnBUcmFjaykK
K3sKKyAgICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIElu
c2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0g
dHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsKKyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5k
ZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNr
LT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50
KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7
Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdAoreworICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUoKSkgeworICAgICAg
ICBUcmFja0Jhc2UqIHRyYWNrID0gbV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAg
ICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2spOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gMDsKK30KKworQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAgICBUcmFja0Jhc2UqIHRyYWNrID0gaXRlbShpKTsK
KyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsK
KyAgICAgICAgQXVkaW9UcmFjayogYXVkaW9UcmFjayA9IGR5bmFtaWNfY2FzdDxBdWRpb1RyYWNr
Kj4odHJhY2spOworICAgICAgICBpZiAoYXVkaW9UcmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAg
ICAgIHJldHVybiBhdWRpb1RyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3Qg
QXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzA3MThhM2JiNDVmOGVhY2RhMzQxYTJmMTBjY2Q1NjdkYWM5MzA1MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAt
MCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3RfaAor
I2RlZmluZSBBdWRpb1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFz
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3du
ZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICB2b2lk
IGFwcGVuZChQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+KTsKKyAgICBBdWRpb1RyYWNrKiBpdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBBdWRpb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgQXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmMxY2UwOGMyNGM5NDA0MTk0MGQ2Mzc4OGIzMGI0ZTk0NmM2NWVjMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAg
IEluZGV4ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rp
b24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3Qg
eworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRp
b1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRU
cmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZl
bnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVu
dChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggM2MyNzRiMWUxNGI5Yjkw
NjFmZDg3ZjQyZjg2YWJhMjJlNWM4ODQxMC4uZDExNGZiNmIyMWU1OWVkZGYxZDRlZjQ5ZDc0Nzcz
MmZlNzM4NWU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAt
MTA4LDE0ICsxMDgsMTIgQEAgVGV4dFRyYWNrKiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21h
dGljSXRlbSgpCiB9CiAKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFu
Z3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKLSAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFj
a0Jhc2U6OlRleHRUcmFjaykKKyAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaywg
bGFiZWwsIGxhbmd1YWdlKQogICAgICwgbV9jdWVzKDApCisgICAgLCBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoY29udGV4dCkKICNpZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCiAgICAgLCBtX3Jl
Z2lvbnMoMCkKICNlbmRpZgotICAgICwgbV9tZWRpYUVsZW1lbnQoMCkKLSAgICAsIG1fbGFiZWwo
bGFiZWwpCi0gICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQogICAgICwgbV9tb2RlKGRpc2FibGVk
S2V5d29yZCgpLnN0cmluZygpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFj
a1R5cGUodHlwZSkKQEAgLTE0Myw2ICsxNDEsMzEgQEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkK
ICAgICBjbGVhckNsaWVudCgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JUZXh0VHJhY2s7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFjazo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2s6OmV2ZW50VGFy
Z2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRU
YXJnZXREYXRhKiBUZXh0VHJhY2s6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0
dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
S2V5d29yZFByb3RlY3RlZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAg
IHJldHVybiBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCh2YWx1ZSk7Cit9CisKIGJvb2wg
VGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29yZCgpKQpAQCAtMTU5LDE2ICsxODIs
MTMgQEAgYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXh0VHJhY2s6OnNldEtp
bmQoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQordm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdLaW5kKQogewotICAgIFN0cmluZyBvbGRLaW5kID0gbV9raW5k
OworICAgIFN0cmluZyBvbGRLaW5kID0ga2luZCgpOwogCi0gICAgaWYgKGlzVmFsaWRLaW5kS2V5
d29yZChraW5kKSkKLSAgICAgICAgbV9raW5kID0ga2luZDsKLSAgICBlbHNlCi0gICAgICAgIG1f
a2luZCA9IHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICBUcmFja0Jhc2U6OnNldEtpbmQobmV3S2lu
ZCk7CiAKLSAgICBpZiAobV9jbGllbnQgJiYgb2xkS2luZCAhPSBtX2tpbmQpCisgICAgaWYgKG1f
Y2xpZW50ICYmIG9sZEtpbmQgIT0ga2luZCgpKQogICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNr
S2luZENoYW5nZWQodGhpcyk7CiB9CiAKQEAgLTQxMSw3ICs0MzEsNyBAQCB2b2lkIFRleHRUcmFj
azo6aW52YWxpZGF0ZVRyYWNrSW5kZXgoKQogCiBib29sIFRleHRUcmFjazo6aXNSZW5kZXJlZCgp
CiB7Ci0gICAgaWYgKG1fa2luZCAhPSBjYXB0aW9uc0tleXdvcmQoKSAmJiBtX2tpbmQgIT0gc3Vi
dGl0bGVzS2V5d29yZCgpKQorICAgIGlmIChraW5kKCkgIT0gY2FwdGlvbnNLZXl3b3JkKCkgJiYg
a2luZCgpICE9IHN1YnRpdGxlc0tleXdvcmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKG1fbW9kZSAhPSBzaG93aW5nS2V5d29yZCgpKQpAQCAtNTAyLDE3ICs1MjIsMTcgQEAg
UGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gVGV4dFRyYWNrOjpwbGF0Zm9ybVRleHRUcmFj
aygpCiAgICAgaWYgKG1fcGxhdGZvcm1UZXh0VHJhY2spCiAgICAgICAgIHJldHVybiBtX3BsYXRm
b3JtVGV4dFRyYWNrOwogCi0gICAgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCBraW5kID0g
UGxhdGZvcm1UZXh0VHJhY2s6OkNhcHRpb247Ci0gICAgaWYgKG1fa2luZCA9PSBzdWJ0aXRsZXNL
ZXl3b3JkKCkpCi0gICAgICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6U3VidGl0bGU7Ci0g
ICAgZWxzZSBpZiAobV9raW5kID09IGNhcHRpb25zS2V5d29yZCgpKQotICAgICAgICBraW5kID0g
UGxhdGZvcm1UZXh0VHJhY2s6OkNhcHRpb247Ci0gICAgZWxzZSBpZiAobV9raW5kID09IGRlc2Ny
aXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpEZXNj
cmlwdGlvbjsKLSAgICBlbHNlIGlmIChtX2tpbmQgPT0gY2hhcHRlcnNLZXl3b3JkKCkpCi0gICAg
ICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2hhcHRlcjsKLSAgICBlbHNlIGlmIChtX2tp
bmQgPT0gbWV0YWRhdGFLZXl3b3JkKCkpCi0gICAgICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFj
azo6TWV0YURhdGE7CisgICAgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCBwbGF0Zm9ybUtp
bmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKKyAgICBpZiAoa2luZCgpID09IHN1YnRp
dGxlc0tleXdvcmQoKSkKKyAgICAgICAgcGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6
OlN1YnRpdGxlOworICAgIGVsc2UgaWYgKGtpbmQoKSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAg
ICAgICAgcGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkNhcHRpb247CisgICAgZWxz
ZSBpZiAoa2luZCgpID09IGRlc2NyaXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAgcGxhdGZvcm1L
aW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOworICAgIGVsc2UgaWYgKGtpbmQo
KSA9PSBjaGFwdGVyc0tleXdvcmQoKSkKKyAgICAgICAgcGxhdGZvcm1LaW5kID0gUGxhdGZvcm1U
ZXh0VHJhY2s6OkNoYXB0ZXI7CisgICAgZWxzZSBpZiAoa2luZCgpID09IG1ldGFkYXRhS2V5d29y
ZCgpKQorICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6TWV0YURhdGE7
CiAKICAgICBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tUeXBlIHR5cGUgPSBQbGF0Zm9ybVRleHRU
cmFjazo6T3V0T2ZCYW5kOwogICAgIGlmIChtX3RyYWNrVHlwZSA9PSBUcmFja0VsZW1lbnQpCkBA
IC01MjIsNyArNTQyLDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gVGV4dFRyYWNr
OjpwbGF0Zm9ybVRleHRUcmFjaygpCiAgICAgZWxzZSBpZiAobV90cmFja1R5cGUgPT0gSW5CYW5k
KQogICAgICAgICB0eXBlID0gUGxhdGZvcm1UZXh0VHJhY2s6OkluQmFuZDsKIAotICAgIG1fcGxh
dGZvcm1UZXh0VHJhY2sgPSBQbGF0Zm9ybVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIG1fbGFiZWws
IG1fbGFuZ3VhZ2UsIGtpbmQsIHR5cGUpOworICAgIG1fcGxhdGZvcm1UZXh0VHJhY2sgPSBQbGF0
Zm9ybVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGxhYmVsKCksIGxhbmd1YWdlKCksIHBsYXRmb3Jt
S2luZCwgdHlwZSk7CiAKICAgICByZXR1cm4gbV9wbGF0Zm9ybVRleHRUcmFjazsKIH0KQEAgLTUz
NCw3ICs1NTQsNyBAQCBib29sIFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25z
dAogICAgIC8vIGRpcmVjdG9ycyBjb21tZW50YXJ5IGlzIG5vdCAibWFpbiBwcm9ncmFtIiBiZWNh
dXNlIGl0IGlzIG5vdCBlc3NlbnRpYWwgZm9yIHRoZSBwcmVzZW50YXRpb24uIEhUTUw1IGRvZXNu
J3QgaGF2ZQogICAgIC8vIGEgd2F5IHRvIGV4cHJlc3MgdGhpcyBpbiBhIG1hY2hpbmUtcmVhYmxl
IGZvcm0sIGl0IGlzIHR5cGljYWxseSBkb25lIHdpdGggdGhlIHRyYWNrIGxhYmVsLCBzbyB3ZSBh
c3N1bWUgdGhhdCBjYXB0aW9uCiAgICAgLy8gdHJhY2tzIGFyZSBtYWluIGNvbnRlbnQgYW5kIGFs
bCBvdGhlciB0cmFjayB0eXBlcyBhcmUgbm90LgotICAgIHJldHVybiBtX2tpbmQgPT0gY2FwdGlv
bnNLZXl3b3JkKCk7CisgICAgcmV0dXJuIGtpbmQoKSA9PSBjYXB0aW9uc0tleXdvcmQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmgKaW5kZXggNTc2OTQ1YmJlNTIxY2Q2YTJmNmZmZmZkMzdlNTZhZDY2NzI2MGZmMy4uMzZkNWEw
NmJjZTdmODMzZDZlOWZhNmQ1YzhhNzI3YzI0YTBhZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5oCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJhY2tDdWU7CiBjbGFzcyBUZXh0VHJhY2tD
dWVMaXN0OwpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pID0gMDsK
IH07CiAKLWNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UKK2NsYXNzIFRleHRUcmFj
ayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBFdmVudFRhcmdldAogI2lmIFVTRShQTEFURk9S
TV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tDbGllbnQK
ICNlbmRpZgpAQCAtNzMsMzIgKzczLDI2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
VGV4dFRyYWNrKCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCiAgICAgc3RhdGljIFRleHRUcmFjayogY2FwdGlv
bk1lbnVPZmZJdGVtKCk7CiAgICAgc3RhdGljIFRleHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0
aWNJdGVtKCk7CiAKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBl
bGVtZW50KSB7IG1fbWVkaWFFbGVtZW50ID0gZWxlbWVudDsgfQotICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0KLSAgICBBdG9t
aWNTdHJpbmcga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIHZvaWQgc2V0S2lu
ZChjb25zdCBBdG9taWNTdHJpbmcmKTsKLQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHN1YnRpdGxlc0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0
aW9uc0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZXNjcmlwdGlv
bnNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2hhcHRlcnNLZXl3
b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWV0YWRhdGFLZXl3b3JkKCk7
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNv
bnN0IHsgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsgfQogICAgIHN0YXRpYyBib29sIGlzVmFs
aWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIEF0b21pY1N0cmluZyBs
YWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICB2b2lkIHNldExhYmVsKGNvbnN0
IEF0b21pY1N0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9Ci0KLSAgICBBdG9taWNT
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9Ci0gICAgdm9pZCBz
ZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFuZ3VhZ2UgPSBs
YW5ndWFnZTsgfQotCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlzYWJsZWRLZXl3
b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlkZGVuS2V5d29yZCgpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3b3JkKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKKwogICAg
IEF0b21pY1N0cmluZyBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldE1vZGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKQEAgLTEwOSw4ICsxMDMsOCBA
QCBwdWJsaWM6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcygpOwogICAgIFRleHRUcmFja0N1
ZUxpc3QqIGFjdGl2ZUN1ZXMoKSBjb25zdDsKIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1f
Y2xpZW50ID0gMDsgfQotICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9j
bGllbnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBPVkVSUklERSB7IG1fY2xp
ZW50ID0gMDsgfQorICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bV9jbGllbnQ7IH0KIAogICAgIHZvaWQgYWRkQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7
CiAgICAgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAt
MTU0LDE1ICsxNDgsMjUgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJh
Y2s+IHBsYXRmb3JtVGV4dFRyYWNrKCk7CiAjZW5kaWYKIAorICAgIHVzaW5nIFJlZkNvdW50ZWQ8
VHJhY2tCYXNlPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6ZGVyZWY7
CisKIHByb3RlY3RlZDoKICAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRl
eHRUcmFja0NsaWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCiAgICAg
VGV4dFRyYWNrUmVnaW9uTGlzdCogcmVnaW9uTGlzdCgpOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVjdGVkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNv
bnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0
RGF0YSgpOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKTsKKwogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBtX2N1ZXM7CiAKIHByaXZhdGU6
CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKICAgICBUZXh0VHJhY2tSZWdpb25M
aXN0KiBlbnN1cmVUZXh0VHJhY2tSZWdpb25MaXN0KCk7CkBAIC0xNzcsMTAgKzE4MSw4IEBAIHBy
aXZhdGU6CiAKICAgICBUZXh0VHJhY2tDdWVMaXN0KiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7
CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKLSAgICBBdG9taWNTdHJp
bmcgbV9raW5kOwotICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwotICAgIEF0b21pY1N0cmluZyBt
X2xhbmd1YWdlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAgQXRv
bWljU3RyaW5nIG1fbW9kZTsKICAgICBUZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OwogICAgIFRl
eHRUcmFja1R5cGUgbV90cmFja1R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcAppbmRleCAyOTNiM2QwMjcwMWIwOTU1ZDJmYThiNzY5NDgwZGFjYjAxZDdk
MGVjLi5jNmFkMmQxN2JlNjljZWQ4M2IwZDY0OTgxYjMzNGNlZDA3OWRjZmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKQEAgLTMwLDIzICszMCwxNiBA
QAogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
LSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNr
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvYWRh
YmxlVGV4dFRyYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRUcmFjay5oIgotI2luY2x1ZGUgIlRyYWNrRXZlbnQuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIFRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QoSFRNTE1lZGlh
RWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBt
X2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fb3duZXIob3duZXIpCi0gICAgLCBtX3BlbmRpbmdF
dmVudFRpbWVyKHRoaXMsICZUZXh0VHJhY2tMaXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZCkKLSAg
ICAsIG1fZGlzcGF0Y2hpbmdFdmVudHMoMCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNv
bnRleHQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiB9CiAKIFRleHRU
cmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KCkKQEAgLTU4LDggKzUxLDEyIEBAIHVuc2lnbmVkIFRl
eHRUcmFja0xpc3Q6Omxlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYWRkVHJhY2tUcmFja3Mu
c2l6ZSgpICsgbV9lbGVtZW50VHJhY2tzLnNpemUoKSArIG1faW5iYW5kVHJhY2tzLnNpemUoKTsK
IH0KIAotaW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXgoVGV4dFRyYWNrICp0ZXh0VHJh
Y2spCitpbnQgVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleChUcmFja0Jhc2UgKnRyYWNrKQog
eworICAgIGlmICh0cmFjay0+dHlwZSgpICE9IFRyYWNrQmFzZTo6VGV4dFRyYWNrKQorICAgICAg
ICByZXR1cm4gLTE7CisgICAgVGV4dFRyYWNrKiB0ZXh0VHJhY2sgPSBzdGF0aWNfY2FzdDxUZXh0
VHJhY2sqPih0cmFjayk7CisKICAgICBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0
VHJhY2s6OlRyYWNrRWxlbWVudCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExvYWRhYmxl
VGV4dFRyYWNrKj4odGV4dFRyYWNrKS0+dHJhY2tFbGVtZW50SW5kZXgoKTsKIApAQCAtOTgsNyAr
OTUsNyBAQCBpbnQgVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJl
ZFRyYWNrcyhUZXh0VHJhY2sgKnRleHRUcmFjaykKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbV9p
bmJhbmRUcmFja3NbaV0tPmlzUmVuZGVyZWQoKSkKKyAgICAgICAgaWYgKCFnZXRJbmJhbmRUcmFj
ayhpKS0+aXNSZW5kZXJlZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAg
ICAgICBpZiAobV9pbmJhbmRUcmFja3NbaV0gPT0gdGV4dFRyYWNrKQpAQCAtMTExLDcgKzEwOCw3
IEBAIGludCBUZXh0VHJhY2tMaXN0OjpnZXRUcmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJh
Y2tzKFRleHRUcmFjayAqdGV4dFRyYWNrKQogICAgIHJldHVybiAtMTsKIH0KIAotVGV4dFRyYWNr
KiBUZXh0VHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQorVGV4dFRyYWNrKiBUZXh0VHJh
Y2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIC8vIDQuOC4xMC4xMi4x
IFRleHQgdHJhY2sgbW9kZWwKICAgICAvLyBUaGUgdGV4dCB0cmFja3MgYXJlIHNvcnRlZCBhcyBm
b2xsb3dzOgpAQCAtMTI5LDM2ICsxMjYsNDUgQEAgVGV4dFRyYWNrKiBUZXh0VHJhY2tMaXN0Ojpp
dGVtKHVuc2lnbmVkIGluZGV4KQogCiAgICAgaW5kZXggLT0gbV9hZGRUcmFja1RyYWNrcy5zaXpl
KCk7CiAgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpKQotICAgICAgICByZXR1
cm4gbV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAgICByZXR1cm4gZ2V0SW5iYW5k
VHJhY2soaW5kZXgpOwogCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTGlzdDo6
aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK1RleHRU
cmFjayogVGV4dFRyYWNrTGlzdDo6Z2V0SW5iYW5kVHJhY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0
CiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7CisgICAgVHJh
Y2tCYXNlKiB0cmFjayA9IG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICBBU1NFUlQo
dHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlRleHRUcmFjayk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRleHRUcmFjayo+KHRyYWNrKTsKK30KIAordm9pZCBUZXh0VHJhY2tMaXN0OjppbnZh
bGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQoreworICAgIHNp
emVfdCBpbmRleCA9IG5vdEZvdW5kOwogICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsKLSAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNr
czsKKyAgICAgICAgaW5kZXggPSBtX2VsZW1lbnRUcmFja3MuZmluZCh0cmFjayk7CisgICAgICAg
IGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IGluZGV4OyBpIDwgbV9lbGVtZW50VHJhY2tzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgbV9lbGVtZW50VHJhY2tzLmF0KGluZGV4KS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgo
KTsKKyAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRy
YWNrKSB7CisgICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgaW5k
ZXggPSBtX2FkZFRyYWNrVHJhY2tzLmZpbmQodHJhY2spOworICAgICAgICAgICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWRkVHJhY2tUcmFja3Muc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBtX2FkZFRyYWNrVHJhY2tzW2ldLT5pbnZhbGlkYXRlVHJhY2tJbmRleCgpOwor
ICAgIH0gZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKSB7
CisgICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgaW5kZXggPSBt
X2luYmFuZFRyYWNrcy5maW5kKHRyYWNrKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBub3RG
b3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IG1faW5iYW5kVHJhY2tzW2ldLT5pbnZhbGlkYXRlVHJhY2tJbmRleCgpOwotICAgIH0gZWxzZSBp
ZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spIHsKLSAgICAgICAg
dHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2luYmFuZFRyYWNr
c1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKLSAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFj
a1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKLSAgICAgICAgdHJhY2tzID0gJm1faW5iYW5k
VHJhY2tzOwotICAgIGVsc2UKKyAgICAgICAgICAgIGdldEluYmFuZFRyYWNrKGkpLT5pbnZhbGlk
YXRlVHJhY2tJbmRleCgpOworICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLQotICAgIHNpemVfdCBpbmRleCA9IHRyYWNrcy0+ZmluZCh0cmFjayk7Ci0gICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0g
aW5kZXg7IGkgPCB0cmFja3MtPnNpemUoKTsgKytpKQotICAgICAgICB0cmFja3MtPmF0KGluZGV4
KS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKIH0KIAogdm9pZCBUZXh0VHJhY2tMaXN0OjphcHBl
bmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHBycFRyYWNrKQpAQCAtMTczLDU4ICsxNzksNjcgQEAg
dm9pZCBUZXh0VHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHBycFRyYWNr
KQogICAgICAgICBtX2VsZW1lbnRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CiAgICAgfSBl
bHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpIHsKICAgICAg
ICAgLy8gSW5zZXJ0IHRyYWNrcyBhZGRlZCBmb3IgaW4tYmFuZCBpbiB0aGUgbWVkaWEgZmlsZSBv
cmRlci4KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNr
Kj4odHJhY2suZ2V0KCkpLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgICAgIHNpemVfdCBpbmRl
eCA9IGR5bmFtaWNfY2FzdDxJbmJhbmRUZXh0VHJhY2sqPih0cmFjay5nZXQoKSktPmluYmFuZFRy
YWNrSW5kZXgoKTsKICAgICAgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7
CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgaW52YWxp
ZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2suZ2V0KCkpOwogCi0gICAgQVNTRVJUKCF0
cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1fb3duZXIp
OwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobV9vd25lcik7CisgICAgQVNTRVJUKCF0cmFj
ay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkpOwor
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQob3duZXIoKSk7CiAKICAgICBzY2hlZHVsZUFkZFRy
YWNrRXZlbnQodHJhY2sucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1v
dmUoVGV4dFRyYWNrKiB0cmFjaykKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRyYWNrQmFz
ZSogdHJhY2spCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7
Ci0KLSAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50
KQotICAgICAgICB0cmFja3MgPSAmbV9lbGVtZW50VHJhY2tzOwotICAgIGVsc2UgaWYgKHRyYWNr
LT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQotICAgICAgICB0cmFja3MgPSAm
bV9hZGRUcmFja1RyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgIHRyYWNrcyA9ICZtX2luYmFuZFRyYWNrczsKKyAgICBp
ZiAodHJhY2stPnR5cGUoKSAhPSBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAgICAgcmV0dXJu
OworICAgIFRleHRUcmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJh
Y2spOworCisgICAgc2l6ZV90IGluZGV4ID0gbm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+
dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCisgICAgICAgIG1fZWxlbWVu
dFRyYWNrcy5maW5kKHRleHRUcmFjayk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50cmFja1R5
cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQorICAgICAgICBtX2FkZFRyYWNrVHJhY2tzLmZp
bmQodGV4dFRyYWNrKTsKKyAgICBlbHNlIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRl
eHRUcmFjazo6SW5CYW5kKQorICAgICAgICBtX2luYmFuZFRyYWNrcy5maW5kKHRleHRUcmFjayk7
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIHNpemVfdCBp
bmRleCA9IHRyYWNrcy0+ZmluZCh0cmFjayk7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayh0
cmFjayk7CisgICAgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodGV4dFRyYWNrKTsK
IAotICAgIEFTU0VSVCh0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7Ci0gICAgdHJh
Y2stPnNldE1lZGlhRWxlbWVudCgwKTsKKyAgICBBU1NFUlQodHJhY2stPm1lZGlhRWxlbWVudCgp
ID09IG93bmVyKCkpOworICAgIHRleHRUcmFjay0+c2V0TWVkaWFFbGVtZW50KDApOwogCi0gICAg
dHJhY2tzLT5yZW1vdmUoaW5kZXgpOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09
IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQorICAgICAgICBtX2VsZW1lbnRUcmFja3MucmVtb3Zl
KGluZGV4KTsKKyAgICBlbHNlIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFj
azo6QWRkVHJhY2spCisgICAgICAgIG1fYWRkVHJhY2tUcmFja3MucmVtb3ZlKGluZGV4KTsKKyAg
ICBlbHNlIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQor
ICAgICAgICBtX2luYmFuZFRyYWNrcy5yZW1vdmUoaW5kZXgpOworICAgIGVsc2UKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wgVGV4dFRyYWNrTGlzdDo6Y29udGFpbnMo
VGV4dFRyYWNrKiB0cmFjaykgY29uc3QKK2Jvb2wgVGV4dFRyYWNrTGlzdDo6Y29udGFpbnMoVHJh
Y2tCYXNlKiB0cmFjaykgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFRleHRUcmFj
az4gPiogdHJhY2tzID0gMDsKLSAgICAKLSAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRl
eHRUcmFjazo6VHJhY2tFbGVtZW50KQotICAgICAgICB0cmFja3MgPSAmbV9lbGVtZW50VHJhY2tz
OwotICAgIGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNr
KQotICAgICAgICB0cmFja3MgPSAmbV9hZGRUcmFja1RyYWNrczsKLSAgICBlbHNlIGlmICh0cmFj
ay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgIHRyYWNrcyA9ICZt
X2luYmFuZFRyYWNrczsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIGlmICh0cmFjay0+dHlwZSgpICE9IFRyYWNrQmFzZTo6VGV4dFRyYWNrKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgVGV4dFRyYWNrKiB0ZXh0VHJhY2sgPSBzdGF0aWNfY2FzdDxUZXh0
VHJhY2sqPih0cmFjayk7CiAgICAgCi0gICAgcmV0dXJuIHRyYWNrcy0+ZmluZCh0cmFjaykgIT0g
bm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpU
cmFja0VsZW1lbnQpCisgICAgICAgIHJldHVybiBtX2VsZW1lbnRUcmFja3MuZmluZCh0cmFjaykg
IT0gbm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNr
OjpBZGRUcmFjaykKKyAgICAgICAgcmV0dXJuIG1fYWRkVHJhY2tUcmFja3MuZmluZCh0cmFjaykg
IT0gbm90Rm91bmQ7CisgICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNr
OjpJbkJhbmQpCisgICAgICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5maW5kKHRyYWNrKSAhPSBu
b3RGb3VuZDsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0CkBAIC0yMzIsNDEgKzI0Nyw0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlz
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JUZXh0VHJhY2tMaXN0OwogfQogCi12b2lkIFRleHRUcmFja0xpc3Q6OnNjaGVkdWxlQWRk
VHJhY2tFdmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCi17Ci0gICAgLy8gNC44LjEw
LjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKLSAgICAvLyA0LjguMTAuMTIu
NCBUZXh0IHRyYWNrIEFQSQotICAgIC8vIC4uLiB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFu
IGV2ZW50IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgCi0gICAgLy8gYnVi
YmxlIGFuZCBpcyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBp
bnRlcmZhY2UsIHdpdGggCi0gICAgLy8gdGhlIHRyYWNrIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0
byB0aGUgdGV4dCB0cmFjaydzIFRleHRUcmFjayBvYmplY3QsIGF0IAotICAgIC8vIHRoZSBtZWRp
YSBlbGVtZW50J3MgdGV4dFRyYWNrcyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4K
LQotICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7Ci0gICAgVHJhY2tFdmVu
dEluaXQgaW5pdGlhbGl6ZXI7Ci0gICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKLSAg
ICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7Ci0gICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJs
ZSA9IGZhbHNlOwotCi0gICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7Ci0gICAgaWYgKCFt
X3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcGVuZGluZ0V2ZW50VGlt
ZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIFRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRU
aW1lckZpcmVkKFRpbWVyPFRleHRUcmFja0xpc3Q+KikKLXsKLSAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50PiA+IHBlbmRpbmdFdmVudHM7Ci0KLSAgICArK21fZGlzcGF0Y2hpbmdFdmVudHM7Ci0gICAg
bV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7Ci0gICAgc2l6ZV90IGNvdW50ID0g
cGVuZGluZ0V2ZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IGNvdW50OyArK2luZGV4KQotICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5k
ZXhdLnJlbGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgLS1tX2Rpc3BhdGNoaW5nRXZl
bnRzOwotfQotCi1Ob2RlKiBUZXh0VHJhY2tMaXN0Ojpvd25lcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fb3duZXI7Ci19Ci0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaAppbmRleCAxZWUxNWM5M2M5ODc5ZTVjOWFhNWU1ZDRiNjkxZDQ3YzA1NDYyYTIx
Li5lZjUyNjdkNDE1OGQ4NTkwNjkzNTQ0MGY2YzgyZjA4OGU0ZWQzMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaApAQCAtMjgsMjEgKzI4LDEzIEBACiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCi0jaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xh
c3MgVGV4dFRyYWNrOwotY2xhc3MgVGV4dFRyYWNrTGlzdDsKIAotY2xhc3MgVGV4dFRyYWNrTGlz
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0xpc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXQg
eworY2xhc3MgVGV4dFRyYWNrTGlzdCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewpAQCAt
NTAsNTQgKzQyLDI3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgflRleHRUcmFja0xpc3QoKTsKIAot
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIGludCBnZXRUcmFja0luZGV4KFRleHRU
cmFjayopOwogICAgIGludCBnZXRUcmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKFRl
eHRUcmFjayopOwotICAgIGJvb2wgY29udGFpbnMoVGV4dFRyYWNrKikgY29uc3Q7CiAKLSAgICBU
ZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgZ2V0VHJhY2tJbmRleChUcmFj
a0Jhc2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlKikg
Y29uc3QgT1ZFUlJJREU7CisKKyAgICBUZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNv
bnN0OwogICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7Ci0gICAgdm9pZCBy
ZW1vdmUoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UqKSBP
VkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICB1c2luZyBSZWZDb3VudGVkPFRleHRU
cmFja0xpc3Q+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6ZGVy
ZWY7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0KLSAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGFkZHRyYWNrKTsKLQotICAgIHZvaWQgY2xlYXJPd25lcigpIHsg
bV9vd25lciA9IDA7IH0KLSAgICBOb2RlKiBvd25lcigpIGNvbnN0OwotCi0gICAgYm9vbCBpc0Zp
cmluZ0V2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9kaXNwYXRjaGluZ0V2ZW50czsgfQogCiBw
cml2YXRlOgogICAgIFRleHRUcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7IH0KLQotICAgIHZvaWQgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8
VGV4dFRyYWNrPik7Ci0gICAgdm9pZCBhc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJh
Y2tMaXN0PiopOwotCisgICAgVGV4dFRyYWNrKiBnZXRJbmJhbmRUcmFjayh1bnNpZ25lZCkgY29u
c3Q7CiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayhUZXh0VHJhY2sq
KTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKLSAgICBIVE1MTWVk
aWFFbGVtZW50KiBtX293bmVyOwotCi0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRp
bmdFdmVudHM7Ci0gICAgVGltZXI8VGV4dFRyYWNrTGlzdD4gbV9wZW5kaW5nRXZlbnRUaW1lcjsK
LQotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLSAgICBWZWN0b3I8UmVm
UHRyPFRleHRUcmFjaz4gPiBtX2FkZFRyYWNrVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrPiA+IG1fZWxlbWVudFRyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiBtX2luYmFuZFRyYWNrczsKLQotICAgIGludCBtX2Rpc3BhdGNoaW5nRXZlbnRzOworICAgIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6VGV4dFRyYWNrPiA+IG1fYWRkVHJhY2tUcmFja3M7CisgICAg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpUZXh0VHJhY2s+ID4gbV9lbGVtZW50VHJhY2tzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jh
c2UuY3BwCmluZGV4IDZhMmMzNTgyM2U2MTk2MmEzN2M5ZjhmNGNlZmQ5ODlkZGFiNTBkZmUuLjM3
NmQ4NTJlNDVmZjcwYWNlNTI2MGQyZDAxYjhjYTlkYjFlOTYyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTMwLDggKzMwLDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotVHJhY2tCYXNlOjpUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVHlwZSB0eXBlKQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRl
eHQpCitUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCisgICAgOiBtX21lZGlhRWxlbWVu
dCgwKQorICAgICwgbV9sYWJlbChsYWJlbCkKKyAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCiB7
CiAgICAgQVNTRVJUKHR5cGUgIT0gQmFzZVRyYWNrKTsKICAgICBtX3R5cGUgPSB0eXBlOwpAQCAt
NDEsMjQgKzQzLDE0IEBAIFRyYWNrQmFzZTo6flRyYWNrQmFzZSgpCiB7CiB9CiAKLWNvbnN0IEF0
b21pY1N0cmluZyYgVHJhY2tCYXNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3ZvaWQgVHJhY2tC
YXNlOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYga2luZCkKIHsKLSAgICByZXR1cm4gZXZl
bnROYW1lcygpLmludGVyZmFjZUZvclRleHRUcmFjazsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogVHJhY2tCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotfQorICAgIFN0cmluZyBvbGRLaW5kID0g
bV9raW5kOwogCi1FdmVudFRhcmdldERhdGEqIFRyYWNrQmFzZTo6ZXZlbnRUYXJnZXREYXRhKCkK
LXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEq
IFRyYWNrQmFzZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOworICAgIGlmIChpc1ZhbGlkS2luZEtleXdvcmRQcm90ZWN0ZWQoa2luZCkp
CisgICAgICAgIG1fa2luZCA9IGtpbmQ7CisgICAgZWxzZQorICAgICAgICBtX2tpbmQgPSBkZWZh
dWx0S2luZEtleXdvcmQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKaW5kZXggYzAwNjYwZjA1M2FkNjQ5NDE2NThmMjBkNzUw
MzBjYWJjOTMyNzk4OS4uNjVjNDUwMjhhZDRlZmE2OTgxMWJmZTFmN2FiNGUwMjJmODMxZDVlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0zMywzNSArMzMsNDIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIAotY2xhc3MgVHJhY2tCYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8VHJhY2tCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRyYWNrQmFzZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflRy
YWNrQmFzZSgpOwogCiAgICAgZW51bSBUeXBlIHsgQmFzZVRyYWNrLCBUZXh0VHJhY2ssIEF1ZGlv
VHJhY2ssIFZpZGVvVHJhY2sgfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Q7Ci0gICAgCi0gICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+
OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpkZXJlZjsKKyAgICB2b2lk
IHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7IG1fbWVkaWFFbGVt
ZW50ID0gZWxlbWVudDsgfQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIHsg
cmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CisKKyAgICBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21p
Y1N0cmluZyYpOworCisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9s
YWJlbDsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBt
X2xhYmVsID0gbGFiZWw7IH0KKworICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFuZ3VhZ2U7IH0KKyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0
cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJDbGllbnQoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBUcmFja0Jhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUpOwotICAgIAotICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgVHJhY2tCYXNlKFR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpOworCisgICAgdmly
dHVhbCBib29sIGlzVmFsaWRLaW5kS2V5d29yZFByb3RlY3RlZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5k
S2V5d29yZCgpIGNvbnN0ID0gMDsKKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVt
ZW50OwogCiBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOwotICAgIAotICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRh
cmdldERhdGE7CisgICAgQXRvbWljU3RyaW5nIG1fa2luZDsKKyAgICBBdG9taWNTdHJpbmcgbV9s
YWJlbDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEwZGM1Y2UzYzJlMzc5ZTZiYzEwM2FlNWYxZGIwYzNlM2FjZmE5MzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3Bw
CkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRyYWNrQmFz
ZS5oIgorI2luY2x1ZGUgIlRyYWNrRXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1RyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UoSFRNTE1lZGlhRWxlbWVudCogb3duZXIs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fb3duZXIob3duZXIpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHRoaXMs
ICZUcmFja0xpc3RCYXNlOjphc3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fZGlzcGF0Y2hp
bmdFdmVudHMoMCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKK30KKwor
VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UoKQoreworfQorCit1bnNpZ25lZCBUcmFja0xp
c3RCYXNlOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5zaXpl
KCk7Cit9CisKK2ludCBUcmFja0xpc3RCYXNlOjpnZXRUcmFja0luZGV4KFRyYWNrQmFzZSAqdHJh
Y2spCit7CisgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spOworfQorCit2b2lk
IFRyYWNrTGlzdEJhc2U6OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQoreworICAgIHNpemVfdCBp
bmRleCA9IG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spOworICAgIGlmIChpbmRleCA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHRyYWNrLT5tZWRpYUVsZW1lbnQo
KSA9PSBtX293bmVyKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KDApOworCisgICAgUmVm
UHRyPFRyYWNrQmFzZT4gdHJhY2tSZWYgPSBtX2luYmFuZFRyYWNrc1tpbmRleF07CisKKyAgICBt
X2luYmFuZFRyYWNrcy5yZW1vdmUoaW5kZXgpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50
KHRyYWNrUmVmLnJlbGVhc2UoKSk7Cit9CisKK2Jvb2wgVHJhY2tMaXN0QmFzZTo6Y29udGFpbnMo
VHJhY2tCYXNlKiB0cmFjaykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmJhbmRUcmFja3MuZmlu
ZCh0cmFjaykgIT0gbm90Rm91bmQ7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVB
ZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8VHJhY2tCYXNlPiB0cmFjaykKK3sKKyAgICAvLyA0Ljgu
MTAuNSBMb2FkaW5nIHRoZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIC4uLgorICAgIC8vIEZpcmUg
YSB0cnVzdGVkIGV2ZW50IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnVi
YmxlIGFuZCBpcworICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFj
a0V2ZW50IGludGVyZmFjZSwgd2l0aCB0aGUgdHJhY2sKKyAgICAvLyBhdHRyaWJ1dGUgaW5pdGlh
bGl6ZWQgdG8gdGhlIG5ldyBUIG9iamVjdCwgYXQgdGhpcworICAgIC8vIFRyYWNrTGlzdEJhc2Ug
b2JqZWN0LgorCisgICAgUmVmUHRyPFRyYWNrQmFzZT4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBU
cmFja0V2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0aWFsaXplci50cmFjayA9IHRyYWNr
UmVmOworICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5j
YW5jZWxhYmxlID0gZmFsc2U7CisKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFRyYWNrRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAg
ICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5n
RXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c2No
ZWR1bGVSZW1vdmVUcmFja0V2ZW50KFBhc3NSZWZQdHI8VHJhY2tCYXNlPiB0cmFjaykKK3sKKyAg
ICAvLyA0LjguMTAuNiBPZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291cmNlCisgICAgLy8gSWYg
YXQgYW55IHRpbWUgdGhlIHVzZXIgYWdlbnQgbGVhcm5zIHRoYXQgYW4gYXVkaW8gb3IgdmlkZW8g
dHJhY2sgaGFzCisgICAgLy8gZW5kZWQgYW5kIGFsbCBtZWRpYSBkYXRhIHJlbGF0aW5nIHRvIHRo
YXQgdHJhY2sgY29ycmVzcG9uZHMgdG8gcGFydHMgb2YKKyAgICAvLyB0aGUgbWVkaWEgdGltZWxp
bmUgdGhhdCBhcmUgYmVmb3JlIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgdGhlCisg
ICAgLy8gdXNlciBhZ2VudCBtYXkgcXVldWUgYSB0YXNrIHRvIHJlbW92ZSB0aGUgdHJhY2sgZnJv
bSB0aGUgYXVkaW9UcmFja3MKKyAgICAvLyBhdHRyaWJ1dGUncyBUcmFja0xpc3RCYXNlIG9iamVj
dCBvciB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlJ3MKKyAgICAvLyBUcmFja0xpc3RCYXNlIG9i
amVjdCBhcyBhcHByb3ByaWF0ZSBhbmQgdGhlbiBmaXJlIGEgdHJ1c3RlZCBldmVudAorICAgIC8v
IHdpdGggdGhlIG5hbWUgcmVtb3ZldHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBu
b3QgY2FuY2VsYWJsZSwKKyAgICAvLyBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVy
ZmFjZSwgd2l0aCB0aGUgdHJhY2sgYXR0cmlidXRlCisgICAgLy8gaW5pdGlhbGl6ZWQgdG8gdGhl
IFQgb3IgVCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZQorICAgIC8vIHRyYWNrLCBhdCB0aGUgbWVk
aWEgZWxlbWVudCdzIGFmb3JlbWVudGlvbmVkIFRyYWNrTGlzdEJhc2Ugb3IKKyAgICAvLyBUcmFj
a0xpc3RCYXNlIG9iamVjdC4KKworICAgIFJlZlB0cjxUcmFja0Jhc2U+IHRyYWNrUmVmID0gdHJh
Y2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJh
Y2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5p
dGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVu
ZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGluaXRp
YWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFRyYWNr
TGlzdEJhc2U6OnNjaGVkdWxlQ2hhbmdlRXZlbnQoKQoreworICAgIC8vIDQuOC4xMC42IE9mZnNl
dHMgaW50byB0aGUgbWVkaWEgcmVzb3VyY2UKKyAgICAvLyBXaGVuZXZlciBhbiBhdWRpbyB0cmFj
ayBpbiBhbiBUcmFja0xpc3RCYXNlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIHRoZQorICAgIC8v
IHVzZXIgYWdlbnQgbXVzdCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZCBjaGFuZ2UgYXQgdGhlCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QuCisKKyAgICBFdmVu
dEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAg
IGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5h
cHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIGluaXRpYWxpemVy
KSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1f
cGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFRyYWNrTGlzdEJh
c2U6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRyYWNrTGlzdEJhc2U+KikKK3sKKyAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisKKyAgICArK21fZGlzcGF0Y2hp
bmdFdmVudHM7CisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAg
c2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBl
bmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgLS1t
X2Rpc3BhdGNoaW5nRXZlbnRzOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0xpc3RCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmYTU2MmViNzRhZTQ1OTY3NjJhYjM1NTcz
M2NkZTQ2NTNkNWNiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tMaXN0QmFzZS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgVHJhY2tMaXN0QmFzZV9oCisjZGVmaW5lIFRyYWNrTGlzdEJhc2VfaAorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Citj
bGFzcyBUcmFja0Jhc2U7CisKK2NsYXNzIFRyYWNrTGlzdEJhc2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB+VHJh
Y2tMaXN0QmFzZSgpOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGludCBnZXRUcmFja0luZGV4KFRyYWNrQmFzZSopOworICAgIHZpcnR1YWwgYm9v
bCBjb250YWlucyhUcmFja0Jhc2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRy
YWNrQmFzZSopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB1c2luZyBSZWZDb3VudGVk
PFRyYWNrTGlzdEJhc2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNl
Pjo6ZGVyZWY7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHRyYWNrKTsKKyAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihyZW1vdmV0cmFjayk7CisKKyAgICB2b2lkIGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAw
OyB9CisgICAgSFRNTE1lZGlhRWxlbWVudCogb3duZXIoKSBjb25zdCB7IHJldHVybiBtX293bmVy
OyB9CisKKyAgICBib29sIGlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2Rpc3Bh
dGNoaW5nRXZlbnRzOyB9CisKKyAgICAvLyBOZWVkcyB0byBiZSBwdWJsaWMgc28gdHJhY2tzIGNh
biBjYWxsIGl0CisgICAgdm9pZCBzY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisKK3Byb3RlY3RlZDoK
KyAgICBUcmFja0xpc3RCYXNlKEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisKKyAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPFRyYWNr
QmFzZT4pOworICAgIHZvaWQgc2NoZWR1bGVSZW1vdmVUcmFja0V2ZW50KFBhc3NSZWZQdHI8VHJh
Y2tCYXNlPik7CisKKyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4gPiBtX2luYmFuZFRyYWNr
czsKKworcHJpdmF0ZToKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdl
dERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJn
ZXREYXRhOyB9CisKKyAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRyYWNrTGlz
dEJhc2U+Kik7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAg
SFRNTE1lZGlhRWxlbWVudCogbV9vd25lcjsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4g
bV9wZW5kaW5nRXZlbnRzOworICAgIFRpbWVyPFRyYWNrTGlzdEJhc2U+IG1fcGVuZGluZ0V2ZW50
VGltZXI7CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisKKyAgICBp
bnQgbV9kaXNwYXRjaGluZ0V2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmViNWNlMDI4YTMyZDIzODZmMGJjNjA4OWU4ODNmNjU2MWNiZWI0ZjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBA
IC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCisjaW5jbHVkZSAi
RXZlbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tM
aXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRl
b1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgi
Y2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0
dXJuIGNhcHRpb25zOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6Om1haW5L
ZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
Y2FwdGlvbnMsICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFj
azo6c2lnbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgcmV0dXJuIHNpZ247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFj
azo6c3VidGl0bGVzS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKworY29uc3QgQXRv
bWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFy
eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29t
bWVudGFyeTsKK30KKworVmlkZW9UcmFjazo6VmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50KiBj
bGllbnQsIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6
IFRyYWNrQmFzZShUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwg
dHJhY2tQcml2YXRlLT5sYW5ndWFnZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkp
CisgICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS0+c2VsZWN0ZWQoKSkKKyAgICAsIG1fY2xp
ZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2
YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7
CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtp
bmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKKyAgICAgICAgc2V0S2luZChWaWRl
b1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktl
eXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlNp
Z246CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1YnRpdGxlczoKKyAgICAgICAg
c2V0S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5k
KFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5n
KCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitWaWRlb1RyYWNrOjp+VmlkZW9U
cmFjaygpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgVmlkZW9U
cmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVjdGVkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpIGNvbnN0Cit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc2lnbktleXdvcmQoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFZp
ZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCit7CisgICAgaWYgKG1f
c2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VsZWN0ZWQg
PSBzZWxlY3RlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnZpZGVv
VHJhY2tTZWxlY3RlZENoYW5nZWQodGhpcyk7Cit9CisKK2ludCBWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2
YXRlLT52aWRlb1RyYWNrSW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNh
MzY0YTYwMDQxZGFkMzk4ODg5ZTgxZmYxNzYzNTc2ZGNlNmMwMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC0wLDAgKzEsOTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisjZGVmaW5lIFZpZGVv
VHJhY2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJhY2tDbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikgPSAwOworfTsKKwor
Y2xhc3MgVmlkZW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBWaWRlb1RyYWNrUHJp
dmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4g
Y3JlYXRlKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBW
aWRlb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZp
ZGVvVHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9
CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRl
ZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgYm9v
bCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGll
bnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBpbnQgaW5iYW5kVHJhY2tJbmRleCgpOwor
Citwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50KiwgUGFzc1JlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJpdmF0ZVRyYWNrKTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkS2luZEtleXdvcmRQcm90ZWN0ZWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgYm9vbCBtX3Nl
bGVjdGVkOworICAgIFZpZGVvVHJhY2tDbGllbnQqIG1fY2xpZW50OworCisgICAgUmVmUHRyPFZp
ZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NTI2ZDMzMDcxNDdmMzFkZDI0ZGEyZDg1ZGZiMjA4NzIwYzcyNzAzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlk
bApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9f
VFJBQ0ssCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJs
ZQorXSBpbnRlcmZhY2UgVmlkZW9UcmFjayB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBpZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGxhbmd1YWdlOworCisgICAgYXR0cmlidXRlIGJvb2xlYW4gc2VsZWN0ZWQ7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMDQ1MzgxNjVjNDAwOWNiZmMyMThkNjA4NjJiYzI3YTdkMjNjMzc2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitWaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoSFRN
TE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQoreworfQorCitWaWRlb1RyYWNrTGlz
dDo6flZpZGVvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBWaWRlb1RyYWNrTGlzdDo6YXBwZW5k
KFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gcHJwVHJhY2spCit7CisgICAgUmVmUHRyPFZpZGVvVHJh
Y2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRp
YSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4
KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NF
UlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3du
ZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsKKworICAgIHNjaGVk
dWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQorCitWaWRlb1RyYWNrKiBWaWRl
b1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXgg
PCBtX2luYmFuZFRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IG1f
aW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkg
PT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZp
ZGVvVHJhY2sqPih0cmFjayk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK1ZpZGVvVHJh
Y2sqIFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IGl0ZW0oaSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+
dHlwZSgpID09IFRyYWNrQmFzZTo6VmlkZW9UcmFjayk7CisgICAgICAgIFZpZGVvVHJhY2sqIHZp
ZGVvVHJhY2sgPSBkeW5hbWljX2Nhc3Q8VmlkZW9UcmFjayo+KHRyYWNrKTsKKyAgICAgICAgaWYg
KHZpZGVvVHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gdmlkZW9UcmFjazsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2xvbmcgVmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVk
SW5kZXgoKSBjb25zdAoreworICAgIC8vIDQuOC4xMC4xMC4xIEF1ZGlvVHJhY2tMaXN0IGFuZCBW
aWRlb1RyYWNrTGlzdCBvYmplY3RzCisgICAgLy8gVGhlIFZpZGVvVHJhY2tMaXN0LnNlbGVjdGVk
SW5kZXggYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUKKyAgICAvLyBjdXJy
ZW50bHkgc2VsZWN0ZWQgdHJhY2ssIGlmIGFueS4gSWYgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVj
dCBkb2VzIG5vdAorICAgIC8vIGN1cnJlbnRseSByZXByZXNlbnQgYW55IHRyYWNrcywgb3IgaWYg
bm9uZSBvZiB0aGUgdHJhY2tzIGFyZSBzZWxlY3RlZCwKKyAgICAvLyBpdCBtdXN0IGluc3RlYWQg
cmV0dXJuIOKIkjEuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIFRyYWNrQmFzZSogdHJhY2sgPSBpdGVtKGkpOworICAgICAgICBBU1NFUlQodHJh
Y2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgICAgICBpZiAoZHluYW1p
Y19jYXN0PFZpZGVvVHJhY2sqPihpdGVtKGkpKS0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
VmlkZW9UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yVmlkZW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTE1MTM0
YWMzOWNiNzkyMTAxMzUyNmFkNjQyN2Y5ZDA3NDc1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tMaXN0X2gKKyNkZWZpbmUgVmlkZW9U
cmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tM
aXN0QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisK
K2NsYXNzIFZpZGVvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7
CisgICAgfQorICAgIH5WaWRlb1RyYWNrTGlzdCgpOworCisgICAgdm9pZCBhcHBlbmQoUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrPik7CisgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25lZCkgY29uc3Q7
CisgICAgVmlkZW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0
OworICAgIGxvbmcgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmQzNmFmNjIwYjg0NDU1YWY3MzhkZWIxNDg0MDQxNjNmNGE1NTJiZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlND
dXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2Ug
VmlkZW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKKyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
VmlkZW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKwor
ICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xl
YW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2Vw
dGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BdWRpb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QXVkaW9UcmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODFmZWQzN2E0Yjk2NzFlMzFlMzgyNTM0
YjA0MzkwOTQzYWE4YjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVf
aAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQXVkaW9UcmFj
a1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+
IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQ
cml2YXRlKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQor
CisgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFs
dGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21t
ZW50YXJ5LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBO
b25lOyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVt
cHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2
YXRlKCkKKyAgICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2Vu
YWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQwMmUzYmNjNDViM2JiYjEyODcz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVv
VHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNr
UHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFZpZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlKCkpOworICAg
IH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRD
bGllbnQoVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVu
dDsgfQorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2Ns
aWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsg
bV9zZWxlY3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZl
LCBDYXB0aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07Cisg
ICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZp
cnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9Cisg
ICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0
b207IH0KKworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBt
X3NlbGVjdGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFj
a1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zZWxlY3RlZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197147</attachid>
            <date>2013-04-09 11:06:42 -0700</date>
            <delta_ts>2013-04-09 11:39:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130409120626.patch</filename>
            <type>text/plain</type>
            <size>139723</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE5NTFiMjQyMDQ1OWRh
MDViMTYwOTg1YzFkYzhmNzk1OTI0NGVlMy4uZTdlMjkxZjZmNGY0YzhkZmZjOTMwMGMzYTEwYTA5
MjYwODMyOWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzOSBAQAorMjAxMy0wNC0wOCAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CisKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp+QXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OnRyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbnZhbGlkYXRlVHJhY2tJ
bmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tDbGllbnQ6On5BdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKEF1ZGlv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9UcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
OjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tJbmRleCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChBdWRp
b1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6cmVtb3Zl
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoQXVk
aW9UcmFja0xpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQp
OgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6Cisg
ICAgICAgIChBdWRpb1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChB
dWRpb1RyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
TGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6
YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmludmFsaWRhdGVUcmFj
a0luZGV4KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0NsaWVudDo6flZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6Om1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRJZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldExhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xpc3QpOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChW
aWRlb1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6cmVt
b3ZlKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6
OmNvbnRhaW5zKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6CisgICAgICAgIChWaWRl
b1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlz
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Om93bmVy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQ6On5BdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChBdWRpb1RyYWNrUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjp+QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpraW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjppZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGU6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjphdWRpb1RyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6
OkF1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTA0LTA5ICBKZWZm
IFJvZ2VycyAgPGpyb2dlcnNAcmltLmNvbT4KIAogICAgICAgICBBZGQgd2VicCB0byBzdXBwb3J0
ZWQgaW1hZ2UgbWltZSB0eXBlcyBpZiBXRUJQIGZlYXR1cmUgaXMgZW5hYmxlZC91c2VkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDQ2MTgzMjVhM2NmYWNlYWFkNmVhZTc3MzBkNmVlNzA1YmI5MDg0
YTUuLjkwYzZjODY0Yzc3ZDNhZTliMTMyN2FhYzc0ZjY0NTE1ZDg3ZmY4M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NDksMTIgKzU0OSw2IEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAg
IGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwKICAgICBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5pZGwKIAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAotICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlz
dC5pZGwKLSAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCi0gICAgaHRtbC90cmFjay9U
cmFja0V2ZW50LmlkbAotCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAogICAgIGluc3BlY3Rvci9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmlkbApAQCAtMTU5MywxOSArMTU4Nyw2IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCiAKLSAgICBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5jcHAKLSAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAotICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKLSAgICBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZUxpc3QuY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAot
ICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAotICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAKLSAgICBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCi0gICAgaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCi0gICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCi0KICAgICBp
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCiAgICAgaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMTczOCw3ICsxNzE5LDYg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
ICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKICAgICBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCiAKQEAgLTI2OTYsNyArMjY3NiwzOSBAQCBpZiAoRU5BQkxFX1dF
QkdMKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKKyAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisg
ICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAorICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmlkbAorICAgICkKKwogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuY3BwCisgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAorICAg
ICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisgICAg
ICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKyAgICAgICAgaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWVMaXN0LmNwcAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
Y3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorICAgICAgICBodG1sL3RyYWNr
L1RyYWNrRXZlbnQuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKyAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorICAgICAgICBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKKyAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCisg
ICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5jcHAKKworICAgICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cAorCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNw
cAogICAgICkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggZGJlY2E0
NzFhN2M2MWM3NmNmNDIwMTUxMDg2ODU4NWY5NzcyNzI0Zi4uNzkwOWUxYWU1MWUzYTVjYmMxNDY5
Y2Y1NzE0YTViZjU0NTE5YjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNjUy
LDExICs2NTIsMTUgQEAgZW5hYmxlPyhHQU1FUEFEKSB7CiAKIGVuYWJsZT8oVklERU9fVFJBQ0sp
IHsKICAgSURMX0JJTkRJTkdTICs9IFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQ
V0QvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwg
XAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0
bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCiB9CiAKIGVu
YWJsZT8oTUVESUFfU09VUkNFKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBl
ZTFhZTU4ZWE0N2JmNmYxMTUyZDNiODVjNWZmMjQ2NzBkMzg1MDhiLi41MGU2YzlmOGNmZDkzNTYy
MWNiMTNlN2ZlYzE5ZmM5ZDEzMzY5YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTE1ODYsMTEgKzE1ODYsMTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAJJChXZWJDb3Jl
KS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRs
IFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorCSQoV2ViQ29y
ZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlk
bCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXApAQCAt
MjMyMCw2ICsyMzI0LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Jsb2JDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NE
QVRBU2VjdGlvbkN1c3RvbS5jcHAgXApAQCAtMjQ3NCw2ICsyNDgxLDkgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAgXApAQCAtMzc2Nyw2ICszNzc3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZVJhbmdlcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg1
LDYgKzM3OTksMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCisJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwIFwKQEAgLTU0OTMsNiArNTUxMyw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6ZUxvZ2dpbmcuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dyYXBoaWNzQ29u
dGV4dDNETkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJt
L2ZpbHRlcnMvTkVPTkhlbHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3Myw2ICs1Nzk0LDcgQEAg
d2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1cmVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGM4YTRhOTRl
NThmNzY1NDUyZGJlMDY3NjA0ODA1YTczZjYwZWU3MjguLjE5YmIxZmI3OWY2ZmI3ZGQ2OTQzOTkx
NzdjYmM2YjZkZmQ0MmNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2NSw5ICszOTY1LDEzIEBAIGVu
YWJsZT8oSkFWQVNDUklQVF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAg
ICAgSEVBREVSUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5o
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5oIFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50LmggXAorICAgICAg
ICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggXAogICAgICAg
ICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggXAogICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFjay5oIFwKQEAgLTM5NzcsMjAgKzM5ODEsMzEgQEAgZW5hYmxlPyhWSURFT19UUkFDSykg
ewogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svVHJhY2tCYXNlLmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCisgICAg
ICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrLmggXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogICAgICAg
ICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRU
b2tlbi5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBcCiAgICAgICAg
IGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1
ZGlvVHJhY2tQcml2YXRlLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQ2xpZW50LmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1By
aXZhdGUuaCBcCiAKICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RD
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1Ry
YWNrRXZlbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0
Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAg
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAg
ICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgXAogICAg
ICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cCBcCkBAIC00MDAwLDYgKzQwMTUsOSBAQCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNr
QmFzZS5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKKyAgICAgICAg
aHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5k
ZXggZjMyMmQ2NGNjN2QxN2E3ZmI3NTQwM2VhYmQyMTliZmQzZWVkOTE5Ny4uZWVlZWViYTEwYTMy
ZTY1YTI5OWMyY2MwY2M3ODJmNDA4Y2UzMTYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC00MzMsMTggKzQzMywyNCBAQCB3ZWJraXRn
dGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlmIEVOQUJMRV9WSURFTwogd2Via2l0Z3RrX2dk
b21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmggXAogCSQodG9wX2J1aWxk
ZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5o
IFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhU
TUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmggXAogCSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmggXAogCSQo
dG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suaCBcCisJJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrTGlzdC5oCiB3ZWJr
aXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJpdmF0ZS5oIFwKKwlEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXApAQCAtNDUzLDYgKzQ1OSw4IEBA
IHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2YXRlLmggXAorCURlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaAogZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkNWMxZTQyNzM5Y2U2N2Q1ZDUyN2QzMGEzMmQ5MTQwNTU5MzZhMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNs
dWRlICJKU0F1ZGlvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0
PEpTQXVkaW9UcmFjayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFjayog
YXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwo
KSk7XAorCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQg
aXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzQXVkaW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVy
dGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250
YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNr
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2ssICZzX2luZm8p
OworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNT
RVJUKGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFjaywgdmlzaXRv
cik7CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFj
ayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9v
dChhdWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ4Y2RlM2IxNzIwZThkNmNjZmJkNjE1YzI1ZTNlM2M1NTI0ZTNkZDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
aApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNBdWRpb1RyYWNrQ3VzdG9t
X2gKKyNkZWZpbmUgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJh
Y2suaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCogcm9vdChBdWRpb1RyYWNrKiB0
cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhh
cyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJv
b3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQsIHJl
dHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisKK30KKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2MTZiMGQ0YjhhYTkyOTQyMmYwNWFkNzU0
OTMyNDA5YWExNmFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVk
ZSAiSlNBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgor
I2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9U
cmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVk
aW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhl
IGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxl
IGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0
aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKGF1ZGlvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2
ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIGxp
c3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBp
dCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghYXVkaW9UcmFja0xpc3QtPmhhc0V2ZW50TGlz
dGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRp
YSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFp
bnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBK
U0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrTGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpz
Q2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhqc0F1ZGlvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrTGlzdCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1Ry
YWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpz
QXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qo
YXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICBhdWRpb1RyYWNrTGlzdC0+dmlzaXRKU0V2
ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzQ0MDY5ZDU0Zjk1NGE1YjMwMTBhNDU1Yjk2NmJlMGYzZWM5YWRh
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tD
dXN0b20uaCIKKworI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBqc1Zp
ZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
KyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KGpz
VmlkZW9UcmFjay0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSB0cmFjayBoYXMgbm8gY3VzdG9t
IHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFqc1ZpZGVvVHJhY2st
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit2
b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpT
VmlkZW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRl
b1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc1Zp
ZGVvVHJhY2ssIHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRp
Y19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJh
Y2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTM3NWU1NjdlNmJhMzhhM2ZkNmQyYzk5NWFmMGMxY2Rm
NmFiM2RhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpT
VmlkZW9UcmFja0N1c3RvbV9oCisjZGVmaW5lIEpTVmlkZW9UcmFja0N1c3RvbV9oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJv
b3QoVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50
J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBt
ZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOwor
fQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDk2NzEwZDYw
OTMxMGM3ODcyYTdkZjQzYjZjZGI0MzM1YjFkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVmlkZW9UcmFja0xpc3RP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJh
Y2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9UcmFja0xpc3QqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrTGlzdCA9
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlzdC0+aW1wbCgpKTsK
KworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFw
cGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2li
bGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmICh2aWRlb1RyYWNr
TGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0
b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIXZpZGVvVHJhY2tM
aXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1ZpZGVvVHJhY2tMaXN0LT5oYXNDdXN0b21Q
cm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNo
YWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigp
KSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlk
ZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRl
b1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFja0xpc3QsIHZpc2l0b3Ip
OworCisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8Vmlk
ZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7CisgICAgdmlkZW9UcmFj
a0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggODI3Nzdh
ODZlZWZkZmJlYmU2ODljOWI5MjMzNjg4Mjk1ODM5MWMzZS4uZWEwNzk5YmI1ZDBkNzM0YzAxZjQ2
OGE2M2UxZDViMjIwNWNmYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTQxLDYg
KzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF1ZGlvQ29udGV4dDsK
KyAgICBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93
OwpAQCAtNjcsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU291cmNl
QnVmZmVyTGlzdDsKICAgICBjbGFzcyBUZXh0VHJhY2s7CiAgICAgY2xhc3MgVGV4dFRyYWNrQ3Vl
OworICAgIGNsYXNzIFZpZGVvVHJhY2tMaXN0OwogICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBj
bGFzcyBXZWJLaXROYW1lZEZsb3c7CiAgICAgY2xhc3MgV29ya2VyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNDc2ZDFiNTNmMTQ1YmIyNzM0OTg5OTNmMzlm
MWQxY2JhYTYyMzU4My4uOGVhNWI3YjAzYWJhY2EwMmYyNWY0OGEyZWQ1NTk5MjYzZWE0NzBiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xLDYgKzEsNyBA
QAogbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKIAogQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdF
Ql9BVURJTworQXVkaW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIEJhdHRlcnlN
YW5hZ2VyIGNvbmRpdGlvbmFsPUJBVFRFUllfU1RBVFVTCiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IGNvbmRpdGlvbmFsPVdPUktFUlMKIERPTUFwcGxpY2F0aW9uQ2FjaGUKQEAgLTM3LDYgKzM4LDcg
QEAgU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFsPVNWRwogVGV4dFRyYWNrIGNvbmRpdGlv
bmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tDdWUgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFRl
eHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKK1ZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXROYW1lZEZsb3cKIFdlYlNvY2tldCBjb25kaXRpb25h
bD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDI2MGQwYTY3NTlmNTJhNjUzNmQwNjAzNDA3
MjJlZjVhOWE0ZDkzYWMuLjRhMmQyMzJkMzg5NWZiOTUyZTQyYTU0NmViMTU1Mjk1OTVmMTY1Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTgsNiArOTgs
OCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9U
cmFja0xpc3QuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCkBAIC0xMDUsNiArMTA3LDggQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5o
IgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVESU8pCkBAIC0yOTYsNyArMzAwLDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAg
ICAsIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UoZmFsc2UpCiAgICAgLCBtX2xhc3RUZXh0
VHJhY2tVcGRhdGVUaW1lKC0xKQogICAgICwgbV9jYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6QXV0b21hdGljKQorICAgICwgbV9hdWRpb1RyYWNrcygwKQogICAgICwg
bV90ZXh0VHJhY2tzKDApCisgICAgLCBtX3ZpZGVvVHJhY2tzKDApCiAgICAgLCBtX2lnbm9yZVRy
YWNrRGlzcGxheVVwZGF0ZSgwKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTMz
MCwxMiArMzM2LDIyIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBkb2N1bWVudCgpLT51
bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyAg
ICBpZiAobV9hdWRpb1RyYWNrcykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzLT5jbGVhck93bmVy
KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLT5sZW5n
dGgoKTsgKytpKQorICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGll
bnQoKTsKKyAgICB9CiAgICAgaWYgKG1fdGV4dFRyYWNrcykKICAgICAgICAgbV90ZXh0VHJhY2tz
LT5jbGVhck93bmVyKCk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAg
ICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwogICAgIH0KKyAgICBpZiAo
bV92aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhck93bmVyKCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKTsg
KytpKQorICAgICAgICAgICAgbV92aWRlb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQoKTsK
KyAgICB9CiAjZW5kaWYKIAogICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKQEAgLTEzNDksNiAr
MTM2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFu
Z2VkKFRleHRUcmFjayogdHJhY2spCiAgICAgfQogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBX
ZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBl
eGlzdAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRl
eHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OlRyYWNrRWxlbWVudCkgewpAQCAtMTM4OCw2ICsxNDA5LDExIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogfQogCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCit7
CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMgaGVyZSBv
bmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5k
Q2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRl
eHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2lu
Z0tleXdvcmQoKSkKQEAgLTI3OTIsNyArMjgxOCwxNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50
OjpwZXJjZW50TG9hZGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRyYWNrKFBhc3NSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNr
PiB0cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRB
dWRpb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyNCwxMCArMjg2MCwzNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJhY2soUGFzc1JlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPgogICAgIC8vIDkuIEZpcmUgYW4gZXZlbnQgd2l0aCB0
aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxh
YmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50CiAgICAgLy8gaW50ZXJmYWNlLCB3aXRo
IHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0
VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzCiAgICAgLy8gdGV4dFRyYWNrcyBh
dHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KLSAgICBhZGRUcmFjayh0ZXh0VHJhY2su
Z2V0KCkpOworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBy
cFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFZpZGVvVHJhY2s+
IHRyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKTsKKworICAgIGFkZFZp
ZGVvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9hdWRpb1RyYWNr
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVzZSB3
ZSBjcmVhdGVkIHRoZSBBdWRpb1RyYWNrIHdpdGggdGhlIEF1ZGlvVHJhY2tQcml2YXRlCisgICAg
Ly8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjay4KKyAgICBSZWZQdHI8QXVk
aW9UcmFjaz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4ocHJwVHJhY2stPmNsaWVu
dCgpKTsKKyAgICBpZiAoIXRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVBdWRp
b1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgzNiwxMiArMjg5OSwyOSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlz
IGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEluYmFuZFRleHRUcmFjayB3aXRo
IHRoZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlCi0gICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVy
RGlkQWRkVHJhY2suCisgICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNr
LgogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2s+IHRleHRUcmFjayA9IHN0YXRpY19jYXN0PElu
YmFuZFRleHRUcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CiAgICAgaWYgKCF0ZXh0VHJhY2sp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJlbW92ZVRyYWNrKHRleHRUcmFjay5nZXQoKSk7Cisg
ICAgcmVtb3ZlVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMg
c2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIFZpZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFj
a1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgor
ICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihw
cnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlbW92ZVZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogfQogCiAjaWYgVVNFKFBMQVRGT1JN
X1RFWFRfVFJBQ0tfTUVOVSkKQEAgLTI5MjAsMTQgKzMwMDAsMjkgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCkKICNlbmRpZgogfQogCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKFRleHRUcmFjayogdHJhY2spCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgYXVkaW9U
cmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0
cmFjayk7CiAgICAgCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRyYWNrKFRleHRUcmFjayogdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2spCit7CisgICAg
dmlkZW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIG1fYXVkaW9UcmFj
a3MtPnJlbW92ZSh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4
dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUg
c2NvcGUodGhpcyk7CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcyA9IHRyYWNrLT5jdWVzKCk7
CkBAIC0yOTM4LDcgKzMwMzMsMjEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUcmFj
ayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQorewor
ICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MoKQoreworICAgIGlmICghbV9hdWRpb1RyYWNrcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fYXVkaW9U
cmFja3MtPmxlbmd0aCgpKQorICAgICAgICByZW1vdmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3Mt
Pml0ZW0obGVuZ3RoIC0gMSkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFs
bEluYmFuZFRleHRUcmFja3MoKQogewogICAgIGlmICghbV90ZXh0VHJhY2tzKQogICAgICAgICBy
ZXR1cm47CkBAIC0yOTQ4LDEwICszMDU3LDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVt
b3ZlQWxsSW5iYW5kVHJhY2tzKCkKICAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4dFRy
YWNrcy0+aXRlbShpKTsKIAogICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRU
cmFjazo6SW5CYW5kKQotICAgICAgICAgICAgcmVtb3ZlVHJhY2sodHJhY2spOworICAgICAgICAg
ICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlQWxsVmlkZW9UcmFja3MoKQoreworICAgIGlmICghbV92aWRlb1RyYWNrcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fdmlkZW9U
cmFja3MtPmxlbmd0aCgpKQorICAgICAgICByZW1vdmVWaWRlb1RyYWNrKG1fdmlkZW9UcmFja3Mt
Pml0ZW0obGVuZ3RoIC0gMSkpOworfQorCiBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlh
RWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpA
QCAtMjk3OCw3ICszMDk2LDcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1l
bnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAgICAvLyBmaXJz
dCBhcHBlbmQgdGhlIHRyYWNrIHRvIHRoZSB0ZXh0IHRyYWNrIGxpc3QuCiAKICAgICAvLyA2LiBB
ZGQgdGhlIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0
IHRyYWNrcy4KLSAgICBhZGRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIGFkZFRleHRUcmFj
ayh0ZXh0VHJhY2suZ2V0KCkpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIHJlYWRpbmVz
cyBzdGF0ZSB0byB0aGUgdGV4dCB0cmFjayBsb2FkZWQgc3RhdGUgLi4uCiAgICAgdGV4dFRyYWNr
LT5zZXRSZWFkaW5lc3NTdGF0ZShUZXh0VHJhY2s6OkxvYWRlZCk7CkBAIC0yOTg5LDYgKzMxMDcs
MTcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFj
ayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVh
c2UoKTsKIH0KIAorQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tz
KCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQor
ICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV9h
dWRpb1RyYWNrcy5nZXQoKTsKK30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrcygpIAogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAgLTMwMDAsNyArMzEyOSwxOCBAQCBUZXh0VHJhY2tMaXN0
KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkKICAgICByZXR1cm4gbV90ZXh0VHJhY2tz
LmdldCgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRyYWNrKEhUTUxUcmFj
a0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKK1ZpZGVvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV92
aWRlb1RyYWNrcykKKyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVh
dGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisg
ICAgcmV0dXJuIG1fdmlkZW9UcmFja3MuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICAg
ICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAKQEAgLTMwMTUs
NyArMzE1NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNr
RWxlbWVudCogdHJhY2tFbGVtZW50KQogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgYWRkVHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0VHJh
Y2sodGV4dFRyYWNrLmdldCgpKTsKICAgICAKICAgICAvLyBEbyBub3Qgc2NoZWR1bGUgdGhlIHRy
YWNrIGxvYWRpbmcgdW50aWwgcGFyc2luZyBmaW5pc2hlcyBzbyB3ZSBkb24ndCBzdGFydCBiZWZv
cmUgYWxsIHRyYWNrcwogICAgIC8vIGluIHRoZSBtYXJrdXAgaGF2ZSBiZWVuIGFkZGVkLgpAQCAt
MzAyNiw3ICszMTY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUcmFjayhIVE1M
VHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+Y2xv
c2VkQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0Vs
ZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykp
OwogCkBAIC0zMDUzLDcgKzMxOTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92
ZVRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAvLyBXaGVuIGEgdHJh
Y2sgZWxlbWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQgcGFyZW50IHdh
cyBhIG1lZGlhIGVsZW1lbnQsIAogICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1v
dmUgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0aGUg
CiAgICAgLy8gbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCi0gICAgcmVtb3Zl
VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdl
dCgpKTsKIAogICAgIHNpemVfdCBpbmRleCA9IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVj
dGlvbkJlZ2FuLmZpbmQodGV4dFRyYWNrLmdldCgpKTsKICAgICBpZiAoaW5kZXggIT0gbm90Rm91
bmQpCkBAIC0zOTM1LDcgKzQwNzUsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVk
aWFQbGF5ZXIoaW50IGZsYWdzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0g
ICAgcmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CisgICAgcmVtb3ZlQWxsQXVkaW9UcmFja3MoKTsK
KyAgICByZW1vdmVBbGxJbmJhbmRUZXh0VHJhY2tzKCk7CisgICAgcmVtb3ZlQWxsVmlkZW9UcmFj
a3MoKTsKICNlbmRpZgogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAt
NDkwNiw3ICs1MDQ4LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1l
bWJlcihtX21lZGlhU291cmNlLCAibWVkaWFTb3VyY2UiKTsKICNlbmRpZgogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2F1ZGlvVHJhY2tzLCAiYXVkaW9UcmFj
a3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3MsICJ0ZXh0VHJhY2tzIik7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV92aWRlb1RyYWNrcywgInZpZGVvVHJhY2tzIik7CiAgICAgaW5m
by5hZGRNZW1iZXIobV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4sICJ0ZXh0
VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4iKTsKICAgICBpbmZvLmFkZE1lbWJlciht
X2N1ZVRyZWUsICJjdWVUcmVlIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdXJyZW50bHlBY3Rp
dmVDdWVzLCAiY3VycmVudGx5QWN0aXZlQ3VlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCBjYTAxNmMwN2Q0NmZmMjEzN2ZhMGUxYWE4NjczMjQzYmQxMjdlMThj
Li5lYTkxODJlMzZjMmE4NWFiY2U0MThjMzllZDg3NDc0ODRiY2Y0NjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzksMTAgKzM5LDEyIEBACiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCiAjaW5jbHVk
ZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIlBPREludGVydmFsVHJlZS5o
IgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2lu
Y2x1ZGUgIlZpZGVvVHJhY2suaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
OCw3ICs2MCw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7
CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKLWNsYXNzIFRleHRUcmFja0xpc3Q7CiBj
bGFzcyBUaW1lUmFuZ2VzOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogY2xh
c3MgV2lkZ2V0OwpAQCAtNzEsNyArNzIsMTIgQEAgY2xhc3MgTWVkaWFLZXlzOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKK2NsYXNzIFRl
eHRUcmFja0xpc3Q7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tQcml2
YXRlOwogCiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxkb3VibGUsIFRleHRUcmFja0N1ZSo+IEN1
ZUludGVydmFsVHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3Vl
SW50ZXJ2YWw7CkBAIC04NCw3ICs5MCw5IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBD
dWVMaXN0OwogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBw
dWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNs
aWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRy
YWNrQ2xpZW50CisgICAgLCBwcml2YXRlIFZpZGVvVHJhY2tDbGllbnQKICNlbmRpZgogI2lmIFVT
RShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJh
Y2tNZW51Q2xpZW50CkBAIC0yMjYsMjAgKzIzNCwzMyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwg
bGFiZWwsIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBh
ZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVjKTsg
fQogCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRyYWNrTGlz
dCogdGV4dFRyYWNrcygpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworCiAg
ICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
bHlBY3RpdmVDdWVzOyB9CiAKLSAgICB2b2lkIGFkZFRyYWNrKFRleHRUcmFjayopOwotICAgIHZv
aWQgcmVtb3ZlVHJhY2soVGV4dFRyYWNrKik7Ci0gICAgdm9pZCByZW1vdmVBbGxJbmJhbmRUcmFj
a3MoKTsKKyAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayopOworICAgIHZvaWQgYWRk
VGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRlb1RyYWNr
Kik7CisgICAgdm9pZCByZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKKyAgICB2b2lkIHJl
bW92ZVRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soVmlk
ZW9UcmFjayopOworICAgIHZvaWQgcmVtb3ZlQWxsQXVkaW9UcmFja3MoKTsKKyAgICB2b2lkIHJl
bW92ZUFsbEluYmFuZFRleHRUcmFja3MoKTsKKyAgICB2b2lkIHJlbW92ZUFsbFZpZGVvVHJhY2tz
KCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiAgICAgdm9pZCBub3Rp
ZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3Zl
VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUZXh0VHJh
Y2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVUZXh0VHJh
Y2soSFRNTFRyYWNrRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlk
QWRkVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4p
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJh
Y2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRS
ZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsK
IAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+KSBPVkVSUklE
RTsKQEAgLTI3NSw2ICsyOTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJh
Y2tEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAKKyAgICAv
LyBBdWRpb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZChBdWRpb1RyYWNrKik7CisKICAgICAvLyBUZXh0VHJhY2tDbGllbnQKICAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CiAgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopOwpAQCAtMjg0LDYgKzMwOCw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayos
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1Jl
bW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogCisgICAgLy8g
VmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFu
Z2VkKFZpZGVvVHJhY2sqKTsKKwogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24qKTsKICNlbmRpZgpAQCAtNjk5LDcgKzcyNiw5IEBAIHByaXZhdGU6
CiAgICAgZmxvYXQgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZTsKICAgICBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgbV9jYXB0aW9uRGlzcGxheU1vZGU7CiAKKyAg
ICBSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja3M7CiAgICAgUmVmUHRyPFRleHRU
cmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKKyAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlk
ZW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzV2hl
blJlc291cmNlU2VsZWN0aW9uQmVnYW47CiAKICAgICBDdWVJbnRlcnZhbFRyZWUgbV9jdWVUcmVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggOTIwNTIwYmYw
MjRlMmMxNGJmZDZhYWFkYWU3ODBmNGQ0OTU3MWYwZi4uYWViOWJhOWQ4ZjRiY2E3MDRhMmY5N2Ey
Zjc0M2Q1MjRjY2M5OGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aWRsCkBAIC0xMTYsNyArMTE2LDkgQEAgdm9pZCB3ZWJraXRDYW5jZWxLZXlSZXF1ZXN0KGluIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHIKICNpZiBkZWZp
bmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiBUZXh0VHJhY2sg
YWRkVGV4dFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBs
YWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpCiAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOworcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tz
OwogcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKK3JlYWRvbmx5
IGF0dHJpYnV0ZSBWaWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNrczsKICNlbmRpZgogCiBbUmVmbGVj
dCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYUdyb3Vw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggZmJiYjNlODVl
MGRhNjc4MDExYWY4NGVmYzlhNTc5OWM2M2Y0NjNkNC4uMDEwNTg1NWZjZjI1NzE5NzQ5YzUxNjA4
YjQ2NDkyYTIwMWFjMTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
Y3BwCkBAIC04MCwxNCArODAsMTQgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSoKICAgICBIVE1M
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBIVE1MTWVkaWFFbGVt
ZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQgPT0g
cGFyZW50KQotICAgICAgICBwYXJlbnQtPmRpZEFkZFRyYWNrKHRoaXMpOworICAgICAgICBwYXJl
bnQtPmRpZEFkZFRleHRUcmFjayh0aGlzKTsKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0K
IAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNl
cnRpb25Qb2ludCkKIHsKICAgICBpZiAoIXBhcmVudE5vZGUoKSAmJiBXZWJDb3JlOjppc01lZGlh
RWxlbWVudChpbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIHRvTWVkaWFFbGVtZW50KGluc2VydGlv
blBvaW50KS0+ZGlkUmVtb3ZlVHJhY2sodGhpcyk7CisgICAgICAgIHRvTWVkaWFFbGVtZW50KGlu
c2VydGlvblBvaW50KS0+ZGlkUmVtb3ZlVGV4dFRyYWNrKHRoaXMpOwogICAgIEhUTUxFbGVtZW50
OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2YTk0MzUzZDNlMWU1MTk5NDcwNmVjMTRk
YjE5MjgwNzg5NTZlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9U
cmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29u
c3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJh
bHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6
ZGVzY3JpcHRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgZGVzY3JpcHRpb24sICgiZGVzY3JpcHRpb24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBtYWluOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVz
YyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFp
bkRlc2M7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6dHJhbnNsYXRpb25L
ZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
dHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgcmV0dXJuIHRyYW5zbGF0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5
OworfQorCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwg
UGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tC
YXNlKFRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1By
aXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAs
IG1fZW5hYmxlZCh0cmFja1ByaXZhdGUtPmVuYWJsZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVu
dCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRD
bGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2Fz
ZSBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQoQXVkaW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1
ZGlvVHJhY2tQcml2YXRlOjpEZXNjcmlwdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNr
OjpkZXNjcmlwdGlvbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9U
cmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdv
cmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW5E
ZXNjOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6VHJhbnNsYXRpb246Cisg
ICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAg
ICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVt
cHR5U3RyaW5nKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitBdWRpb1RyYWNr
Ojp+QXVkaW9UcmFjaygpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jv
b2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVjdGVkKGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29y
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25L
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbkRlc2NL
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xh
dGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNv
bW1lbnRhcnlLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEF1ZGlvVHJhY2s6OnNldEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVk
KQoreworICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCh0aGlzKTsKK30KKworaW50IEF1ZGlvVHJh
Y2s6OmluYmFuZFRyYWNrSW5kZXgoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmF1ZGlvVHJhY2tJbmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNWI4NDVkM2E3MjA5YjcwNmY3NGQwY2FjYmM5MWYwODg2ZDNmMzUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNk
ZWZpbmUgQXVkaW9UcmFja19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFj
a0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0g
MDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVk
aW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1
ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXVkaW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2
aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJl
dHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1f
aWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVL
ZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3
b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCB7IHJldHVybiBlbXB0
eUF0b207IH0KKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGNvbnN0IGJvb2wpOworCisgICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgaW50IGluYmFu
ZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0Ns
aWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKKworICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkS2luZEtleXdvcmRQcm90ZWN0ZWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qg
T1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgYm9vbCBt
X2VuYWJsZWQ7CisgICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVkYjYzYzg1ZGQ5ODE4NGU2NjVmMWRiNjQyNzFjYTQ0YmRlNmUzMWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURF
T19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hh
YmxlCitdIGludGVyZmFjZSBBdWRpb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVkOwor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTRiYmNlODM1ZmUzMGViYjM2YTNhNzBlYWU3YTdiNmVmMDE0NzU3MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKwor
I2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitBdWRpb1RyYWNrTGlzdDo6QXVkaW9UcmFja0xpc3QoSFRN
TE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQoreworfQorCitBdWRpb1RyYWNrTGlz
dDo6fkF1ZGlvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5k
KFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJhY2spCit7CisgICAgUmVmUHRyPEF1ZGlvVHJh
Y2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRp
YSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4
KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NF
UlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3du
ZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsKKworICAgIHNjaGVk
dWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQorCitBdWRpb1RyYWNrKiBBdWRp
b1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXgg
PCBtX2luYmFuZFRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IG1f
aW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkg
PT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1
ZGlvVHJhY2sqPih0cmFjayk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlvVHJh
Y2sqIEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IGl0ZW0oaSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+
dHlwZSgpID09IFRyYWNrQmFzZTo6QXVkaW9UcmFjayk7CisgICAgICAgIEF1ZGlvVHJhY2sqIGF1
ZGlvVHJhY2sgPSBkeW5hbWljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKKyAgICAgICAgaWYg
KGF1ZGlvVHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gYXVkaW9UcmFjazsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFj
a0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yQXVkaW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNzE4YTNiYjQ1ZjhlYWNk
YTM0MWEyZjEwY2NkNTY3ZGFjOTMwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tMaXN0X2gKKyNkZWZpbmUgQXVkaW9UcmFja0xpc3Rf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1
ZGlvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogb3du
ZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQor
ICAgIH5BdWRpb1RyYWNrTGlzdCgpOworCisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRp
b1RyYWNrPik7CisgICAgQXVkaW9UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Cisg
ICAgQXVkaW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0Owor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxN
ZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMWNlMDhjMjRjOTQwNDE5NDBkNjM3
ODhiMzBiNGU5NDZjNjVlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sK
KyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBJbmRleGVkR2V0dGVyLAorICAgIEV2
ZW50VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFj
aGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2tMaXN0IHsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgQXVkaW9UcmFjayBpdGVtKGluIHVuc2lnbmVk
IGxvbmcgaW5kZXgpOworICAgIEF1ZGlvVHJhY2sgZ2V0VHJhY2tCeUlkKGluIERPTVN0cmluZyBp
ZCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsKKyAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNrOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ucmVtb3ZldHJhY2s7CisKKyAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAg
ICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwCmluZGV4IDNjMjc0YjFlMTRiOWI5MDYxZmQ4N2Y0MmY4NmFiYTIyZTVjODg0
MTAuLmQxMTRmYjZiMjFlNTllZGRmMWQ0ZWY0OWQ3NDc3MzJmZTczODVlOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTEwOCwxNCArMTA4LDEyIEBAIFRleHRU
cmFjayogVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKQogfQogCiBUZXh0VHJh
Y2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tD
bGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5
cGUpCi0gICAgOiBUcmFja0Jhc2UoY29udGV4dCwgVHJhY2tCYXNlOjpUZXh0VHJhY2spCisgICAg
OiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpUZXh0VHJhY2ssIGxhYmVsLCBsYW5ndWFnZSkKICAgICAs
IG1fY3VlcygwKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiAjaWYg
RU5BQkxFKFdFQlZUVF9SRUdJT05TKQogICAgICwgbV9yZWdpb25zKDApCiAjZW5kaWYKLSAgICAs
IG1fbWVkaWFFbGVtZW50KDApCi0gICAgLCBtX2xhYmVsKGxhYmVsKQotICAgICwgbV9sYW5ndWFn
ZShsYW5ndWFnZSkKICAgICAsIG1fbW9kZShkaXNhYmxlZEtleXdvcmQoKS5zdHJpbmcoKSkKICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fdHJhY2tUeXBlKHR5cGUpCkBAIC0xNDMsNiAr
MTQxLDMxIEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAgY2xlYXJDbGllbnQoKTsKIH0K
IAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmludGVyZmFjZU5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrOworfQorCitT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2s6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9CisKK0V2
ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrOjpl
bnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
Cit9CisKK2Jvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmRQcm90ZWN0ZWQoY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gVGV4dFRyYWNrOjppc1Zh
bGlkS2luZEtleXdvcmQodmFsdWUpOworfQorCiBib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRL
ZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IHN1
YnRpdGxlc0tleXdvcmQoKSkKQEAgLTE1OSwxNiArMTgyLDEzIEBAIGJvb2wgVGV4dFRyYWNrOjpp
c1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYg
a2luZCkKK3ZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3S2lu
ZCkKIHsKLSAgICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKKyAgICBTdHJpbmcgb2xkS2luZCA9
IGtpbmQoKTsKIAotICAgIGlmIChpc1ZhbGlkS2luZEtleXdvcmQoa2luZCkpCi0gICAgICAgIG1f
a2luZCA9IGtpbmQ7Ci0gICAgZWxzZQotICAgICAgICBtX2tpbmQgPSBzdWJ0aXRsZXNLZXl3b3Jk
KCk7CisgICAgVHJhY2tCYXNlOjpzZXRLaW5kKG5ld0tpbmQpOwogCi0gICAgaWYgKG1fY2xpZW50
ICYmIG9sZEtpbmQgIT0gbV9raW5kKQorICAgIGlmIChtX2NsaWVudCAmJiBvbGRLaW5kICE9IGtp
bmQoKSkKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRoaXMpOwogfQog
CkBAIC00MTEsNyArNDMxLDcgQEAgdm9pZCBUZXh0VHJhY2s6OmludmFsaWRhdGVUcmFja0luZGV4
KCkKIAogYm9vbCBUZXh0VHJhY2s6OmlzUmVuZGVyZWQoKQogewotICAgIGlmIChtX2tpbmQgIT0g
Y2FwdGlvbnNLZXl3b3JkKCkgJiYgbV9raW5kICE9IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICBp
ZiAoa2luZCgpICE9IGNhcHRpb25zS2V5d29yZCgpICYmIGtpbmQoKSAhPSBzdWJ0aXRsZXNLZXl3
b3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX21vZGUgIT0gc2hvd2lu
Z0tleXdvcmQoKSkKQEAgLTUwMiwxNyArNTIyLDE3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0
VHJhY2s+IFRleHRUcmFjazo6cGxhdGZvcm1UZXh0VHJhY2soKQogICAgIGlmIChtX3BsYXRmb3Jt
VGV4dFRyYWNrKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybVRleHRUcmFjazsKIAotICAgIFBs
YXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0
aW9uOwotICAgIGlmIChtX2tpbmQgPT0gc3VidGl0bGVzS2V5d29yZCgpKQotICAgICAgICBraW5k
ID0gUGxhdGZvcm1UZXh0VHJhY2s6OlN1YnRpdGxlOwotICAgIGVsc2UgaWYgKG1fa2luZCA9PSBj
YXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0
aW9uOwotICAgIGVsc2UgaWYgKG1fa2luZCA9PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCi0gICAg
ICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6RGVzY3JpcHRpb247Ci0gICAgZWxzZSBpZiAo
bV9raW5kID09IGNoYXB0ZXJzS2V5d29yZCgpKQotICAgICAgICBraW5kID0gUGxhdGZvcm1UZXh0
VHJhY2s6OkNoYXB0ZXI7Ci0gICAgZWxzZSBpZiAobV9raW5kID09IG1ldGFkYXRhS2V5d29yZCgp
KQotICAgICAgICBraW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOworICAgIFBsYXRm
b3JtVGV4dFRyYWNrOjpUcmFja0tpbmQgcGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6
OkNhcHRpb247CisgICAgaWYgKGtpbmQoKSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAg
IHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRsZTsKKyAgICBlbHNlIGlm
IChraW5kKCkgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgICAgIHBsYXRmb3JtS2luZCA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9uOworICAgIGVsc2UgaWYgKGtpbmQoKSA9PSBkZXNjcmlw
dGlvbnNLZXl3b3JkKCkpCisgICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNr
OjpEZXNjcmlwdGlvbjsKKyAgICBlbHNlIGlmIChraW5kKCkgPT0gY2hhcHRlcnNLZXl3b3JkKCkp
CisgICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDaGFwdGVyOworICAg
IGVsc2UgaWYgKGtpbmQoKSA9PSBtZXRhZGF0YUtleXdvcmQoKSkKKyAgICAgICAgcGxhdGZvcm1L
aW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOwogCiAgICAgUGxhdGZvcm1UZXh0VHJh
Y2s6OlRyYWNrVHlwZSB0eXBlID0gUGxhdGZvcm1UZXh0VHJhY2s6Ok91dE9mQmFuZDsKICAgICBp
ZiAobV90cmFja1R5cGUgPT0gVHJhY2tFbGVtZW50KQpAQCAtNTIyLDcgKzU0Miw3IEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IFRleHRUcmFjazo6cGxhdGZvcm1UZXh0VHJhY2soKQog
ICAgIGVsc2UgaWYgKG1fdHJhY2tUeXBlID09IEluQmFuZCkKICAgICAgICAgdHlwZSA9IFBsYXRm
b3JtVGV4dFRyYWNrOjpJbkJhbmQ7CiAKLSAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZv
cm1UZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBtX2xhYmVsLCBtX2xhbmd1YWdlLCBraW5kLCB0eXBl
KTsKKyAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZSh0
aGlzLCBsYWJlbCgpLCBsYW5ndWFnZSgpLCBwbGF0Zm9ybUtpbmQsIHR5cGUpOwogCiAgICAgcmV0
dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CiB9CkBAIC01MzQsNyArNTU0LDcgQEAgYm9vbCBUZXh0
VHJhY2s6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKICAgICAvLyBkaXJlY3RvcnMgY29t
bWVudGFyeSBpcyBub3QgIm1haW4gcHJvZ3JhbSIgYmVjYXVzZSBpdCBpcyBub3QgZXNzZW50aWFs
IGZvciB0aGUgcHJlc2VudGF0aW9uLiBIVE1MNSBkb2Vzbid0IGhhdmUKICAgICAvLyBhIHdheSB0
byBleHByZXNzIHRoaXMgaW4gYSBtYWNoaW5lLXJlYWJsZSBmb3JtLCBpdCBpcyB0eXBpY2FsbHkg
ZG9uZSB3aXRoIHRoZSB0cmFjayBsYWJlbCwgc28gd2UgYXNzdW1lIHRoYXQgY2FwdGlvbgogICAg
IC8vIHRyYWNrcyBhcmUgbWFpbiBjb250ZW50IGFuZCBhbGwgb3RoZXIgdHJhY2sgdHlwZXMgYXJl
IG5vdC4KLSAgICByZXR1cm4gbV9raW5kID09IGNhcHRpb25zS2V5d29yZCgpOworICAgIHJldHVy
biBraW5kKCkgPT0gY2FwdGlvbnNLZXl3b3JkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDU3Njk0NWJiZTUyMWNk
NmEyZjZmZmZmZDM3ZTU2YWQ2NjcyNjBmZjMuLjM2ZDVhMDZiY2U3ZjgzM2Q2ZTlmYTZkNWM4YTcy
N2MyNGEwYWYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApAQCAtNDEs
NyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxNZWRpYUVsZW1l
bnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dFRyYWNrOwogY2xh
c3MgVGV4dFRyYWNrQ3VlOwogY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNr
KiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSA9IDA7CiB9OwogCi1jbGFzcyBUZXh0VHJhY2sg
OiBwdWJsaWMgVHJhY2tCYXNlCitjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBw
dWJsaWMgRXZlbnRUYXJnZXQKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAg
ICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50CiAjZW5kaWYKQEAgLTczLDMyICs3Mywy
NiBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFjaygpOwogCisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dDsKKwogICAgIHN0YXRpYyBUZXh0VHJhY2sqIGNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAgIHN0
YXRpYyBUZXh0VHJhY2sqIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwogCi0gICAgdm9pZCBz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVu
dCA9IGVsZW1lbnQ7IH0KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJl
dHVybiBtX21lZGlhRWxlbWVudDsgfQotCi0gICAgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KLSAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJik7
Ci0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25zS2V5d29yZCgpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGNoYXB0ZXJzS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIG1ldGFkYXRhS2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCB7IHJldHVybiBzdWJ0aXRsZXNL
ZXl3b3JkKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAKLSAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBt
X2xhYmVsOyB9Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKSB7
IG1fbGFiZWwgPSBsYWJlbDsgfQotCi0gICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWlj
U3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KLQogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGRpc2FibGVkS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGhpZGRlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaG93aW5nS2V5d29yZCgpOwogCisgICAgdmlydHVhbCB2b2lkIHNldEtpbmQoY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CisKICAgICBBdG9taWNTdHJpbmcgbW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2RlKGNvbnN0IEF0
b21pY1N0cmluZyYpOwogCkBAIC0xMDksOCArMTAzLDggQEAgcHVibGljOgogICAgIFRleHRUcmFj
a0N1ZUxpc3QqIGN1ZXMoKTsKICAgICBUZXh0VHJhY2tDdWVMaXN0KiBhY3RpdmVDdWVzKCkgY29u
c3Q7CiAKLSAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KLSAgICBUZXh0
VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBUZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICB2b2lk
IGFkZEN1ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogICAgIHZvaWQgcmVtb3ZlQ3VlKFRl
eHRUcmFja0N1ZSosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTE1NCwxNSArMTQ4LDI1IEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBwbGF0Zm9ybVRleHRUcmFjaygp
OwogI2VuZGlmCiAKKyAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OnJlZjsKKyAgICB1
c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OmRlcmVmOworCiBwcm90ZWN0ZWQ6CiAgICAgVGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwogI2lmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQogICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIHJl
Z2lvbkxpc3QoKTsKICNlbmRpZgogCisgICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5kS2V5d29y
ZFByb3RlY3RlZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKICAgICBSZWZQdHI8VGV4
dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIHsgZGVyZWYoKTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VC
VlRUX1JFR0lPTlMpCiAgICAgVGV4dFRyYWNrUmVnaW9uTGlzdCogZW5zdXJlVGV4dFRyYWNrUmVn
aW9uTGlzdCgpOwpAQCAtMTc3LDEwICsxODEsOCBAQCBwcml2YXRlOgogCiAgICAgVGV4dFRyYWNr
Q3VlTGlzdCogZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOwogCi0gICAgSFRNTE1lZGlhRWxlbWVu
dCogbV9tZWRpYUVsZW1lbnQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fa2luZDsKLSAgICBBdG9taWNT
dHJpbmcgbV9sYWJlbDsKLSAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIEF0b21pY1N0cmluZyBtX21vZGU7CiAgICAg
VGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBUZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKaW5kZXggMjkz
YjNkMDI3MDFiMDk1NWQyZmE4Yjc2OTQ4MGRhY2IwMWQ3ZDBlYy4uYzZhZDJkMTdiZTY5Y2VkODNi
MGQ2NDk4MWIzMzRjZWQwNzlkY2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuY3BwCkBAIC0zMCwyMyArMzAsMTYgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKLSNp
bmNsdWRlICJUcmFja0V2ZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBUZXh0
VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX293bmVyKG93bmVyKQotICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVGV4dFRy
YWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCi0gICAgLCBtX2Rpc3BhdGNoaW5nRXZlbnRz
KDApCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQogewotICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwogfQogCiBUZXh0VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlz
dCgpCkBAIC01OCw4ICs1MSwxMiBAQCB1bnNpZ25lZCBUZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBj
b25zdAogICAgIHJldHVybiBtX2FkZFRyYWNrVHJhY2tzLnNpemUoKSArIG1fZWxlbWVudFRyYWNr
cy5zaXplKCkgKyBtX2luYmFuZFRyYWNrcy5zaXplKCk7CiB9CiAKLWludCBUZXh0VHJhY2tMaXN0
OjpnZXRUcmFja0luZGV4KFRleHRUcmFjayAqdGV4dFRyYWNrKQoraW50IFRleHRUcmFja0xpc3Q6
OmdldFRyYWNrSW5kZXgoVHJhY2tCYXNlICp0cmFjaykKIHsKKyAgICBpZiAodHJhY2stPnR5cGUo
KSAhPSBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFRleHRU
cmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOworCiAgICAg
aWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxMb2FkYWJsZVRleHRUcmFjayo+KHRleHRUcmFjaykt
PnRyYWNrRWxlbWVudEluZGV4KCk7CiAKQEAgLTk4LDcgKzk1LDcgQEAgaW50IFRleHRUcmFja0xp
c3Q6OmdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRyYWNrICp0ZXh0
VHJhY2spCiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luYmFuZFRyYWNr
cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1faW5iYW5kVHJhY2tzW2ldLT5pc1JlbmRl
cmVkKCkpCisgICAgICAgIGlmICghZ2V0SW5iYW5kVHJhY2soaSktPmlzUmVuZGVyZWQoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKG1faW5iYW5kVHJhY2tz
W2ldID09IHRleHRUcmFjaykKQEAgLTExMSw3ICsxMDgsNyBAQCBpbnQgVGV4dFRyYWNrTGlzdDo6
Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sgKnRleHRUcmFj
aykKICAgICByZXR1cm4gLTE7CiB9CiAKLVRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkKK1RleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKIHsKICAgICAvLyA0LjguMTAuMTIuMSBUZXh0IHRyYWNrIG1vZGVsCiAgICAg
Ly8gVGhlIHRleHQgdHJhY2tzIGFyZSBzb3J0ZWQgYXMgZm9sbG93czoKQEAgLTEyOSwzNiArMTI2
LDQ1IEBAIFRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIAog
ICAgIGluZGV4IC09IG1fYWRkVHJhY2tUcmFja3Muc2l6ZSgpOwogICAgIGlmIChpbmRleCA8IG1f
aW5iYW5kVHJhY2tzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzW2luZGV4
XS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGdldEluYmFuZFRyYWNrKGluZGV4KTsKIAogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIFRleHRUcmFja0xpc3Q6OmludmFsaWRhdGVUcmFja0luZGV4ZXNB
ZnRlclRyYWNrKFRleHRUcmFjayogdHJhY2spCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6Omdl
dEluYmFuZFRyYWNrKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIFZlY3RvcjxSZWZQdHI8
VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOworICAgIFRyYWNrQmFzZSogdHJhY2sgPSBtX2luYmFu
ZFRyYWNrc1tpbmRleF0uZ2V0KCk7CisgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tC
YXNlOjpUZXh0VHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFj
ayk7Cit9CiAKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVy
VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBub3RGb3VuZDsK
ICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7
Ci0gICAgICAgIHRyYWNrcyA9ICZtX2VsZW1lbnRUcmFja3M7CisgICAgICAgIGluZGV4ID0gbV9l
bGVtZW50VHJhY2tzLmZpbmQodHJhY2spOworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8
IG1fZWxlbWVudFRyYWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fZWxlbWVudFRyYWNr
cy5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0luZGV4KCk7CisgICAgfSBlbHNlIGlmICh0cmFj
ay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykgeworICAgICAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGluZGV4ID0gbV9hZGRUcmFja1RyYWNrcy5m
aW5kKHRyYWNrKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2FkZFRyYWNrVHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbV9hZGRUcmFja1Ry
YWNrc1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKKyAgICB9IGVsc2UgaWYgKHRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkgeworICAgICAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpIHsKKyAgICAgICAgICAgIGluZGV4ID0gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFj
ayk7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJh
bmRUcmFja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2luYmFuZFRyYWNrc1tpXS0+aW52
YWxpZGF0ZVRyYWNrSW5kZXgoKTsKLSAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9
PSBUZXh0VHJhY2s6OkFkZFRyYWNrKSB7Ci0gICAgICAgIHRyYWNrcyA9ICZtX2FkZFRyYWNrVHJh
Y2tzOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgbV9pbmJhbmRUcmFja3NbaV0tPmludmFsaWRhdGVUcmFja0lu
ZGV4KCk7Ci0gICAgfSBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJ
bkJhbmQpCi0gICAgICAgIHRyYWNrcyA9ICZtX2luYmFuZFRyYWNrczsKLSAgICBlbHNlCisgICAg
ICAgICAgICBnZXRJbmJhbmRUcmFjayhpKS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKKyAgICB9
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBzaXplX3QgaW5kZXgg
PSB0cmFja3MtPmZpbmQodHJhY2spOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdHJhY2tzLT5zaXpl
KCk7ICsraSkKLSAgICAgICAgdHJhY2tzLT5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0luZGV4
KCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBwcnBUcmFjaykKQEAgLTE3Myw1OCArMTc5LDY3IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBw
ZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBwcnBUcmFjaykKICAgICAgICAgbV9lbGVtZW50VHJh
Y2tzLmluc2VydChpbmRleCwgdHJhY2spOwogICAgIH0gZWxzZSBpZiAodHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6SW5CYW5kKSB7CiAgICAgICAgIC8vIEluc2VydCB0cmFja3MgYWRk
ZWQgZm9yIGluLWJhbmQgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCi0gICAgICAgIHNpemVfdCBp
bmRleCA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFjayo+KHRyYWNrLmdldCgpKS0+aW5iYW5k
VHJhY2tJbmRleCgpOworICAgICAgICBzaXplX3QgaW5kZXggPSBkeW5hbWljX2Nhc3Q8SW5iYW5k
VGV4dFRyYWNrKj4odHJhY2suZ2V0KCkpLT5pbmJhbmRUcmFja0luZGV4KCk7CiAgICAgICAgIG1f
aW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOwogICAgIH0gZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRy
YWNrKHRyYWNrLmdldCgpKTsKIAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8
IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtX293bmVyKTsKLSAgICB0cmFjay0+c2V0TWVkaWFF
bGVtZW50KG1fb3duZXIpOworICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRy
YWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVt
ZW50KG93bmVyKCkpOwogCiAgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRleHRUcmFjayogdHJhY2spCit2
b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQogewotICAgIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOwotCi0gICAgaWYgKHRyYWNrLT50cmFj
a1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKLSAgICAgICAgdHJhY2tzID0gJm1f
ZWxlbWVudFRyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRy
YWNrOjpBZGRUcmFjaykKLSAgICAgICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0gICAg
ZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAg
ICB0cmFja3MgPSAmbV9pbmJhbmRUcmFja3M7CisgICAgaWYgKHRyYWNrLT50eXBlKCkgIT0gVHJh
Y2tCYXNlOjpUZXh0VHJhY2spCisgICAgICAgIHJldHVybjsKKyAgICBUZXh0VHJhY2sqIHRleHRU
cmFjayA9IHN0YXRpY19jYXN0PFRleHRUcmFjayo+KHRyYWNrKTsKKworICAgIHNpemVfdCBpbmRl
eCA9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFj
azo6VHJhY2tFbGVtZW50KQorICAgICAgICBtX2VsZW1lbnRUcmFja3MuZmluZCh0ZXh0VHJhY2sp
OworICAgIGVsc2UgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRU
cmFjaykKKyAgICAgICAgbV9hZGRUcmFja1RyYWNrcy5maW5kKHRleHRUcmFjayk7CisgICAgZWxz
ZSBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAg
ICAgbV9pbmJhbmRUcmFja3MuZmluZCh0ZXh0VHJhY2spOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJh
Y2spOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2spOworICAgIGludmFsaWRhdGVU
cmFja0luZGV4ZXNBZnRlclRyYWNrKHRleHRUcmFjayk7CiAKLSAgICBBU1NFUlQodHJhY2stPm1l
ZGlhRWxlbWVudCgpID09IG1fb3duZXIpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7
CisgICAgQVNTRVJUKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0ZXh0
VHJhY2stPnNldE1lZGlhRWxlbWVudCgwKTsKIAotICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsK
KyAgICBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVu
dCkKKyAgICAgICAgbV9lbGVtZW50VHJhY2tzLnJlbW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAo
dGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQorICAgICAgICBt
X2FkZFRyYWNrVHJhY2tzLnJlbW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgbV9pbmJhbmRUcmFja3Mu
cmVtb3ZlKGluZGV4KTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi1ib29sIFRleHRUcmFja0xpc3Q6OmNvbnRhaW5zKFRleHRUcmFjayogdHJhY2spIGNvbnN0
Citib29sIFRleHRUcmFja0xpc3Q6OmNvbnRhaW5zKFRyYWNrQmFzZSogdHJhY2spIGNvbnN0CiB7
Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7Ci0gICAg
Ci0gICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkK
LSAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+
dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKLSAgICAgICAgdHJhY2tzID0gJm1f
YWRkVHJhY2tUcmFja3M7Ci0gICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRU
cmFjazo6SW5CYW5kKQotICAgICAgICB0cmFja3MgPSAmbV9pbmJhbmRUcmFja3M7Ci0gICAgZWxz
ZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAodHJhY2stPnR5cGUoKSAh
PSBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFRleHRU
cmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOwogICAgIAot
ICAgIHJldHVybiB0cmFja3MtPmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0
VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQorICAgICAgICBy
ZXR1cm4gbV9lbGVtZW50VHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0
ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCisgICAgICAgIHJl
dHVybiBtX2FkZFRyYWNrVHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0
ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICByZXR1
cm4gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFjaykgIT0gbm90Rm91bmQ7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdApAQCAtMjMyLDQxICsyNDcsNCBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25z
dAogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrTGlzdDsKIH0K
IAotdm9pZCBUZXh0VHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IHRyYWNrKQotewotICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1i
YW5kIHRleHQgdHJhY2tzCi0gICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKLSAgICAv
LyAuLi4gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFk
ZHRyYWNrLCB0aGF0IGRvZXMgbm90IAotICAgIC8vIGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFi
bGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRoIAotICAgIC8v
IHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0
VHJhY2sgb2JqZWN0LCBhdCAKLSAgICAvLyB0aGUgbWVkaWEgZWxlbWVudCdzIHRleHRUcmFja3Mg
YXR0cmlidXRlJ3MgVGV4dFRyYWNrTGlzdCBvYmplY3QuCi0KLSAgICBSZWZQdHI8VGV4dFRyYWNr
PiB0cmFja1JlZiA9IHRyYWNrOwotICAgIFRyYWNrRXZlbnRJbml0IGluaXRpYWxpemVyOwotICAg
IGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7Ci0gICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9
IGZhbHNlOwotICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKLQotICAgIG1fcGVu
ZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFj
a0V2ZW50LCBpbml0aWFsaXplcikpOwotICAgIGlmICghbV9wZW5kaW5nRXZlbnRUaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0K
LQotdm9pZCBUZXh0VHJhY2tMaXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJh
Y2tMaXN0PiopCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOwot
Ci0gICAgKyttX2Rpc3BhdGNoaW5nRXZlbnRzOwotICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBl
bmRpbmdFdmVudHMpOwotICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOwot
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIElHTk9SRV9F
WENFUFRJT04pOwotICAgIC0tbV9kaXNwYXRjaGluZ0V2ZW50czsKLX0KLQotTm9kZSogVGV4dFRy
YWNrTGlzdDo6b3duZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX293bmVyOwotfQotCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggMWVlMTVj
OTNjOTg3OWU1YzlhYTVlNWQ0YjY5MWQ0N2MwNTQ2MmEyMS4uZWY1MjY3ZDQxNThkODU5MDY5MzU0
NDBmNmM4MmYwODhlNGVkMzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmgKQEAgLTI4LDIxICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
Ci0jaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0j
aW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFRleHRUcmFjazsKLWNsYXNzIFRl
eHRUcmFja0xpc3Q7CiAKLWNsYXNzIFRleHRUcmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZXh0VHJhY2tMaXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRleHRUcmFja0xpc3Qg
OiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dFRyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKQEAgLTUwLDU0ICs0MiwyNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIH5UZXh0VHJhY2tMaXN0KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKLSAgICBpbnQgZ2V0VHJhY2tJbmRleChUZXh0VHJhY2sqKTsKICAgICBpbnQgZ2V0VHJh
Y2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sqKTsKLSAgICBib29sIGNv
bnRhaW5zKFRleHRUcmFjayopIGNvbnN0OwogCi0gICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVk
IGluZGV4KTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IGdldFRyYWNrSW5kZXgoVHJhY2tCYXNlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSopIGNvbnN0IE9WRVJSSURFOworCisgICAg
VGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPFRleHRUcmFjaz4pOwotICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFjayopOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNlKikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVu
dFRhcmdldAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6cmVmOwotICAgIHVz
aW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD46OmRlcmVmOwotICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dDsgfQotCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0
cmFjayk7Ci0KLSAgICB2b2lkIGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAwOyB9Ci0gICAgTm9k
ZSogb3duZXIoKSBjb25zdDsKLQotICAgIGJvb2wgaXNGaXJpbmdFdmVudExpc3RlbmVycygpIHsg
cmV0dXJuIG1fZGlzcGF0Y2hpbmdFdmVudHM7IH0KIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tM
aXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICAv
LyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZl
bnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0KLSAgICB2b2lk
IHNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwotICAgIHZvaWQg
YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKTsKLQorICAgIFRleHRU
cmFjayogZ2V0SW5iYW5kVHJhY2sodW5zaWduZWQpIGNvbnN0OwogICAgIHZvaWQgaW52YWxpZGF0
ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKik7CiAKLSAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9vd25lcjsKLQot
ICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOwotICAgIFRpbWVyPFRl
eHRUcmFja0xpc3Q+IG1fcGVuZGluZ0V2ZW50VGltZXI7Ci0KLSAgICBFdmVudFRhcmdldERhdGEg
bV9ldmVudFRhcmdldERhdGE7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV9hZGRU
cmFja1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX2VsZW1lbnRUcmFj
a3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV9pbmJhbmRUcmFja3M7Ci0KLSAg
ICBpbnQgbV9kaXNwYXRjaGluZ0V2ZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlRl
eHRUcmFjaz4gPiBtX2FkZFRyYWNrVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
VGV4dFRyYWNrPiA+IG1fZWxlbWVudFRyYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRleCA2YTJjMzU4MjNl
NjE5NjJhMzdjOWY4ZjRjZWZkOTg5ZGRhYjUwZGZlLi4zNzZkODUyZTQ1ZmY3MGFjZTUyNjBkMmQw
MWI4Y2E5ZGIxZTk2MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3Bw
CkBAIC0zMCw4ICszMCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRyYWNrQmFzZTo6
VHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgdHlwZSkKLSAg
ICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorVHJhY2tCYXNlOjpUcmFja0Jh
c2UoVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhbmd1YWdlKQorICAgIDogbV9tZWRpYUVsZW1lbnQoMCkKKyAgICAsIG1fbGFiZWwobGFi
ZWwpCisgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQogewogICAgIEFTU0VSVCh0eXBlICE9IEJh
c2VUcmFjayk7CiAgICAgbV90eXBlID0gdHlwZTsKQEAgLTQxLDI0ICs0MywxNCBAQCBUcmFja0Jh
c2U6On5UcmFja0Jhc2UoKQogewogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRyYWNrQmFzZTo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit2b2lkIFRyYWNrQmFzZTo6c2V0S2luZChjb25zdCBBdG9t
aWNTdHJpbmcmIGtpbmQpCiB7Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JU
ZXh0VHJhY2s7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRyYWNrQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLX0KKyAgICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKIAotRXZlbnRUYXJnZXRE
YXRhKiBUcmFja0Jhc2U6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50
VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBUcmFja0Jhc2U6OmVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBpZiAo
aXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVjdGVkKGtpbmQpKQorICAgICAgICBtX2tpbmQgPSBraW5k
OworICAgIGVsc2UKKyAgICAgICAgbV9raW5kID0gZGVmYXVsdEtpbmRLZXl3b3JkKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5o
CmluZGV4IGMwMDY2MGYwNTNhZDY0OTQxNjU4ZjIwZDc1MDMwY2FiYzkzMjc5ODkuLjY1YzQ1MDI4
YWQ0ZWZhNjk4MTFiZmUxZjdhYjRlMDIyZjgzMWQ1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0Jhc2UuaApAQCAtMzMsMzUgKzMzLDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CiAKLWNsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldCB7CitjbGFzcyBUcmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFj
a0Jhc2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja0Jhc2UoKTsKIAogICAgIGVudW0g
VHlwZSB7IEJhc2VUcmFjaywgVGV4dFRyYWNrLCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrIH07CiAg
ICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwotICAg
IAotICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNv
dW50ZWQ8VHJhY2tCYXNlPjo6ZGVyZWY7CisgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7IH0KKyAgICBI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsg
fQorCisgICAgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIEF0b21p
Y1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICB2b2lkIHNldExh
YmVsKGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CisKKyAg
ICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9Cisg
ICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFu
Z3VhZ2UgPSBsYW5ndWFnZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAw
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBU
eXBlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRh
KCk7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
OworICAgIFRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxhbmd1YWdlKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZEtl
eXdvcmRQcm90ZWN0ZWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCA9IDA7CisK
KyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKIAogcHJpdmF0ZToKICAgICBU
eXBlIG1fdHlwZTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
LSAgICAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIEF0b21pY1N0
cmluZyBtX2tpbmQ7CisgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CisgICAgQXRvbWljU3RyaW5n
IG1fbGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMGRjNWNlM2MyZTM3
OWU2YmMxMDNhZTVmMWRiMGMzZTNhY2ZhOTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlICJUcmFja0V2
ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitUcmFja0xpc3RCYXNlOjpUcmFj
a0xpc3RCYXNlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX293bmVyKG93bmVy
KQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVHJhY2tMaXN0QmFzZTo6YXN5bmNF
dmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Rpc3BhdGNoaW5nRXZlbnRzKDApCit7CisgICAgQVNT
RVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Cit9CisKK1RyYWNrTGlzdEJhc2U6On5UcmFja0xp
c3RCYXNlKCkKK3sKK30KKwordW5zaWduZWQgVHJhY2tMaXN0QmFzZTo6bGVuZ3RoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbmJhbmRUcmFja3Muc2l6ZSgpOworfQorCitpbnQgVHJhY2tMaXN0
QmFzZTo6Z2V0VHJhY2tJbmRleChUcmFja0Jhc2UgKnRyYWNrKQoreworICAgIHJldHVybiBtX2lu
YmFuZFRyYWNrcy5maW5kKHRyYWNrKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjpyZW1vdmUo
VHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX2luYmFuZFRyYWNrcy5m
aW5kKHRyYWNrKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVCh0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7CisgICAgdHJh
Y2stPnNldE1lZGlhRWxlbWVudCgwKTsKKworICAgIFJlZlB0cjxUcmFja0Jhc2U+IHRyYWNrUmVm
ID0gbV9pbmJhbmRUcmFja3NbaW5kZXhdOworCisgICAgbV9pbmJhbmRUcmFja3MucmVtb3ZlKGlu
ZGV4KTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFja1JlZi5yZWxlYXNlKCkpOwor
fQorCitib29sIFRyYWNrTGlzdEJhc2U6OmNvbnRhaW5zKFRyYWNrQmFzZSogdHJhY2spIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOwor
fQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRy
PFRyYWNrQmFzZT4gdHJhY2spCit7CisgICAgLy8gNC44LjEwLjUgTG9hZGluZyB0aGUgbWVkaWEg
cmVzb3VyY2UKKyAgICAvLyAuLi4KKyAgICAvLyBGaXJlIGEgdHJ1c3RlZCBldmVudCB3aXRoIHRo
ZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKKyAgICAvLyBub3Qg
Y2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGgg
dGhlIHRyYWNrCisgICAgLy8gYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSBuZXcgVCBvYmpl
Y3QsIGF0IHRoaXMKKyAgICAvLyBUcmFja0xpc3RCYXNlIG9iamVjdC4KKworICAgIFJlZlB0cjxU
cmFja0Jhc2U+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6
ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5i
dWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisg
ICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmFkZHRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90
KDApOworfQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudChQ
YXNzUmVmUHRyPFRyYWNrQmFzZT4gdHJhY2spCit7CisgICAgLy8gNC44LjEwLjYgT2Zmc2V0cyBp
bnRvIHRoZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIElmIGF0IGFueSB0aW1lIHRoZSB1c2VyIGFn
ZW50IGxlYXJucyB0aGF0IGFuIGF1ZGlvIG9yIHZpZGVvIHRyYWNrIGhhcworICAgIC8vIGVuZGVk
IGFuZCBhbGwgbWVkaWEgZGF0YSByZWxhdGluZyB0byB0aGF0IHRyYWNrIGNvcnJlc3BvbmRzIHRv
IHBhcnRzIG9mCisgICAgLy8gdGhlIG1lZGlhIHRpbWVsaW5lIHRoYXQgYXJlIGJlZm9yZSB0aGUg
ZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24sIHRoZQorICAgIC8vIHVzZXIgYWdlbnQgbWF5IHF1
ZXVlIGEgdGFzayB0byByZW1vdmUgdGhlIHRyYWNrIGZyb20gdGhlIGF1ZGlvVHJhY2tzCisgICAg
Ly8gYXR0cmlidXRlJ3MgVHJhY2tMaXN0QmFzZSBvYmplY3Qgb3IgdGhlIHZpZGVvVHJhY2tzIGF0
dHJpYnV0ZSdzCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QgYXMgYXBwcm9wcmlhdGUgYW5k
IHRoZW4gZmlyZSBhIHRydXN0ZWQgZXZlbnQKKyAgICAvLyB3aXRoIHRoZSBuYW1lIHJlbW92ZXRy
YWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsCisgICAgLy8g
YW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGggdGhlIHRyYWNrIGF0
dHJpYnV0ZQorICAgIC8vIGluaXRpYWxpemVkIHRvIHRoZSBUIG9yIFQgb2JqZWN0IHJlcHJlc2Vu
dGluZyB0aGUKKyAgICAvLyB0cmFjaywgYXQgdGhlIG1lZGlhIGVsZW1lbnQncyBhZm9yZW1lbnRp
b25lZCBUcmFja0xpc3RCYXNlIG9yCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QuCisKKyAg
ICBSZWZQdHI8VHJhY2tCYXNlPiB0cmFja1JlZiA9IHRyYWNrOworICAgIFRyYWNrRXZlbnRJbml0
IGluaXRpYWxpemVyOworICAgIGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7CisgICAgaW5p
dGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBm
YWxzZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICghbV9w
ZW5kaW5nRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUNoYW5n
ZUV2ZW50KCkKK3sKKyAgICAvLyA0LjguMTAuNiBPZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291
cmNlCisgICAgLy8gV2hlbmV2ZXIgYW4gYXVkaW8gdHJhY2sgaW4gYW4gVHJhY2tMaXN0QmFzZSBp
cyBlbmFibGVkIG9yIGRpc2FibGVkLCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IG11c3QgcXVldWUg
YSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZQorICAgIC8v
IFRyYWNrTGlzdEJhc2Ugb2JqZWN0LgorCisgICAgRXZlbnRJbml0IGluaXRpYWxpemVyOworICAg
IGluaXRpYWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxl
ID0gZmFsc2U7CisKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNoYW5nZUV2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICghbV9wZW5kaW5n
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjphc3luY0V2ZW50VGltZXJGaXJl
ZChUaW1lcjxUcmFja0xpc3RCYXNlPiopCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBw
ZW5kaW5nRXZlbnRzOworCisgICAgKyttX2Rpc3BhdGNoaW5nRXZlbnRzOworICAgIG1fcGVuZGlu
Z0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdF
dmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsg
KytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxl
YXNlKCksIElHTk9SRV9FWENFUFRJT04pOworICAgIC0tbV9kaXNwYXRjaGluZ0V2ZW50czsKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlz
dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ1ZmE1NjJlYjc0YWU0NTk2NzYyYWIzNTU3MzNjZGU0NjUzZDVjYjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRyYWNrTGlzdEJhc2VfaAor
I2RlZmluZSBUcmFja0xpc3RCYXNlX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1
ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgVHJhY2tCYXNlOworCitjbGFz
cyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgflRyYWNrTGlzdEJhc2UoKTsKKworICAgIHZp
cnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0VHJhY2tJ
bmRleChUcmFja0Jhc2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlKikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UqKTsKKworICAgIC8vIEV2
ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdCA9IDA7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPjo6cmVmOwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRlcmVmOworICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dDsgfQorCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihhZGR0cmFjayk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjaGFuZ2Up
OworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3ZldHJhY2spOworCisg
ICAgdm9pZCBjbGVhck93bmVyKCkgeyBtX293bmVyID0gMDsgfQorICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorCisgICAgYm9vbCBpc0Zpcmlu
Z0V2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9kaXNwYXRjaGluZ0V2ZW50czsgfQorCisgICAg
Ly8gTmVlZHMgdG8gYmUgcHVibGljIHNvIHRyYWNrcyBjYW4gY2FsbCBpdAorICAgIHZvaWQgc2No
ZWR1bGVDaGFuZ2VFdmVudCgpOworCitwcm90ZWN0ZWQ6CisgICAgVHJhY2tMaXN0QmFzZShIVE1M
TWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBzY2hl
ZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUcmFja0Jhc2U+KTsKKyAgICB2b2lkIHNjaGVk
dWxlUmVtb3ZlVHJhY2tFdmVudChQYXNzUmVmUHRyPFRyYWNrQmFzZT4pOworCisgICAgVmVjdG9y
PFJlZlB0cjxUcmFja0Jhc2U+ID4gbV9pbmJhbmRUcmFja3M7CisKK3ByaXZhdGU6CisgICAgLy8g
RXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9
CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgdm9pZCBh
c3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUcmFja0xpc3RCYXNlPiopOworCisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fb3du
ZXI7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBU
aW1lcjxUcmFja0xpc3RCYXNlPiBtX3BlbmRpbmdFdmVudFRpbWVyOworCisgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgaW50IG1fZGlzcGF0Y2hpbmdFdmVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjVjZTAyOGEzMmQy
Mzg2ZjBiYzYwODllODgzZjY1NjFjYmViNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIlZpZGVvVHJhY2suaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJU
cmFja0Jhc2UuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3
b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0
ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIGFsdGVybmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoIm1haW4iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzaWduOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMs
ICgic3VidGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiBzdWJ0aXRsZXM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6
Y29tbWVudGFyeUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNvbW1lbnRhcnk7Cit9CisKK1ZpZGVvVHJh
Y2s6OlZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVv
VHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpW
aWRlb1RyYWNrLCB0cmFja1ByaXZhdGUtPmxhYmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2Uo
KSkKKyAgICAsIG1faWQodHJhY2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9zZWxlY3RlZCh0cmFj
a1ByaXZhdGUtPnNlbGVjdGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3By
aXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwor
CisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgVmlkZW9UcmFja1By
aXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0
aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6Q2FwdGlvbnM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3Jk
KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgor
ICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOgorICAgICAgICBzZXRLaW5kKFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVv
VHJhY2tQcml2YXRlOjpTdWJ0aXRsZXM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3Vi
dGl0bGVzS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJp
dmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5
S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6
Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworVmlkZW9UcmFjazo6flZpZGVvVHJhY2soKQoreworICAgIG1fcHJpdmF0
ZS0+c2V0Q2xpZW50KDApOworfQorCitib29sIFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kS2V5d29y
ZFByb3RlY3RlZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2
YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKHZhbHVlID09IGNhcHRpb25zS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAodmFsdWUgPT0gbWFpbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKHZhbHVlID09IHNpZ25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh2YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChj
b25zdCBib29sIHNlbGVjdGVkKQoreworICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CisKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRo
aXMpOworfQorCitpbnQgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNT
RVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYTM2NGE2MDA0MWRhZDM5ODg4OWU4MWZm
MTc2MzU3NmRjZTZjMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFZpZGVvVHJhY2tfaAorI2RlZmluZSBWaWRlb1RyYWNrX2gKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFj
a0Jhc2UuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1Ry
YWNrOworCitjbGFzcyBWaWRlb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5W
aWRlb1RyYWNrQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3Rl
ZENoYW5nZWQoVmlkZW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJs
aWMgVHJhY2tCYXNlLCBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50
KiBjbGllbnQsIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNr
UHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CisKKyAgICBBdG9t
aWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaWduS2V5
d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25z
dCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJv
b2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0K
KyAgICBWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgaW50IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIFZpZGVv
VHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBy
aXZhdGVUcmFjayk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVj
dGVkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAg
IEF0b21pY1N0cmluZyBtX2lkOworICAgIGJvb2wgbV9zZWxlY3RlZDsKKyAgICBWaWRlb1RyYWNr
Q2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gbV9wcml2
YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUyNmQzMzA3
MTQ3ZjMxZGQyNGRhMmQ4NWRmYjIwODcyMGM3MjcwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIFZpZGVvVHJh
Y2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKwor
ICAgIGF0dHJpYnV0ZSBib29sZWFuIHNlbGVjdGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA0NTM4MTY1YzQwMDljYmZj
MjE4ZDYwODYyYmMyN2E3ZDIzYzM3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShvd25l
ciwgY29udGV4dCkKK3sKK30KKworVmlkZW9UcmFja0xpc3Q6On5WaWRlb1RyYWNrTGlzdCgpCit7
Cit9CisKK3ZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+
IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHBycFRyYWNrOwor
CisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRlci4KKyAgICBzaXpl
X3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOworICAgIG1faW5iYW5kVHJhY2tz
Lmluc2VydChpbmRleCwgdHJhY2spOworCisgICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50
KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkpOworICAgIHRyYWNrLT5zZXRN
ZWRpYUVsZW1lbnQob3duZXIoKSk7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2su
cmVsZWFzZSgpKTsKK30KKworVmlkZW9UcmFjayogVmlkZW9UcmFja0xpc3Q6Oml0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgp
KSB7CisgICAgICAgIFRyYWNrQmFzZSogdHJhY2sgPSBtX2luYmFuZFRyYWNrc1tpbmRleF0uZ2V0
KCk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFzZTo6VmlkZW9UcmFj
ayk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4odHJhY2spOworICAg
IH0KKworICAgIHJldHVybiAwOworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFRyYWNrQmFzZSogdHJhY2sg
PSBpdGVtKGkpOworICAgICAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlZp
ZGVvVHJhY2spOworICAgICAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gZHluYW1pY19jYXN0
PFZpZGVvVHJhY2sqPih0cmFjayk7CisgICAgICAgIGlmICh2aWRlb1RyYWNrLT5pZCgpID09IGlk
KQorICAgICAgICAgICAgcmV0dXJuIHZpZGVvVHJhY2s7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCitsb25nIFZpZGVvVHJhY2tMaXN0OjpzZWxlY3RlZEluZGV4KCkgY29uc3QKK3sKKyAgICAv
LyA0LjguMTAuMTAuMSBBdWRpb1RyYWNrTGlzdCBhbmQgVmlkZW9UcmFja0xpc3Qgb2JqZWN0cwor
ICAgIC8vIFRoZSBWaWRlb1RyYWNrTGlzdC5zZWxlY3RlZEluZGV4IGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiB0aGUgaW5kZXggb2YgdGhlCisgICAgLy8gY3VycmVudGx5IHNlbGVjdGVkIHRyYWNrLCBp
ZiBhbnkuIElmIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgZG9lcyBub3QKKyAgICAvLyBjdXJy
ZW50bHkgcmVwcmVzZW50IGFueSB0cmFja3MsIG9yIGlmIG5vbmUgb2YgdGhlIHRyYWNrcyBhcmUg
c2VsZWN0ZWQsCisgICAgLy8gaXQgbXVzdCBpbnN0ZWFkIHJldHVybiDiiJIxLgorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAgICBUcmFja0Jhc2UqIHRy
YWNrID0gaXRlbShpKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNl
OjpWaWRlb1RyYWNrKTsKKyAgICAgICAgaWYgKGR5bmFtaWNfY2FzdDxWaWRlb1RyYWNrKj4oaXRl
bShpKSktPnNlbGVjdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0
dXJuIC0xOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclZp
ZGVvVHJhY2tMaXN0OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGExNTEzNGFjMzljYjc5MjEwMTM1MjZhZDY0Mjdm
OWQwNzQ3NThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrTGlzdC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBWaWRlb1RyYWNrTGlzdF9oCisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1RyYWNrTGlzdCA6
IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxW
aWRlb1RyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBWaWRlb1RyYWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VmlkZW9UcmFj
a0xpc3QoKTsKKworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4pOworICAg
IFZpZGVvVHJhY2sqIGl0ZW0odW5zaWduZWQpIGNvbnN0OworICAgIFZpZGVvVHJhY2sqIGdldFRy
YWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBsb25nIHNlbGVjdGVkSW5k
ZXgoKSBjb25zdDsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWaWRlb1Ry
YWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMzZhZjYy
MGI4NDQ1NWFmNzM4ZGViMTQ4NDA0MTYzZjRhNTUyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbApAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBJbmRleGVk
R2V0dGVyLAorICAgIEV2ZW50VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAg
IEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIFZpZGVvVHJhY2tMaXN0IHsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgVmlkZW9UcmFjayBp
dGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFZpZGVvVHJhY2sgZ2V0VHJhY2tCeUlk
KGluIERPTVN0cmluZyBpZCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNoYW5n
ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNrOworICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9ucmVtb3ZldHJhY2s7CisKKyAgICB2b2lkIGFkZEV2ZW50TGlzdGVu
ZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50
TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZl
bnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzgxZmVkMzdhNGI5NjcxZTMxZTM4MjUzNGIwNDM5MDk0M2FhOGIwMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQ
cml2YXRlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrUHJp
dmF0ZV9oCisjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNr
UHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGVD
bGllbnQoKSB7IH0KK307CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIFJlZkNv
dW50ZWQ8QXVkaW9UcmFja1ByaXZhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRp
b1RyYWNrUHJpdmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZSgpKTsKKyAgICB9CisgICAg
dmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGUoKSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KEF1
ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAg
ICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQg
PSBlbmFibGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CisKKyAgICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgRGVzY3JpcHRpb24s
IE1haW4sIE1haW5EZXNjLCBUcmFuc2xhdGlvbiwgQ29tbWVudGFyeSwgTm9uZSB9OworICAgIHZp
cnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gTm9uZTsgfQorCisgICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZp
cnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9
CisKKyAgICB2aXJ0dWFsIGludCBhdWRpb1RyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZSgpCisgICAgICAgIDogbV9lbmFi
bGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja1ByaXZh
dGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9lbmFibGVkOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ2MTAz
Y2IxODE1YTVjOWFhNTY0MDJlM2JjYzQ1YjNiYmIxMjg3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWRlb1RyYWNrUHJpdmF0ZV9oCisjZGVmaW5l
IFZpZGVvVHJhY2tQcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVDbGllbnQoKSB7IH0KK307
CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8VmlkZW9UcmFj
a1ByaXZhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1RyYWNrUHJpdmF0ZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZSgpKTsKKyAgICB9CisgICAgdmlydHVhbCB+VmlkZW9U
cmFja1ByaXZhdGUoKSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KFZpZGVvVHJhY2tQcml2YXRl
Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAgICBWaWRlb1RyYWNrUHJp
dmF0ZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKSB7IG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsg
fTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVk
OyB9CisKKyAgICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgQ2FwdGlvbnMsIE1haW4sIFNpZ24s
IFN1YnRpdGxlcywgQ29tbWVudGFyeSwgTm9uZSB9OworICAgIHZpcnR1YWwgS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gTm9uZTsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBj
b25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJl
bCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5n
IGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisKKyAgICB2aXJ0dWFsIGlu
dCB2aWRlb1RyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBWaWRlb1RyYWNrUHJpdmF0ZSgpCisgICAgICAgIDogbV9zZWxlY3RlZChmYWxzZSkKKyAgICB7
CisgICAgfQorCitwcml2YXRlOgorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBtX2NsaWVu
dDsKKyAgICBib29sIG1fc2VsZWN0ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197154</attachid>
            <date>2013-04-09 11:39:56 -0700</date>
            <delta_ts>2013-04-09 12:26:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130409123938.patch</filename>
            <type>text/plain</type>
            <size>139721</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE5NTFiMjQyMDQ1OWRh
MDViMTYwOTg1YzFkYzhmNzk1OTI0NGVlMy4uZTdlMjkxZjZmNGY0YzhkZmZjOTMwMGMzYTEwYTA5
MjYwODMyOWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzOSBAQAorMjAxMy0wNC0wOCAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CisKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp+QXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OnRyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbnZhbGlkYXRlVHJhY2tJ
bmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tDbGllbnQ6On5BdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKEF1ZGlv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9UcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
OjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tJbmRleCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChBdWRp
b1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6cmVtb3Zl
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoQXVk
aW9UcmFja0xpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQp
OgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6Cisg
ICAgICAgIChBdWRpb1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChB
dWRpb1RyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
TGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6
YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmludmFsaWRhdGVUcmFj
a0luZGV4KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0NsaWVudDo6flZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6Om1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRJZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldExhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xpc3QpOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChW
aWRlb1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6cmVt
b3ZlKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6
OmNvbnRhaW5zKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6CisgICAgICAgIChWaWRl
b1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlz
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Om93bmVy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQ6On5BdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChBdWRpb1RyYWNrUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjp+QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpraW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjppZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGU6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjphdWRpb1RyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6
OkF1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTA0LTA5ICBKZWZm
IFJvZ2VycyAgPGpyb2dlcnNAcmltLmNvbT4KIAogICAgICAgICBBZGQgd2VicCB0byBzdXBwb3J0
ZWQgaW1hZ2UgbWltZSB0eXBlcyBpZiBXRUJQIGZlYXR1cmUgaXMgZW5hYmxlZC91c2VkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDQ2MTgzMjVhM2NmYWNlYWFkNmVhZTc3MzBkNmVlNzA1YmI5MDg0
YTUuLjkwYzZjODY0Yzc3ZDNhZTliMTMyN2FhYzc0ZjY0NTE1ZDg3ZmY4M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NDksMTIgKzU0OSw2IEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAg
IGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwKICAgICBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5pZGwKIAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAotICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlz
dC5pZGwKLSAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCi0gICAgaHRtbC90cmFjay9U
cmFja0V2ZW50LmlkbAotCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAogICAgIGluc3BlY3Rvci9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmlkbApAQCAtMTU5MywxOSArMTU4Nyw2IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCiAKLSAgICBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5jcHAKLSAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAotICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKLSAgICBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZUxpc3QuY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAot
ICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAotICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAKLSAgICBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCi0gICAgaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCi0gICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCi0KICAgICBp
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCiAgICAgaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMTczOCw3ICsxNzE5LDYg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
ICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKICAgICBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCiAKQEAgLTI2OTYsNyArMjY3NiwzOSBAQCBpZiAoRU5BQkxFX1dF
QkdMKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKKyAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisg
ICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAorICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmlkbAorICAgICkKKwogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuY3BwCisgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAorICAg
ICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisgICAg
ICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKyAgICAgICAgaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWVMaXN0LmNwcAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
Y3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorICAgICAgICBodG1sL3RyYWNr
L1RyYWNrRXZlbnQuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKyAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorICAgICAgICBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKKyAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCisg
ICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5jcHAKKworICAgICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cAorCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNw
cAogICAgICkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggZGJlY2E0
NzFhN2M2MWM3NmNmNDIwMTUxMDg2ODU4NWY5NzcyNzI0Zi4uNzkwOWUxYWU1MWUzYTVjYmMxNDY5
Y2Y1NzE0YTViZjU0NTE5YjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNjUy
LDExICs2NTIsMTUgQEAgZW5hYmxlPyhHQU1FUEFEKSB7CiAKIGVuYWJsZT8oVklERU9fVFJBQ0sp
IHsKICAgSURMX0JJTkRJTkdTICs9IFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQ
V0QvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwg
XAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0
bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCiB9CiAKIGVu
YWJsZT8oTUVESUFfU09VUkNFKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBl
ZTFhZTU4ZWE0N2JmNmYxMTUyZDNiODVjNWZmMjQ2NzBkMzg1MDhiLi41MGU2YzlmOGNmZDkzNTYy
MWNiMTNlN2ZlYzE5ZmM5ZDEzMzY5YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTE1ODYsMTEgKzE1ODYsMTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAJJChXZWJDb3Jl
KS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRs
IFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorCSQoV2ViQ29y
ZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlk
bCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXApAQCAt
MjMyMCw2ICsyMzI0LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Jsb2JDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NE
QVRBU2VjdGlvbkN1c3RvbS5jcHAgXApAQCAtMjQ3NCw2ICsyNDgxLDkgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAgXApAQCAtMzc2Nyw2ICszNzc3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZVJhbmdlcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg1
LDYgKzM3OTksMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCisJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwIFwKQEAgLTU0OTMsNiArNTUxMyw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6ZUxvZ2dpbmcuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dyYXBoaWNzQ29u
dGV4dDNETkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJt
L2ZpbHRlcnMvTkVPTkhlbHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3Myw2ICs1Nzk0LDcgQEAg
d2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1cmVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGM4YTRhOTRl
NThmNzY1NDUyZGJlMDY3NjA0ODA1YTczZjYwZWU3MjguLjE5YmIxZmI3OWY2ZmI3ZGQ2OTQzOTkx
NzdjYmM2YjZkZmQ0MmNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2NSw5ICszOTY1LDEzIEBAIGVu
YWJsZT8oSkFWQVNDUklQVF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAg
ICAgSEVBREVSUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5o
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5oIFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50LmggXAorICAgICAg
ICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggXAogICAgICAg
ICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggXAogICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFjay5oIFwKQEAgLTM5NzcsMjAgKzM5ODEsMzEgQEAgZW5hYmxlPyhWSURFT19UUkFDSykg
ewogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svVHJhY2tCYXNlLmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCisgICAg
ICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrLmggXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogICAgICAg
ICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRU
b2tlbi5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBcCiAgICAgICAg
IGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1
ZGlvVHJhY2tQcml2YXRlLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQ2xpZW50LmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1By
aXZhdGUuaCBcCiAKICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RD
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1Ry
YWNrRXZlbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0
Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAg
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAg
ICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgXAogICAg
ICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cCBcCkBAIC00MDAwLDYgKzQwMTUsOSBAQCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNr
QmFzZS5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKKyAgICAgICAg
aHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5k
ZXggZjMyMmQ2NGNjN2QxN2E3ZmI3NTQwM2VhYmQyMTliZmQzZWVkOTE5Ny4uZWVlZWViYTEwYTMy
ZTY1YTI5OWMyY2MwY2M3ODJmNDA4Y2UzMTYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC00MzMsMTggKzQzMywyNCBAQCB3ZWJraXRn
dGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlmIEVOQUJMRV9WSURFTwogd2Via2l0Z3RrX2dk
b21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmggXAogCSQodG9wX2J1aWxk
ZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5o
IFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhU
TUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmggXAogCSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmggXAogCSQo
dG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suaCBcCisJJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrTGlzdC5oCiB3ZWJr
aXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJpdmF0ZS5oIFwKKwlEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXApAQCAtNDUzLDYgKzQ1OSw4IEBA
IHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2YXRlLmggXAorCURlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaAogZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkNWMxZTQyNzM5Y2U2N2Q1ZDUyN2QzMGEzMmQ5MTQwNTU5MzZhMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNs
dWRlICJKU0F1ZGlvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0
PEpTQXVkaW9UcmFjayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFjayog
YXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwo
KSk7XAorCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQg
aXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzQXVkaW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVy
dGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250
YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNr
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2ssICZzX2luZm8p
OworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNT
RVJUKGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFjaywgdmlzaXRv
cik7CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFj
ayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9v
dChhdWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ4Y2RlM2IxNzIwZThkNmNjZmJkNjE1YzI1ZTNlM2M1NTI0ZTNkZDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
aApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNBdWRpb1RyYWNrQ3VzdG9t
X2gKKyNkZWZpbmUgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJh
Y2suaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCogcm9vdChBdWRpb1RyYWNrKiB0
cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhh
cyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJv
b3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQsIHJl
dHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisKK30KKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2MTZiMGQ0YjhhYTkyOTQyMmYwNWFkNzU0
OTMyNDA5YWExNmFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVk
ZSAiSlNBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgor
I2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9U
cmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVk
aW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhl
IGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxl
IGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0
aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKGF1ZGlvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2
ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIGxp
c3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBp
dCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghYXVkaW9UcmFja0xpc3QtPmhhc0V2ZW50TGlz
dGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRp
YSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFp
bnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBK
U0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrTGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpz
Q2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhqc0F1ZGlvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrTGlzdCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1Ry
YWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpz
QXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qo
YXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICBhdWRpb1RyYWNrTGlzdC0+dmlzaXRKU0V2
ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzQ0MDY5ZDU0Zjk1NGE1YjMwMTBhNDU1Yjk2NmJlMGYzZWM5YWRh
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tD
dXN0b20uaCIKKworI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBqc1Zp
ZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
KyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KGpz
VmlkZW9UcmFjay0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSB0cmFjayBoYXMgbm8gY3VzdG9t
IHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFqc1ZpZGVvVHJhY2st
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit2
b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpT
VmlkZW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRl
b1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc1Zp
ZGVvVHJhY2ssIHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRp
Y19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJh
Y2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTM3NWU1NjdlNmJhMzhhM2ZkNmQyYzk5NWFmMGMxY2Rm
NmFiM2RhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpT
VmlkZW9UcmFja0N1c3RvbV9oCisjZGVmaW5lIEpTVmlkZW9UcmFja0N1c3RvbV9oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJv
b3QoVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50
J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBt
ZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOwor
fQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDk2NzEwZDYw
OTMxMGM3ODcyYTdkZjQzYjZjZGI0MzM1YjFkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVmlkZW9UcmFja0xpc3RP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJh
Y2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9UcmFja0xpc3QqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrTGlzdCA9
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlzdC0+aW1wbCgpKTsK
KworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFw
cGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2li
bGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmICh2aWRlb1RyYWNr
TGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0
b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIXZpZGVvVHJhY2tM
aXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1ZpZGVvVHJhY2tMaXN0LT5oYXNDdXN0b21Q
cm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNo
YWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigp
KSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlk
ZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRl
b1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFja0xpc3QsIHZpc2l0b3Ip
OworCisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8Vmlk
ZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7CisgICAgdmlkZW9UcmFj
a0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggODI3Nzdh
ODZlZWZkZmJlYmU2ODljOWI5MjMzNjg4Mjk1ODM5MWMzZS4uZWEwNzk5YmI1ZDBkNzM0YzAxZjQ2
OGE2M2UxZDViMjIwNWNmYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTQxLDYg
KzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF1ZGlvQ29udGV4dDsK
KyAgICBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93
OwpAQCAtNjcsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU291cmNl
QnVmZmVyTGlzdDsKICAgICBjbGFzcyBUZXh0VHJhY2s7CiAgICAgY2xhc3MgVGV4dFRyYWNrQ3Vl
OworICAgIGNsYXNzIFZpZGVvVHJhY2tMaXN0OwogICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBj
bGFzcyBXZWJLaXROYW1lZEZsb3c7CiAgICAgY2xhc3MgV29ya2VyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNDc2ZDFiNTNmMTQ1YmIyNzM0OTg5OTNmMzlm
MWQxY2JhYTYyMzU4My4uOGVhNWI3YjAzYWJhY2EwMmYyNWY0OGEyZWQ1NTk5MjYzZWE0NzBiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xLDYgKzEsNyBA
QAogbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKIAogQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdF
Ql9BVURJTworQXVkaW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIEJhdHRlcnlN
YW5hZ2VyIGNvbmRpdGlvbmFsPUJBVFRFUllfU1RBVFVTCiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IGNvbmRpdGlvbmFsPVdPUktFUlMKIERPTUFwcGxpY2F0aW9uQ2FjaGUKQEAgLTM3LDYgKzM4LDcg
QEAgU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFsPVNWRwogVGV4dFRyYWNrIGNvbmRpdGlv
bmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tDdWUgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFRl
eHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKK1ZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXROYW1lZEZsb3cKIFdlYlNvY2tldCBjb25kaXRpb25h
bD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDI2MGQwYTY3NTlmNTJhNjUzNmQwNjAzNDA3
MjJlZjVhOWE0ZDkzYWMuLjRhMmQyMzJkMzg5NWZiOTUyZTQyYTU0NmViMTU1Mjk1OTVmMTY1Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTgsNiArOTgs
OCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9U
cmFja0xpc3QuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCkBAIC0xMDUsNiArMTA3LDggQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5o
IgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVESU8pCkBAIC0yOTYsNyArMzAwLDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAg
ICAsIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UoZmFsc2UpCiAgICAgLCBtX2xhc3RUZXh0
VHJhY2tVcGRhdGVUaW1lKC0xKQogICAgICwgbV9jYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6QXV0b21hdGljKQorICAgICwgbV9hdWRpb1RyYWNrcygwKQogICAgICwg
bV90ZXh0VHJhY2tzKDApCisgICAgLCBtX3ZpZGVvVHJhY2tzKDApCiAgICAgLCBtX2lnbm9yZVRy
YWNrRGlzcGxheVVwZGF0ZSgwKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTMz
MCwxMiArMzM2LDIyIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBkb2N1bWVudCgpLT51
bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyAg
ICBpZiAobV9hdWRpb1RyYWNrcykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzLT5jbGVhck93bmVy
KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLT5sZW5n
dGgoKTsgKytpKQorICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGll
bnQoKTsKKyAgICB9CiAgICAgaWYgKG1fdGV4dFRyYWNrcykKICAgICAgICAgbV90ZXh0VHJhY2tz
LT5jbGVhck93bmVyKCk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAg
ICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwogICAgIH0KKyAgICBpZiAo
bV92aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhck93bmVyKCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKTsg
KytpKQorICAgICAgICAgICAgbV92aWRlb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQoKTsK
KyAgICB9CiAjZW5kaWYKIAogICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKQEAgLTEzNDksNiAr
MTM2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFu
Z2VkKFRleHRUcmFjayogdHJhY2spCiAgICAgfQogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBX
ZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBl
eGlzdAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRl
eHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OlRyYWNrRWxlbWVudCkgewpAQCAtMTM4OCw2ICsxNDA5LDExIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogfQogCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCit7
CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMgaGVyZSBv
bmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5k
Q2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRl
eHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2lu
Z0tleXdvcmQoKSkKQEAgLTI3OTIsNyArMjgxOCwxNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50
OjpwZXJjZW50TG9hZGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRyYWNrKFBhc3NSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNr
PiB0cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRB
dWRpb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyNCwxMCArMjg2MCwzNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJhY2soUGFzc1JlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPgogICAgIC8vIDkuIEZpcmUgYW4gZXZlbnQgd2l0aCB0
aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxh
YmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50CiAgICAgLy8gaW50ZXJmYWNlLCB3aXRo
IHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0
VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzCiAgICAgLy8gdGV4dFRyYWNrcyBh
dHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KLSAgICBhZGRUcmFjayh0ZXh0VHJhY2su
Z2V0KCkpOworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBy
cFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFZpZGVvVHJhY2s+
IHRyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKTsKKworICAgIGFkZFZp
ZGVvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9hdWRpb1RyYWNr
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVzZSB3
ZSBjcmVhdGVkIHRoZSBBdWRpb1RyYWNrIHdpdGggdGhlIEF1ZGlvVHJhY2tQcml2YXRlCisgICAg
Ly8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjay4KKyAgICBSZWZQdHI8QXVk
aW9UcmFjaz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4ocHJwVHJhY2stPmNsaWVu
dCgpKTsKKyAgICBpZiAoIXRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVBdWRp
b1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgzNiwxMiArMjg5OSwyOSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlz
IGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEluYmFuZFRleHRUcmFjayB3aXRo
IHRoZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlCi0gICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVy
RGlkQWRkVHJhY2suCisgICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNr
LgogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2s+IHRleHRUcmFjayA9IHN0YXRpY19jYXN0PElu
YmFuZFRleHRUcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CiAgICAgaWYgKCF0ZXh0VHJhY2sp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJlbW92ZVRyYWNrKHRleHRUcmFjay5nZXQoKSk7Cisg
ICAgcmVtb3ZlVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMg
c2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIFZpZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFj
a1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgor
ICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihw
cnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlbW92ZVZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogfQogCiAjaWYgVVNFKFBMQVRGT1JN
X1RFWFRfVFJBQ0tfTUVOVSkKQEAgLTI5MjAsMTQgKzMwMDAsMjkgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCkKICNlbmRpZgogfQogCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKFRleHRUcmFjayogdHJhY2spCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgYXVkaW9U
cmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0
cmFjayk7CiAgICAgCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRyYWNrKFRleHRUcmFjayogdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2spCit7CisgICAg
dmlkZW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIG1fYXVkaW9UcmFj
a3MtPnJlbW92ZSh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4
dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUg
c2NvcGUodGhpcyk7CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcyA9IHRyYWNrLT5jdWVzKCk7
CkBAIC0yOTM4LDcgKzMwMzMsMjEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUcmFj
ayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQorewor
ICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MoKQoreworICAgIGlmICghbV9hdWRpb1RyYWNrcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fYXVkaW9U
cmFja3MtPmxlbmd0aCgpKQorICAgICAgICByZW1vdmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3Mt
Pml0ZW0obGVuZ3RoIC0gMSkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFs
bEluYmFuZFRleHRUcmFja3MoKQogewogICAgIGlmICghbV90ZXh0VHJhY2tzKQogICAgICAgICBy
ZXR1cm47CkBAIC0yOTQ4LDEwICszMDU3LDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVt
b3ZlQWxsSW5iYW5kVHJhY2tzKCkKICAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4dFRy
YWNrcy0+aXRlbShpKTsKIAogICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRU
cmFjazo6SW5CYW5kKQotICAgICAgICAgICAgcmVtb3ZlVHJhY2sodHJhY2spOworICAgICAgICAg
ICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlQWxsVmlkZW9UcmFja3MoKQoreworICAgIGlmICghbV92aWRlb1RyYWNrcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fdmlkZW9U
cmFja3MtPmxlbmd0aCgpKQorICAgICAgICByZW1vdmVWaWRlb1RyYWNrKG1fdmlkZW9UcmFja3Mt
Pml0ZW0obGVuZ3RoIC0gMSkpOworfQorCiBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlh
RWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpA
QCAtMjk3OCw3ICszMDk2LDcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1l
bnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAgICAvLyBmaXJz
dCBhcHBlbmQgdGhlIHRyYWNrIHRvIHRoZSB0ZXh0IHRyYWNrIGxpc3QuCiAKICAgICAvLyA2LiBB
ZGQgdGhlIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0
IHRyYWNrcy4KLSAgICBhZGRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIGFkZFRleHRUcmFj
ayh0ZXh0VHJhY2suZ2V0KCkpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIHJlYWRpbmVz
cyBzdGF0ZSB0byB0aGUgdGV4dCB0cmFjayBsb2FkZWQgc3RhdGUgLi4uCiAgICAgdGV4dFRyYWNr
LT5zZXRSZWFkaW5lc3NTdGF0ZShUZXh0VHJhY2s6OkxvYWRlZCk7CkBAIC0yOTg5LDYgKzMxMDcs
MTcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFj
ayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVh
c2UoKTsKIH0KIAorQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tz
KCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQor
ICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV9h
dWRpb1RyYWNrcy5nZXQoKTsKK30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrcygpIAogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAgLTMwMDAsNyArMzEyOSwxOCBAQCBUZXh0VHJhY2tMaXN0
KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkKICAgICByZXR1cm4gbV90ZXh0VHJhY2tz
LmdldCgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRyYWNrKEhUTUxUcmFj
a0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKK1ZpZGVvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV92
aWRlb1RyYWNrcykKKyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVh
dGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisg
ICAgcmV0dXJuIG1fdmlkZW9UcmFja3MuZ2V0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICAg
ICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAKQEAgLTMwMTUs
NyArMzE1NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNr
RWxlbWVudCogdHJhY2tFbGVtZW50KQogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgYWRkVHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0VHJh
Y2sodGV4dFRyYWNrLmdldCgpKTsKICAgICAKICAgICAvLyBEbyBub3Qgc2NoZWR1bGUgdGhlIHRy
YWNrIGxvYWRpbmcgdW50aWwgcGFyc2luZyBmaW5pc2hlcyBzbyB3ZSBkb24ndCBzdGFydCBiZWZv
cmUgYWxsIHRyYWNrcwogICAgIC8vIGluIHRoZSBtYXJrdXAgaGF2ZSBiZWVuIGFkZGVkLgpAQCAt
MzAyNiw3ICszMTY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUcmFjayhIVE1M
VHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+Y2xv
c2VkQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0Vs
ZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykp
OwogCkBAIC0zMDUzLDcgKzMxOTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92
ZVRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAvLyBXaGVuIGEgdHJh
Y2sgZWxlbWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQgcGFyZW50IHdh
cyBhIG1lZGlhIGVsZW1lbnQsIAogICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1v
dmUgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0aGUg
CiAgICAgLy8gbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCi0gICAgcmVtb3Zl
VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdl
dCgpKTsKIAogICAgIHNpemVfdCBpbmRleCA9IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVj
dGlvbkJlZ2FuLmZpbmQodGV4dFRyYWNrLmdldCgpKTsKICAgICBpZiAoaW5kZXggIT0gbm90Rm91
bmQpCkBAIC0zOTM1LDcgKzQwNzUsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVk
aWFQbGF5ZXIoaW50IGZsYWdzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0g
ICAgcmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CisgICAgcmVtb3ZlQWxsQXVkaW9UcmFja3MoKTsK
KyAgICByZW1vdmVBbGxJbmJhbmRUZXh0VHJhY2tzKCk7CisgICAgcmVtb3ZlQWxsVmlkZW9UcmFj
a3MoKTsKICNlbmRpZgogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAt
NDkwNiw3ICs1MDQ4LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1l
bWJlcihtX21lZGlhU291cmNlLCAibWVkaWFTb3VyY2UiKTsKICNlbmRpZgogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2F1ZGlvVHJhY2tzLCAiYXVkaW9UcmFj
a3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3MsICJ0ZXh0VHJhY2tzIik7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV92aWRlb1RyYWNrcywgInZpZGVvVHJhY2tzIik7CiAgICAgaW5m
by5hZGRNZW1iZXIobV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4sICJ0ZXh0
VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4iKTsKICAgICBpbmZvLmFkZE1lbWJlciht
X2N1ZVRyZWUsICJjdWVUcmVlIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdXJyZW50bHlBY3Rp
dmVDdWVzLCAiY3VycmVudGx5QWN0aXZlQ3VlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCBjYTAxNmMwN2Q0NmZmMjEzN2ZhMGUxYWE4NjczMjQzYmQxMjdlMThj
Li5lYTkxODJlMzZjMmE4NWFiY2U0MThjMzllZDg3NDc0ODRiY2Y0NjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzksMTAgKzM5LDEyIEBACiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCiAjaW5jbHVk
ZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIlBPREludGVydmFsVHJlZS5o
IgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2lu
Y2x1ZGUgIlZpZGVvVHJhY2suaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
OCw3ICs2MCw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7
CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKLWNsYXNzIFRleHRUcmFja0xpc3Q7CiBj
bGFzcyBUaW1lUmFuZ2VzOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogY2xh
c3MgV2lkZ2V0OwpAQCAtNzEsNyArNzIsMTIgQEAgY2xhc3MgTWVkaWFLZXlzOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKK2NsYXNzIFRl
eHRUcmFja0xpc3Q7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tQcml2
YXRlOwogCiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxkb3VibGUsIFRleHRUcmFja0N1ZSo+IEN1
ZUludGVydmFsVHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3Vl
SW50ZXJ2YWw7CkBAIC04NCw3ICs5MCw5IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBD
dWVMaXN0OwogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBw
dWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNs
aWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRy
YWNrQ2xpZW50CisgICAgLCBwcml2YXRlIFZpZGVvVHJhY2tDbGllbnQKICNlbmRpZgogI2lmIFVT
RShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJh
Y2tNZW51Q2xpZW50CkBAIC0yMjYsMjAgKzIzNCwzMyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwg
bGFiZWwsIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBh
ZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVjKTsg
fQogCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRyYWNrTGlz
dCogdGV4dFRyYWNrcygpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworCiAg
ICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
bHlBY3RpdmVDdWVzOyB9CiAKLSAgICB2b2lkIGFkZFRyYWNrKFRleHRUcmFjayopOwotICAgIHZv
aWQgcmVtb3ZlVHJhY2soVGV4dFRyYWNrKik7Ci0gICAgdm9pZCByZW1vdmVBbGxJbmJhbmRUcmFj
a3MoKTsKKyAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayopOworICAgIHZvaWQgYWRk
VGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRlb1RyYWNr
Kik7CisgICAgdm9pZCByZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKKyAgICB2b2lkIHJl
bW92ZVRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soVmlk
ZW9UcmFjayopOworICAgIHZvaWQgcmVtb3ZlQWxsQXVkaW9UcmFja3MoKTsKKyAgICB2b2lkIHJl
bW92ZUFsbEluYmFuZFRleHRUcmFja3MoKTsKKyAgICB2b2lkIHJlbW92ZUFsbFZpZGVvVHJhY2tz
KCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiAgICAgdm9pZCBub3Rp
ZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3Zl
VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUZXh0VHJh
Y2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVUZXh0VHJh
Y2soSFRNTFRyYWNrRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlk
QWRkVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4p
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJh
Y2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRS
ZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsK
IAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+KSBPVkVSUklE
RTsKQEAgLTI3NSw2ICsyOTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJh
Y2tEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAKKyAgICAv
LyBBdWRpb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZChBdWRpb1RyYWNrKik7CisKICAgICAvLyBUZXh0VHJhY2tDbGllbnQKICAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CiAgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopOwpAQCAtMjg0LDYgKzMwOCw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayos
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1Jl
bW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogCisgICAgLy8g
VmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFu
Z2VkKFZpZGVvVHJhY2sqKTsKKwogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24qKTsKICNlbmRpZgpAQCAtNjk5LDcgKzcyNiw5IEBAIHByaXZhdGU6
CiAgICAgZmxvYXQgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZTsKICAgICBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgbV9jYXB0aW9uRGlzcGxheU1vZGU7CiAKKyAg
ICBSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja3M7CiAgICAgUmVmUHRyPFRleHRU
cmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKKyAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlk
ZW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzV2hl
blJlc291cmNlU2VsZWN0aW9uQmVnYW47CiAKICAgICBDdWVJbnRlcnZhbFRyZWUgbV9jdWVUcmVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggOTIwNTIwYmYw
MjRlMmMxNGJmZDZhYWFkYWU3ODBmNGQ0OTU3MWYwZi4uYWViOWJhOWQ4ZjRiY2E3MDRhMmY5N2Ey
Zjc0M2Q1MjRjY2M5OGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aWRsCkBAIC0xMTYsNyArMTE2LDkgQEAgdm9pZCB3ZWJraXRDYW5jZWxLZXlSZXF1ZXN0KGluIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHIKICNpZiBkZWZp
bmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiBUZXh0VHJhY2sg
YWRkVGV4dFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBs
YWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpCiAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOworcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tz
OwogcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKK3JlYWRvbmx5
IGF0dHJpYnV0ZSBWaWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNrczsKICNlbmRpZgogCiBbUmVmbGVj
dCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYUdyb3Vw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggZmJiYjNlODVl
MGRhNjc4MDExYWY4NGVmYzlhNTc5OWM2M2Y0NjNkNC4uMDEwNTg1NWZjZjI1NzE5NzQ5YzUxNjA4
YjQ2NDkyYTIwMWFjMTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
Y3BwCkBAIC04MCwxNCArODAsMTQgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSoKICAgICBIVE1M
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBIVE1MTWVkaWFFbGVt
ZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQgPT0g
cGFyZW50KQotICAgICAgICBwYXJlbnQtPmRpZEFkZFRyYWNrKHRoaXMpOworICAgICAgICBwYXJl
bnQtPmRpZEFkZFRleHRUcmFjayh0aGlzKTsKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0K
IAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNl
cnRpb25Qb2ludCkKIHsKICAgICBpZiAoIXBhcmVudE5vZGUoKSAmJiBXZWJDb3JlOjppc01lZGlh
RWxlbWVudChpbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIHRvTWVkaWFFbGVtZW50KGluc2VydGlv
blBvaW50KS0+ZGlkUmVtb3ZlVHJhY2sodGhpcyk7CisgICAgICAgIHRvTWVkaWFFbGVtZW50KGlu
c2VydGlvblBvaW50KS0+ZGlkUmVtb3ZlVGV4dFRyYWNrKHRoaXMpOwogICAgIEhUTUxFbGVtZW50
OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2YTk0MzUzZDNlMWU1MTk5NDcwNmVjMTRk
YjE5MjgwNzg5NTZlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9U
cmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29u
c3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJh
bHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6
ZGVzY3JpcHRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgZGVzY3JpcHRpb24sICgiZGVzY3JpcHRpb24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBtYWluOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVz
YyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFp
bkRlc2M7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6dHJhbnNsYXRpb25L
ZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
dHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgcmV0dXJuIHRyYW5zbGF0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5
OworfQorCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwg
UGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tC
YXNlKFRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1By
aXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAs
IG1fZW5hYmxlZCh0cmFja1ByaXZhdGUtPmVuYWJsZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVu
dCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRD
bGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2Fz
ZSBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQoQXVkaW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1
ZGlvVHJhY2tQcml2YXRlOjpEZXNjcmlwdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNr
OjpkZXNjcmlwdGlvbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9U
cmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdv
cmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW5E
ZXNjOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6VHJhbnNsYXRpb246Cisg
ICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAg
ICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVt
cHR5U3RyaW5nKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitBdWRpb1RyYWNr
Ojp+QXVkaW9UcmFjaygpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jv
b2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVjdGVkKGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29y
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25L
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbkRlc2NL
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xh
dGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNv
bW1lbnRhcnlLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEF1ZGlvVHJhY2s6OnNldEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVk
KQoreworICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCh0aGlzKTsKK30KKworaW50IEF1ZGlvVHJh
Y2s6OmluYmFuZFRyYWNrSW5kZXgoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmF1ZGlvVHJhY2tJbmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNWI4NDVkM2E3MjA5YjcwNmY3NGQwY2FjYmM5MWYwODg2ZDNmMzUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNk
ZWZpbmUgQXVkaW9UcmFja19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFj
a0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0g
MDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVk
aW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1
ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQXVkaW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2
aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJl
dHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1f
aWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVL
ZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3
b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCB7IHJldHVybiBlbXB0
eUF0b207IH0KKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGNvbnN0IGJvb2wpOworCisgICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgaW50IGluYmFu
ZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0Ns
aWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKKworICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkS2luZEtleXdvcmRQcm90ZWN0ZWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qg
T1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgYm9vbCBt
X2VuYWJsZWQ7CisgICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVkYjYzYzg1ZGQ5ODE4NGU2NjVmMWRiNjQyNzFjYTQ0YmRlNmUzMWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURF
T19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hh
YmxlCitdIGludGVyZmFjZSBBdWRpb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVkOwor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTRiYmNlODM1ZmUzMGViYjM2YTNhNzBlYWU3YTdiNmVmMDE0NzU3MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKwor
I2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitBdWRpb1RyYWNrTGlzdDo6QXVkaW9UcmFja0xpc3QoSFRN
TE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQoreworfQorCitBdWRpb1RyYWNrTGlz
dDo6fkF1ZGlvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5k
KFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJhY2spCit7CisgICAgUmVmUHRyPEF1ZGlvVHJh
Y2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRp
YSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4
KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NF
UlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3du
ZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsKKworICAgIHNjaGVk
dWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQorCitBdWRpb1RyYWNrKiBBdWRp
b1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXgg
PCBtX2luYmFuZFRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IG1f
aW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkg
PT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1
ZGlvVHJhY2sqPih0cmFjayk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlvVHJh
Y2sqIEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IGl0ZW0oaSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+
dHlwZSgpID09IFRyYWNrQmFzZTo6QXVkaW9UcmFjayk7CisgICAgICAgIEF1ZGlvVHJhY2sqIGF1
ZGlvVHJhY2sgPSBkeW5hbWljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKKyAgICAgICAgaWYg
KGF1ZGlvVHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gYXVkaW9UcmFjazsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFj
a0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yQXVkaW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNzE4YTNiYjQ1ZjhlYWNk
YTM0MWEyZjEwY2NkNTY3ZGFjOTMwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tMaXN0X2gKKyNkZWZpbmUgQXVkaW9UcmFja0xpc3Rf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1
ZGlvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogb3du
ZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQor
ICAgIH5BdWRpb1RyYWNrTGlzdCgpOworCisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRp
b1RyYWNrPik7CisgICAgQXVkaW9UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Cisg
ICAgQXVkaW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0Owor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxN
ZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMWNlMDhjMjRjOTQwNDE5NDBkNjM3
ODhiMzBiNGU5NDZjNjVlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sK
KyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBJbmRleGVkR2V0dGVyLAorICAgIEV2
ZW50VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFj
aGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2tMaXN0IHsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgQXVkaW9UcmFjayBpdGVtKGluIHVuc2lnbmVk
IGxvbmcgaW5kZXgpOworICAgIEF1ZGlvVHJhY2sgZ2V0VHJhY2tCeUlkKGluIERPTVN0cmluZyBp
ZCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsKKyAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNrOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ucmVtb3ZldHJhY2s7CisKKyAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAg
ICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwCmluZGV4IDNjMjc0YjFlMTRiOWI5MDYxZmQ4N2Y0MmY4NmFiYTIyZTVjODg0
MTAuLmQxMTRmYjZiMjFlNTllZGRmMWQ0ZWY0OWQ3NDc3MzJmZTczODVlOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTEwOCwxNCArMTA4LDEyIEBAIFRleHRU
cmFjayogVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKQogfQogCiBUZXh0VHJh
Y2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tD
bGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5
cGUpCi0gICAgOiBUcmFja0Jhc2UoY29udGV4dCwgVHJhY2tCYXNlOjpUZXh0VHJhY2spCisgICAg
OiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpUZXh0VHJhY2ssIGxhYmVsLCBsYW5ndWFnZSkKICAgICAs
IG1fY3VlcygwKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiAjaWYg
RU5BQkxFKFdFQlZUVF9SRUdJT05TKQogICAgICwgbV9yZWdpb25zKDApCiAjZW5kaWYKLSAgICAs
IG1fbWVkaWFFbGVtZW50KDApCi0gICAgLCBtX2xhYmVsKGxhYmVsKQotICAgICwgbV9sYW5ndWFn
ZShsYW5ndWFnZSkKICAgICAsIG1fbW9kZShkaXNhYmxlZEtleXdvcmQoKS5zdHJpbmcoKSkKICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fdHJhY2tUeXBlKHR5cGUpCkBAIC0xNDMsNiAr
MTQxLDMxIEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAgY2xlYXJDbGllbnQoKTsKIH0K
IAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6OmludGVyZmFjZU5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrOworfQorCitT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2s6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9CisKK0V2
ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrOjpl
bnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
Cit9CisKK2Jvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmRQcm90ZWN0ZWQoY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gVGV4dFRyYWNrOjppc1Zh
bGlkS2luZEtleXdvcmQodmFsdWUpOworfQorCiBib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRL
ZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IHN1
YnRpdGxlc0tleXdvcmQoKSkKQEAgLTE1OSwxNiArMTgyLDEzIEBAIGJvb2wgVGV4dFRyYWNrOjpp
c1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYg
a2luZCkKK3ZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3S2lu
ZCkKIHsKLSAgICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKKyAgICBTdHJpbmcgb2xkS2luZCA9
IGtpbmQoKTsKIAotICAgIGlmIChpc1ZhbGlkS2luZEtleXdvcmQoa2luZCkpCi0gICAgICAgIG1f
a2luZCA9IGtpbmQ7Ci0gICAgZWxzZQotICAgICAgICBtX2tpbmQgPSBzdWJ0aXRsZXNLZXl3b3Jk
KCk7CisgICAgVHJhY2tCYXNlOjpzZXRLaW5kKG5ld0tpbmQpOwogCi0gICAgaWYgKG1fY2xpZW50
ICYmIG9sZEtpbmQgIT0gbV9raW5kKQorICAgIGlmIChtX2NsaWVudCAmJiBvbGRLaW5kICE9IGtp
bmQoKSkKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRoaXMpOwogfQog
CkBAIC00MTEsNyArNDMxLDcgQEAgdm9pZCBUZXh0VHJhY2s6OmludmFsaWRhdGVUcmFja0luZGV4
KCkKIAogYm9vbCBUZXh0VHJhY2s6OmlzUmVuZGVyZWQoKQogewotICAgIGlmIChtX2tpbmQgIT0g
Y2FwdGlvbnNLZXl3b3JkKCkgJiYgbV9raW5kICE9IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICBp
ZiAoa2luZCgpICE9IGNhcHRpb25zS2V5d29yZCgpICYmIGtpbmQoKSAhPSBzdWJ0aXRsZXNLZXl3
b3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX21vZGUgIT0gc2hvd2lu
Z0tleXdvcmQoKSkKQEAgLTUwMiwxNyArNTIyLDE3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0
VHJhY2s+IFRleHRUcmFjazo6cGxhdGZvcm1UZXh0VHJhY2soKQogICAgIGlmIChtX3BsYXRmb3Jt
VGV4dFRyYWNrKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybVRleHRUcmFjazsKIAotICAgIFBs
YXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0
aW9uOwotICAgIGlmIChtX2tpbmQgPT0gc3VidGl0bGVzS2V5d29yZCgpKQotICAgICAgICBraW5k
ID0gUGxhdGZvcm1UZXh0VHJhY2s6OlN1YnRpdGxlOwotICAgIGVsc2UgaWYgKG1fa2luZCA9PSBj
YXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0
aW9uOwotICAgIGVsc2UgaWYgKG1fa2luZCA9PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCi0gICAg
ICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6RGVzY3JpcHRpb247Ci0gICAgZWxzZSBpZiAo
bV9raW5kID09IGNoYXB0ZXJzS2V5d29yZCgpKQotICAgICAgICBraW5kID0gUGxhdGZvcm1UZXh0
VHJhY2s6OkNoYXB0ZXI7Ci0gICAgZWxzZSBpZiAobV9raW5kID09IG1ldGFkYXRhS2V5d29yZCgp
KQotICAgICAgICBraW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOworICAgIFBsYXRm
b3JtVGV4dFRyYWNrOjpUcmFja0tpbmQgcGxhdGZvcm1LaW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6
OkNhcHRpb247CisgICAgaWYgKGtpbmQoKSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAg
IHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRsZTsKKyAgICBlbHNlIGlm
IChraW5kKCkgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgICAgIHBsYXRmb3JtS2luZCA9IFBs
YXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9uOworICAgIGVsc2UgaWYgKGtpbmQoKSA9PSBkZXNjcmlw
dGlvbnNLZXl3b3JkKCkpCisgICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNr
OjpEZXNjcmlwdGlvbjsKKyAgICBlbHNlIGlmIChraW5kKCkgPT0gY2hhcHRlcnNLZXl3b3JkKCkp
CisgICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDaGFwdGVyOworICAg
IGVsc2UgaWYgKGtpbmQoKSA9PSBtZXRhZGF0YUtleXdvcmQoKSkKKyAgICAgICAgcGxhdGZvcm1L
aW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOwogCiAgICAgUGxhdGZvcm1UZXh0VHJh
Y2s6OlRyYWNrVHlwZSB0eXBlID0gUGxhdGZvcm1UZXh0VHJhY2s6Ok91dE9mQmFuZDsKICAgICBp
ZiAobV90cmFja1R5cGUgPT0gVHJhY2tFbGVtZW50KQpAQCAtNTIyLDcgKzU0Miw3IEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IFRleHRUcmFjazo6cGxhdGZvcm1UZXh0VHJhY2soKQog
ICAgIGVsc2UgaWYgKG1fdHJhY2tUeXBlID09IEluQmFuZCkKICAgICAgICAgdHlwZSA9IFBsYXRm
b3JtVGV4dFRyYWNrOjpJbkJhbmQ7CiAKLSAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZv
cm1UZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBtX2xhYmVsLCBtX2xhbmd1YWdlLCBraW5kLCB0eXBl
KTsKKyAgICBtX3BsYXRmb3JtVGV4dFRyYWNrID0gUGxhdGZvcm1UZXh0VHJhY2s6OmNyZWF0ZSh0
aGlzLCBsYWJlbCgpLCBsYW5ndWFnZSgpLCBwbGF0Zm9ybUtpbmQsIHR5cGUpOwogCiAgICAgcmV0
dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CiB9CkBAIC01MzQsNyArNTU0LDcgQEAgYm9vbCBUZXh0
VHJhY2s6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QKICAgICAvLyBkaXJlY3RvcnMgY29t
bWVudGFyeSBpcyBub3QgIm1haW4gcHJvZ3JhbSIgYmVjYXVzZSBpdCBpcyBub3QgZXNzZW50aWFs
IGZvciB0aGUgcHJlc2VudGF0aW9uLiBIVE1MNSBkb2Vzbid0IGhhdmUKICAgICAvLyBhIHdheSB0
byBleHByZXNzIHRoaXMgaW4gYSBtYWNoaW5lLXJlYWJsZSBmb3JtLCBpdCBpcyB0eXBpY2FsbHkg
ZG9uZSB3aXRoIHRoZSB0cmFjayBsYWJlbCwgc28gd2UgYXNzdW1lIHRoYXQgY2FwdGlvbgogICAg
IC8vIHRyYWNrcyBhcmUgbWFpbiBjb250ZW50IGFuZCBhbGwgb3RoZXIgdHJhY2sgdHlwZXMgYXJl
IG5vdC4KLSAgICByZXR1cm4gbV9raW5kID09IGNhcHRpb25zS2V5d29yZCgpOworICAgIHJldHVy
biBraW5kKCkgPT0gY2FwdGlvbnNLZXl3b3JkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDU3Njk0NWJiZTUyMWNk
NmEyZjZmZmZmZDM3ZTU2YWQ2NjcyNjBmZjMuLjM2ZDVhMDZiY2U3ZjgzM2Q2ZTlmYTZkNWM4YTcy
N2MyNGEwYWYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApAQCAtNDEs
NyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxNZWRpYUVsZW1l
bnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dFRyYWNrOwogY2xh
c3MgVGV4dFRyYWNrQ3VlOwogY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNr
KiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSA9IDA7CiB9OwogCi1jbGFzcyBUZXh0VHJhY2sg
OiBwdWJsaWMgVHJhY2tCYXNlCitjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBw
dWJsaWMgRXZlbnRUYXJnZXQKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAg
ICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50CiAjZW5kaWYKQEAgLTczLDMyICs3Mywy
NiBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFjaygpOwogCisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dDsKKwogICAgIHN0YXRpYyBUZXh0VHJhY2sqIGNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAgIHN0
YXRpYyBUZXh0VHJhY2sqIGNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwogCi0gICAgdm9pZCBz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVu
dCA9IGVsZW1lbnQ7IH0KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJl
dHVybiBtX21lZGlhRWxlbWVudDsgfQotCi0gICAgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KLSAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJik7
Ci0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25zS2V5d29yZCgpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGNoYXB0ZXJzS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIG1ldGFkYXRhS2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCB7IHJldHVybiBzdWJ0aXRsZXNL
ZXl3b3JkKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAKLSAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBt
X2xhYmVsOyB9Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKSB7
IG1fbGFiZWwgPSBsYWJlbDsgfQotCi0gICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWlj
U3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KLQogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGRpc2FibGVkS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGhpZGRlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaG93aW5nS2V5d29yZCgpOwogCisgICAgdmlydHVhbCB2b2lkIHNldEtpbmQoY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CisKICAgICBBdG9taWNTdHJpbmcgbW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2RlKGNvbnN0IEF0
b21pY1N0cmluZyYpOwogCkBAIC0xMDksOCArMTAzLDggQEAgcHVibGljOgogICAgIFRleHRUcmFj
a0N1ZUxpc3QqIGN1ZXMoKTsKICAgICBUZXh0VHJhY2tDdWVMaXN0KiBhY3RpdmVDdWVzKCkgY29u
c3Q7CiAKLSAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KLSAgICBUZXh0
VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBUZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICB2b2lk
IGFkZEN1ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogICAgIHZvaWQgcmVtb3ZlQ3VlKFRl
eHRUcmFja0N1ZSosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTE1NCwxNSArMTQ4LDI1IEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBwbGF0Zm9ybVRleHRUcmFjaygp
OwogI2VuZGlmCiAKKyAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OnJlZjsKKyAgICB1
c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OmRlcmVmOworCiBwcm90ZWN0ZWQ6CiAgICAgVGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwogI2lmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQogICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIHJl
Z2lvbkxpc3QoKTsKICNlbmRpZgogCisgICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5kS2V5d29y
ZFByb3RlY3RlZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKICAgICBSZWZQdHI8VGV4
dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIHsgZGVyZWYoKTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VC
VlRUX1JFR0lPTlMpCiAgICAgVGV4dFRyYWNrUmVnaW9uTGlzdCogZW5zdXJlVGV4dFRyYWNrUmVn
aW9uTGlzdCgpOwpAQCAtMTc3LDEwICsxODEsOCBAQCBwcml2YXRlOgogCiAgICAgVGV4dFRyYWNr
Q3VlTGlzdCogZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOwogCi0gICAgSFRNTE1lZGlhRWxlbWVu
dCogbV9tZWRpYUVsZW1lbnQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fa2luZDsKLSAgICBBdG9taWNT
dHJpbmcgbV9sYWJlbDsKLSAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIEF0b21pY1N0cmluZyBtX21vZGU7CiAgICAg
VGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBUZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKaW5kZXggMjkz
YjNkMDI3MDFiMDk1NWQyZmE4Yjc2OTQ4MGRhY2IwMWQ3ZDBlYy4uYzZhZDJkMTdiZTY5Y2VkODNi
MGQ2NDk4MWIzMzRjZWQwNzlkY2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuY3BwCkBAIC0zMCwyMyArMzAsMTYgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKLSNp
bmNsdWRlICJUcmFja0V2ZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBUZXh0
VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX293bmVyKG93bmVyKQotICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVGV4dFRy
YWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCi0gICAgLCBtX2Rpc3BhdGNoaW5nRXZlbnRz
KDApCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQogewotICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwogfQogCiBUZXh0VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlz
dCgpCkBAIC01OCw4ICs1MSwxMiBAQCB1bnNpZ25lZCBUZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBj
b25zdAogICAgIHJldHVybiBtX2FkZFRyYWNrVHJhY2tzLnNpemUoKSArIG1fZWxlbWVudFRyYWNr
cy5zaXplKCkgKyBtX2luYmFuZFRyYWNrcy5zaXplKCk7CiB9CiAKLWludCBUZXh0VHJhY2tMaXN0
OjpnZXRUcmFja0luZGV4KFRleHRUcmFjayAqdGV4dFRyYWNrKQoraW50IFRleHRUcmFja0xpc3Q6
OmdldFRyYWNrSW5kZXgoVHJhY2tCYXNlICp0cmFjaykKIHsKKyAgICBpZiAodHJhY2stPnR5cGUo
KSAhPSBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFRleHRU
cmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOworCiAgICAg
aWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxMb2FkYWJsZVRleHRUcmFjayo+KHRleHRUcmFjaykt
PnRyYWNrRWxlbWVudEluZGV4KCk7CiAKQEAgLTk4LDcgKzk1LDcgQEAgaW50IFRleHRUcmFja0xp
c3Q6OmdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRyYWNrICp0ZXh0
VHJhY2spCiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luYmFuZFRyYWNr
cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1faW5iYW5kVHJhY2tzW2ldLT5pc1JlbmRl
cmVkKCkpCisgICAgICAgIGlmICghZ2V0SW5iYW5kVHJhY2soaSktPmlzUmVuZGVyZWQoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKG1faW5iYW5kVHJhY2tz
W2ldID09IHRleHRUcmFjaykKQEAgLTExMSw3ICsxMDgsNyBAQCBpbnQgVGV4dFRyYWNrTGlzdDo6
Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sgKnRleHRUcmFj
aykKICAgICByZXR1cm4gLTE7CiB9CiAKLVRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkKK1RleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKIHsKICAgICAvLyA0LjguMTAuMTIuMSBUZXh0IHRyYWNrIG1vZGVsCiAgICAg
Ly8gVGhlIHRleHQgdHJhY2tzIGFyZSBzb3J0ZWQgYXMgZm9sbG93czoKQEAgLTEyOSwzNiArMTI2
LDQ1IEBAIFRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIAog
ICAgIGluZGV4IC09IG1fYWRkVHJhY2tUcmFja3Muc2l6ZSgpOwogICAgIGlmIChpbmRleCA8IG1f
aW5iYW5kVHJhY2tzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzW2luZGV4
XS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGdldEluYmFuZFRyYWNrKGluZGV4KTsKIAogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIFRleHRUcmFja0xpc3Q6OmludmFsaWRhdGVUcmFja0luZGV4ZXNB
ZnRlclRyYWNrKFRleHRUcmFjayogdHJhY2spCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6Omdl
dEluYmFuZFRyYWNrKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIFZlY3RvcjxSZWZQdHI8
VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOworICAgIFRyYWNrQmFzZSogdHJhY2sgPSBtX2luYmFu
ZFRyYWNrc1tpbmRleF0uZ2V0KCk7CisgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tC
YXNlOjpUZXh0VHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFj
ayk7Cit9CiAKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVy
VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBub3RGb3VuZDsK
ICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7
Ci0gICAgICAgIHRyYWNrcyA9ICZtX2VsZW1lbnRUcmFja3M7CisgICAgICAgIGluZGV4ID0gbV9l
bGVtZW50VHJhY2tzLmZpbmQodHJhY2spOworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8
IG1fZWxlbWVudFRyYWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fZWxlbWVudFRyYWNr
cy5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0luZGV4KCk7CisgICAgfSBlbHNlIGlmICh0cmFj
ay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykgeworICAgICAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGluZGV4ID0gbV9hZGRUcmFja1RyYWNrcy5m
aW5kKHRyYWNrKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2FkZFRyYWNrVHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbV9hZGRUcmFja1Ry
YWNrc1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKKyAgICB9IGVsc2UgaWYgKHRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkgeworICAgICAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpIHsKKyAgICAgICAgICAgIGluZGV4ID0gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFj
ayk7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJh
bmRUcmFja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2luYmFuZFRyYWNrc1tpXS0+aW52
YWxpZGF0ZVRyYWNrSW5kZXgoKTsKLSAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9
PSBUZXh0VHJhY2s6OkFkZFRyYWNrKSB7Ci0gICAgICAgIHRyYWNrcyA9ICZtX2FkZFRyYWNrVHJh
Y2tzOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgbV9pbmJhbmRUcmFja3NbaV0tPmludmFsaWRhdGVUcmFja0lu
ZGV4KCk7Ci0gICAgfSBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJ
bkJhbmQpCi0gICAgICAgIHRyYWNrcyA9ICZtX2luYmFuZFRyYWNrczsKLSAgICBlbHNlCisgICAg
ICAgICAgICBnZXRJbmJhbmRUcmFjayhpKS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKKyAgICB9
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBzaXplX3QgaW5kZXgg
PSB0cmFja3MtPmZpbmQodHJhY2spOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdHJhY2tzLT5zaXpl
KCk7ICsraSkKLSAgICAgICAgdHJhY2tzLT5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0luZGV4
KCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBwcnBUcmFjaykKQEAgLTE3Myw1OCArMTc5LDY3IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBw
ZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBwcnBUcmFjaykKICAgICAgICAgbV9lbGVtZW50VHJh
Y2tzLmluc2VydChpbmRleCwgdHJhY2spOwogICAgIH0gZWxzZSBpZiAodHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6SW5CYW5kKSB7CiAgICAgICAgIC8vIEluc2VydCB0cmFja3MgYWRk
ZWQgZm9yIGluLWJhbmQgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCi0gICAgICAgIHNpemVfdCBp
bmRleCA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFjayo+KHRyYWNrLmdldCgpKS0+aW5iYW5k
VHJhY2tJbmRleCgpOworICAgICAgICBzaXplX3QgaW5kZXggPSBkeW5hbWljX2Nhc3Q8SW5iYW5k
VGV4dFRyYWNrKj4odHJhY2suZ2V0KCkpLT5pbmJhbmRUcmFja0luZGV4KCk7CiAgICAgICAgIG1f
aW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOwogICAgIH0gZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRy
YWNrKHRyYWNrLmdldCgpKTsKIAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8
IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtX293bmVyKTsKLSAgICB0cmFjay0+c2V0TWVkaWFF
bGVtZW50KG1fb3duZXIpOworICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRy
YWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVt
ZW50KG93bmVyKCkpOwogCiAgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRleHRUcmFjayogdHJhY2spCit2
b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQogewotICAgIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOwotCi0gICAgaWYgKHRyYWNrLT50cmFj
a1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKLSAgICAgICAgdHJhY2tzID0gJm1f
ZWxlbWVudFRyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRy
YWNrOjpBZGRUcmFjaykKLSAgICAgICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0gICAg
ZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAg
ICB0cmFja3MgPSAmbV9pbmJhbmRUcmFja3M7CisgICAgaWYgKHRyYWNrLT50eXBlKCkgIT0gVHJh
Y2tCYXNlOjpUZXh0VHJhY2spCisgICAgICAgIHJldHVybjsKKyAgICBUZXh0VHJhY2sqIHRleHRU
cmFjayA9IHN0YXRpY19jYXN0PFRleHRUcmFjayo+KHRyYWNrKTsKKworICAgIHNpemVfdCBpbmRl
eCA9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFj
azo6VHJhY2tFbGVtZW50KQorICAgICAgICBtX2VsZW1lbnRUcmFja3MuZmluZCh0ZXh0VHJhY2sp
OworICAgIGVsc2UgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRU
cmFjaykKKyAgICAgICAgbV9hZGRUcmFja1RyYWNrcy5maW5kKHRleHRUcmFjayk7CisgICAgZWxz
ZSBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAg
ICAgbV9pbmJhbmRUcmFja3MuZmluZCh0ZXh0VHJhY2spOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJh
Y2spOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2spOworICAgIGludmFsaWRhdGVU
cmFja0luZGV4ZXNBZnRlclRyYWNrKHRleHRUcmFjayk7CiAKLSAgICBBU1NFUlQodHJhY2stPm1l
ZGlhRWxlbWVudCgpID09IG1fb3duZXIpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7
CisgICAgQVNTRVJUKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0ZXh0
VHJhY2stPnNldE1lZGlhRWxlbWVudCgwKTsKIAotICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsK
KyAgICBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVu
dCkKKyAgICAgICAgbV9lbGVtZW50VHJhY2tzLnJlbW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAo
dGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQorICAgICAgICBt
X2FkZFRyYWNrVHJhY2tzLnJlbW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgbV9pbmJhbmRUcmFja3Mu
cmVtb3ZlKGluZGV4KTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi1ib29sIFRleHRUcmFja0xpc3Q6OmNvbnRhaW5zKFRleHRUcmFjayogdHJhY2spIGNvbnN0
Citib29sIFRleHRUcmFja0xpc3Q6OmNvbnRhaW5zKFRyYWNrQmFzZSogdHJhY2spIGNvbnN0CiB7
Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7Ci0gICAg
Ci0gICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkK
LSAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+
dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKLSAgICAgICAgdHJhY2tzID0gJm1f
YWRkVHJhY2tUcmFja3M7Ci0gICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRU
cmFjazo6SW5CYW5kKQotICAgICAgICB0cmFja3MgPSAmbV9pbmJhbmRUcmFja3M7Ci0gICAgZWxz
ZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAodHJhY2stPnR5cGUoKSAh
PSBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFRleHRU
cmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOwogICAgIAot
ICAgIHJldHVybiB0cmFja3MtPmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0
VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQorICAgICAgICBy
ZXR1cm4gbV9lbGVtZW50VHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0
ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCisgICAgICAgIHJl
dHVybiBtX2FkZFRyYWNrVHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0
ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICByZXR1
cm4gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFjaykgIT0gbm90Rm91bmQ7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdApAQCAtMjMyLDQxICsyNDcsNCBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25z
dAogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrTGlzdDsKIH0K
IAotdm9pZCBUZXh0VHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IHRyYWNrKQotewotICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1i
YW5kIHRleHQgdHJhY2tzCi0gICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKLSAgICAv
LyAuLi4gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFk
ZHRyYWNrLCB0aGF0IGRvZXMgbm90IAotICAgIC8vIGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFi
bGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRoIAotICAgIC8v
IHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0
VHJhY2sgb2JqZWN0LCBhdCAKLSAgICAvLyB0aGUgbWVkaWEgZWxlbWVudCdzIHRleHRUcmFja3Mg
YXR0cmlidXRlJ3MgVGV4dFRyYWNrTGlzdCBvYmplY3QuCi0KLSAgICBSZWZQdHI8VGV4dFRyYWNr
PiB0cmFja1JlZiA9IHRyYWNrOwotICAgIFRyYWNrRXZlbnRJbml0IGluaXRpYWxpemVyOwotICAg
IGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7Ci0gICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9
IGZhbHNlOwotICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKLQotICAgIG1fcGVu
ZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFj
a0V2ZW50LCBpbml0aWFsaXplcikpOwotICAgIGlmICghbV9wZW5kaW5nRXZlbnRUaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0K
LQotdm9pZCBUZXh0VHJhY2tMaXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJh
Y2tMaXN0PiopCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOwot
Ci0gICAgKyttX2Rpc3BhdGNoaW5nRXZlbnRzOwotICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBl
bmRpbmdFdmVudHMpOwotICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOwot
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIElHTk9SRV9F
WENFUFRJT04pOwotICAgIC0tbV9kaXNwYXRjaGluZ0V2ZW50czsKLX0KLQotTm9kZSogVGV4dFRy
YWNrTGlzdDo6b3duZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX293bmVyOwotfQotCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggMWVlMTVj
OTNjOTg3OWU1YzlhYTVlNWQ0YjY5MWQ0N2MwNTQ2MmEyMS4uZWY1MjY3ZDQxNThkODU5MDY5MzU0
NDBmNmM4MmYwODhlNGVkMzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmgKQEAgLTI4LDIxICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
Ci0jaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0j
aW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFRleHRUcmFjazsKLWNsYXNzIFRl
eHRUcmFja0xpc3Q7CiAKLWNsYXNzIFRleHRUcmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZXh0VHJhY2tMaXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRleHRUcmFja0xpc3Qg
OiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dFRyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKQEAgLTUwLDU0ICs0MiwyNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIH5UZXh0VHJhY2tMaXN0KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKLSAgICBpbnQgZ2V0VHJhY2tJbmRleChUZXh0VHJhY2sqKTsKICAgICBpbnQgZ2V0VHJh
Y2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sqKTsKLSAgICBib29sIGNv
bnRhaW5zKFRleHRUcmFjayopIGNvbnN0OwogCi0gICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVk
IGluZGV4KTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IGdldFRyYWNrSW5kZXgoVHJhY2tCYXNlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSopIGNvbnN0IE9WRVJSSURFOworCisgICAg
VGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPFRleHRUcmFjaz4pOwotICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFjayopOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNlKikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVu
dFRhcmdldAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6cmVmOwotICAgIHVz
aW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD46OmRlcmVmOwotICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dDsgfQotCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0
cmFjayk7Ci0KLSAgICB2b2lkIGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAwOyB9Ci0gICAgTm9k
ZSogb3duZXIoKSBjb25zdDsKLQotICAgIGJvb2wgaXNGaXJpbmdFdmVudExpc3RlbmVycygpIHsg
cmV0dXJuIG1fZGlzcGF0Y2hpbmdFdmVudHM7IH0KIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tM
aXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICAv
LyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZl
bnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0KLSAgICB2b2lk
IHNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwotICAgIHZvaWQg
YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKTsKLQorICAgIFRleHRU
cmFjayogZ2V0SW5iYW5kVHJhY2sodW5zaWduZWQpIGNvbnN0OwogICAgIHZvaWQgaW52YWxpZGF0
ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKik7CiAKLSAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9vd25lcjsKLQot
ICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOwotICAgIFRpbWVyPFRl
eHRUcmFja0xpc3Q+IG1fcGVuZGluZ0V2ZW50VGltZXI7Ci0KLSAgICBFdmVudFRhcmdldERhdGEg
bV9ldmVudFRhcmdldERhdGE7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV9hZGRU
cmFja1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX2VsZW1lbnRUcmFj
a3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV9pbmJhbmRUcmFja3M7Ci0KLSAg
ICBpbnQgbV9kaXNwYXRjaGluZ0V2ZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlRl
eHRUcmFjaz4gPiBtX2FkZFRyYWNrVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
VGV4dFRyYWNrPiA+IG1fZWxlbWVudFRyYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRleCA2YTJjMzU4MjNl
NjE5NjJhMzdjOWY4ZjRjZWZkOTg5ZGRhYjUwZGZlLi4zNzZkODUyZTQ1ZmY3MGFjZTUyNjBkMmQw
MWI4Y2E5ZGIxZTk2MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3Bw
CkBAIC0zMCw4ICszMCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRyYWNrQmFzZTo6
VHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgdHlwZSkKLSAg
ICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorVHJhY2tCYXNlOjpUcmFja0Jh
c2UoVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhbmd1YWdlKQorICAgIDogbV9tZWRpYUVsZW1lbnQoMCkKKyAgICAsIG1fbGFiZWwobGFi
ZWwpCisgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQogewogICAgIEFTU0VSVCh0eXBlICE9IEJh
c2VUcmFjayk7CiAgICAgbV90eXBlID0gdHlwZTsKQEAgLTQxLDI0ICs0MywxNCBAQCBUcmFja0Jh
c2U6On5UcmFja0Jhc2UoKQogewogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRyYWNrQmFzZTo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit2b2lkIFRyYWNrQmFzZTo6c2V0S2luZChjb25zdCBBdG9t
aWNTdHJpbmcmIGtpbmQpCiB7Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JU
ZXh0VHJhY2s7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRyYWNrQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLX0KKyAgICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKIAotRXZlbnRUYXJnZXRE
YXRhKiBUcmFja0Jhc2U6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50
VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBUcmFja0Jhc2U6OmVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBpZiAo
aXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVjdGVkKGtpbmQpKQorICAgICAgICBtX2tpbmQgPSBraW5k
OworICAgIGVsc2UKKyAgICAgICAgbV9raW5kID0gZGVmYXVsdEtpbmRLZXl3b3JkKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5o
CmluZGV4IGMwMDY2MGYwNTNhZDY0OTQxNjU4ZjIwZDc1MDMwY2FiYzkzMjc5ODkuLjY1YzQ1MDI4
YWQ0ZWZhNjk4MTFiZmUxZjdhYjRlMDIyZjgzMWQ1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0Jhc2UuaApAQCAtMzMsMzUgKzMzLDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CiAKLWNsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldCB7CitjbGFzcyBUcmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFj
a0Jhc2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja0Jhc2UoKTsKIAogICAgIGVudW0g
VHlwZSB7IEJhc2VUcmFjaywgVGV4dFRyYWNrLCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrIH07CiAg
ICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwotICAg
IAotICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNv
dW50ZWQ8VHJhY2tCYXNlPjo6ZGVyZWY7CisgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7IH0KKyAgICBI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsg
fQorCisgICAgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIEF0b21p
Y1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICB2b2lkIHNldExh
YmVsKGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CisKKyAg
ICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9Cisg
ICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFu
Z3VhZ2UgPSBsYW5ndWFnZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAw
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBU
eXBlKTsKLSAgICAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRh
KCk7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
OworICAgIFRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxhbmd1YWdlKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZEtl
eXdvcmRQcm90ZWN0ZWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCA9IDA7CisK
KyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKIAogcHJpdmF0ZToKICAgICBU
eXBlIG1fdHlwZTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
LSAgICAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIEF0b21pY1N0
cmluZyBtX2tpbmQ7CisgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CisgICAgQXRvbWljU3RyaW5n
IG1fbGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMGRjNWNlM2MyZTM3
OWU2YmMxMDNhZTVmMWRiMGMzZTNhY2ZhOTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlICJUcmFja0V2
ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitUcmFja0xpc3RCYXNlOjpUcmFj
a0xpc3RCYXNlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX293bmVyKG93bmVy
KQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVHJhY2tMaXN0QmFzZTo6YXN5bmNF
dmVudFRpbWVyRmlyZWQpCisgICAgLCBtX2Rpc3BhdGNoaW5nRXZlbnRzKDApCit7CisgICAgQVNT
RVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Cit9CisKK1RyYWNrTGlzdEJhc2U6On5UcmFja0xp
c3RCYXNlKCkKK3sKK30KKwordW5zaWduZWQgVHJhY2tMaXN0QmFzZTo6bGVuZ3RoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbmJhbmRUcmFja3Muc2l6ZSgpOworfQorCitpbnQgVHJhY2tMaXN0
QmFzZTo6Z2V0VHJhY2tJbmRleChUcmFja0Jhc2UgKnRyYWNrKQoreworICAgIHJldHVybiBtX2lu
YmFuZFRyYWNrcy5maW5kKHRyYWNrKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjpyZW1vdmUo
VHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX2luYmFuZFRyYWNrcy5m
aW5kKHRyYWNrKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVCh0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7CisgICAgdHJh
Y2stPnNldE1lZGlhRWxlbWVudCgwKTsKKworICAgIFJlZlB0cjxUcmFja0Jhc2U+IHRyYWNrUmVm
ID0gbV9pbmJhbmRUcmFja3NbaW5kZXhdOworCisgICAgbV9pbmJhbmRUcmFja3MucmVtb3ZlKGlu
ZGV4KTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFja1JlZi5yZWxlYXNlKCkpOwor
fQorCitib29sIFRyYWNrTGlzdEJhc2U6OmNvbnRhaW5zKFRyYWNrQmFzZSogdHJhY2spIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOwor
fQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRy
PFRyYWNrQmFzZT4gdHJhY2spCit7CisgICAgLy8gNC44LjEwLjUgTG9hZGluZyB0aGUgbWVkaWEg
cmVzb3VyY2UKKyAgICAvLyAuLi4KKyAgICAvLyBGaXJlIGEgdHJ1c3RlZCBldmVudCB3aXRoIHRo
ZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKKyAgICAvLyBub3Qg
Y2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGgg
dGhlIHRyYWNrCisgICAgLy8gYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSBuZXcgVCBvYmpl
Y3QsIGF0IHRoaXMKKyAgICAvLyBUcmFja0xpc3RCYXNlIG9iamVjdC4KKworICAgIFJlZlB0cjxU
cmFja0Jhc2U+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6
ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5i
dWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisg
ICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmFkZHRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90
KDApOworfQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudChQ
YXNzUmVmUHRyPFRyYWNrQmFzZT4gdHJhY2spCit7CisgICAgLy8gNC44LjEwLjYgT2Zmc2V0cyBp
bnRvIHRoZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIElmIGF0IGFueSB0aW1lIHRoZSB1c2VyIGFn
ZW50IGxlYXJucyB0aGF0IGFuIGF1ZGlvIG9yIHZpZGVvIHRyYWNrIGhhcworICAgIC8vIGVuZGVk
IGFuZCBhbGwgbWVkaWEgZGF0YSByZWxhdGluZyB0byB0aGF0IHRyYWNrIGNvcnJlc3BvbmRzIHRv
IHBhcnRzIG9mCisgICAgLy8gdGhlIG1lZGlhIHRpbWVsaW5lIHRoYXQgYXJlIGJlZm9yZSB0aGUg
ZWFybGllc3QgcG9zc2libGUgcG9zaXRpb24sIHRoZQorICAgIC8vIHVzZXIgYWdlbnQgbWF5IHF1
ZXVlIGEgdGFzayB0byByZW1vdmUgdGhlIHRyYWNrIGZyb20gdGhlIGF1ZGlvVHJhY2tzCisgICAg
Ly8gYXR0cmlidXRlJ3MgVHJhY2tMaXN0QmFzZSBvYmplY3Qgb3IgdGhlIHZpZGVvVHJhY2tzIGF0
dHJpYnV0ZSdzCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QgYXMgYXBwcm9wcmlhdGUgYW5k
IHRoZW4gZmlyZSBhIHRydXN0ZWQgZXZlbnQKKyAgICAvLyB3aXRoIHRoZSBuYW1lIHJlbW92ZXRy
YWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsCisgICAgLy8g
YW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGggdGhlIHRyYWNrIGF0
dHJpYnV0ZQorICAgIC8vIGluaXRpYWxpemVkIHRvIHRoZSBUIG9yIFQgb2JqZWN0IHJlcHJlc2Vu
dGluZyB0aGUKKyAgICAvLyB0cmFjaywgYXQgdGhlIG1lZGlhIGVsZW1lbnQncyBhZm9yZW1lbnRp
b25lZCBUcmFja0xpc3RCYXNlIG9yCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QuCisKKyAg
ICBSZWZQdHI8VHJhY2tCYXNlPiB0cmFja1JlZiA9IHRyYWNrOworICAgIFRyYWNrRXZlbnRJbml0
IGluaXRpYWxpemVyOworICAgIGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7CisgICAgaW5p
dGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBm
YWxzZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICghbV9w
ZW5kaW5nRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUNoYW5n
ZUV2ZW50KCkKK3sKKyAgICAvLyA0LjguMTAuNiBPZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291
cmNlCisgICAgLy8gV2hlbmV2ZXIgYW4gYXVkaW8gdHJhY2sgaW4gYW4gVHJhY2tMaXN0QmFzZSBp
cyBlbmFibGVkIG9yIGRpc2FibGVkLCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IG11c3QgcXVldWUg
YSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZQorICAgIC8v
IFRyYWNrTGlzdEJhc2Ugb2JqZWN0LgorCisgICAgRXZlbnRJbml0IGluaXRpYWxpemVyOworICAg
IGluaXRpYWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxl
ID0gZmFsc2U7CisKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNoYW5nZUV2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICghbV9wZW5kaW5n
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjphc3luY0V2ZW50VGltZXJGaXJl
ZChUaW1lcjxUcmFja0xpc3RCYXNlPiopCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBw
ZW5kaW5nRXZlbnRzOworCisgICAgKyttX2Rpc3BhdGNoaW5nRXZlbnRzOworICAgIG1fcGVuZGlu
Z0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdF
dmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsg
KytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxl
YXNlKCksIElHTk9SRV9FWENFUFRJT04pOworICAgIC0tbV9kaXNwYXRjaGluZ0V2ZW50czsKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlz
dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ1ZmE1NjJlYjc0YWU0NTk2NzYyYWIzNTU3MzNjZGU0NjUzZDVjYjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRyYWNrTGlzdEJhc2VfaAor
I2RlZmluZSBUcmFja0xpc3RCYXNlX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1
ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgVHJhY2tCYXNlOworCitjbGFz
cyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgflRyYWNrTGlzdEJhc2UoKTsKKworICAgIHZp
cnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0VHJhY2tJ
bmRleChUcmFja0Jhc2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlKikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UqKTsKKworICAgIC8vIEV2
ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdCA9IDA7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPjo6cmVmOwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRlcmVmOworICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dDsgfQorCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihhZGR0cmFjayk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjaGFuZ2Up
OworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3ZldHJhY2spOworCisg
ICAgdm9pZCBjbGVhck93bmVyKCkgeyBtX293bmVyID0gMDsgfQorICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorCisgICAgYm9vbCBpc0Zpcmlu
Z0V2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9kaXNwYXRjaGluZ0V2ZW50czsgfQorCisgICAg
Ly8gTmVlZHMgdG8gYmUgcHVibGljIHNvIHRyYWNrcyBjYW4gY2FsbCBpdAorICAgIHZvaWQgc2No
ZWR1bGVDaGFuZ2VFdmVudCgpOworCitwcm90ZWN0ZWQ6CisgICAgVHJhY2tMaXN0QmFzZShIVE1M
TWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBzY2hl
ZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUcmFja0Jhc2U+KTsKKyAgICB2b2lkIHNjaGVk
dWxlUmVtb3ZlVHJhY2tFdmVudChQYXNzUmVmUHRyPFRyYWNrQmFzZT4pOworCisgICAgVmVjdG9y
PFJlZlB0cjxUcmFja0Jhc2U+ID4gbV9pbmJhbmRUcmFja3M7CisKK3ByaXZhdGU6CisgICAgLy8g
RXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9
CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgdm9pZCBh
c3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUcmFja0xpc3RCYXNlPiopOworCisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fb3du
ZXI7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBU
aW1lcjxUcmFja0xpc3RCYXNlPiBtX3BlbmRpbmdFdmVudFRpbWVyOworCisgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgaW50IG1fZGlzcGF0Y2hpbmdFdmVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjVjZTAyOGEzMmQy
Mzg2ZjBiYzYwODllODgzZjY1NjFjYmViNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIlZpZGVvVHJhY2suaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJU
cmFja0Jhc2UuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3
b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0
ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIGFsdGVybmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoIm1haW4iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzaWduOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMs
ICgic3VidGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiBzdWJ0aXRsZXM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6
Y29tbWVudGFyeUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNvbW1lbnRhcnk7Cit9CisKK1ZpZGVvVHJh
Y2s6OlZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVv
VHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpW
aWRlb1RyYWNrLCB0cmFja1ByaXZhdGUtPmxhYmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2Uo
KSkKKyAgICAsIG1faWQodHJhY2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9zZWxlY3RlZCh0cmFj
a1ByaXZhdGUtPnNlbGVjdGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3By
aXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwor
CisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgVmlkZW9UcmFja1By
aXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0
aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6Q2FwdGlvbnM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3Jk
KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgor
ICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOgorICAgICAgICBzZXRLaW5kKFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVv
VHJhY2tQcml2YXRlOjpTdWJ0aXRsZXM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3Vi
dGl0bGVzS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJp
dmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5
S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6
Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworVmlkZW9UcmFjazo6flZpZGVvVHJhY2soKQoreworICAgIG1fcHJpdmF0
ZS0+c2V0Q2xpZW50KDApOworfQorCitib29sIFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kS2V5d29y
ZFByb3RlY3RlZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2
YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKHZhbHVlID09IGNhcHRpb25zS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAodmFsdWUgPT0gbWFpbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKHZhbHVlID09IHNpZ25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh2YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChj
b25zdCBib29sIHNlbGVjdGVkKQoreworICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CisKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRo
aXMpOworfQorCitpbnQgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNT
RVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYTM2NGE2MDA0MWRhZDM5ODg4OWU4MWZm
MTc2MzU3NmRjZTZjMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFZpZGVvVHJhY2tfaAorI2RlZmluZSBWaWRlb1RyYWNrX2gKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFj
a0Jhc2UuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1Ry
YWNrOworCitjbGFzcyBWaWRlb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5W
aWRlb1RyYWNrQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3Rl
ZENoYW5nZWQoVmlkZW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJs
aWMgVHJhY2tCYXNlLCBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50
KiBjbGllbnQsIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNr
UHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CisKKyAgICBBdG9t
aWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgY2FwdGlvbnNLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaWduS2V5
d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25z
dCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJv
b2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0K
KyAgICBWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgaW50IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIFZpZGVv
VHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBy
aXZhdGVUcmFjayk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkUHJvdGVj
dGVkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAg
IEF0b21pY1N0cmluZyBtX2lkOworICAgIGJvb2wgbV9zZWxlY3RlZDsKKyAgICBWaWRlb1RyYWNr
Q2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gbV9wcml2
YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUyNmQzMzA3
MTQ3ZjMxZGQyNGRhMmQ4NWRmYjIwODcyMGM3MjcwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIFZpZGVvVHJh
Y2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKwor
ICAgIGF0dHJpYnV0ZSBib29sZWFuIHNlbGVjdGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJlODFhMDNjNDhkY2U0OTU2
MzljZGFiMjZjMDExYTg0N2ExMTMxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShvd25l
ciwgY29udGV4dCkKK3sKK30KKworVmlkZW9UcmFja0xpc3Q6On5WaWRlb1RyYWNrTGlzdCgpCit7
Cit9CisKK3ZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+
IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHBycFRyYWNrOwor
CisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRlci4KKyAgICBzaXpl
X3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOworICAgIG1faW5iYW5kVHJhY2tz
Lmluc2VydChpbmRleCwgdHJhY2spOworCisgICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50
KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkpOworICAgIHRyYWNrLT5zZXRN
ZWRpYUVsZW1lbnQob3duZXIoKSk7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2su
cmVsZWFzZSgpKTsKK30KKworVmlkZW9UcmFjayogVmlkZW9UcmFja0xpc3Q6Oml0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgp
KSB7CisgICAgICAgIFRyYWNrQmFzZSogdHJhY2sgPSBtX2luYmFuZFRyYWNrc1tpbmRleF0uZ2V0
KCk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFzZTo6VmlkZW9UcmFj
ayk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4odHJhY2spOworICAg
IH0KKworICAgIHJldHVybiAwOworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFRyYWNrQmFzZSogdHJhY2sg
PSBpdGVtKGkpOworICAgICAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlZp
ZGVvVHJhY2spOworICAgICAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gZHluYW1pY19jYXN0
PFZpZGVvVHJhY2sqPih0cmFjayk7CisgICAgICAgIGlmICh2aWRlb1RyYWNrLT5pZCgpID09IGlk
KQorICAgICAgICAgICAgcmV0dXJuIHZpZGVvVHJhY2s7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCitsb25nIFZpZGVvVHJhY2tMaXN0OjpzZWxlY3RlZEluZGV4KCkgY29uc3QKK3sKKyAgICAv
LyA0LjguMTAuMTAuMSBBdWRpb1RyYWNrTGlzdCBhbmQgVmlkZW9UcmFja0xpc3Qgb2JqZWN0cwor
ICAgIC8vIFRoZSBWaWRlb1RyYWNrTGlzdC5zZWxlY3RlZEluZGV4IGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiB0aGUgaW5kZXggb2YgdGhlCisgICAgLy8gY3VycmVudGx5IHNlbGVjdGVkIHRyYWNrLCBp
ZiBhbnkuIElmIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgZG9lcyBub3QKKyAgICAvLyBjdXJy
ZW50bHkgcmVwcmVzZW50IGFueSB0cmFja3MsIG9yIGlmIG5vbmUgb2YgdGhlIHRyYWNrcyBhcmUg
c2VsZWN0ZWQsCisgICAgLy8gaXQgbXVzdCBpbnN0ZWFkIHJldHVybiDiiJIxLgorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAgICBUcmFja0Jhc2UqIHRy
YWNrID0gaXRlbShpKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNl
OjpWaWRlb1RyYWNrKTsKKyAgICAgICAgaWYgKGR5bmFtaWNfY2FzdDxWaWRlb1RyYWNrKj4odHJh
Y2spLT5zZWxlY3RlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVy
biAtMTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrTGlzdDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JWaWRl
b1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhMTUxMzRhYzM5Y2I3OTIxMDEzNTI2YWQ2NDI3Zjlk
MDc0NzU4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
VmlkZW9UcmFja0xpc3RfaAorI2RlZmluZSBWaWRlb1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFjazsKKworY2xhc3MgVmlkZW9UcmFja0xpc3QgOiBw
dWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Vmlk
ZW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VmlkZW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAgflZpZGVvVHJhY2tM
aXN0KCk7CisKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+KTsKKyAgICBW
aWRlb1RyYWNrKiBpdGVtKHVuc2lnbmVkKSBjb25zdDsKKyAgICBWaWRlb1RyYWNrKiBnZXRUcmFj
a0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgbG9uZyBzZWxlY3RlZEluZGV4
KCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFj
a0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDM2YWY2MjBi
ODQ0NTVhZjczOGRlYjE0ODQwNDE2M2Y0YTU1MmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAgSW5kZXhlZEdl
dHRlciwKKyAgICBFdmVudFRhcmdldCwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBK
U0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBWaWRlb1RyYWNrTGlzdCB7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgIFZpZGVvVHJhY2sgaXRl
bShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBWaWRlb1RyYWNrIGdldFRyYWNrQnlJZChp
biBET01TdHJpbmcgaWQpOworCisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7
CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOworCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExp
c3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50
IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKK307CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM4MWZlZDM3YTRiOTY3MWUzMWUzODI1MzRiMDQzOTA5NDNhYThiMDEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJp
dmF0ZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja1ByaXZh
dGVfaAorI2RlZmluZSBBdWRpb1RyYWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1By
aXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlQ2xp
ZW50KCkgeyB9Cit9OworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEF1ZGlvVHJhY2tQcml2YXRlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9U
cmFja1ByaXZhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZp
cnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlKCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChBdWRp
b1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAg
QXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0g
ZW5hYmxlZDsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5hYmxlZDsgfQorCisgICAgZW51bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIERlc2NyaXB0aW9uLCBN
YWluLCBNYWluRGVzYywgVHJhbnNsYXRpb24sIENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0
dWFsIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRv
bWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQor
CisgICAgdmlydHVhbCBpbnQgYXVkaW9UcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQor
Citwcm90ZWN0ZWQ6CisgICAgQXVkaW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fZW5hYmxl
ZChmYWxzZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NjEwM2Ni
MTgxNWE1YzlhYTU2NDAyZTNiY2M0NWIzYmJiMTI4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCkBAIC0wLDAg
KzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja1ByaXZhdGVfaAorI2RlZmluZSBW
aWRlb1RyYWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9Cit9Owor
CitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvVHJhY2tQ
cml2YXRlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGUpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVmlkZW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVvVHJh
Y2tQcml2YXRlKCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChWaWRlb1RyYWNrUHJpdmF0ZUNs
aWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgVmlkZW9UcmFja1ByaXZh
dGVDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkgeyBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7IH07
CisgICAgdmlydHVhbCBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsg
fQorCisgICAgZW51bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIENhcHRpb25zLCBNYWluLCBTaWduLCBT
dWJ0aXRsZXMsIENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNv
bnN0IHsgcmV0dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29u
c3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwo
KSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBs
YW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBpbnQg
dmlkZW9UcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAg
VmlkZW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fc2VsZWN0ZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7
CisgICAgYm9vbCBtX3NlbGVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197158</attachid>
            <date>2013-04-09 12:26:40 -0700</date>
            <delta_ts>2013-04-09 21:56:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130409132622.patch</filename>
            <type>text/plain</type>
            <size>142704</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE5NTFiMjQyMDQ1OWRh
MDViMTYwOTg1YzFkYzhmNzk1OTI0NGVlMy4uZTdlMjkxZjZmNGY0YzhkZmZjOTMwMGMzYTEwYTA5
MjYwODMyOWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzOSBAQAorMjAxMy0wNC0wOCAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CisKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVmlkZW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0N1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Zp
ZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpp
bnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjphbHRlcm5hdGl2
ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjp+QXVkaW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OnRyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbnZhbGlkYXRlVHJhY2tJ
bmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tDbGllbnQ6On5BdWRpb1RyYWNrQ2xpZW50KToKKyAgICAgICAgKEF1ZGlv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9UcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
OjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6Z2V0VHJh
Y2tJbmRleCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChBdWRp
b1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAgICAo
QXVkaW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6cmVtb3Zl
KToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoQXVk
aW9UcmFja0xpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQp
OgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6Cisg
ICAgICAgIChBdWRpb1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChB
dWRpb1RyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoQXVkaW9UcmFj
a0xpc3Q6Om93bmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tMaXN0Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
TGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6
YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppbmJhbmRU
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmludmFsaWRhdGVUcmFj
a0luZGV4KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0NsaWVudDo6flZpZGVvVHJhY2tDbGllbnQpOgorICAgICAgICAoVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6Om1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRJZCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldExhYmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2s6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNsaWVudCk6CisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xpc3QpOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6Z2V0
VHJhY2tJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgIChW
aWRlb1RyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2spOgorICAgICAg
ICAoVmlkZW9UcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6cmVt
b3ZlKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6
OmNvbnRhaW5zKToKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAg
ICAgICAgKFZpZGVvVHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAo
VmlkZW9UcmFja0xpc3Q6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudCk6CisgICAgICAgIChWaWRl
b1RyYWNrTGlzdDo6c2NoZWR1bGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlz
dDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Om93bmVy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdDo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVDbGllbnQ6On5BdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChBdWRpb1RyYWNrUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjp+QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpl
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpraW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjppZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGU6Omxhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
OjphdWRpb1RyYWNrSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6
OkF1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTA0LTA5ICBKZWZm
IFJvZ2VycyAgPGpyb2dlcnNAcmltLmNvbT4KIAogICAgICAgICBBZGQgd2VicCB0byBzdXBwb3J0
ZWQgaW1hZ2UgbWltZSB0eXBlcyBpZiBXRUJQIGZlYXR1cmUgaXMgZW5hYmxlZC91c2VkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDQ2MTgzMjVhM2NmYWNlYWFkNmVhZTc3MzBkNmVlNzA1YmI5MDg0
YTUuLjkwYzZjODY0Yzc3ZDNhZTliMTMyN2FhYzc0ZjY0NTE1ZDg3ZmY4M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC01NDksMTIgKzU0OSw2IEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAg
IGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwKICAgICBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5pZGwKIAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAotICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlz
dC5pZGwKLSAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCi0gICAgaHRtbC90cmFjay9U
cmFja0V2ZW50LmlkbAotCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAogICAgIGluc3BlY3Rvci9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmlkbApAQCAtMTU5MywxOSArMTU4Nyw2IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCiAKLSAgICBodG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5jcHAKLSAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAotICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKLSAgICBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZUxpc3QuY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAot
ICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAotICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAKLSAgICBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCi0gICAgaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCi0gICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCi0KICAgICBp
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCiAgICAgaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAKICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMTczOCw3ICsxNzE5LDYg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCi0gICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
ICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKICAgICBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCiAKQEAgLTI2OTYsNyArMjY3NiwzOSBAQCBpZiAoRU5BQkxFX1dF
QkdMKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKKyAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisg
ICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAorICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmlkbAorICAgICkKKwogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuY3BwCisgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAorICAg
ICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisgICAg
ICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKyAgICAgICAgaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWVMaXN0LmNwcAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
Y3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorICAgICAgICBodG1sL3RyYWNr
L1RyYWNrRXZlbnQuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKyAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorICAgICAgICBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKKyAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCisg
ICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5jcHAKKworICAgICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cAorCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNw
cAogICAgICkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNmI3Y2Qw
N2VjN2I0NTM5NDUxZTA1YzdmNTU3OGVmOTQ4ZTI0YTlkNy4uNGE0YmFkYTBjM2I1N2IxNzhiNTAy
NGUzMGQ0MWUxNjliYzllYjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtNDcy
LDEyICs0NzIsMTYgQEAKICNpbmNsdWRlICJKU1RleHRFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNU
ZXh0TWV0cmljcy5jcHAiCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTQXVk
aW9UcmFjay5jcHAiCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAi
SlNIVE1MVHJhY2tFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFjay5jcHAiCiAjaW5j
bHVkZSAiSlNUZXh0VHJhY2tDdWUuY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VlTGlzdC5j
cHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0LmNwcCIKICNpbmNsdWRlICJKU1RyYWNrRXZl
bnQuY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5jcHAiCisjaW5jbHVkZSAiSlNWaWRlb1Ry
YWNrTGlzdC5jcHAiCiAjZW5kaWYKICNpbmNsdWRlICJKU1RpbWVSYW5nZXMuY3BwIgogI2luY2x1
ZGUgIkpTVG91Y2guY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMGQ3YTY1
ZDI3ZTkzYjY4ZDcwMGJlOGJlNjkzMGMxOTIyNjZiZDE0OC4uMTBkZWQ2MjhiZWY2NzBmYmJkYTk4
YmI3M2ZjOTY0MDAyMGNiODc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00
MzEsMTEgKzQzMSwxNSBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hh
ZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVHJhY2tFdmVu
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0
b3IvU2NyaXB0UHJvZmlsZS5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IGRi
ZWNhNDcxYTdjNjFjNzZjZjQyMDE1MTA4Njg1ODVmOTc3MjcyNGYuLjc5MDllMWFlNTFlM2E1Y2Jj
MTQ2OWNmNTcxNGE1YmY1NDUxOWIzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAg
LTY1MiwxMSArNjUyLDE1IEBAIGVuYWJsZT8oR0FNRVBBRCkgewogCiBlbmFibGU/KFZJREVPX1RS
QUNLKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAg
ICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
aWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKICAgICAkJFBX
RC9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAogfQog
CiBlbmFibGU/KE1FRElBX1NPVVJDRSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggZWUxYWU1OGVhNDdiZjZmMTE1MmQzYjg1YzVmZjI0NjcwZDM4NTA4Yi4uNTBlNmM5ZjhjZmQ5
MzU2MjFjYjEzZTdmZWMxOWZjOWQxMzM2OWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0xNTg2LDExICsxNTg2LDE1IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogCSQoV2Vi
Q29yZSkvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAJJChXZWJDb3JlKS9o
dG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogCSQoV2ViQ29y
ZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKwkkKFdl
YkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5pZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5pZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsIFwK
QEAgLTIzMjAsNiArMjMyNCw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDREFUQVNlY3Rpb25DdXN0b20uY3BwIFwKQEAgLTI0NzQsNiArMjQ4MSw5IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwIFwKQEAgLTM3NjcsNiArMzc3NywxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVSYW5nZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMu
aCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXApAQCAt
Mzc4NSw2ICszNzk5LDEyIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0Jhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0V2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmggXAor
CVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcCBcCkBAIC01NDkzLDYgKzU1MTMsNyBAQCB3ZWJjb3JlX3BsYXRmb3Jt
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0luaXRpYWxpemVMb2dnaW5n
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZh
dGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9HcmFwaGlj
c0NvbnRleHQzRE5FT04uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL05FT05IZWxwZXJzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oIFwKQEAgLTU3NzMsNiArNTc5NCw3
IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHlwZXNldHRpbmdGZWF0dXJlcy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Vbml0QmV6aWVyLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjOGE0
YTk0ZTU4Zjc2NTQ1MmRiZTA2NzYwNDgwNWE3M2Y2MGVlNzI4Li4xOWJiMWZiNzlmNmZiN2RkNjk0
Mzk5MTc3Y2JjNmI2ZGZkNDJjZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM5NjUsOSArMzk2NSwxMyBA
QCBlbmFibGU/KEpBVkFTQ1JJUFRfREVCVUdHRVIpIHsKIAogZW5hYmxlPyhWSURFT19UUkFDSykg
ewogICAgIEhFQURFUlMgKz0gXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0
b20uaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmggXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oIFwKKyAg
ICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmggXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlv
VHJhY2tMaXN0LmggXAogICAgICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKICAg
ICAgICAgaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIFwKICAgICAgICAgaHRtbC90cmFj
ay9UZXh0VHJhY2suaCBcCkBAIC0zOTc3LDIwICszOTgxLDMxIEBAIGVuYWJsZT8oVklERU9fVFJB
Q0spIHsKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmggXAogICAgICAgICBodG1s
L3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmggXAor
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBcCisgICAgICAgIGh0bWwvdHJhY2sv
VmlkZW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKICAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2Vi
VlRUVG9rZW4uaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmggXAogICAg
ICAgICBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJh
Y2tQcml2YXRlLmggXAogCiAgICAgU09VUkNFUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9t
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
TGlzdEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20u
Y3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAog
ICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9B
dWRpb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIFwK
ICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKICAgICAgICAgaHRtbC90
cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFj
ay5jcHAgXApAQCAtNDAwMCw2ICs0MDE1LDkgQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewogICAg
ICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9U
cmFja0Jhc2UuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCBcCisgICAg
ICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgXAog
ICAgICAgICBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCA3OWM5ZTEwMjU5M2ZkMGMwMDQ5ZTc3MmMyMWZlYzMz
OTZjNDVjYmYzLi5hOGYyZjgxNjFjNTQzY2Q4YWZmNGY4ZGVlZmJmZGRmZDhmODVmMDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCkBAIC0yMTgsMTEgKzIxOCwxNSBAQCBlbmRpZiAoKQogCiBpZiAoRU5BQkxF
X1ZJREVPX1RSQUNLKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBi
aW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
Q3VlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAK
ICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICAgICBi
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNr
RXZlbnRDdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5j
cHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAp
CiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtl
ZmlsZS5hbQppbmRleCBmMzIyZDY0Y2M3ZDE3YTdmYjc1NDAzZWFiZDIxOWJmZDNlZWQ5MTk3Li5l
ZWVlZWJhMTBhMzJlNjVhMjk5YzJjYzBjYzc4MmY0MDhjZTMxNjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KQEAgLTQzMywxOCArNDMzLDI0
IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X2hfYXBpICs9IFwKIAogaWYgRU5BQkxFX1ZJREVPCiB3
ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmggXAorCSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QuaCBcCiAJ
JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVk
aW9FbGVtZW50LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFjay5oIFwKIAkkKHRvcF9idWlsZGRpcikv
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0xpc3QuaCBcCiAJJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tD
dWUuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UZXh0VHJhY2tDdWVMaXN0LmggXAotCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50LmggXAorCSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFjay5oIFwKKwkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tM
aXN0LmgKIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRQcml2YXRlLmggXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50LmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnRQcml2YXRlLmgg
XAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFjay5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tQcml2YXRlLmggXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmNwcCBcCkBAIC00NTMs
NiArNDU5LDggQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaCBc
CisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oCiBlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGQ1YzFlNDI3MzljZTY3ZDVkNTI3ZDMwYTMyZDkxNDA1NTkzNmEwYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1
c3RvbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tDdXN0b20u
aCIKKworI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJh
Y2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBB
dWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9U
cmFjay0+aW1wbCgpKTtcCisKKyAgICAvLyBJZiB0aGUgdHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9w
ZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghanNBdWRpb1RyYWNrLT5oYXND
dXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB2
aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2spKTsKK30KKwordm9pZCBK
U0F1ZGlvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2sqIGpzQXVkaW9UcmFjayA9IGpzQ2FzdDxKU0F1ZGlv
VHJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzQXVkaW9UcmFj
aywgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFn
KTsKKyAgICBBU1NFUlQoanNBdWRpb1RyYWNrLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1Ry
YWNrLCB2aXNpdG9yKTsKKworICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sgPSBzdGF0aWNfY2Fz
dDxBdWRpb1RyYWNrKj4oanNBdWRpb1RyYWNrLT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KGF1ZGlvVHJhY2spKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3Vz
dG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDhjZGUzYjE3MjBlOGQ2Y2NmYmQ2MTVjMjVlM2UzYzU1MjRlM2Rk
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0N1c3RvbS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0F1ZGlv
VHJhY2tDdXN0b21faAorI2RlZmluZSBKU0F1ZGlvVHJhY2tDdXN0b21faAorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUg
IkpTQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSB2b2lkKiByb290KEF1
ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIC8vIFJldHVybiB0aGUgbWVkaWEgZWxlbWVudCdzIHJv
b3QgaWYgaXQgaGFzIG9uZS4KKyAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVudCgpKQorICAgICAg
ICByZXR1cm4gcm9vdCh0cmFjay0+bWVkaWFFbGVtZW50KCkpOworCisgICAgLy8gTm8gbWVkaWEg
ZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0IHRyYWNrLgorICAgIHJldHVybiB0cmFjazsKK30KKwor
fQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzYxNmIwZDRiOGFhOTI5
NDIyZjA1YWQ3NTQ5MzI0MDlhYTE2YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0F1ZGlvVHJhY2tMaXN0T3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrTGlz
dCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0
aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisKKyAg
ICAvLyBJZiB0aGUgbGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBp
cyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZv
ciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBpZiAoYXVkaW9UcmFja0xpc3Qt
PmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBJZiB0aGUgbGlzdCBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHBy
b3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFhdWRpb1RyYWNrTGlzdC0+
aGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAhanNBdWRpb1RyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVy
dGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUg
aWYgdGhlIG1lZGlhIGVsZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOwor
fQorCit2b2lkIEpTQXVkaW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2tMaXN0KiBqc0F1ZGlvVHJh
Y2tMaXN0ID0ganNDYXN0PEpTQXVkaW9UcmFja0xpc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGpzQXVkaW9UcmFja0xpc3QsICZzX2luZm8pOworICAgIENPTVBJTEVf
QVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzQXVkaW9UcmFj
a0xpc3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2tMaXN0LCB2aXNpdG9yKTsKKwor
ICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEF1ZGlvVHJh
Y2tMaXN0Kj4oanNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3Qocm9vdChhdWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOworICAgIGF1ZGlvVHJhY2tMaXN0
LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAppbmRleCAyYmExMGY1NTZlOGI0ODAyZThiYTk2NmZkMWQzY2UxMjQz
MTI0MDU2Li41MWFkZjM1ZTM0OWY4NGVkYTZmMDNhN2E0OTM5ZWMzZWRjNDRlZDQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAg
LTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQXR0ckN1c3RvbS5jcHAiCisjaW5j
bHVkZSAiSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Jsb2JDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ0RB
VEFTZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NTU0ZvbnRGYWNlUnVsZUN1c3RvbS5j
cHAiCkBAIC0xNDcsNiArMTQ5LDggQEAKICNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU1RyYWNrRXZlbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJlZVdhbGtlckN1
c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJK
U1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1l
UnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
NDA2OWQ1NGY5NTRhNWIzMDEwYTQ1NWI5NjZiZTBmM2VjOWFkYTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRl
ICJKU1ZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitib29sIEpTVmlkZW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpT
VmlkZW9UcmFjayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFjayogdmlk
ZW9UcmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7
CisKKyAgICAvLyBJZiB0aGUgdHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBu
b3QgcmVhY2hhYmxlLgorICAgIGlmICghanNWaWRlb1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5z
T3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2spKTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2s6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1ZpZGVvVHJhY2sqIGpzVmlkZW9UcmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlkZW9UcmFjaywgJnNfaW5mbyk7Cisg
ICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVu
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQo
anNWaWRlb1RyYWNrLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrLCB2aXNpdG9yKTsK
KworICAgIFZpZGVvVHJhY2sqIHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4o
anNWaWRlb1RyYWNrLT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZp
ZGVvVHJhY2spKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2UzNzVlNTY3ZTZiYTM4YTNmZDZkMmM5OTVhZjBjMWNkZjZhYjNkYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU1ZpZGVvVHJhY2tDdXN0b21faAor
I2RlZmluZSBKU1ZpZGVvVHJhY2tDdXN0b21faAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
CisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5o
IgorI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSB2b2lkKiByb290KFZpZGVvVHJhY2sqIHRyYWNr
KQoreworICAgIC8vIFJldHVybiB0aGUgbWVkaWEgZWxlbWVudCdzIHJvb3QgaWYgaXQgaGFzIG9u
ZS4KKyAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdCh0
cmFjay0+bWVkaWFFbGVtZW50KCkpOworCisgICAgLy8gTm8gbWVkaWEgZWxlbWVudCwgcmV0dXJu
IHRoZSB0ZXh0IHRyYWNrLgorICAgIHJldHVybiB0cmFjazsKK30KKworfQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tM
aXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmQ5NjcxMGQ2MDkzMTBjNzg3MmE3ZGY0M2I2Y2Ri
NDMzNWIxZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJK
U1ZpZGVvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworYm9vbCBKU1ZpZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1RyYWNr
TGlzdCA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
KyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1Ry
YWNrTGlzdCo+KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgbGlz
dCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVj
YXVzZQorICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3Nl
IGV2ZW50IGxpc3RlbmVycy4KKyAgICBpZiAodmlkZW9UcmFja0xpc3QtPmlzRmlyaW5nRXZlbnRM
aXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBo
YXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlz
IG5vdCByZWFjaGFibGUuCisgICAgaWYgKCF2aWRlb1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0ZW5l
cnMoKSAmJiAhanNWaWRlb1RyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVs
ZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09w
YXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrTGlzdC0+b3duZXIoKSkpOworfQorCit2b2lkIEpTVmlk
ZW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0
PEpTVmlkZW9UcmFja0xpc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGpzVmlkZW9UcmFja0xpc3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzVmlkZW9UcmFja0xpc3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbihqc1ZpZGVvVHJhY2tMaXN0LCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2tM
aXN0KiB2aWRlb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRl
b1RyYWNrTGlzdC0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh2aWRl
b1RyYWNrTGlzdC0+b3duZXIoKSkpOworICAgIHZpZGVvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDgyNzc3YTg2ZWVmZGZiZWJlNjg5YzliOTIz
MzY4ODI5NTgzOTFjM2UuLmVhMDc5OWJiNWQwZDczNGMwMWY0NjhhNjNlMWQ1YjIyMDVjZmI0YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBBdWRpb0NvbnRleHQ7CisgICAgY2xhc3MgQXVkaW9UcmFj
a0xpc3Q7CiAgICAgY2xhc3MgRGVkaWNhdGVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBET01B
cHBsaWNhdGlvbkNhY2hlOwogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTY3LDYgKzY4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNvdXJjZUJ1ZmZlckxpc3Q7CiAgICAgY2xh
c3MgVGV4dFRyYWNrOwogICAgIGNsYXNzIFRleHRUcmFja0N1ZTsKKyAgICBjbGFzcyBWaWRlb1Ry
YWNrTGlzdDsKICAgICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV2ViS2l0TmFtZWRGbG93
OwogICAgIGNsYXNzIFdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCmluZGV4IDQ3NmQxYjUzZjE0NWJiMjczNDk4OTkzZjM5ZjFkMWNiYWE2MjM1ODMuLjhlYTVi
N2IwM2FiYWNhMDJmMjVmNDhhMmVkNTU5OTI2M2VhNDcwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMSw2ICsxLDcgQEAKIG5hbWVzcGFjZT0iRXZlbnRU
YXJnZXQiCiAKIEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0F1ZGlvVHJhY2tM
aXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBCYXR0ZXJ5TWFuYWdlciBjb25kaXRpb25hbD1C
QVRURVJZX1NUQVRVUwogRGVkaWNhdGVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJT
CiBET01BcHBsaWNhdGlvbkNhY2hlCkBAIC0zNyw2ICszOCw3IEBAIFNWR0VsZW1lbnRJbnN0YW5j
ZSBjb25kaXRpb25hbD1TVkcKIFRleHRUcmFjayBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4
dFRyYWNrQ3VlIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlv
bmFsPVZJREVPX1RSQUNLCitWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwog
V2ViS2l0TmFtZWRGbG93CiBXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtl
ciBjb25kaXRpb25hbD1XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCAyNjBkMGE2NzU5ZjUyYTY1MzZkMDYwMzQwNzIyZWY1YTlhNGQ5M2FjLi5kZWEz
YjlmNGQzNGI4YWIyZWRjN2Y5ZjlkYzMzN2YwOWY2NjUyZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTk4LDYgKzk4LDggQEAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVk
ZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmgiCiAjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFjay5oIgpAQCAtMTA1LDYgKzEwNyw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJh
Y2tMaXN0LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1Ry
YWNrUHJpdmF0ZS5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMjk2LDcg
KzMwMCw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX3Byb2Nlc3NpbmdQcmVm
ZXJlbmNlQ2hhbmdlKGZhbHNlKQogICAgICwgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZSgtMSkK
ICAgICAsIG1fY2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9t
YXRpYykKKyAgICAsIG1fYXVkaW9UcmFja3MoMCkKICAgICAsIG1fdGV4dFRyYWNrcygwKQorICAg
ICwgbV92aWRlb1RyYWNrcygwKQogICAgICwgbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUoMCkK
ICNlbmRpZgogI2lmIEVOQUJMRShXRUJfQVVESU8pCkBAIC0zMzAsMTIgKzMzNiwyMiBAQCBIVE1M
TWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdp
c3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgaWYgKG1fYXVkaW9UcmFja3Mp
IHsKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAg
ICAgIG1fYXVkaW9UcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogICAgIGlm
IChtX3RleHRUcmFja3MpCiAgICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOwogICAg
IGlmIChtX3RleHRUcmFja3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRl
bShpKS0+Y2xlYXJDbGllbnQoKTsKICAgICB9CisgICAgaWYgKG1fdmlkZW9UcmFja3MpIHsKKyAg
ICAgICAgbV92aWRlb1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV92aWRlb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1f
dmlkZW9UcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCkBAIC0xMzQ5LDYgKzEzNjUsMTEgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNr
KQogICAgIH0KIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENo
YW5nZWQoQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5n
ZSB0aGUgbWVkaWEgY29udHJvbHMgaGVyZSBvbmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewog
ICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsK
QEAgLTEzODgsNiArMTQwOSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01v
ZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vl
cyhjdXJyZW50VGltZSgpKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNr
U2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIC8vIFdlIHdpbGwgd2Fu
dCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKiB0
cmFjaykKIHsKICAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5
d29yZCgpICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkg
JiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCkBAIC0yNzky
LDcgKzI4MTgsMTcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExvYWRlZCgpIGNv
bnN0CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IHBycFRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBBdWRpb1RyYWNr
OjpjcmVhdGUodGhpcywgcHJwVHJhY2spOworCisgICAgYWRkQXVkaW9UcmFjayh0cmFjay5nZXQo
KSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJh
Y2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI4MjQsMTAgKzI4NjAsMzcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZT4KICAgICAvLyA5LiBGaXJlIGFuIGV2ZW50IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRo
YXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0
aGUgVHJhY2tFdmVudAogICAgIC8vIGludGVyZmFjZSwgd2l0aCB0aGUgdHJhY2sgYXR0cmlidXRl
IGluaXRpYWxpemVkIHRvIHRoZSB0ZXh0IHRyYWNrJ3MgVGV4dFRyYWNrIG9iamVjdCwgYXQgdGhl
IG1lZGlhIGVsZW1lbnQncwogICAgIC8vIHRleHRUcmFja3MgYXR0cmlidXRlJ3MgVGV4dFRyYWNr
TGlzdCBvYmplY3QuCi0gICAgYWRkVHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0
VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckRpZFJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4g
cHJwVHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9U
cmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IFZpZGVvVHJhY2s6
OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRWaWRlb1RyYWNrKHRyYWNrLmdldCgp
KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0aGUgQXVkaW9U
cmFjayB3aXRoIHRoZSBBdWRpb1RyYWNrUHJpdmF0ZQorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBs
YXllckRpZEFkZEF1ZGlvVHJhY2suCisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gc3Rh
dGljX2Nhc3Q8QXVkaW9UcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CisgICAgaWYgKCF0cmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlQXVkaW9UcmFjayh0cmFjay5nZXQoKSk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJh
Y2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI4MzYsMTIgKzI4OTksMjkgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVz
ZSB3ZSBjcmVhdGVkIHRoZSBJbmJhbmRUZXh0VHJhY2sgd2l0aCB0aGUgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZQotICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFRyYWNrLgorICAgIC8v
IHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjay4KICAgICBSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2sqPihwcnBU
cmFjay0+Y2xpZW50KCkpOwogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAgICByZXR1cm47CiAK
LSAgICByZW1vdmVUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIHJlbW92ZVRleHRUcmFjayh0
ZXh0VHJhY2suZ2V0KCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcnBUcmFj
aykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV92aWRlb1RyYWNrcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVzZSB3ZSBjcmVh
dGVkIHRoZSBWaWRlb1RyYWNrIHdpdGggdGhlIFZpZGVvVHJhY2tQcml2YXRlCisgICAgLy8gcGFz
c2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjay4KKyAgICBSZWZQdHI8VmlkZW9UcmFj
az4gdHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4ocHJwVHJhY2stPmNsaWVudCgpKTsK
KyAgICBpZiAoIXRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVWaWRlb1RyYWNr
KHRyYWNrLmdldCgpKTsKIH0KIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCkBA
IC0yOTIwLDE0ICszMDAwLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VDYXB0aW9u
VHJhY2tzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRU
cmFjayhUZXh0VHJhY2sqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1Ry
YWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIGF1ZGlvVHJhY2tzKCktPmFwcGVuZCh0cmFj
ayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFRleHRUcmFjayog
dHJhY2spCiB7CiAgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2spOwogICAgIAogICAgIGNs
b3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRW
aWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIHZpZGVvVHJhY2tzKCktPmFwcGVu
ZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhB
dWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUodHJhY2spOwor
fQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRy
YWNrKQogewogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwogICAgIFRl
eHRUcmFja0N1ZUxpc3QqIGN1ZXMgPSB0cmFjay0+Y3VlcygpOwpAQCAtMjkzOCwxOCArMzAzMywz
MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRyYWNrKFRleHRUcmFjayogdHJhY2sp
CiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgbV92aWRl
b1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVBbGxJbmJhbmRUcmFja3MoKQogewotICAgIGlmICghbV90ZXh0VHJhY2tzKQotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG1fYXVkaW9UcmFja3MpCisgICAgICAgIHdoaWxlICh1bnNpZ25lZCBs
ZW5ndGggPSBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlbW92ZUF1ZGlv
VHJhY2sobV9hdWRpb1RyYWNrcy0+aXRlbShsZW5ndGggLSAxKSk7CiAKLSAgICBUcmFja0Rpc3Bs
YXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKLSAgICBmb3IgKGludCBpID0gbV90ZXh0VHJhY2tz
LT5sZW5ndGgoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIFRleHRUcmFjayogdHJhY2sg
PSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CisgICAgaWYgKG1fdGV4dFRyYWNrcykgeworICAgICAg
ICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAg
ICAgVGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4dFRyYWNrcy0+aXRlbShpKTsKIAotICAgICAgICBp
ZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAgICAgICAg
cmVtb3ZlVHJhY2sodHJhY2spOworICAgICAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9
PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgICAgICAgICByZW1vdmVUZXh0VHJhY2sodHJh
Y2spOworICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKG1fdmlkZW9UcmFja3MpCisgICAgICAg
IHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHJlbW92ZVZpZGVvVHJhY2sobV92aWRlb1RyYWNrcy0+aXRlbShsZW5ndGggLSAxKSk7
CiB9CiAKIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI5NzgsNyArMzA4NSw3IEBAIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTCiAgICAgLy8gZmlyc3QgYXBwZW5kIHRoZSB0cmFjayB0byB0aGUg
dGV4dCB0cmFjayBsaXN0LgogCiAgICAgLy8gNi4gQWRkIHRoZSBuZXcgdGV4dCB0cmFjayB0byB0
aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCi0gICAgYWRkVHJhY2sodGV4
dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIAogICAg
IC8vIC4uLiBpdHMgdGV4dCB0cmFjayByZWFkaW5lc3Mgc3RhdGUgdG8gdGhlIHRleHQgdHJhY2sg
bG9hZGVkIHN0YXRlIC4uLgogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUoVGV4dFRy
YWNrOjpMb2FkZWQpOwpAQCAtMjk4OSw2ICszMDk2LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25z
dCBTCiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAKK0F1ZGlvVHJhY2tMaXN0
KiBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGlmICghbV9hdWRpb1RyYWNrcykKKyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1
ZGlvVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOworCisgICAgcmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKIFRl
eHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKIHsKICAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0z
MDAwLDcgKzMxMTgsMTggQEAgVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcygpCiAgICAgcmV0dXJuIG1fdGV4dFRyYWNrcy5nZXQoKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCitW
aWRlb1RyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MoKQoreworICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzLmdl
dCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayhIVE1MVHJh
Y2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFz
VGFnTmFtZSh0cmFja1RhZykpOwogCkBAIC0zMDE1LDcgKzMxNDQsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAg
ICBpZiAoIXRleHRUcmFjaykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGFkZFRyYWNrKHRl
eHRUcmFjay5nZXQoKSk7CisgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiAgICAg
CiAgICAgLy8gRG8gbm90IHNjaGVkdWxlIHRoZSB0cmFjayBsb2FkaW5nIHVudGlsIHBhcnNpbmcg
ZmluaXNoZXMgc28gd2UgZG9uJ3Qgc3RhcnQgYmVmb3JlIGFsbCB0cmFja3MKICAgICAvLyBpbiB0
aGUgbWFya3VwIGhhdmUgYmVlbiBhZGRlZC4KQEAgLTMwMjYsNyArMzE1NSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50
KQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2soSFRNTFRyYWNrRWxl
bWVudCogdHJhY2tFbGVtZW50KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0
VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogICAgIEFTU0VSVCh0cmFj
a0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKIApAQCAtMzA1Myw3ICszMTgyLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0
cmFja0VsZW1lbnQpCiAgICAgLy8gV2hlbiBhIHRyYWNrIGVsZW1lbnQncyBwYXJlbnQgZWxlbWVu
dCBjaGFuZ2VzIGFuZCB0aGUgb2xkIHBhcmVudCB3YXMgYSBtZWRpYSBlbGVtZW50LCAKICAgICAv
LyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgcmVtb3ZlIHRoZSB0cmFjayBlbGVtZW50J3MgY29y
cmVzcG9uZGluZyB0ZXh0IHRyYWNrIGZyb20gdGhlIAogICAgIC8vIG1lZGlhIGVsZW1lbnQncyBs
aXN0IG9mIHRleHQgdHJhY2tzLgotICAgIHJlbW92ZVRyYWNrKHRleHRUcmFjay5nZXQoKSk7Cisg
ICAgcmVtb3ZlVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiAKICAgICBzaXplX3QgaW5kZXgg
PSBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5maW5kKHRleHRUcmFjay5n
ZXQoKSk7CiAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQpAQCAtNDkwNiw3ICs1MDM1LDkgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNl
LCAibWVkaWFTb3VyY2UiKTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBp
bmZvLmFkZE1lbWJlcihtX2F1ZGlvVHJhY2tzLCAiYXVkaW9UcmFja3MiKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3RleHRUcmFja3MsICJ0ZXh0VHJhY2tzIik7CisgICAgaW5mby5hZGRNZW1iZXIo
bV92aWRlb1RyYWNrcywgInZpZGVvVHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90ZXh0
VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4sICJ0ZXh0VHJhY2tzV2hlblJlc291cmNl
U2VsZWN0aW9uQmVnYW4iKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2N1ZVRyZWUsICJjdWVUcmVl
Iik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdXJyZW50bHlBY3RpdmVDdWVzLCAiY3VycmVudGx5
QWN0aXZlQ3VlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBj
YTAxNmMwN2Q0NmZmMjEzN2ZhMGUxYWE4NjczMjQzYmQxMjdlMThjLi42MTM4Y2IwMTM4ZjMxY2Q0
ZmE3MjMzYTYxMjdhZjVlMWNiYTRjMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMzksMTAgKzM5LDEyIEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5oIgogI2luY2x1ZGUgIlBPREludGVydmFsVHJlZS5oIgogI2luY2x1ZGUgIlRleHRU
cmFjay5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2su
aCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw3ICs2MCw2IEBAIGNsYXNz
IE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9y
OwogY2xhc3MgS1VSTDsKLWNsYXNzIFRleHRUcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogY2xhc3MgV2lkZ2V0OwpAQCAtNzEs
NyArNzIsMTIgQEAgY2xhc3MgTWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwog
Y2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKK2NsYXNzIFRleHRUcmFja0xpc3Q7CitjbGFz
cyBWaWRlb1RyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiB0eXBlZGVmIFBP
REludGVydmFsVHJlZTxkb3VibGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5
cGVkZWYgQ3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CkBAIC04NCw3
ICs5MCw5IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0OwogCiBjbGFzcyBI
VE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJD
bGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBwcml2YXRl
IEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBw
cml2YXRlIFZpZGVvVHJhY2tDbGllbnQKICNlbmRpZgogI2lmIFVTRShQTEFURk9STV9URVhUX1RS
QUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CkBAIC0y
MjYsMjAgKzIzNCwzMSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRl
eHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEV4Y2VwdGlv
bkNvZGUmIGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwgbGFiZWwsIGVtcHR5U3RyaW5n
KCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3Qg
U3RyaW5nJiBraW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtp
bmQsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogCisgICAgQXVkaW9UcmFj
a0xpc3QqIGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrcygpOwor
ICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworCiAgICAgQ3VlTGlzdCBjdXJyZW50
bHlBY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50bHlBY3RpdmVDdWVzOyB9CiAK
LSAgICB2b2lkIGFkZFRyYWNrKFRleHRUcmFjayopOwotICAgIHZvaWQgcmVtb3ZlVHJhY2soVGV4
dFRyYWNrKik7CisgICAgdm9pZCBhZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKKyAgICB2b2lk
IGFkZFRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIGFkZFZpZGVvVHJhY2soVmlkZW9U
cmFjayopOworICAgIHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKik7CisgICAgdm9p
ZCByZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCByZW1vdmVWaWRlb1RyYWNr
KFZpZGVvVHJhY2sqKTsKICAgICB2b2lkIHJlbW92ZUFsbEluYmFuZFRyYWNrcygpOwogICAgIHZv
aWQgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5TWVkaWFQbGF5
ZXJPZlRleHRUcmFja0NoYW5nZXMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUcmFjayhI
VE1MVHJhY2tFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFj
a0VsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxUcmFj
a0VsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRyYWNrKFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1
ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJE
aWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQ
dHI8QXVkaW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9U
cmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAKICNpZiBVU0Uo
UExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRl
eHRUcmFjayhQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPikgT1ZFUlJJREU7CkBAIC0yNzUs
NiArMjk0LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrRGlzcGxheSgp
OwogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCisgICAgLy8gQXVkaW9UcmFj
a0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9U
cmFjayopOworCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2sqKTsKQEAgLTI4NCw2ICszMDYsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4
dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKIAorICAgIC8vIFZpZGVvVHJhY2tD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1Ry
YWNrKik7CisKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25z
dDsKICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKik7CiAjZW5kaWYKQEAgLTY5OSw3ICs3MjQsOSBAQCBwcml2YXRlOgogICAgIGZsb2F0
IG1fbGFzdFRleHRUcmFja1VwZGF0ZVRpbWU7CiAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6
Q2FwdGlvbkRpc3BsYXlNb2RlIG1fY2FwdGlvbkRpc3BsYXlNb2RlOwogCisgICAgUmVmUHRyPEF1
ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0cjxUZXh0VHJhY2tMaXN0PiBt
X3RleHRUcmFja3M7CisgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tzOwog
ICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNl
bGVjdGlvbkJlZ2FuOwogCiAgICAgQ3VlSW50ZXJ2YWxUcmVlIG1fY3VlVHJlZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IDkyMDUyMGJmMDI0ZTJjMTRiZmQ2
YWFhZGFlNzgwZjRkNDk1NzFmMGYuLmFlYjliYTlkOGY0YmNhNzA0YTJmOTdhMmY3NDNkNTI0Y2Nj
OThiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtMTE2
LDcgKzExNiw5IEBAIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVzdChpbiBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyCiAjaWYgZGVmaW5lZChFTkFCTEVf
VklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogVGV4dFRyYWNrIGFkZFRleHRUcmFj
ayhpbiBET01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtP
cHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1YWdlKQogICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
K3JlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRpb1RyYWNrczsKIHJlYWRvbmx5
IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7CityZWFkb25seSBhdHRyaWJ1dGUg
VmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CiAjZW5kaWYKIAogW1JlZmxlY3QsIFRyZWF0TnVs
bEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWFHcm91cDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IGZiYmIzZTg1ZTBkYTY3ODAxMWFm
ODRlZmM5YTU3OTljNjNmNDYzZDQuLjAxMDU4NTVmY2YyNTcxOTc0OWM1MTYwOGI0NjQ5MmEyMDFh
YzEzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtODAs
MTQgKzgwLDE0IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFRyYWNr
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqCiAgICAgSFRNTEVsZW1lbnQ6Omlu
c2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogcGFyZW50
ID0gbWVkaWFFbGVtZW50KCk7CiAgICAgaWYgKGluc2VydGlvblBvaW50ID09IHBhcmVudCkKLSAg
ICAgICAgcGFyZW50LT5kaWRBZGRUcmFjayh0aGlzKTsKKyAgICAgICAgcGFyZW50LT5kaWRBZGRU
ZXh0VHJhY2sodGhpcyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKIHZvaWQgSFRN
TFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQp
CiB7CiAgICAgaWYgKCFwYXJlbnROb2RlKCkgJiYgV2ViQ29yZTo6aXNNZWRpYUVsZW1lbnQoaW5z
ZXJ0aW9uUG9pbnQpKQotICAgICAgICB0b01lZGlhRWxlbWVudChpbnNlcnRpb25Qb2ludCktPmRp
ZFJlbW92ZVRyYWNrKHRoaXMpOworICAgICAgICB0b01lZGlhRWxlbWVudChpbnNlcnRpb25Qb2lu
dCktPmRpZFJlbW92ZVRleHRUcmFjayh0aGlzKTsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZy
b20oaW5zZXJ0aW9uUG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNmNjNmUwMDk4ZWUyZGY1NzI3MGEyMTllZWJiMTdlMTUxZTIx
YWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKwor
I2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1
ZGUgIlRyYWNrQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFsdGVy
bmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmRlc2NyaXB0aW9u
S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBkZXNjcmlwdGlvbjsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbjsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1haW5EZXNjOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0aW9u
LCAoInRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiB0cmFuc2xhdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1Ry
YWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVudGFyeTsKK30KKworQXVk
aW9UcmFjazo6QXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRyYWNrQmFzZShUcmFja0Jh
c2U6OkF1ZGlvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwgdHJhY2tQcml2YXRlLT5sYW5n
dWFnZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkpCisgICAgLCBtX2VuYWJsZWQo
dHJhY2tQcml2YXRlLT5lbmFibGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBt
X3ByaXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMp
OworCisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgQXVkaW9UcmFj
a1ByaXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVy
bmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJp
dmF0ZTo6RGVzY3JpcHRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6ZGVzY3JpcHRp
b25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRl
OjpNYWluOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluRGVzYzoKKyAgICAg
ICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OlRyYW5zbGF0aW9uOgorICAgICAgICBzZXRL
aW5kKEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2luZChB
dWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQXVkaW9UcmFjazo6fkF1ZGlvVHJh
Y2soKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KDApOworfQorCitib29sIEF1ZGlvVHJh
Y2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAg
aWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xhdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEF1ZGlvVHJhY2s6
OnNldEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX2VuYWJsZWQgPT0g
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKwor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZCh0aGlzKTsKK30KKworaW50IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgoKQorewor
ICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvVHJhY2tJ
bmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjUxZmU0MmZkNWZiYTMxNDNm
MzU3NWNkYTZkNzExZDkxZGIzODYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNr
RW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sg
OiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNr
Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFjayhjbGllbnQs
IHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAg
ICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBtYWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFu
c2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50
YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2lu
ZEtleXdvcmQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wgZW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFi
bGVkKGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2Ns
aWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2NsaWVudDsgfQorCisgICAgaW50IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVk
OgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+KTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9p
ZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsK
KworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRiNjNjODVkZDk4MTg0ZTY2NWYxZGI2NDI3
MWNhNDRiZGU2ZTMxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENv
bmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpT
Q3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBraW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29s
ZWFuIGVuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNGJiY2U4MzVmZTMwZWJiMzZhM2E3MGVhZTdhN2I2ZWYwMTQ3
NTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1Ry
YWNrTGlzdC5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvVHJhY2tMaXN0OjpBdWRp
b1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisK
K0F1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QoKQoreworfQorCit2b2lkIEF1ZGlvVHJh
Y2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBS
ZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFj
a3MgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmlu
YmFuZFRyYWNrSW5kZXgoKTsKKyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNr
KTsKKworICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVs
ZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkp
OworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK0F1
ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAorewor
ICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUoKSkgeworICAgICAgICBUcmFja0Jh
c2UqIHRyYWNrID0gbV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAgICBBU1NFUlQo
dHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2spOworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK
K30KKworQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICBUcmFja0Jhc2UqIHRyYWNrID0gaXRlbShpKTsKKyAgICAgICAg
QVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAgICAgICAg
QXVkaW9UcmFjayogYXVkaW9UcmFjayA9IGR5bmFtaWNfY2FzdDxBdWRpb1RyYWNrKj4odHJhY2sp
OworICAgICAgICBpZiAoYXVkaW9UcmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVy
biBhdWRpb1RyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA3
MThhM2JiNDVmOGVhY2RhMzQxYTJmMTBjY2Q1NjdkYWM5MzA1MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3RfaAorI2RlZmluZSBB
dWRpb1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJU
cmFja0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFj
azsKKworY2xhc3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVk
aWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIsIGNvbnRl
eHQpKTsKKyAgICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2s+KTsKKyAgICBBdWRpb1RyYWNrKiBpdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKKyAgICBBdWRpb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQXVkaW9U
cmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMxY2UwOGMy
NGM5NDA0MTk0MGQ2Mzc4OGIzMGI0ZTk0NmM2NWVjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRH
ZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAg
SlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgeworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRpb1RyYWNrIGl0
ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRUcmFja0J5SWQo
aW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdl
OworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5l
cihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
XSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBE
T01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
XSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVu
dCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggM2MyNzRiMWUxNGI5YjkwNjFmZDg3ZjQy
Zjg2YWJhMjJlNWM4ODQxMC4uOGUwM2Y4ZTJhZDI2MzAxNDQzMjA1NWQyOWIzZjkyM2Q5N2Q3YjBm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTA4LDE0ICsx
MDgsMTIgQEAgVGV4dFRyYWNrKiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgp
CiB9CiAKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UsIFRl
eHRUcmFja1R5cGUgdHlwZSkKLSAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFja0Jhc2U6OlRl
eHRUcmFjaykKKyAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaywgbGFiZWwsIGxh
bmd1YWdlKQogICAgICwgbV9jdWVzKDApCisgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
Y29udGV4dCkKICNpZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCiAgICAgLCBtX3JlZ2lvbnMoMCkK
ICNlbmRpZgotICAgICwgbV9tZWRpYUVsZW1lbnQoMCkKLSAgICAsIG1fbGFiZWwobGFiZWwpCi0g
ICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQogICAgICwgbV9tb2RlKGRpc2FibGVkS2V5d29yZCgp
LnN0cmluZygpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlw
ZSkKQEAgLTE0Myw2ICsxNDEsMzEgQEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKICAgICBjbGVh
ckNsaWVudCgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUZXh0
VHJhY2s7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFjazo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2s6OmV2ZW50VGFyZ2V0RGF0YSgp
Cit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRh
KiBUZXh0VHJhY2s6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsKK30KKworYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRleHRUcmFjazo6aXNWYWxp
ZEtpbmRLZXl3b3JkKHZhbHVlKTsKK30KKwogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5
d29yZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBzdWJ0
aXRsZXNLZXl3b3JkKCkpCkBAIC0xNTksMTYgKzE4MiwxMyBAQCBib29sIFRleHRUcmFjazo6aXNW
YWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFRleHRUcmFjazo6c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtp
bmQpCit2b2lkIFRleHRUcmFjazo6c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0tpbmQp
CiB7Ci0gICAgU3RyaW5nIG9sZEtpbmQgPSBtX2tpbmQ7CisgICAgU3RyaW5nIG9sZEtpbmQgPSBr
aW5kKCk7CiAKLSAgICBpZiAoaXNWYWxpZEtpbmRLZXl3b3JkKGtpbmQpKQotICAgICAgICBtX2tp
bmQgPSBraW5kOwotICAgIGVsc2UKLSAgICAgICAgbV9raW5kID0gc3VidGl0bGVzS2V5d29yZCgp
OworICAgIFRyYWNrQmFzZTo6c2V0S2luZChuZXdLaW5kKTsKIAotICAgIGlmIChtX2NsaWVudCAm
JiBvbGRLaW5kICE9IG1fa2luZCkKKyAgICBpZiAobV9jbGllbnQgJiYgb2xkS2luZCAhPSBraW5k
KCkpCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tLaW5kQ2hhbmdlZCh0aGlzKTsKIH0KIApA
QCAtNDExLDcgKzQzMSw3IEBAIHZvaWQgVGV4dFRyYWNrOjppbnZhbGlkYXRlVHJhY2tJbmRleCgp
CiAKIGJvb2wgVGV4dFRyYWNrOjppc1JlbmRlcmVkKCkKIHsKLSAgICBpZiAobV9raW5kICE9IGNh
cHRpb25zS2V5d29yZCgpICYmIG1fa2luZCAhPSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgaWYg
KGtpbmQoKSAhPSBjYXB0aW9uc0tleXdvcmQoKSAmJiBraW5kKCkgIT0gc3VidGl0bGVzS2V5d29y
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9tb2RlICE9IHNob3dpbmdL
ZXl3b3JkKCkpCkBAIC01MDIsMTcgKzUyMiwxNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRy
YWNrPiBUZXh0VHJhY2s6OnBsYXRmb3JtVGV4dFRyYWNrKCkKICAgICBpZiAobV9wbGF0Zm9ybVRl
eHRUcmFjaykKICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CiAKLSAgICBQbGF0
Zm9ybVRleHRUcmFjazo6VHJhY2tLaW5kIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlv
bjsKLSAgICBpZiAobV9raW5kID09IHN1YnRpdGxlc0tleXdvcmQoKSkKLSAgICAgICAga2luZCA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRsZTsKLSAgICBlbHNlIGlmIChtX2tpbmQgPT0gY2Fw
dGlvbnNLZXl3b3JkKCkpCi0gICAgICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlv
bjsKLSAgICBlbHNlIGlmIChtX2tpbmQgPT0gZGVzY3JpcHRpb25zS2V5d29yZCgpKQotICAgICAg
ICBraW5kID0gUGxhdGZvcm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOwotICAgIGVsc2UgaWYgKG1f
a2luZCA9PSBjaGFwdGVyc0tleXdvcmQoKSkKLSAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpDaGFwdGVyOwotICAgIGVsc2UgaWYgKG1fa2luZCA9PSBtZXRhZGF0YUtleXdvcmQoKSkK
LSAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpNZXRhRGF0YTsKKyAgICBQbGF0Zm9y
bVRleHRUcmFjazo6VHJhY2tLaW5kIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpD
YXB0aW9uOworICAgIGlmIChraW5kKCkgPT0gc3VidGl0bGVzS2V5d29yZCgpKQorICAgICAgICBw
bGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6U3VidGl0bGU7CisgICAgZWxzZSBpZiAo
a2luZCgpID09IGNhcHRpb25zS2V5d29yZCgpKQorICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0
Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKKyAgICBlbHNlIGlmIChraW5kKCkgPT0gZGVzY3JpcHRp
b25zS2V5d29yZCgpKQorICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6
RGVzY3JpcHRpb247CisgICAgZWxzZSBpZiAoa2luZCgpID09IGNoYXB0ZXJzS2V5d29yZCgpKQor
ICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2hhcHRlcjsKKyAgICBl
bHNlIGlmIChraW5kKCkgPT0gbWV0YWRhdGFLZXl3b3JkKCkpCisgICAgICAgIHBsYXRmb3JtS2lu
ZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpNZXRhRGF0YTsKIAogICAgIFBsYXRmb3JtVGV4dFRyYWNr
OjpUcmFja1R5cGUgdHlwZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpPdXRPZkJhbmQ7CiAgICAgaWYg
KG1fdHJhY2tUeXBlID09IFRyYWNrRWxlbWVudCkKQEAgLTUyMiw3ICs1NDIsNyBAQCBQYXNzUmVm
UHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6OnBsYXRmb3JtVGV4dFRyYWNrKCkKICAg
ICBlbHNlIGlmIChtX3RyYWNrVHlwZSA9PSBJbkJhbmQpCiAgICAgICAgIHR5cGUgPSBQbGF0Zm9y
bVRleHRUcmFjazo6SW5CYW5kOwogCi0gICAgbV9wbGF0Zm9ybVRleHRUcmFjayA9IFBsYXRmb3Jt
VGV4dFRyYWNrOjpjcmVhdGUodGhpcywgbV9sYWJlbCwgbV9sYW5ndWFnZSwga2luZCwgdHlwZSk7
CisgICAgbV9wbGF0Zm9ybVRleHRUcmFjayA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUodGhp
cywgbGFiZWwoKSwgbGFuZ3VhZ2UoKSwgcGxhdGZvcm1LaW5kLCB0eXBlKTsKIAogICAgIHJldHVy
biBtX3BsYXRmb3JtVGV4dFRyYWNrOwogfQpAQCAtNTM0LDcgKzU1NCw3IEBAIGJvb2wgVGV4dFRy
YWNrOjppc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0CiAgICAgLy8gZGlyZWN0b3JzIGNvbW1l
bnRhcnkgaXMgbm90ICJtYWluIHByb2dyYW0iIGJlY2F1c2UgaXQgaXMgbm90IGVzc2VudGlhbCBm
b3IgdGhlIHByZXNlbnRhdGlvbi4gSFRNTDUgZG9lc24ndCBoYXZlCiAgICAgLy8gYSB3YXkgdG8g
ZXhwcmVzcyB0aGlzIGluIGEgbWFjaGluZS1yZWFibGUgZm9ybSwgaXQgaXMgdHlwaWNhbGx5IGRv
bmUgd2l0aCB0aGUgdHJhY2sgbGFiZWwsIHNvIHdlIGFzc3VtZSB0aGF0IGNhcHRpb24KICAgICAv
LyB0cmFja3MgYXJlIG1haW4gY29udGVudCBhbmQgYWxsIG90aGVyIHRyYWNrIHR5cGVzIGFyZSBu
b3QuCi0gICAgcmV0dXJuIG1fa2luZCA9PSBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICByZXR1cm4g
a2luZCgpID09IGNhcHRpb25zS2V5d29yZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA1NzY5NDViYmU1MjFjZDZh
MmY2ZmZmZmQzN2U1NmFkNjY3MjYwZmYzLi40YmEzMGU3NTY1NTQ1ZjA2N2JmOTFiYjY5NGJiMzYx
N2ZlZTdmZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTQxLDcg
KzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50
OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRUcmFjazsKIGNsYXNz
IFRleHRUcmFja0N1ZTsKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayos
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgPSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDog
cHVibGljIFRyYWNrQmFzZQorY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVi
bGljIEV2ZW50VGFyZ2V0CiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAs
IHB1YmxpYyBQbGF0Zm9ybVRleHRUcmFja0NsaWVudAogI2VuZGlmCkBAIC03MywzMiArNzMsMjYg
QEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKIAorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CisKICAgICBzdGF0aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAgICBzdGF0
aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKIAotICAgIHZvaWQgc2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQg
PSBlbGVtZW50OyB9Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1
cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLQotICAgIEF0b21pY1N0cmluZyBraW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9raW5kOyB9Ci0gICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpOwot
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOwogICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NyaXB0aW9uc0tleXdvcmQoKTsKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBjaGFwdGVyc0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBtZXRhZGF0YUtleXdvcmQoKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZGVmYXVsdEtpbmRLZXl3b3JkKCkgY29uc3QgeyByZXR1cm4gc3VidGl0bGVzS2V5
d29yZCgpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21p
Y1N0cmluZyYpOwogCi0gICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9s
YWJlbDsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBt
X2xhYmVsID0gbGFiZWw7IH0KLQotICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0
cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9Ci0KICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBkaXNhYmxlZEtleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBoaWRkZW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hvd2luZ0tleXdvcmQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0
IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOworCiAgICAgQXRvbWljU3RyaW5nIG1vZGUoKSBjb25z
dCB7IHJldHVybiBtX21vZGU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9kZShjb25zdCBBdG9t
aWNTdHJpbmcmKTsKIApAQCAtMTA5LDggKzEwMyw4IEBAIHB1YmxpYzoKICAgICBUZXh0VHJhY2tD
dWVMaXN0KiBjdWVzKCk7CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogYWN0aXZlQ3VlcygpIGNvbnN0
OwogCi0gICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9Ci0gICAgVGV4dFRy
YWNrQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNsaWVudCgpIE9WRVJSSURFIHsgbV9jbGllbnQgPSAwOyB9CisgICAgVGV4dFRyYWNr
Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgdm9pZCBh
ZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2b2lkIHJlbW92ZUN1ZShUZXh0
VHJhY2tDdWUqLCBFeGNlcHRpb25Db2RlJik7CkBAIC0xNTQsMTUgKzE0OCwyNSBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UZXh0VHJhY2soKTsK
ICNlbmRpZgogCisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpyZWY7CisgICAgdXNp
bmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpkZXJlZjsKKwogcHJvdGVjdGVkOgogICAgIFRleHRU
cmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRv
bWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKICAgICBUZXh0VHJhY2tSZWdpb25MaXN0KiByZWdp
b25MaXN0KCk7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCk7CisKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2
YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBj
b25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVm
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQog
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCiAgICAg
VGV4dFRyYWNrUmVnaW9uTGlzdCogZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlzdCgpOwpAQCAtMTc3
LDEwICsxODEsOCBAQCBwcml2YXRlOgogCiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4
dFRyYWNrQ3VlTGlzdCgpOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7
Ci0gICAgQXRvbWljU3RyaW5nIG1fa2luZDsKLSAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKLSAg
ICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOwogICAgIEF0b21pY1N0cmluZyBtX21vZGU7CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBt
X2NsaWVudDsKICAgICBUZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKaW5kZXggMjkzYjNkMDI3MDFiMDk1NWQyZmE4
Yjc2OTQ4MGRhY2IwMWQ3ZDBlYy4uYzZhZDJkMTdiZTY5Y2VkODNiMGQ2NDk4MWIzMzRjZWQwNzlk
Y2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBA
IC0zMCwyMyArMzAsMTYgQEAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkluYmFuZFRleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIK
ICNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKLSNpbmNsdWRlICJUcmFja0V2ZW50
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBUZXh0VHJhY2tMaXN0OjpUZXh0VHJh
Y2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX293bmVyKG93bmVyKQot
ICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVu
dFRpbWVyRmlyZWQpCi0gICAgLCBtX2Rpc3BhdGNoaW5nRXZlbnRzKDApCisgICAgOiBUcmFja0xp
c3RCYXNlKG93bmVyLCBjb250ZXh0KQogewotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50
KCkpOwogfQogCiBUZXh0VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlzdCgpCkBAIC01OCw4ICs1MSwx
MiBAQCB1bnNpZ25lZCBUZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBt
X2FkZFRyYWNrVHJhY2tzLnNpemUoKSArIG1fZWxlbWVudFRyYWNrcy5zaXplKCkgKyBtX2luYmFu
ZFRyYWNrcy5zaXplKCk7CiB9CiAKLWludCBUZXh0VHJhY2tMaXN0OjpnZXRUcmFja0luZGV4KFRl
eHRUcmFjayAqdGV4dFRyYWNrKQoraW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXgoVHJh
Y2tCYXNlICp0cmFjaykKIHsKKyAgICBpZiAodHJhY2stPnR5cGUoKSAhPSBUcmFja0Jhc2U6OlRl
eHRUcmFjaykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFRleHRUcmFjayogdGV4dFRyYWNrID0g
c3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOworCiAgICAgaWYgKHRleHRUcmFjay0+dHJh
Y2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxMb2FkYWJsZVRleHRUcmFjayo+KHRleHRUcmFjayktPnRyYWNrRWxlbWVudEluZGV4
KCk7CiAKQEAgLTk4LDcgKzk1LDcgQEAgaW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXhS
ZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRyYWNrICp0ZXh0VHJhY2spCiAgICAgfQogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAoIW1faW5iYW5kVHJhY2tzW2ldLT5pc1JlbmRlcmVkKCkpCisgICAgICAgIGlm
ICghZ2V0SW5iYW5kVHJhY2soaSktPmlzUmVuZGVyZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKICAgICAgICAgaWYgKG1faW5iYW5kVHJhY2tzW2ldID09IHRleHRUcmFjaykK
QEAgLTExMSw3ICsxMDgsNyBAQCBpbnQgVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleFJlbGF0
aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sgKnRleHRUcmFjaykKICAgICByZXR1cm4gLTE7
CiB9CiAKLVRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKK1Rl
eHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAg
ICAvLyA0LjguMTAuMTIuMSBUZXh0IHRyYWNrIG1vZGVsCiAgICAgLy8gVGhlIHRleHQgdHJhY2tz
IGFyZSBzb3J0ZWQgYXMgZm9sbG93czoKQEAgLTEyOSwzNiArMTI2LDQ1IEBAIFRleHRUcmFjayog
VGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIAogICAgIGluZGV4IC09IG1fYWRk
VHJhY2tUcmFja3Muc2l6ZSgpOwogICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIGdldEluYmFuZFRyYWNrKGluZGV4KTsKIAogICAgIHJldHVybiAwOwogfQogCi12b2lk
IFRleHRUcmFja0xpc3Q6OmludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKFRleHRUcmFj
ayogdHJhY2spCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6OmdldEluYmFuZFRyYWNrKHVuc2ln
bmVkIGluZGV4KSBjb25zdAogewotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFj
a3MgPSAwOworICAgIFRyYWNrQmFzZSogdHJhY2sgPSBtX2luYmFuZFRyYWNrc1tpbmRleF0uZ2V0
KCk7CisgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpUZXh0VHJhY2spOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayk7Cit9CiAKK3ZvaWQgVGV4
dFRyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKiB0
cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBub3RGb3VuZDsKICAgICBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7Ci0gICAgICAgIHRyYWNrcyA9
ICZtX2VsZW1lbnRUcmFja3M7CisgICAgICAgIGluZGV4ID0gbV9lbGVtZW50VHJhY2tzLmZpbmQo
dHJhY2spOworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IG1fZWxlbWVudFRyYWNrcy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fZWxlbWVudFRyYWNrcy5hdChpbmRleCktPmludmFs
aWRhdGVUcmFja0luZGV4KCk7CisgICAgfSBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0g
VGV4dFRyYWNrOjpBZGRUcmFjaykgeworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsK
KyAgICAgICAgICAgIGluZGV4ID0gbV9hZGRUcmFja1RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICAg
ICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FkZFRyYWNrVHJhY2tz
LnNpemUoKTsgKytpKQogICAgICAgICAgICAgbV9hZGRUcmFja1RyYWNrc1tpXS0+aW52YWxpZGF0
ZVRyYWNrSW5kZXgoKTsKKyAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0
VHJhY2s6OkluQmFuZCkgeworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgICAgIGluZGV4ID0gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFjayk7CisgICAgICAgICAgICBp
ZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICBtX2luYmFuZFRyYWNrc1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgo
KTsKLSAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRy
YWNrKSB7Ci0gICAgICAgIHRyYWNrcyA9ICZtX2FkZFRyYWNrVHJhY2tzOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgbV9pbmJhbmRUcmFja3NbaV0tPmludmFsaWRhdGVUcmFja0luZGV4KCk7Ci0gICAgfSBlbHNl
IGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgIHRy
YWNrcyA9ICZtX2luYmFuZFRyYWNrczsKLSAgICBlbHNlCisgICAgICAgICAgICBnZXRJbmJhbmRU
cmFjayhpKS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKKyAgICB9IGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJh
Y2spOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdHJhY2tzLT5zaXplKCk7ICsraSkKLSAgICAgICAg
dHJhY2tzLT5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0luZGV4KCk7CiB9CiAKIHZvaWQgVGV4
dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBwcnBUcmFjaykKQEAgLTE3
Myw1OCArMTc5LDY3IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4
dFRyYWNrPiBwcnBUcmFjaykKICAgICAgICAgbV9lbGVtZW50VHJhY2tzLmluc2VydChpbmRleCwg
dHJhY2spOwogICAgIH0gZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6
SW5CYW5kKSB7CiAgICAgICAgIC8vIEluc2VydCB0cmFja3MgYWRkZWQgZm9yIGluLWJhbmQgaW4g
dGhlIG1lZGlhIGZpbGUgb3JkZXIuCi0gICAgICAgIHNpemVfdCBpbmRleCA9IHN0YXRpY19jYXN0
PEluYmFuZFRleHRUcmFjayo+KHRyYWNrLmdldCgpKS0+aW5iYW5kVHJhY2tJbmRleCgpOworICAg
ICAgICBzaXplX3QgaW5kZXggPSBkeW5hbWljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrKj4odHJhY2su
Z2V0KCkpLT5pbmJhbmRUcmFja0luZGV4KCk7CiAgICAgICAgIG1faW5iYW5kVHJhY2tzLmluc2Vy
dChpbmRleCwgdHJhY2spOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRyYWNrLmdldCgpKTsK
IAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1l
bnQoKSA9PSBtX293bmVyKTsKLSAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG1fb3duZXIpOwor
ICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQo
KSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOwogCiAg
ICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgVGV4
dFRyYWNrTGlzdDo6cmVtb3ZlKFRleHRUcmFjayogdHJhY2spCit2b2lkIFRleHRUcmFja0xpc3Q6
OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQogewotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
PiA+KiB0cmFja3MgPSAwOwotCi0gICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OlRyYWNrRWxlbWVudCkKLSAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNrczsKLSAg
ICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKLSAg
ICAgICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0gICAgZWxzZSBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAgICB0cmFja3MgPSAmbV9pbmJh
bmRUcmFja3M7CisgICAgaWYgKHRyYWNrLT50eXBlKCkgIT0gVHJhY2tCYXNlOjpUZXh0VHJhY2sp
CisgICAgICAgIHJldHVybjsKKyAgICBUZXh0VHJhY2sqIHRleHRUcmFjayA9IHN0YXRpY19jYXN0
PFRleHRUcmFjayo+KHRyYWNrKTsKKworICAgIHNpemVfdCBpbmRleCA9IG5vdEZvdW5kOworICAg
IGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQor
ICAgICAgICBtX2VsZW1lbnRUcmFja3MuZmluZCh0ZXh0VHJhY2spOworICAgIGVsc2UgaWYgKHRl
eHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKKyAgICAgICAgbV9h
ZGRUcmFja1RyYWNrcy5maW5kKHRleHRUcmFjayk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgbV9pbmJhbmRUcmFja3Mu
ZmluZCh0ZXh0VHJhY2spOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJhY2spOwogICAgIGlmIChpbmRl
eCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW52YWxpZGF0ZVRyYWNrSW5k
ZXhlc0FmdGVyVHJhY2sodHJhY2spOworICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRy
YWNrKHRleHRUcmFjayk7CiAKLSAgICBBU1NFUlQodHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1f
b3duZXIpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7CisgICAgQVNTRVJUKHRyYWNr
LT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0ZXh0VHJhY2stPnNldE1lZGlhRWxl
bWVudCgwKTsKIAotICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKKyAgICBpZiAodGV4dFRyYWNr
LT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKKyAgICAgICAgbV9lbGVt
ZW50VHJhY2tzLnJlbW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50cmFja1R5
cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQorICAgICAgICBtX2FkZFRyYWNrVHJhY2tzLnJl
bW92ZShpbmRleCk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0
VHJhY2s6OkluQmFuZCkKKyAgICAgICAgbV9pbmJhbmRUcmFja3MucmVtb3ZlKGluZGV4KTsKKyAg
ICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIFRleHRUcmFj
a0xpc3Q6OmNvbnRhaW5zKFRleHRUcmFjayogdHJhY2spIGNvbnN0Citib29sIFRleHRUcmFja0xp
c3Q6OmNvbnRhaW5zKFRyYWNrQmFzZSogdHJhY2spIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNrcyA9IDA7Ci0gICAgCi0gICAgaWYgKHRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKLSAgICAgICAgdHJhY2tzID0g
Jm1fZWxlbWVudFRyYWNrczsKLSAgICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpBZGRUcmFjaykKLSAgICAgICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0g
ICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAg
ICAgICB0cmFja3MgPSAmbV9pbmJhbmRUcmFja3M7Ci0gICAgZWxzZQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBpZiAodHJhY2stPnR5cGUoKSAhPSBUcmFja0Jhc2U6OlRleHRU
cmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFRleHRUcmFjayogdGV4dFRyYWNrID0g
c3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spOwogICAgIAotICAgIHJldHVybiB0cmFja3Mt
PmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgp
ID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQorICAgICAgICByZXR1cm4gbV9lbGVtZW50VHJh
Y2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCisgICAgICAgIHJldHVybiBtX2FkZFRyYWNrVHJh
Y2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlw
ZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICByZXR1cm4gbV9pbmJhbmRUcmFja3Mu
ZmluZCh0cmFjaykgIT0gbm90Rm91bmQ7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0xpc3Q6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdApAQCAtMjMyLDQxICsyNDcsNCBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAogICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrTGlzdDsKIH0KIAotdm9pZCBUZXh0VHJhY2tM
aXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNrKQot
ewotICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCi0g
ICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKLSAgICAvLyAuLi4gdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMg
bm90IAotICAgIC8vIGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMg
dGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCB3aXRoIAotICAgIC8vIHRoZSB0cmFjayBhdHRyaWJ1
dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0VHJhY2sgb2JqZWN0LCBhdCAK
LSAgICAvLyB0aGUgbWVkaWEgZWxlbWVudCdzIHRleHRUcmFja3MgYXR0cmlidXRlJ3MgVGV4dFRy
YWNrTGlzdCBvYmplY3QuCi0KLSAgICBSZWZQdHI8VGV4dFRyYWNrPiB0cmFja1JlZiA9IHRyYWNr
OwotICAgIFRyYWNrRXZlbnRJbml0IGluaXRpYWxpemVyOwotICAgIGluaXRpYWxpemVyLnRyYWNr
ID0gdHJhY2tSZWY7Ci0gICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOwotICAgIGluaXRp
YWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKLQotICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQo
VHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBpbml0aWFsaXpl
cikpOwotICAgIGlmICghbV9wZW5kaW5nRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBt
X3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBUZXh0VHJhY2tM
aXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tMaXN0PiopCi17Ci0gICAg
VmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOwotCi0gICAgKyttX2Rpc3BhdGNo
aW5nRXZlbnRzOwotICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOwotICAg
IHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChw
ZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCksIElHTk9SRV9FWENFUFRJT04pOwotICAgIC0t
bV9kaXNwYXRjaGluZ0V2ZW50czsKLX0KLQotTm9kZSogVGV4dFRyYWNrTGlzdDo6b3duZXIoKSBj
b25zdAotewotICAgIHJldHVybiBtX293bmVyOwotfQotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggMWVlMTVjOTNjOTg3OWU1YzlhYTVlNWQ0
YjY5MWQ0N2MwNTQ2MmEyMS4uZWY1MjY3ZDQxNThkODU5MDY5MzU0NDBmNmM4MmYwODhlNGVkMzE0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKQEAgLTI4LDIx
ICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSAiRXZlbnRM
aXN0ZW5lci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
ICJUcmFja0xpc3RCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKIGNsYXNzIFRleHRUcmFjazsKLWNsYXNzIFRleHRUcmFja0xpc3Q7CiAKLWNs
YXNzIFRleHRUcmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0PiwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRleHRUcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0
QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIHsKQEAgLTUwLDU0ICs0MiwyNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5UZXh0
VHJhY2tMaXN0KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBpbnQgZ2V0
VHJhY2tJbmRleChUZXh0VHJhY2sqKTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJlbGF0aXZlVG9S
ZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2sqKTsKLSAgICBib29sIGNvbnRhaW5zKFRleHRUcmFjayop
IGNvbnN0OwogCi0gICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGdl
dFRyYWNrSW5kZXgoVHJhY2tCYXNlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRh
aW5zKFRyYWNrQmFzZSopIGNvbnN0IE9WRVJSSURFOworCisgICAgVGV4dFRyYWNrKiBpdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFj
az4pOwotICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoVHJhY2tCYXNlKikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Ci0gICAgdXNpbmcg
UmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4
dFRyYWNrTGlzdD46OmRlcmVmOwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQotCi0g
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0cmFjayk7Ci0KLSAgICB2b2lk
IGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAwOyB9Ci0gICAgTm9kZSogb3duZXIoKSBjb25zdDsK
LQotICAgIGJvb2wgaXNGaXJpbmdFdmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZGlzcGF0Y2hp
bmdFdmVudHM7IH0KIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1l
bnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0K
LSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0KLSAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tF
dmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwotICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmly
ZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKTsKLQorICAgIFRleHRUcmFjayogZ2V0SW5iYW5kVHJh
Y2sodW5zaWduZWQpIGNvbnN0OwogICAgIHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVy
VHJhY2soVGV4dFRyYWNrKik7CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRl
eHQ7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9vd25lcjsKLQotICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOwotICAgIFRpbWVyPFRleHRUcmFja0xpc3Q+IG1fcGVu
ZGluZ0V2ZW50VGltZXI7Ci0KLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7
Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV9hZGRUcmFja1RyYWNrczsKLSAgICBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX2VsZW1lbnRUcmFja3M7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxUZXh0VHJhY2s+ID4gbV9pbmJhbmRUcmFja3M7Ci0KLSAgICBpbnQgbV9kaXNwYXRjaGlu
Z0V2ZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlRleHRUcmFjaz4gPiBtX2FkZFRy
YWNrVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6VGV4dFRyYWNrPiA+IG1fZWxl
bWVudFRyYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRleCA2YTJjMzU4MjNlNjE5NjJhMzdjOWY4ZjRjZWZk
OTg5ZGRhYjUwZGZlLi5kZTRlMzg1NzRjZDgxODAyYTZhZTAxMDFhMzAwYzZiMjkwYjk4MmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCkBAIC0zMCw4ICszMCwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRyYWNrQmFzZTo6VHJhY2tCYXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgdHlwZSkKLSAgICA6IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dChjb250ZXh0KQorVHJhY2tCYXNlOjpUcmFja0Jhc2UoVHlwZSB0eXBlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKQorICAg
IDogbV9tZWRpYUVsZW1lbnQoMCkKKyAgICAsIG1fbGFiZWwobGFiZWwpCisgICAgLCBtX2xhbmd1
YWdlKGxhbmd1YWdlKQogewogICAgIEFTU0VSVCh0eXBlICE9IEJhc2VUcmFjayk7CiAgICAgbV90
eXBlID0gdHlwZTsKQEAgLTQxLDI0ICs0MywxNCBAQCBUcmFja0Jhc2U6On5UcmFja0Jhc2UoKQog
ewogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRyYWNrQmFzZTo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit2b2lkIFRyYWNrQmFzZTo6c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCiB7
Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUZXh0VHJhY2s7Ci19Ci0KLVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRyYWNrQmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLX0KKyAgICBT
dHJpbmcgb2xkS2luZCA9IG1fa2luZDsKIAotRXZlbnRUYXJnZXREYXRhKiBUcmFja0Jhc2U6OmV2
ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQot
RXZlbnRUYXJnZXREYXRhKiBUcmFja0Jhc2U6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0g
ICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBpZiAoaXNWYWxpZEtpbmQoa2luZCkp
CisgICAgICAgIG1fa2luZCA9IGtpbmQ7CisgICAgZWxzZQorICAgICAgICBtX2tpbmQgPSBkZWZh
dWx0S2luZEtleXdvcmQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKaW5kZXggYzAwNjYwZjA1M2FkNjQ5NDE2NThmMjBkNzUw
MzBjYWJjOTMyNzk4OS4uNTQ2Mjg5OGMwZTA1N2UyMjcwYzkxNDFhNmFkNTJiNDMyZGE3MjQ4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0zMywzNSArMzMsNDIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIAotY2xhc3MgVHJhY2tCYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8VHJhY2tCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRyYWNrQmFzZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflRy
YWNrQmFzZSgpOwogCiAgICAgZW51bSBUeXBlIHsgQmFzZVRyYWNrLCBUZXh0VHJhY2ssIEF1ZGlv
VHJhY2ssIFZpZGVvVHJhY2sgfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Q7Ci0gICAgCi0gICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+
OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpkZXJlZjsKKyAgICB2b2lk
IHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7IG1fbWVkaWFFbGVt
ZW50ID0gZWxlbWVudDsgfQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIHsg
cmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CisKKyAgICBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21p
Y1N0cmluZyYpOworCisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9s
YWJlbDsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBt
X2xhYmVsID0gbGFiZWw7IH0KKworICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFuZ3VhZ2U7IH0KKyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0
cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJDbGllbnQoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBUcmFja0Jhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUpOwotICAgIAotICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgVHJhY2tCYXNlKFR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpOworCisgICAgdmly
dHVhbCBib29sIGlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVsdEtpbmRLZXl3b3JkKCkgY29uc3Qg
PSAwOworCisgICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiAKIHByaXZhdGU6
CiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJl
ZigpOyB9Ci0gICAgCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBB
dG9taWNTdHJpbmcgbV9raW5kOworICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOworICAgIEF0b21p
Y1N0cmluZyBtX2xhbmd1YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ1OWJk
MjRiNWI2MmZhODkyOTkxN2ZhNDZmNDYyNTEwOTE3YmEwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTAsMCArMSwxNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSAi
VHJhY2tFdmVudC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworVHJhY2tMaXN0QmFz
ZTo6VHJhY2tMaXN0QmFzZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9vd25l
cihvd25lcikKKyAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIodGhpcywgJlRyYWNrTGlzdEJhc2U6
OmFzeW5jRXZlbnRUaW1lckZpcmVkKQorICAgICwgbV9kaXNwYXRjaGluZ0V2ZW50cygwKQorewor
ICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworfQorCitUcmFja0xpc3RCYXNlOjp+
VHJhY2tMaXN0QmFzZSgpCit7Cit9CisKK3Vuc2lnbmVkIFRyYWNrTGlzdEJhc2U6Omxlbmd0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzLnNpemUoKTsKK30KKworaW50IFRy
YWNrTGlzdEJhc2U6OmdldFRyYWNrSW5kZXgoVHJhY2tCYXNlICp0cmFjaykKK3sKKyAgICByZXR1
cm4gbV9pbmJhbmRUcmFja3MuZmluZCh0cmFjayk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6
cmVtb3ZlKFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgc2l6ZV90IGluZGV4ID0gbV9pbmJhbmRU
cmFja3MuZmluZCh0cmFjayk7CisgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKKworICAg
IEFTU0VSVCh0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7CisgICAgdHJhY2stPnNl
dE1lZGlhRWxlbWVudCgwKTsKKworICAgIFJlZlB0cjxUcmFja0Jhc2U+IHRyYWNrUmVmID0gbV9p
bmJhbmRUcmFja3NbaW5kZXhdOworCisgICAgbV9pbmJhbmRUcmFja3MucmVtb3ZlKGluZGV4KTsK
KworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFja1JlZi5yZWxlYXNlKCkpOworfQorCiti
b29sIFRyYWNrTGlzdEJhc2U6OmNvbnRhaW5zKFRyYWNrQmFzZSogdHJhY2spIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworfQorCit2
b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPFRyYWNr
QmFzZT4gdHJhY2spCit7CisgICAgLy8gNC44LjEwLjUgTG9hZGluZyB0aGUgbWVkaWEgcmVzb3Vy
Y2UKKyAgICAvLyAuLi4KKyAgICAvLyBGaXJlIGEgdHJ1c3RlZCBldmVudCB3aXRoIHRoZSBuYW1l
IGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKKyAgICAvLyBub3QgY2FuY2Vs
YWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGggdGhlIHRy
YWNrCisgICAgLy8gYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSBuZXcgVCBvYmplY3QsIGF0
IHRoaXMKKyAgICAvLyBUcmFja0xpc3RCYXNlIG9iamVjdC4KKworICAgIFJlZlB0cjxUcmFja0Jh
c2U+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6ZXI7Cisg
ICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5idWJibGVz
ID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgbV9w
ZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRy
YWNrRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwor
fQorCit2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudChQYXNzUmVm
UHRyPFRyYWNrQmFzZT4gdHJhY2spCit7CisgICAgLy8gNC44LjEwLjYgT2Zmc2V0cyBpbnRvIHRo
ZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIElmIGF0IGFueSB0aW1lIHRoZSB1c2VyIGFnZW50IGxl
YXJucyB0aGF0IGFuIGF1ZGlvIG9yIHZpZGVvIHRyYWNrIGhhcworICAgIC8vIGVuZGVkIGFuZCBh
bGwgbWVkaWEgZGF0YSByZWxhdGluZyB0byB0aGF0IHRyYWNrIGNvcnJlc3BvbmRzIHRvIHBhcnRz
IG9mCisgICAgLy8gdGhlIG1lZGlhIHRpbWVsaW5lIHRoYXQgYXJlIGJlZm9yZSB0aGUgZWFybGll
c3QgcG9zc2libGUgcG9zaXRpb24sIHRoZQorICAgIC8vIHVzZXIgYWdlbnQgbWF5IHF1ZXVlIGEg
dGFzayB0byByZW1vdmUgdGhlIHRyYWNrIGZyb20gdGhlIGF1ZGlvVHJhY2tzCisgICAgLy8gYXR0
cmlidXRlJ3MgVHJhY2tMaXN0QmFzZSBvYmplY3Qgb3IgdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0
ZSdzCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QgYXMgYXBwcm9wcmlhdGUgYW5kIHRoZW4g
ZmlyZSBhIHRydXN0ZWQgZXZlbnQKKyAgICAvLyB3aXRoIHRoZSBuYW1lIHJlbW92ZXRyYWNrLCB0
aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsCisgICAgLy8gYW5kIHRo
YXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGggdGhlIHRyYWNrIGF0dHJpYnV0
ZQorICAgIC8vIGluaXRpYWxpemVkIHRvIHRoZSBUIG9yIFQgb2JqZWN0IHJlcHJlc2VudGluZyB0
aGUKKyAgICAvLyB0cmFjaywgYXQgdGhlIG1lZGlhIGVsZW1lbnQncyBhZm9yZW1lbnRpb25lZCBU
cmFja0xpc3RCYXNlIG9yCisgICAgLy8gVHJhY2tMaXN0QmFzZSBvYmplY3QuCisKKyAgICBSZWZQ
dHI8VHJhY2tCYXNlPiB0cmFja1JlZiA9IHRyYWNrOworICAgIFRyYWNrRXZlbnRJbml0IGluaXRp
YWxpemVyOworICAgIGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7CisgICAgaW5pdGlhbGl6
ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsK
KworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICghbV9wZW5kaW5n
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50
KCkKK3sKKyAgICAvLyA0LjguMTAuNiBPZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291cmNlCisg
ICAgLy8gV2hlbmV2ZXIgYW4gYXVkaW8gdHJhY2sgaW4gYW4gVHJhY2tMaXN0QmFzZSBpcyBlbmFi
bGVkIG9yIGRpc2FibGVkLCB0aGUKKyAgICAvLyB1c2VyIGFnZW50IG11c3QgcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZQorICAgIC8vIFRyYWNr
TGlzdEJhc2Ugb2JqZWN0LgorCisgICAgRXZlbnRJbml0IGluaXRpYWxpemVyOworICAgIGluaXRp
YWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFs
c2U7CisKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNoYW5nZUV2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICghbV9wZW5kaW5nRXZlbnRU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjphc3luY0V2ZW50VGltZXJGaXJlZChUaW1l
cjxUcmFja0xpc3RCYXNlPiopCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5n
RXZlbnRzOworCisgICAgKyttX2Rpc3BhdGNoaW5nRXZlbnRzOworICAgIG1fcGVuZGluZ0V2ZW50
cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNpemVfdCBjb3VudCA9IHBlbmRpbmdFdmVudHMu
c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRl
eCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCks
IElHTk9SRV9FWENFUFRJT04pOworICAgIC0tbV9kaXNwYXRjaGluZ0V2ZW50czsKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ1ZmE1NjJlYjc0YWU0NTk2NzYyYWIzNTU3MzNjZGU0NjUzZDVjYjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApAQCAtMCwwICsx
LDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRyYWNrTGlzdEJhc2VfaAorI2RlZmlu
ZSBUcmFja0xpc3RCYXNlX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUg
IkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgVHJhY2tCYXNlOworCitjbGFzcyBUcmFj
a0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1YmxpYyBFdmVu
dFRhcmdldCB7CitwdWJsaWM6CisgICAgflRyYWNrTGlzdEJhc2UoKTsKKworICAgIHZpcnR1YWwg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0VHJhY2tJbmRleChU
cmFja0Jhc2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlKikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UqKTsKKworICAgIC8vIEV2ZW50VGFy
Z2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25z
dCA9IDA7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPjo6cmVmOworICAgIHVz
aW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRlcmVmOworICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dDsgfQorCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0
cmFjayk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjaGFuZ2UpOworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3ZldHJhY2spOworCisgICAgdm9p
ZCBjbGVhck93bmVyKCkgeyBtX293bmVyID0gMDsgfQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG93
bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorCisgICAgYm9vbCBpc0ZpcmluZ0V2ZW50
TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9kaXNwYXRjaGluZ0V2ZW50czsgfQorCisgICAgLy8gTmVl
ZHMgdG8gYmUgcHVibGljIHNvIHRyYWNrcyBjYW4gY2FsbCBpdAorICAgIHZvaWQgc2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworCitwcm90ZWN0ZWQ6CisgICAgVHJhY2tMaXN0QmFzZShIVE1MTWVkaWFF
bGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBzY2hlZHVsZUFk
ZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUcmFja0Jhc2U+KTsKKyAgICB2b2lkIHNjaGVkdWxlUmVt
b3ZlVHJhY2tFdmVudChQYXNzUmVmUHRyPFRyYWNrQmFzZT4pOworCisgICAgVmVjdG9yPFJlZlB0
cjxUcmFja0Jhc2U+ID4gbV9pbmJhbmRUcmFja3M7CisKK3ByaXZhdGU6CisgICAgLy8gRXZlbnRU
YXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJn
ZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgdm9pZCBhc3luY0V2
ZW50VGltZXJGaXJlZChUaW1lcjxUcmFja0xpc3RCYXNlPiopOworCisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fb3duZXI7CisK
KyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxU
cmFja0xpc3RCYXNlPiBtX3BlbmRpbmdFdmVudFRpbWVyOworCisgICAgRXZlbnRUYXJnZXREYXRh
IG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgaW50IG1fZGlzcGF0Y2hpbmdFdmVudHM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmNhMzNlNWU1MThiN2IzMjgz
NmZhMGZhYjQ0NjI3YzM2OTliNTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUg
IlZpZGVvVHJhY2suaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jh
c2UuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRp
dmUsICgiYWx0ZXJuYXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIGFsdGVybmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVv
VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29uc3QgQXRv
bWljU3RyaW5nJiBWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoIm1haW4iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzaWduOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3Vi
dGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVy
biBzdWJ0aXRsZXM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNvbW1lbnRhcnk7Cit9CisKK1ZpZGVvVHJhY2s6OlZp
ZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQ
cml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpWaWRlb1Ry
YWNrLCB0cmFja1ByaXZhdGUtPmxhYmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAg
ICAsIG1faWQodHJhY2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9zZWxlY3RlZCh0cmFja1ByaXZh
dGUtPnNlbGVjdGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3ByaXZhdGUo
dHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworCisgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2Fw
dGlvbnM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgorICAgICAg
ICBzZXRLaW5kKFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJh
Y2s6OnNpZ25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQ
cml2YXRlOjpTdWJ0aXRsZXM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVz
S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6
Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29y
ZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZToK
KyAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworVmlkZW9UcmFjazo6flZpZGVvVHJhY2soKQoreworICAgIG1fcHJpdmF0ZS0+c2V0
Q2xpZW50KDApOworfQorCitib29sIFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY2FwdGlvbnNL
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc2lnbktleXdv
cmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tl
eXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRh
cnlLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFZpZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCit7
CisgICAgaWYgKG1fc2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQodGhpcyk7Cit9CisKK2ludCBWaWRlb1Ry
YWNrOjppbmJhbmRUcmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT52aWRlb1RyYWNrSW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjMxODEyZGI0YjI1OTgwMGRlY2Y5MDQzOGEzMjYwMDM5OTk4YjcwMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC0w
LDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisj
ZGVmaW5lIFZpZGVvVHJhY2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJh
Y2tDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikg
PSAwOworfTsKKworY2xhc3MgVmlkZW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBW
aWRlb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
VmlkZW9UcmFjaz4gY3JlYXRlKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBWaWRlb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgfQorICAg
IHZpcnR1YWwgflZpZGVvVHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsg
bV9pZCA9IGlkOyB9CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2
ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdv
cmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsg
fQorCisgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBpbnQgaW5iYW5kVHJh
Y2tJbmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50
KiwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJpdmF0ZVRyYWNrKTsKKworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fc2VsZWN0
ZWQ7CisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY1MjZkMzMwNzE0N2YzMWRkMjRkYTJkODVkZmIyMDg3MjBjNzI3MDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFD
SywKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitd
IGludGVyZmFjZSBWaWRlb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzZWxlY3RlZDsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyZTgxYTAzYzQ4ZGNlNDk1NjM5Y2RhYjI2YzAxMWE4NDdhMTEzMWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApAQCAtMCww
ICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1ZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChIVE1MTWVk
aWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK1ZpZGVvVHJhY2tMaXN0Ojp+
VmlkZW9UcmFja0xpc3QoKQoreworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjphcHBlbmQoUGFz
c1JlZlB0cjxWaWRlb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4g
dHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZp
bGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsK
KyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCgh
dHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigp
KTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVB
ZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK1ZpZGVvVHJhY2sqIFZpZGVvVHJh
Y2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1f
aW5iYW5kVHJhY2tzLnNpemUoKSkgeworICAgICAgICBUcmFja0Jhc2UqIHRyYWNrID0gbV9pbmJh
bmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBU
cmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9U
cmFjayo+KHRyYWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9UcmFjayog
VmlkZW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICBUcmFja0Jhc2UqIHRyYWNrID0gaXRlbShpKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBl
KCkgPT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAgICAgICAgVmlkZW9UcmFjayogdmlkZW9U
cmFjayA9IGR5bmFtaWNfY2FzdDxWaWRlb1RyYWNrKj4odHJhY2spOworICAgICAgICBpZiAodmlk
ZW9UcmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB2aWRlb1RyYWNrOworICAg
IH0KKyAgICByZXR1cm4gMDsKK30KKworbG9uZyBWaWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRl
eCgpIGNvbnN0Cit7CisgICAgLy8gNC44LjEwLjEwLjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVv
VHJhY2tMaXN0IG9iamVjdHMKKyAgICAvLyBUaGUgVmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRl
eCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGluZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRs
eSBzZWxlY3RlZCB0cmFjaywgaWYgYW55LiBJZiB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRv
ZXMgbm90CisgICAgLy8gY3VycmVudGx5IHJlcHJlc2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25l
IG9mIHRoZSB0cmFja3MgYXJlIHNlbGVjdGVkLAorICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1
cm4g4oiSMS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IGl0ZW0oaSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+
dHlwZSgpID09IFRyYWNrQmFzZTo6VmlkZW9UcmFjayk7CisgICAgICAgIGlmIChkeW5hbWljX2Nh
c3Q8VmlkZW9UcmFjayo+KHRyYWNrKS0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBp
OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9U
cmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVz
KCkuaW50ZXJmYWNlRm9yVmlkZW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTE1MTM0YWMzOWNi
NzkyMTAxMzUyNmFkNjQyN2Y5ZDA3NDc1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tMaXN0X2gKKyNkZWZpbmUgVmlkZW9UcmFja0xp
c3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFz
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNz
IFZpZGVvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
b3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAg
fQorICAgIH5WaWRlb1RyYWNrTGlzdCgpOworCisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxW
aWRlb1RyYWNrPik7CisgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25lZCkgY29uc3Q7CisgICAg
VmlkZW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAg
IGxvbmcgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIFZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmQzNmFmNjIwYjg0NDU1YWY3MzhkZWIxNDg0MDQxNjNmNGE1NTJiZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRs
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RS
QUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21N
YXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgVmlkZW9U
cmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
KyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVmlkZW9U
cmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJh
Y2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7
Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRp
b1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9U
cmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODFmZWQzN2E0Yjk2NzFlMzFlMzgyNTM0YjA0Mzkw
OTQzYWE4YjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVfaAorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5B
dWRpb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZh
dGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRl
KCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAg
dm9pZCBzZXRDbGllbnQoQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0
aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21tZW50YXJ5
LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9
CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRv
bTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1w
dHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJl
dHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkK
KyAgICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQwMmUzYmNjNDViM2JiYjEyODczCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFj
a1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tQ
cml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJh
Y2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0
ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZp
ZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQo
VmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQor
ICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsgbV9zZWxl
Y3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBDYXB0
aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAgdmly
dHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwg
QXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmly
dHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0K
KworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX3NlbGVj
dGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1ByaXZh
dGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zZWxlY3RlZDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197206</attachid>
            <date>2013-04-09 21:56:12 -0700</date>
            <delta_ts>2013-04-10 11:00:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130409225554.patch</filename>
            <type>text/plain</type>
            <size>103911</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E5ZjQwMzgwNjMzMTI4
MDlhNGFkYjYwZWU4MGQxYTEyNzRmMjdjMC4uNGJlODBmMmQyM2Q2ZjQ1MTRkNDkyNTg1ZDQwMjRh
MDUxMDNhYWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5NSBAQAogMjAxMy0wNC0wOSAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CiAKKyAgICAgICAgQWRkIGludGVyZmFj
ZXMgYW5kIHN0dWJzIGZvciBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlz
IGRvZXNuJ3QgaW5jbHVkZSBhbnkgaW1wbGVtZW50YXRpb25zIHlldCwgc28KKyAgICAgICAgdGhl
cmUncyBub3RoaW5nIGludGVyZXN0aW5nIHRvIHRlc3QuIAorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VK
U0MuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFjazo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9UcmFja0xpc3RP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNB
dWRpb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tD
dXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNWaWRlb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVmlkZW9UcmFjazo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJh
Y2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVmlkZW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMp
OgorICAgICAgICAoV2ViQ29yZTo6SlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tF
bmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9U
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6YWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmF1ZGlvVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnZpZGVvVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2su
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6
OmRlc2NyaXB0aW9uS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjptYWlu
S2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2s6OkF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFjazo6fkF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6aXNW
YWxpZEtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjppbmJhbmRUcmFja0luZGV4KToKKyAgICAgICAg
KiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKEF1ZGlvVHJhY2tDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0Ns
aWVudDo6fkF1ZGlvVHJhY2tDbGllbnQpOgorICAgICAgICAoQXVkaW9UcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFjazo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6c2V0SWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6ZGVmYXVsdEtpbmRLZXl3b3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvVHJhY2s6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6Y2xlYXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6Y2xpZW50KToK
KyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChBdWRpb1RyYWNr
TGlzdDo6QXVkaW9UcmFja0xpc3QpOgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6On5BdWRpb1Ry
YWNrTGlzdCk6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKEF1
ZGlvVHJhY2tMaXN0OjppdGVtKToKKyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5
SWQpOgorICAgICAgICAoQXVkaW9UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEF1ZGlvVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tM
aXN0OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjptYWluS2V5d29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpzaWduS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6
OmNvbW1lbnRhcnlLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OlZpZGVv
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6flZpZGVvVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6aXNWYWxpZEtpbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
azo6aW5iYW5kVHJhY2tJbmRleCk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWaWRlb1RyYWNrQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6On5WaWRlb1RyYWNrQ2xpZW50KToK
KyAgICAgICAgKFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmRl
ZmF1bHRLaW5kS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGllbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlk
ZW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdCk6Cisg
ICAgICAgIChWaWRlb1RyYWNrTGlzdDo6flZpZGVvVHJhY2tMaXN0KToKKyAgICAgICAgKFZpZGVv
VHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3Q6Oml0ZW0pOgorICAg
ICAgICAoVmlkZW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZCk6CisgICAgICAgIChWaWRlb1RyYWNr
TGlzdDo6c2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChWaWRlb1RyYWNrTGlzdDo6aW50ZXJmYWNl
TmFtZSk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja0xpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdWRp
b1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZUNsaWVudDo6fkF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KToKKyAgICAgICAgKEF1ZGlvVHJhY2tQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6On5BdWRpb1RyYWNrUHJpdmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpjbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGU6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGU6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGU6OmF1ZGlvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZTo6QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmFkZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJl
bW92ZVZpZGVvVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJEaWRB
ZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRp
YVBsYXllckRpZEFkZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJD
bGllbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKToKKyAg
ICAgICAgKE1lZGlhUGxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVD
bGllbnQ6On5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCk6CisgICAgICAgIChWaWRlb1RyYWNrUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjp+VmlkZW9UcmFja1ByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlOjpzZXRTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b1RyYWNrUHJpdmF0ZTo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OmlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGU6OnZpZGVvVHJhY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZTo6VmlkZW9UcmFja1ByaXZhdGUpOgorCisyMDEzLTA0LTA5ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKwogICAgICAgICBSZWZhY3RvciBUZXh0
VHJhY2sgYW5kIFRleHRUcmFja0xpc3QgdG8gbWFrZSBpdCBlYXNpZXIgdG8gYWRkIGF1ZGlvIGFu
ZCB2aWRlbyB0cmFja3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNDMzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDExMTAxN2ExYzBmNjRkYWNi
Yzg2MmI5ZmE2OTZmNzM0YjhhZGY3YjMuLjkwYzZjODY0Yzc3ZDNhZTliMTMyN2FhYzc0ZjY0NTE1
ZDg3ZmY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNjc3LDE0ICsyNjc3LDIwIEBAIGVu
ZGlmICgpCiAKIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JRExfRklMRVMKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAorICAgICAgICBo
dG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFj
ay5pZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCiAgICAgICAgIGh0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCisgICAgICAgIGh0bWwv
dHJhY2svVmlkZW9UcmFjay5pZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5p
ZGwKICAgICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgaHRt
bC90cmFjay9BdWRpb1RyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmNwcAogICAgICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKICAgICAgICAgaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwCkBAIC0yNjk4LDYgKzI3MDQsOCBAQCBpZiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAg
ICAgICBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKKyAg
ICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmNwcAogCiAgICAgICAgIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA2YjdjZDA3ZWM3YjQ1Mzk0NTFlMDVj
N2Y1NTc4ZWY5NDhlMjRhOWQ3Li40YTRiYWRhMGMzYjU3YjE3OGI1MDI0ZTMwZDQxZTE2OWJjOWVi
NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC00NzIsMTIgKzQ3MiwxNiBAQAog
I2luY2x1ZGUgIkpTVGV4dEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRNZXRyaWNzLmNwcCIK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmNwcCIKKyNp
bmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0LmNwcCIKICNpbmNsdWRlICJKU0hUTUxUcmFja0VsZW1l
bnQuY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFj
a0N1ZS5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCIKICNpbmNsdWRlICJK
U1RleHRUcmFja0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudC5jcHAiCisjaW5jbHVk
ZSAiSlNWaWRlb1RyYWNrLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0LmNwcCIKICNl
bmRpZgogI2luY2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCiAjaW5jbHVkZSAiSlNUb3VjaC5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwZDdhNjVkMjdlOTNiNjhkNzAwYmU4
YmU2OTMwYzE5MjI2NmJkMTQ4Li4xMGRlZDYyOGJlZjY3MGZiYmRhOThiYjczZmM5NjQwMDIwY2I4
NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQzMSwxMSArNDMxLDE1IEBA
IEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0Vs
ZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAor
ICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxl
LmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggZGJlY2E0NzFhN2M2MWM3NmNm
NDIwMTUxMDg2ODU4NWY5NzcyNzI0Zi4uNzkwOWUxYWU1MWUzYTVjYmMxNDY5Y2Y1NzE0YTViZjU0
NTE5YjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNjUyLDExICs2NTIsMTUg
QEAgZW5hYmxlPyhHQU1FUEFEKSB7CiAKIGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgSURMX0JJ
TkRJTkdTICs9IFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKyAgICAk
JFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFj
ay9UZXh0VHJhY2suaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwg
XAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQkUFdE
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVHJh
Y2tFdmVudC5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAg
ICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCiB9CiAKIGVuYWJsZT8oTUVESUFf
U09VUkNFKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlZTFhZTU4ZWE0N2Jm
NmYxMTUyZDNiODVjNWZmMjQ2NzBkMzg1MDhiLi41MGU2YzlmOGNmZDkzNTYyMWNiMTNlN2ZlYzE5
ZmM5ZDEzMzY5YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE1ODYsMTEg
KzE1ODYsMTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxT
aGFkb3dFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRs
IFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNv
cmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0
LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKIAkkKFdl
YkNvcmUpL2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAJ
JChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAJJChXZWJD
b3JlKS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXApAQCAtMjMyMCw2ICsyMzI0
LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F0dHJDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVm
ZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrQ3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFj
a0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZp
bHRlck5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1
c3RvbS5jcHAgXApAQCAtMjQ3NCw2ICsyNDgxLDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgXApA
QCAtMzc2Nyw2ICszNzc3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg1LDYgKzM3OTksMTIg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
IFwKQEAgLTU0OTMsNiArNTUxMyw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6ZUxvZ2dpbmcuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dyYXBoaWNzQ29udGV4dDNETkVPTi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvTkVP
TkhlbHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9m
aWx0ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3Myw2ICs1Nzk0LDcgQEAgd2ViY29yZV9wbGF0
Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDg1ZTg3NjJkYTY4M2MxNTkwMjZl
NGEyOGExN2NhOWIyYjRlYTY1MGQuLjE5YmIxZmI3OWY2ZmI3ZGQ2OTQzOTkxNzdjYmM2YjZkZmQ0
MmNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2NSw5ICszOTY1LDEzIEBAIGVuYWJsZT8oSkFWQVND
UklQVF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgSEVBREVSUyAr
PSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5o
IFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50LmggXAorICAgICAgICBodG1sL3RyYWNr
L0F1ZGlvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAg
ICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggXAogICAgICAgICBodG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmggXAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5oIFwK
QEAgLTM5NzgsMjAgKzM5ODIsMzAgQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBo
dG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50Lmgg
XAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBcCisgICAgICAgIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwK
ICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
V2ViVlRUVG9rZW4uaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmggXAog
ICAgICAgICBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
VHJhY2tQcml2YXRlLmggXAogCiAgICAgU09VUkNFUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJh
Y2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrTGlzdEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0
b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAg
XAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3Bw
IFwKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKICAgICAgICAgaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RleHRU
cmFjay5jcHAgXApAQCAtNDAwMiw2ICs0MDE2LDggQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewog
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1Ry
YWNrRXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisg
ICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAg
XAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgXAogICAgICAgICBodG1sL3Ry
YWNrL1dlYlZUVFRva2VuaXplci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IDc5YzllMTAyNTkz
ZmQwYzAwNDllNzcyYzIxZmVjMzM5NmM0NWNiZjMuLmE4ZjJmODE2MWM1NDNjZDhhZmY0ZjhkZWVm
YmZkZGZkOGY4NWYwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTIxOCwxMSArMjE4LDE1IEBAIGVu
ZGlmICgpCiAKIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RD
dXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMv
SlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tM
aXN0Q3VzdG9tLmNwcAogICAgICkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IGYzMjJkNjRjYzdkMTdhN2ZiNzU0MDNl
YWJkMjE5YmZkM2VlZDkxOTcuLmVlZWVlYmExMGEzMmU2NWEyOTljMmNjMGNjNzgyZjQwOGNlMzE2
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5h
bQpAQCAtNDMzLDE4ICs0MzMsMjQgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAog
CiBpZiBFTkFCTEVfVklERU8KIHdlYmtpdGd0a19nZG9tX2J1aWx0X2hfYXBpICs9IFwKKwkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2su
aCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01B
dWRpb1RyYWNrTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50LmggXAogCSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrLmgg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4
dFRyYWNrTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVRleHRUcmFja0N1ZS5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaCBcCi0JJCh0b3BfYnVpbGRk
aXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50LmgKKwkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQu
aCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01W
aWRlb1RyYWNrLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuaAogd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVu
dFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRl
b0VsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZp
ZGVvRWxlbWVudFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERP
TUF1ZGlvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVk
aW9UcmFja0xpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4
dFRyYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFj
a1ByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFj
a0xpc3QuY3BwIFwKQEAgLTQ1Myw2ICs0NTksOCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3Vl
UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJh
Y2tDdWVMaXN0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
VmlkZW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRl
b1RyYWNrTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFj
a0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZl
bnRQcml2YXRlLmgKIGVuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDVjMWU0MjczOWNlNjdkNWQ1MjdkMzBh
MzJkOTE0MDU1OTM2YTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUg
IkpTQXVkaW9UcmFja0N1c3RvbS5oIgorCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0F1ZGlv
VHJhY2tPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1
ZGlvVHJhY2sqIGpzQXVkaW9UcmFjayA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2sqPihoYW5kbGUuZ2V0
KCkuYXNDZWxsKCkpOworICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sgPSBzdGF0aWNfY2FzdDxB
dWRpb1RyYWNrKj4oanNBdWRpb1RyYWNrLT5pbXBsKCkpO1wKKworICAgIC8vIElmIHRoZSB0cmFj
ayBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYg
KCFqc0F1ZGlvVHJhY2stPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoYXVkaW9U
cmFjaykpOworfQorCit2b2lkIEpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNBdWRpb1Ry
YWNrID0ganNDYXN0PEpTQXVkaW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoanNBdWRpb1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2stPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbihqc0F1ZGlvVHJhY2ssIHZpc2l0b3IpOworCisgICAgQXVkaW9UcmFjayogYXVk
aW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwoKSk7
CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFjaykpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGNkZTNiMTcyMGU4ZDZjY2Zi
ZDYxNWMyNWUzZTNjNTUyNGUzZGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEpTQXVkaW9UcmFja0N1c3RvbV9oCisjZGVmaW5lIEpTQXVkaW9UcmFja0N1
c3RvbV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmgiCisjaW5jbHVkZSAiSlNOb2RlQ3Vz
dG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
aW5saW5lIHZvaWQqIHJvb3QoQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRo
ZSBtZWRpYSBlbGVtZW50J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVk
aWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7
CisKKyAgICAvLyBObyBtZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAg
cmV0dXJuIHRyYWNrOworfQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFjNjE2YjBkNGI4YWE5Mjk0MjJmMDVhZDc1NDkzMjQwOWFhMTZhZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9t
LmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuaCIKKwor
I2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIK
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpT
QXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU0F1ZGlvVHJhY2tMaXN0KiBqc0F1ZGlvVHJhY2tMaXN0ID0ganNDYXN0PEpTQXVkaW9U
cmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEF1ZGlvVHJhY2tMaXN0KiBh
dWRpb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2tMaXN0Kj4oanNBdWRpb1RyYWNr
TGlzdC0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0
ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBw
ZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAg
IGlmIChhdWRpb1RyYWNrTGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMg
YW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBp
ZiAoIWF1ZGlvVHJhY2tMaXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc0F1ZGlvVHJhY2tM
aXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hh
YmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGF1ZGlvVHJh
Y2tMaXN0LT5vd25lcigpKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9U
cmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNBdWRpb1RyYWNrTGlzdCwgJnNf
aW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAg
ICBBU1NFUlQoanNBdWRpb1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFj
a0xpc3QsIHZpc2l0b3IpOworCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0ID0g
c3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkpOwor
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2tMaXN0LT5vd25lcigpKSk7
CisgICAgYXVkaW9UcmFja0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDJiYTEwZjU1NmU4YjQ4
MDJlOGJhOTY2ZmQxZDNjZTEyNDMxMjQwNTYuLjUxYWRmMzVlMzQ5Zjg0ZWRhNmYwM2E3YTQ5Mzll
YzNlZGM0NGVkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxl
ci5jcHAiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNB
dHRyQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tDdXN0b20uY3BwIgorI2luY2x1
ZGUgIkpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQmxvYkN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ1NT
Rm9udEZhY2VSdWxlQ3VzdG9tLmNwcCIKQEAgLTE0Nyw2ICsxNDksOCBAQAogI2luY2x1ZGUgIkpT
VHJhY2tDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tDdXN0
b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENT
U0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDdXN0b20u
Y3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzQ0MDY5ZDU0Zjk1NGE1YjMwMTBhNDU1Yjk2NmJlMGYzZWM5YWRh
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9U
cmFja0N1c3RvbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tD
dXN0b20uaCIKKworI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBqc1Zp
ZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
KyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KGpz
VmlkZW9UcmFjay0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSB0cmFjayBoYXMgbm8gY3VzdG9t
IHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFqc1ZpZGVvVHJhY2st
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit2
b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpT
VmlkZW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRl
b1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGlu
Z0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc1Zp
ZGVvVHJhY2ssIHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRp
Y19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJh
Y2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTM3NWU1NjdlNmJhMzhhM2ZkNmQyYzk5NWFmMGMxY2Rm
NmFiM2RhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpT
VmlkZW9UcmFja0N1c3RvbV9oCisjZGVmaW5lIEpTVmlkZW9UcmFja0N1c3RvbV9oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJv
b3QoVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50
J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBt
ZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOwor
fQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDk2NzEwZDYw
OTMxMGM3ODcyYTdkZjQzYjZjZGI0MzM1YjFkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVmlkZW9UcmFja0xpc3RP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJh
Y2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9UcmFja0xpc3QqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrTGlzdCA9
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlzdC0+aW1wbCgpKTsK
KworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFw
cGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2li
bGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmICh2aWRlb1RyYWNr
TGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0
b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIXZpZGVvVHJhY2tM
aXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1ZpZGVvVHJhY2tMaXN0LT5oYXNDdXN0b21Q
cm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNo
YWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigp
KSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlk
ZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRl
b1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFja0xpc3QsIHZpc2l0b3Ip
OworCisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8Vmlk
ZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRk
T3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7CisgICAgdmlkZW9UcmFj
a0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggODI3Nzdh
ODZlZWZkZmJlYmU2ODljOWI5MjMzNjg4Mjk1ODM5MWMzZS4uZWEwNzk5YmI1ZDBkNzM0YzAxZjQ2
OGE2M2UxZDViMjIwNWNmYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTQxLDYg
KzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF1ZGlvQ29udGV4dDsK
KyAgICBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93
OwpAQCAtNjcsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU291cmNl
QnVmZmVyTGlzdDsKICAgICBjbGFzcyBUZXh0VHJhY2s7CiAgICAgY2xhc3MgVGV4dFRyYWNrQ3Vl
OworICAgIGNsYXNzIFZpZGVvVHJhY2tMaXN0OwogICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBj
bGFzcyBXZWJLaXROYW1lZEZsb3c7CiAgICAgY2xhc3MgV29ya2VyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNDc2ZDFiNTNmMTQ1YmIyNzM0OTg5OTNmMzlm
MWQxY2JhYTYyMzU4My4uOGVhNWI3YjAzYWJhY2EwMmYyNWY0OGEyZWQ1NTk5MjYzZWE0NzBiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xLDYgKzEsNyBA
QAogbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKIAogQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdF
Ql9BVURJTworQXVkaW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIEJhdHRlcnlN
YW5hZ2VyIGNvbmRpdGlvbmFsPUJBVFRFUllfU1RBVFVTCiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IGNvbmRpdGlvbmFsPVdPUktFUlMKIERPTUFwcGxpY2F0aW9uQ2FjaGUKQEAgLTM3LDYgKzM4LDcg
QEAgU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFsPVNWRwogVGV4dFRyYWNrIGNvbmRpdGlv
bmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tDdWUgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFRl
eHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKK1ZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXROYW1lZEZsb3cKIFdlYlNvY2tldCBjb25kaXRpb25h
bD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDhmYzVhMDhhZjhhMDE0OWJhZDdhNWI3MzUw
YTRlYmIzMDM0YjI3NzkuLmViMjUyYjk1MzgzZGU1NTgxZTc1ZmNhMzg0YmQ0NmY5YTAzNjZiYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTgsNiArOTgs
OCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9U
cmFja0xpc3QuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCkBAIC0xMDUsNiArMTA3LDggQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5o
IgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVESU8pCkBAIC0yOTYsNyArMzAwLDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAg
ICAsIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UoZmFsc2UpCiAgICAgLCBtX2xhc3RUZXh0
VHJhY2tVcGRhdGVUaW1lKC0xKQogICAgICwgbV9jYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6QXV0b21hdGljKQorICAgICwgbV9hdWRpb1RyYWNrcygwKQogICAgICwg
bV90ZXh0VHJhY2tzKDApCisgICAgLCBtX3ZpZGVvVHJhY2tzKDApCiAgICAgLCBtX2lnbm9yZVRy
YWNrRGlzcGxheVVwZGF0ZSgwKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAgLTMz
MCwxMiArMzM2LDIyIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBkb2N1bWVudCgpLT51
bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyAg
ICBpZiAobV9hdWRpb1RyYWNrcykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzLT5jbGVhck93bmVy
KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLT5sZW5n
dGgoKTsgKytpKQorICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGll
bnQoKTsKKyAgICB9CiAgICAgaWYgKG1fdGV4dFRyYWNrcykKICAgICAgICAgbV90ZXh0VHJhY2tz
LT5jbGVhck93bmVyKCk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAg
ICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwogICAgIH0KKyAgICBpZiAo
bV92aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhck93bmVyKCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKTsg
KytpKQorICAgICAgICAgICAgbV92aWRlb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQoKTsK
KyAgICB9CiAjZW5kaWYKIAogICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKQEAgLTEzNDksNiAr
MTM2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFu
Z2VkKFRleHRUcmFjayogdHJhY2spCiAgICAgfQogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBX
ZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBl
eGlzdAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRl
eHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OlRyYWNrRWxlbWVudCkgewpAQCAtMTM4OCw2ICsxNDA5LDExIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogfQogCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCit7
CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMgaGVyZSBv
bmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5k
Q2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRl
eHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2lu
Z0tleXdvcmQoKSkKQEAgLTI3OTIsNiArMjgxOCwxNiBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50
OjpwZXJjZW50TG9hZGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0
cjxBdWRpb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywg
cHJwVHJhY2spOworCisgICAgYWRkQXVkaW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0yODI3LDYgKzI4NjMs
MzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQ
YXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXYKICAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNr
LmdldCgpKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZp
ZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBWaWRlb1Ry
YWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spOworCisgICAgYWRkVmlkZW9UcmFjayh0cmFjay5n
ZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVB
dWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEF1
ZGlvVHJhY2sgd2l0aCB0aGUgQXVkaW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVk
aWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrLgorICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9
IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICgh
dHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUF1ZGlvVHJhY2sodHJhY2suZ2V0
KCkpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4
dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQpAQCAtMjg0NCw2ICsyOTA3LDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQCiAgICAgcmVt
b3ZlVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3Zp
ZGVvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBi
ZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIFZpZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFja1ByaXZh
dGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgorICAgIFJl
ZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihwcnBUcmFj
ay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJl
bW92ZVZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRf
VFJBQ0tfTUVOVSkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2so
UGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UcmFjaykKIHsKQEAgLTI5MjAs
NiArMzAwMCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlQ2FwdGlvblRyYWNrc0No
YW5nZWQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFj
ayhBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBhdWRpb1RyYWNrcygpLT5hcHBlbmQodHJhY2sp
OworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRy
YWNrKQogewogICAgIHRleHRUcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKQEAgLTI5MjcsNiArMzAx
MiwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRy
YWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIHZpZGVv
VHJhY2tzKCktPmFwcGVuZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVt
b3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX2F1ZGlvVHJhY2tzLT5y
ZW1vdmUodHJhY2spOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFj
ayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3Bl
KHRoaXMpOwpAQCAtMjkzOCwxOCArMzAzMywzMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0No
YW5nZWQoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZp
ZGVvVHJhY2sqIHRyYWNrKQoreworICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKIHsKLSAg
ICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2F1ZGlvVHJh
Y2tzKQorICAgICAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gbV9hdWRpb1RyYWNrcy0+bGVu
Z3RoKCkpCisgICAgICAgICAgICByZW1vdmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3MtPml0ZW0o
bGVuZ3RoIC0gMSkpOwogCi0gICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7
Ci0gICAgZm9yIChpbnQgaSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0t
aSkgewotICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOwor
ICAgIGlmIChtX3RleHRUcmFja3MpIHsKKyAgICAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUg
c2NvcGUodGhpcyk7CisgICAgICAgIGZvciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0aCgp
IC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3Rl
eHRUcmFja3MtPml0ZW0oaSk7CiAKLSAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBU
ZXh0VHJhY2s6OkluQmFuZCkKLSAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFjayk7Cisg
ICAgICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQor
ICAgICAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgIH0KICAgICB9
CisKKyAgICBpZiAobV92aWRlb1RyYWNrcykKKyAgICAgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0
aCA9IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmVtb3ZlVmlkZW9UcmFj
ayhtX3ZpZGVvVHJhY2tzLT5pdGVtKGxlbmd0aCAtIDEpKTsKIH0KIAogUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMjk4OSw2ICszMDk2LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1M
TWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAg
ICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAKK0F1ZGlvVHJhY2tMaXN0KiBIVE1M
TWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmICghbV9hdWRpb1RyYWNrcykKKyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJh
Y2tMaXN0OjpjcmVhdGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworCisgICAgcmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKIFRleHRUcmFj
a0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKIHsKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0zMDAwLDYg
KzMxMTgsMTcgQEAgVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygp
CiAgICAgcmV0dXJuIG1fdGV4dFRyYWNrcy5nZXQoKTsKIH0KIAorVmlkZW9UcmFja0xpc3QqIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9U
cmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisKKyAgICByZXR1cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsKK30KKwogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tF
bGVtZW50KQogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcp
KTsKQEAgLTQ5MDYsNyArNTAzNSw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgaW5m
by5hZGRNZW1iZXIobV9tZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisgICAgaW5mby5hZGRNZW1iZXIobV9hdWRpb1RyYWNrcywgImF1
ZGlvVHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzLCAidGV4dFRyYWNr
cyIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdmlkZW9UcmFja3MsICJ2aWRlb1RyYWNrcyIpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2Fu
LCAidGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuIik7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9jdWVUcmVlLCAiY3VlVHJlZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VycmVu
dGx5QWN0aXZlQ3VlcywgImN1cnJlbnRseUFjdGl2ZUN1ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYmM3NWQxZWUzNDZiYzFhODE1M2YzMjk0M2E4ZWQyNTEy
ZmUxYmE5Yy4uNjEzOGNiMDEzOGYzMWNkNGZhNzIzM2E2MTI3YWY1ZTFjYmE0YzE1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM5LDEwICszOSwxMiBAQAogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgog
I2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZh
bFRyZWUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUu
aCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNzAsOCArNzIsMTIgQEAgY2xhc3MgTWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNzIEF1ZGlvVHJhY2tQ
cml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIFRleHRUcmFja0xp
c3Q7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiB0
eXBlZGVmIFBPREludGVydmFsVHJlZTxkb3VibGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVydmFs
VHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7
CkBAIC04NCw3ICs5MCw5IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0Owog
CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVk
aWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJp
dmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAg
LCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50
CisgICAgLCBwcml2YXRlIFZpZGVvVHJhY2tDbGllbnQKICNlbmRpZgogI2lmIFVTRShQTEFURk9S
TV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xp
ZW50CkBAIC0yMjYsMTEgKzIzNCwxOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJh
Y2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWws
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwgbGFiZWwsIGVt
cHR5U3RyaW5nKCksIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJh
Y2soY29uc3QgU3RyaW5nJiBraW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkVGV4
dFRyYWNrKGtpbmQsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogCisgICAg
QXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRy
YWNrcygpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworCiAgICAgQ3VlTGlz
dCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50bHlBY3RpdmVD
dWVzOyB9CiAKKyAgICB2b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayopOwogICAgIHZvaWQg
YWRkVGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRlb1Ry
YWNrKik7CisgICAgdm9pZCByZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKICAgICB2b2lk
IHJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2so
VmlkZW9UcmFjayopOwogICAgIHZvaWQgcmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CiAgICAgdm9p
ZCBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiAgICAgdm9pZCBub3RpZnlNZWRpYVBsYXll
ck9mVGV4dFRyYWNrQ2hhbmdlcygpOwpAQCAtMjM4LDggKzI1MywxMiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEFkZFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRB
ZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRy
PFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZT4pIE9WRVJSSURFOwogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9y
bVRleHRUcmFjaz4pIE9WRVJSSURFOwpAQCAtMjc1LDYgKzI5NCw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFj
a0Rpc3BsYXkoKTsKIAorICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKTsKKwogICAgIC8vIFRleHRUcmFj
a0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0
VHJhY2sqKTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNr
Kik7CkBAIC0yODQsNiArMzA2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPik7CiAKKyAgICAvLyBWaWRlb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHZp
ZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopOworCiAgICAgYm9vbCByZXF1aXJl
c1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopOwogI2VuZGlmCkBAIC02OTks
NyArNzI0LDkgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1l
OwogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBtX2NhcHRp
b25EaXNwbGF5TW9kZTsKIAorICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRpb1RyYWNr
czsKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOworICAgIFJlZlB0cjxW
aWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFj
az4gPiBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbjsKIAogICAgIEN1ZUlu
dGVydmFsVHJlZSBtX2N1ZVRyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbAppbmRleCA5MjA1MjBiZjAyNGUyYzE0YmZkNmFhYWRhZTc4MGY0ZDQ5NTcxZjBmLi5hZWI5
YmE5ZDhmNGJjYTcwNGEyZjk3YTJmNzQzZDUyNGNjYzk4YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTExNiw3ICsxMTYsOSBAQCB2b2lkIHdlYmtpdENh
bmNlbEtleVJlcXVlc3QoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVk
QXM9TnVsbFN0cgogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklE
RU9fVFJBQ0sKIFRleHRUcmFjayBhZGRUZXh0VHJhY2soaW4gRE9NU3RyaW5nIGtpbmQsIGluIFtP
cHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYW5ndWFn
ZSkKICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CityZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9U
cmFja0xpc3QgYXVkaW9UcmFja3M7CiByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrTGlzdCB0
ZXh0VHJhY2tzOworcmVhZG9ubHkgYXR0cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVvVHJhY2tz
OwogI2VuZGlmCiAKIFtSZWZsZWN0LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIG1lZGlhR3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNmNjNmUwMDk4ZWUyZGY1NzI3MGEyMTllZWJiMTdlMTUxZTIxYWQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKworI2lu
Y2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUg
IlRyYWNrQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFsdGVybmF0
aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmRlc2NyaXB0aW9uS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRl
c2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBkZXNjcmlwdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1haW5EZXNjOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0aW9uLCAo
InRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiB0cmFuc2xhdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNr
Ojpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVudGFyeTsKK30KKworQXVkaW9U
cmFjazo6QXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6
OkF1ZGlvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwgdHJhY2tQcml2YXRlLT5sYW5ndWFn
ZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkpCisgICAgLCBtX2VuYWJsZWQodHJh
Y2tQcml2YXRlLT5lbmFibGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3By
aXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwor
CisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgQXVkaW9UcmFja1By
aXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVybmF0
aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0
ZTo6RGVzY3JpcHRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25L
ZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpN
YWluOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluRGVzYzoKKyAgICAgICAg
c2V0S2luZChBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OlRyYW5zbGF0aW9uOgorICAgICAgICBzZXRLaW5k
KEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2luZChBdWRp
b1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
dWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQXVkaW9UcmFjazo6fkF1ZGlvVHJhY2so
KQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KDApOworfQorCitib29sIEF1ZGlvVHJhY2s6
OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYg
KHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAodmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xhdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEF1ZGlvVHJhY2s6OnNl
dEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX2VuYWJsZWQgPT0gZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdl
ZCh0aGlzKTsKK30KKworaW50IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgoKQoreworICAg
IEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvVHJhY2tJbmRl
eCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjUxZmU0MmZkNWZiYTMxNDNmMzU3
NWNkYTZkNzExZDkxZGIzODYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19oCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5h
YmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBw
dWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFjayhjbGllbnQsIHRy
YWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAgICBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBt
YWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2xh
dGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5
S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtl
eXdvcmQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVk
KGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVu
dCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWVudDsgfQorCisgICAgaW50IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgor
ICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGU+KTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsK
KyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKwor
ICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRiNjNjODVkZDk4MTg0ZTY2NWYxZGI2NDI3MWNh
NDRiZGU2ZTMxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3Vz
dG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBr
aW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFu
IGVuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNGJiY2U4MzVmZTMwZWJiMzZhM2E3MGVhZTdhN2I2ZWYwMTQ3NTcw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNr
TGlzdC5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvVHJhY2tMaXN0OjpBdWRpb1Ry
YWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK0F1
ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QoKQoreworfQorCit2b2lkIEF1ZGlvVHJhY2tM
aXN0OjphcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQ
dHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3Mg
aW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFu
ZFRyYWNrSW5kZXgoKTsKKyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsK
KworICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1l
bnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOwor
CisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK0F1ZGlv
VHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAg
IGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUoKSkgeworICAgICAgICBUcmFja0Jhc2Uq
IHRyYWNrID0gbV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAgICBBU1NFUlQodHJh
Y2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2spOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
KworQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBUcmFja0Jhc2UqIHRyYWNrID0gaXRlbShpKTsKKyAgICAgICAgQVNT
RVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAgICAgICAgQXVk
aW9UcmFjayogYXVkaW9UcmFjayA9IGR5bmFtaWNfY2FzdDxBdWRpb1RyYWNrKj4odHJhY2spOwor
ICAgICAgICBpZiAoYXVkaW9UcmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBh
dWRpb1RyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA3MThh
M2JiNDVmOGVhY2RhMzQxYTJmMTBjY2Q1NjdkYWM5MzA1MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDU5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3RfaAorI2RlZmluZSBBdWRp
b1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUcmFj
a0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsK
KworY2xhc3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQp
KTsKKyAgICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICB2b2lkIGFwcGVuZChQYXNz
UmVmUHRyPEF1ZGlvVHJhY2s+KTsKKyAgICBBdWRpb1RyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKKyAgICBBdWRpb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFj
a0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMxY2UwOGMyNGM5
NDA0MTk0MGQ2Mzc4OGIzMGI0ZTk0NmM2NWVjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0
ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlND
dXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgeworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRpb1RyYWNrIGl0ZW0o
aW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRUcmFja0J5SWQoaW4g
RE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOwor
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5l
ciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBl
dnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmNhMzNlNWU1MThiN2IzMjgz
NmZhMGZhYjQ0NjI3YzM2OTliNTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUg
IlZpZGVvVHJhY2suaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jh
c2UuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRp
dmUsICgiYWx0ZXJuYXRpdmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIGFsdGVybmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVv
VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29uc3QgQXRv
bWljU3RyaW5nJiBWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRpb25zLCAoIm1haW4iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzaWduOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3Vi
dGl0bGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVy
biBzdWJ0aXRsZXM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNvbW1lbnRhcnk7Cit9CisKK1ZpZGVvVHJhY2s6OlZp
ZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQ
cml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpWaWRlb1Ry
YWNrLCB0cmFja1ByaXZhdGUtPmxhYmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAg
ICAsIG1faWQodHJhY2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9zZWxlY3RlZCh0cmFja1ByaXZh
dGUtPnNlbGVjdGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3ByaXZhdGUo
dHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworCisgICAg
c3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2Fw
dGlvbnM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgorICAgICAg
ICBzZXRLaW5kKFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJh
Y2s6OnNpZ25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQ
cml2YXRlOjpTdWJ0aXRsZXM6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVz
S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6
Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29y
ZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZToK
KyAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworVmlkZW9UcmFjazo6flZpZGVvVHJhY2soKQoreworICAgIG1fcHJpdmF0ZS0+c2V0
Q2xpZW50KDApOworfQorCitib29sIFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY2FwdGlvbnNL
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc2lnbktleXdv
cmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tl
eXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRh
cnlLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFZpZGVvVHJhY2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCit7
CisgICAgaWYgKG1fc2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQodGhpcyk7Cit9CisKK2ludCBWaWRlb1Ry
YWNrOjppbmJhbmRUcmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT52aWRlb1RyYWNrSW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjMxODEyZGI0YjI1OTgwMGRlY2Y5MDQzOGEzMjYwMDM5OTk4YjcwMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC0w
LDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisj
ZGVmaW5lIFZpZGVvVHJhY2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJh
Y2tDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikg
PSAwOworfTsKKworY2xhc3MgVmlkZW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBW
aWRlb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
VmlkZW9UcmFjaz4gY3JlYXRlKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBWaWRlb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgfQorICAg
IHZpcnR1YWwgflZpZGVvVHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsg
bV9pZCA9IGlkOyB9CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2
ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdv
cmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsg
fQorCisgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBpbnQgaW5iYW5kVHJh
Y2tJbmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50
KiwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJpdmF0ZVRyYWNrKTsKKworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fc2VsZWN0
ZWQ7CisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY1MjZkMzMwNzE0N2YzMWRkMjRkYTJkODVkZmIyMDg3MjBjNzI3MDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFD
SywKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitd
IGludGVyZmFjZSBWaWRlb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzZWxlY3RlZDsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyZTgxYTAzYzQ4ZGNlNDk1NjM5Y2RhYjI2YzAxMWE4NDdhMTEzMWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApAQCAtMCww
ICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1ZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChIVE1MTWVk
aWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK1ZpZGVvVHJhY2tMaXN0Ojp+
VmlkZW9UcmFja0xpc3QoKQoreworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjphcHBlbmQoUGFz
c1JlZlB0cjxWaWRlb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4g
dHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZp
bGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsK
KyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCgh
dHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigp
KTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVB
ZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK1ZpZGVvVHJhY2sqIFZpZGVvVHJh
Y2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1f
aW5iYW5kVHJhY2tzLnNpemUoKSkgeworICAgICAgICBUcmFja0Jhc2UqIHRyYWNrID0gbV9pbmJh
bmRUcmFja3NbaW5kZXhdLmdldCgpOworICAgICAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBU
cmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9U
cmFjayo+KHRyYWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9UcmFjayog
VmlkZW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICBUcmFja0Jhc2UqIHRyYWNrID0gaXRlbShpKTsKKyAgICAgICAgQVNTRVJUKHRyYWNrLT50eXBl
KCkgPT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAgICAgICAgVmlkZW9UcmFjayogdmlkZW9U
cmFjayA9IGR5bmFtaWNfY2FzdDxWaWRlb1RyYWNrKj4odHJhY2spOworICAgICAgICBpZiAodmlk
ZW9UcmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB2aWRlb1RyYWNrOworICAg
IH0KKyAgICByZXR1cm4gMDsKK30KKworbG9uZyBWaWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRl
eCgpIGNvbnN0Cit7CisgICAgLy8gNC44LjEwLjEwLjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVv
VHJhY2tMaXN0IG9iamVjdHMKKyAgICAvLyBUaGUgVmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRl
eCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGluZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRs
eSBzZWxlY3RlZCB0cmFjaywgaWYgYW55LiBJZiB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRv
ZXMgbm90CisgICAgLy8gY3VycmVudGx5IHJlcHJlc2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25l
IG9mIHRoZSB0cmFja3MgYXJlIHNlbGVjdGVkLAorICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1
cm4g4oiSMS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgVHJhY2tCYXNlKiB0cmFjayA9IGl0ZW0oaSk7CisgICAgICAgIEFTU0VSVCh0cmFjay0+
dHlwZSgpID09IFRyYWNrQmFzZTo6VmlkZW9UcmFjayk7CisgICAgICAgIGlmIChkeW5hbWljX2Nh
c3Q8VmlkZW9UcmFjayo+KHRyYWNrKS0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBp
OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9U
cmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVz
KCkuaW50ZXJmYWNlRm9yVmlkZW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYTE1MTM0YWMzOWNi
NzkyMTAxMzUyNmFkNjQyN2Y5ZDA3NDc1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tMaXN0X2gKKyNkZWZpbmUgVmlkZW9UcmFja0xp
c3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFz
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNz
IFZpZGVvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
b3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAg
fQorICAgIH5WaWRlb1RyYWNrTGlzdCgpOworCisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxW
aWRlb1RyYWNrPik7CisgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25lZCkgY29uc3Q7CisgICAg
VmlkZW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAg
IGxvbmcgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIFZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmQzNmFmNjIwYjg0NDU1YWY3MzhkZWIxNDg0MDQxNjNmNGE1NTJiZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRs
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RS
QUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21N
YXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgVmlkZW9U
cmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
KyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVmlkZW9U
cmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJh
Y2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7
Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRp
b1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9U
cmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODFmZWQzN2E0Yjk2NzFlMzFlMzgyNTM0YjA0Mzkw
OTQzYWE4YjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVfaAorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5B
dWRpb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZh
dGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRl
KCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAg
dm9pZCBzZXRDbGllbnQoQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0
aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21tZW50YXJ5
LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9
CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRv
bTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1w
dHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJl
dHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkK
KyAgICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggZmZj
NTM0ODUzNGQzMmNmNzkzZDAxZTM2NGUxMjI5MTllZmQzNzYxYi4uMTllZTc4NzRjOGIxZjdmZGJm
NjJiZjg3YmU3NmVjZWQyZWMyOWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTA5Nyw2ICsxMDk3LDIyIEBAIENhY2hlZFJl
c291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogfQogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQordm9pZCBNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayhQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQ
bGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQt
Pm1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayh0cmFjayk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXI6OnJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2sp
Cit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2sodHJh
Y2spOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjphZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlPiB0cmFjaykKIHsKICAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGll
bnQpCkBAIC0xMTEzLDYgKzExMjksMjIgQEAgdm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlVGV4dFRy
YWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gdHJhY2spCiAgICAgbV9tZWRp
YVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sodHJhY2spOwogfQog
Cit2b2lkIE1lZGlhUGxheWVyOjphZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGU+IHRyYWNrKQoreworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRWaWRl
b1RyYWNrKHRyYWNrKTsKK30KKwordm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjayhQ
YXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQ
bGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQt
Pm1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayh0cmFjayk7Cit9CisKIGJvb2wgTWVkaWFQ
bGF5ZXI6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJl
dHVybiBtX3ByaXZhdGUtPnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGE4MTEx
MTg4NWNiMmU0ODRiY2EzMmM4MDkwODY5ODkwNTBiMDQzNGMuLjIwMjI3NjZkNWI4ODJjOTc3YzJj
ODE1ZjlmY2E2Mjg0ZGY5ZGMyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzIsMTEgKzMyLDEzIEBACiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KQEAgLTIxOCw4ICsyMjAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
RGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFk
ZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1Ry
YWNrUHJpdmF0ZT4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRl
eHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkJvdW5kc0NoYW5nZWQoY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFRleHRUcmFja1JlcHJlc2VudGF0aW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmKSB7IH0KQEAgLTQ0OCw4ICs0NTQsMTIgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNl
TG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIHZvaWQgYWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7
CiAgICAgdm9pZCBhZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Pik7CisgICAgdm9pZCBhZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+
KTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZT4pOwogICAgIHZvaWQgcmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZT4pOworICAgIHZvaWQgcmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJh
Y2tQcml2YXRlPik7CiAKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24o
KSBjb25zdDsKICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVmlkZW9UcmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQw
MmUzYmNjNDViM2JiYjEyODczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFZpZGVvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZh
dGVfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZh
dGU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJh
Y2tQcml2YXRlKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsg
fQorCisgICAgdm9pZCBzZXRDbGllbnQoVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkg
eyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGll
bnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVk
KGJvb2wgc2VsZWN0ZWQpIHsgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0g
S2luZCB7IEFsdGVybmF0aXZlLCBDYXB0aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21t
ZW50YXJ5LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBO
b25lOyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVt
cHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2
YXRlKCkKKyAgICAgICAgOiBtX3NlbGVjdGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9z
ZWxlY3RlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197313</attachid>
            <date>2013-04-10 11:00:14 -0700</date>
            <delta_ts>2013-04-10 11:00:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130410115954.patch</filename>
            <type>text/plain</type>
            <size>58406</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU5NmU1YzJiOGIwODFl
NWFmMzk3OThlODdiMWIyYzg0MGRmNDMxYS4uN2E5ZjQwMzgwNjMzMTI4MDlhNGFkYjYwZWU4MGQx
YTEyNzRmMjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0wNC0wOSAgQnJl
bmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgVGV4
dFRyYWNrIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGFkZCBhdWRpbyBh
bmQgdmlkZW8gdHJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTQzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgYWRkIG5ldyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZElu
dG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZyb20pOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aW50ZXJm
YWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0S2luZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OmlzUmVuZGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
OjpwbGF0Zm9ybVRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzTWFp
blByb2dyYW1Db250ZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpkZWZhdWx0S2luZEtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpjbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpyZWZFdmVudFRhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmRlcmVmRXZlbnRUYXJnZXQpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHA6CisgICAgICAgIChUZXh0VHJhY2tM
aXN0OjpUZXh0VHJhY2tMaXN0KToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5k
ZXgpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5k
ZXJlZFRyYWNrcyk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjppdGVtKToKKyAgICAgICAgKFRl
eHRUcmFja0xpc3Q6OmdldEluYmFuZFRyYWNrKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6Omlu
dmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6
OmFwcGVuZCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1vdmUpOgorICAgICAgICAoVGV4
dFRyYWNrTGlzdDo6Y29udGFpbnMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0KToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jh
c2U6OlRyYWNrQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldEtpbmQpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWNrQmFzZTo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKFRyYWNrQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
Y2tCYXNlOjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhYmVsKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6bGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tCYXNlOjpzZXRMYW5ndWFnZSk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xp
c3RCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNl
KToKKyAgICAgICAgKFRyYWNrTGlzdEJhc2U6On5UcmFja0xpc3RCYXNlKToKKyAgICAgICAgKFRy
YWNrTGlzdEJhc2U6Omxlbmd0aCk6CisgICAgICAgIChUcmFja0xpc3RCYXNlOjpnZXRUcmFja0lu
ZGV4KToKKyAgICAgICAgKFRyYWNrTGlzdEJhc2U6OnJlbW92ZSk6CisgICAgICAgIChUcmFja0xp
c3RCYXNlOjpjb250YWlucyk6CisgICAgICAgIChUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUFkZFRy
YWNrRXZlbnQpOgorICAgICAgICAoVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVSZW1vdmVUcmFja0V2
ZW50KToKKyAgICAgICAgKFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQ2hhbmdlRXZlbnQpOgorICAg
ICAgICAoVHJhY2tMaXN0QmFzZTo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGh0
bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVHJh
Y2tMaXN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OmNsZWFyT3du
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6b3duZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6aXNGaXJpbmdFdmVudExpc3RlbmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFja0xpc3RCYXNlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrTGlzdEJhc2U6OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
a0xpc3RCYXNlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjph
ZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlbW92ZVRleHRU
cmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJEaWRS
ZW1vdmVUZXh0VHJhY2spOgorCiAyMDEzLTA0LTA5ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjaHJvbWl1bSBleGNlcHRpb25zIGZyb20g
V2ViQ29yZSdzIGdpdGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDYxODMyNWEz
Y2ZhY2VhYWQ2ZWFlNzczMGQ2ZWU3MDViYjkwODRhNS4uMTExMDE3YTFjMGY2NGRhY2JjODYyYjlm
YTY5NmY3MzRiOGFkZjdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0OSwxMiArNTQ5LDYg
QEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmlkbAogICAgIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbAogCi0gICAgaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCi0g
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAotICAgIGh0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5pZGwKLSAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCi0KICAgICBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaWRsCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCkBAIC0xNTkz
LDE5ICsxNTg3LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvc2hhZG93L1NwaW5C
dXR0b25FbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKIAotICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAotICAgIGh0bWwvdHJh
Y2svTG9hZGFibGVUZXh0VHJhY2suY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCi0g
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCi0gICAgaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmNwcAotICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKLSAgICBo
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCi0gICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3Bw
Ci0gICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAotICAgIGh0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5jcHAKLSAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKLSAgICBodG1sL3RyYWNr
L1dlYlZUVFRva2VuaXplci5jcHAKLQogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAK
ICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAogICAgIGluc3BlY3Rvci9ET01F
ZGl0b3IuY3BwCkBAIC0xNzM4LDcgKzE3MTksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2hh
ZGVyLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKLSAgICBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKIApAQCAtMjY5
Niw3ICsyNjc2LDMxIEBAIGlmIChFTkFCTEVfV0VCR0wpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxF
X1ZJREVPX1RSQUNLKQorICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCisgICAgICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5pZGwKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAorICAgICAgICBo
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVu
dC5pZGwKKyAgICApCisKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAg
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorICAgICAg
ICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVHZW5lcmljLmNwcAorICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3Bw
CisgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKKyAgICAgICAgaHRtbC90cmFj
ay9UcmFja0Jhc2UuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAKKyAgICAg
ICAgaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAorICAgICAgICBodG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuY3BwCisgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorICAgICAg
ICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKKworICAgICAgICBsb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAorCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uLmNwcAogICAgICkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjOGE0
YTk0ZTU4Zjc2NTQ1MmRiZTA2NzYwNDgwNWE3M2Y2MGVlNzI4Li44NWU4NzYyZGE2ODNjMTU5MDI2
ZTRhMjhhMTdjYTliMmI0ZWE2NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM5NzcsNiArMzk3Nyw3IEBA
IGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICAgICAgaHRtbC90cmFj
ay9UcmFja0V2ZW50LmggXAorICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBcCiAg
ICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggXAogICAgICAgICBodG1sL3RyYWNrL1dl
YlZUVFRva2VuLmggXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5oIFwKQEAg
LTQwMDAsNiArNDAwMSw3IEBAIGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgICAgICAgaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNw
cCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXAorICAgICAgICBodG1sL3Ry
YWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBcCiAgICAgICAgIGh0
bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDRhMmI4YWFlY2VlNTEyNzg0ZjI2Y2JiMWUyNWQz
MDQxZGI5OWVlOGYuLmQwOTVjYWUxNDBmNTFiNzVmNzJkZmQwOGZhMzU5MmFhYzRlZjlhMDUgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMDIy
Miw2ICszMDIyMiwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcSW50UG9pbnQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1
NzQ2LDEwICs2NTc1MCw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKLQkJ
CQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
dHJhY2tcTG9hZGFibGVUZXh0VHJhY2suY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjU4
MTQsNiArNjU4MTQsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcVHJhY2tMaXN0QmFzZS5jcHAiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFRy
YWNrTGlzdEJhc2UuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcV2ViVlRURWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYzgyMjQ0MWY3MzBmMDI5YzBhN2I5ZTgzNmYwOGZkNjgzYjAzYTBhMy4uMzky
YjJhOTU2ZTM4MTkzMDI0MWZkZDk0YmE0Zjc4M2ZkOGE0ZmFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTExMSw2ICs1MTEx
LDggQEAKIAkJQkNGRTJGMTIwQzFCNTgzODAwMjAyMzVGIC8qIEpTUmVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRTJGMTAwQzFCNTgzNzAwMjAy
MzVGIC8qIEpTUmVjdC5oICovOyB9OwogCQlCQ0ZGNjQ5MTBFQUQxNUMyMDBDMUQ2RjcgLyogTGVu
Z3RoQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNGRjY0OTIwRUFEMTVDMjAwQzFENkY3
IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRkY2NDkwMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwQzExNzE1Q0Uy
NjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlz
dEJhc2UuY3BwICovOyB9OworCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4
OEUwQzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLzsgfTsKIAkJQzA0NkUx
QUMxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA0NkUxQUIxMjA4QTlGRTAwQkEyQ0Y3
IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICovOyB9OwogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2
MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBt
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1
NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFC
OCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTE4MjksNiArMTE4MzEsOCBAQAogCQlCQ0ZGNjQ5MDBFQUQx
NUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMZW5ndGhTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFODU1RjdG
MDcwMUU4MzUwMDIzOTc2OSAvKiBXZWJDb3JlVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU4NTYwNTEwNzAx
RjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVWaWV3Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVWaWV3Lm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQlCRTg4RTBCRjE3MTVD
RTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUcmFja0xpc3RCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkU4OEUwQzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCUJFOTFGQzhDMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQlCRTk4M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
cmVLZXlib2FyZFVJTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKQEAgLTE3NjYxLDYgKzE3NjY1LDggQEAKIAkJQjFBRDRFNzcxM0Ex
MkE3MjAwODQ2QjI3IC8qIHRyYWNrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlCRTg4RTBCRjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5j
cHAgKi8sCisJCQkJQkU4OEUwQzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAq
LywKIAkJCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmNwcCAq
LywKIAkJCQkwNzk0MTc5MDE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmggKi8s
CiAJCQkJOTc1OUU5MzQxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCAq
LywKQEAgLTI0MDM5LDYgKzI0MDQ1LDcgQEAKIAkJCQlFMTgwODEwRjE2RkNFQ0RGMDBCODBEMDcg
LyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTE4MDgxMTcxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
RTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNjk4NCw2ICsyNjk5MSw3IEBACiAJCQkJRTE4MDgxMTIxNkZDRjQyRjAwQjgwRDA3IC8q
IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODA4MTE2
MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxNTI1NTE2MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBD
MTE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGRhMWFiNWE1YzJlNzgx
NzQzMmJmYWEzMDExYzBlOThjM2QyYmM3OTMuLjhmYzVhMDhhZjhhMDE0OWJhZDdhNWI3MzUwYTRl
YmIzMDM0YjI3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjc5Miw3ICsyNzkyLDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExvYWRl
ZCgpIGNvbnN0CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGU+IHBycFRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQog
ewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyNCwxMCArMjgyNCwxMCBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0
VHJhY2tQcml2YXRlPgogICAgIC8vIDkuIEZpcmUgYW4gZXZlbnQgd2l0aCB0aGUgbmFtZSBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhh
dCB1c2VzIHRoZSBUcmFja0V2ZW50CiAgICAgLy8gaW50ZXJmYWNlLCB3aXRoIHRoZSB0cmFjayBh
dHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0VHJhY2sgb2JqZWN0
LCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzCiAgICAgLy8gdGV4dFRyYWNrcyBhdHRyaWJ1dGUncyBU
ZXh0VHJhY2tMaXN0IG9iamVjdC4KLSAgICBhZGRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAg
IGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRS
ZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFj
aykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MzYsMTIgKzI4MzYsMTIgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBjYXN0IGlz
IHNhZmUgYmVjYXVzZSB3ZSBjcmVhdGVkIHRoZSBJbmJhbmRUZXh0VHJhY2sgd2l0aCB0aGUgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZQotICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFRy
YWNrLgorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjay4KICAgICBS
ZWZQdHI8SW5iYW5kVGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0
VHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOwogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICByZW1vdmVUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIHJlbW92
ZVRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRf
VFJBQ0tfTUVOVSkKQEAgLTI5MjAsMTQgKzI5MjAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCkKICNlbmRpZgogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFRyYWNrKFRleHRUcmFjayogdHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIHRleHRUcmFja3MoKS0+
YXBwZW5kKHRyYWNrKTsKICAgICAKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVHJhY2soVGV4dFRyYWNrKiB0cmFjaykK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2sp
CiB7CiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CiAgICAgVGV4dFRy
YWNrQ3VlTGlzdCogY3VlcyA9IHRyYWNrLT5jdWVzKCk7CkBAIC0yOTQ4LDcgKzI5NDgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFuZFRyYWNrcygpCiAgICAgICAgIFRl
eHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CiAKICAgICAgICAgaWYgKHRy
YWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKLSAgICAgICAgICAgIHJlbW92
ZVRyYWNrKHRyYWNrKTsKKyAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFjayk7CiAgICAg
fQogfQogCkBAIC0yOTc4LDcgKzI5NzgsNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgUwogICAg
IC8vIGZpcnN0IGFwcGVuZCB0aGUgdHJhY2sgdG8gdGhlIHRleHQgdHJhY2sgbGlzdC4KIAogICAg
IC8vIDYuIEFkZCB0aGUgbmV3IHRleHQgdHJhY2sgdG8gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0
IG9mIHRleHQgdHJhY2tzLgotICAgIGFkZFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CisgICAgYWRk
VGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sg
cmVhZGluZXNzIHN0YXRlIHRvIHRoZSB0ZXh0IHRyYWNrIGxvYWRlZCBzdGF0ZSAuLi4KICAgICB0
ZXh0VHJhY2stPnNldFJlYWRpbmVzc1N0YXRlKFRleHRUcmFjazo6TG9hZGVkKTsKQEAgLTMwMDAs
NyArMzAwMCw3IEBAIFRleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3Mo
KQogICAgIHJldHVybiBtX3RleHRUcmFja3MuZ2V0KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tF
bGVtZW50KQogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcp
KTsKIApAQCAtMzAxNSw3ICszMDE1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRU
cmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiAgICAgaWYgKCF0ZXh0VHJhY2sp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBhZGRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwor
ICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogICAgIAogICAgIC8vIERvIG5vdCBz
Y2hlZHVsZSB0aGUgdHJhY2sgbG9hZGluZyB1bnRpbCBwYXJzaW5nIGZpbmlzaGVzIHNvIHdlIGRv
bid0IHN0YXJ0IGJlZm9yZSBhbGwgdHJhY2tzCiAgICAgLy8gaW4gdGhlIG1hcmt1cCBoYXZlIGJl
ZW4gYWRkZWQuCkBAIC0zMDI2LDcgKzMwMjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
ZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAgICAgbWVkaWFD
b250cm9scygpLT5jbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVu
dCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICAgICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdO
YW1lKHRyYWNrVGFnKSk7CiAKQEAgLTMwNTMsNyArMzA1Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGlkUmVtb3ZlVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogICAg
IC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhl
IG9sZCBwYXJlbnQgd2FzIGEgbWVkaWEgZWxlbWVudCwgCiAgICAgLy8gdGhlbiB0aGUgdXNlciBh
Z2VudCBtdXN0IHJlbW92ZSB0aGUgdHJhY2sgZWxlbWVudCdzIGNvcnJlc3BvbmRpbmcgdGV4dCB0
cmFjayBmcm9tIHRoZSAKICAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNr
cy4KLSAgICByZW1vdmVUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIHJlbW92ZVRleHRUcmFj
ayh0ZXh0VHJhY2suZ2V0KCkpOwogCiAgICAgc2l6ZV90IGluZGV4ID0gbV90ZXh0VHJhY2tzV2hl
blJlc291cmNlU2VsZWN0aW9uQmVnYW4uZmluZCh0ZXh0VHJhY2suZ2V0KCkpOwogICAgIGlmIChp
bmRleCAhPSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggY2EwMTZjMDdkNDZmZjIxMzdmYTBlMWFhODY3MzI0M2JkMTI3ZTE4Yy4uYmM3NWQxZWUzNDZi
YzFhODE1M2YzMjk0M2E4ZWQyNTEyZmUxYmE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTU4LDcgKzU4LDYgQEAgY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xh
c3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwotY2xhc3Mg
VGV4dFRyYWNrTGlzdDsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiBjbGFzcyBXaWRnZXQ7CkBAIC03Miw2ICs3MSw3IEBAIGNsYXNzIE1lZGlh
S2V5czsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGNsYXNzIEluYmFuZFRleHRUcmFja1By
aXZhdGU7CitjbGFzcyBUZXh0VHJhY2tMaXN0OwogCiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxk
b3VibGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2
YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CkBAIC0yMjksMTcgKzIyOSwxNyBAQCBw
dWJsaWM6CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrcygpOwogICAgIEN1ZUxpc3QgY3Vy
cmVudGx5QWN0aXZlQ3VlcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudGx5QWN0aXZlQ3Vlczsg
fQogCi0gICAgdm9pZCBhZGRUcmFjayhUZXh0VHJhY2sqKTsKLSAgICB2b2lkIHJlbW92ZVRyYWNr
KFRleHRUcmFjayopOworICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZv
aWQgcmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayopOwogICAgIHZvaWQgcmVtb3ZlQWxsSW5iYW5k
VHJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiAgICAgdm9p
ZCBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZEFkZFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlVHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRU
ZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVU
ZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRGlkQWRkVHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2soUGFzc1JlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRU
cmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKIAogI2lm
IFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVj
dGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+KSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IGZiYmIzZTg1ZTBkYTY3
ODAxMWFmODRlZmM5YTU3OTljNjNmNDYzZDQuLjAxMDU4NTVmY2YyNTcxOTc0OWM1MTYwOGI0NjQ5
MmEyMDFhYzEzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApA
QCAtODAsMTQgKzgwLDE0IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRN
TFRyYWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqCiAgICAgSFRNTEVsZW1l
bnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAgICAgSFRNTE1lZGlhRWxlbWVudCog
cGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CiAgICAgaWYgKGluc2VydGlvblBvaW50ID09IHBhcmVu
dCkKLSAgICAgICAgcGFyZW50LT5kaWRBZGRUcmFjayh0aGlzKTsKKyAgICAgICAgcGFyZW50LT5k
aWRBZGRUZXh0VHJhY2sodGhpcyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKIHZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9u
UG9pbnQpCiB7CiAgICAgaWYgKCFwYXJlbnROb2RlKCkgJiYgV2ViQ29yZTo6aXNNZWRpYUVsZW1l
bnQoaW5zZXJ0aW9uUG9pbnQpKQotICAgICAgICB0b01lZGlhRWxlbWVudChpbnNlcnRpb25Qb2lu
dCktPmRpZFJlbW92ZVRyYWNrKHRoaXMpOworICAgICAgICB0b01lZGlhRWxlbWVudChpbnNlcnRp
b25Qb2ludCktPmRpZFJlbW92ZVRleHRUcmFjayh0aGlzKTsKICAgICBIVE1MRWxlbWVudDo6cmVt
b3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAKaW5kZXggM2MyNzRiMWUxNGI5YjkwNjFmZDg3ZjQyZjg2YWJhMjJlNWM4ODQx
MC4uOGUwM2Y4ZTJhZDI2MzAxNDQzMjA1NWQyOWIzZjkyM2Q5N2Q3YjBmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTA4LDE0ICsxMDgsMTIgQEAgVGV4dFRy
YWNrKiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiB9CiAKIFRleHRUcmFj
azo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0Ns
aWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlw
ZSkKLSAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICA6
IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaywgbGFiZWwsIGxhbmd1YWdlKQogICAgICwg
bV9jdWVzKDApCisgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICNpZiBF
TkFCTEUoV0VCVlRUX1JFR0lPTlMpCiAgICAgLCBtX3JlZ2lvbnMoMCkKICNlbmRpZgotICAgICwg
bV9tZWRpYUVsZW1lbnQoMCkKLSAgICAsIG1fbGFiZWwobGFiZWwpCi0gICAgLCBtX2xhbmd1YWdl
KGxhbmd1YWdlKQogICAgICwgbV9tb2RlKGRpc2FibGVkS2V5d29yZCgpLnN0cmluZygpKQogICAg
ICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKQEAgLTE0Myw2ICsx
NDEsMzEgQEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKICAgICBjbGVhckNsaWVudCgpOwogfQog
Citjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUZXh0VHJhY2s7Cit9CisKK1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFjazo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK30KKworRXZl
bnRUYXJnZXREYXRhKiBUZXh0VHJhY2s6OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2s6OmVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsK
K30KKworYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKHZh
bHVlKTsKK30KKwogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkp
CkBAIC0xNTksMTYgKzE4MiwxMyBAQCBib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3Jk
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFRleHRUcmFjazo6c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCit2b2lkIFRleHRU
cmFjazo6c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0tpbmQpCiB7Ci0gICAgU3RyaW5n
IG9sZEtpbmQgPSBtX2tpbmQ7CisgICAgU3RyaW5nIG9sZEtpbmQgPSBraW5kKCk7CiAKLSAgICBp
ZiAoaXNWYWxpZEtpbmRLZXl3b3JkKGtpbmQpKQotICAgICAgICBtX2tpbmQgPSBraW5kOwotICAg
IGVsc2UKLSAgICAgICAgbV9raW5kID0gc3VidGl0bGVzS2V5d29yZCgpOworICAgIFRyYWNrQmFz
ZTo6c2V0S2luZChuZXdLaW5kKTsKIAotICAgIGlmIChtX2NsaWVudCAmJiBvbGRLaW5kICE9IG1f
a2luZCkKKyAgICBpZiAobV9jbGllbnQgJiYgb2xkS2luZCAhPSBraW5kKCkpCiAgICAgICAgIG1f
Y2xpZW50LT50ZXh0VHJhY2tLaW5kQ2hhbmdlZCh0aGlzKTsKIH0KIApAQCAtNDExLDcgKzQzMSw3
IEBAIHZvaWQgVGV4dFRyYWNrOjppbnZhbGlkYXRlVHJhY2tJbmRleCgpCiAKIGJvb2wgVGV4dFRy
YWNrOjppc1JlbmRlcmVkKCkKIHsKLSAgICBpZiAobV9raW5kICE9IGNhcHRpb25zS2V5d29yZCgp
ICYmIG1fa2luZCAhPSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgaWYgKGtpbmQoKSAhPSBjYXB0
aW9uc0tleXdvcmQoKSAmJiBraW5kKCkgIT0gc3VidGl0bGVzS2V5d29yZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9tb2RlICE9IHNob3dpbmdLZXl3b3JkKCkpCkBAIC01
MDIsMTcgKzUyMiwxNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBUZXh0VHJhY2s6
OnBsYXRmb3JtVGV4dFRyYWNrKCkKICAgICBpZiAobV9wbGF0Zm9ybVRleHRUcmFjaykKICAgICAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1UZXh0VHJhY2s7CiAKLSAgICBQbGF0Zm9ybVRleHRUcmFjazo6
VHJhY2tLaW5kIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKLSAgICBpZiAobV9r
aW5kID09IHN1YnRpdGxlc0tleXdvcmQoKSkKLSAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRy
YWNrOjpTdWJ0aXRsZTsKLSAgICBlbHNlIGlmIChtX2tpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkp
Ci0gICAgICAgIGtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKLSAgICBlbHNlIGlm
IChtX2tpbmQgPT0gZGVzY3JpcHRpb25zS2V5d29yZCgpKQotICAgICAgICBraW5kID0gUGxhdGZv
cm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOwotICAgIGVsc2UgaWYgKG1fa2luZCA9PSBjaGFwdGVy
c0tleXdvcmQoKSkKLSAgICAgICAga2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDaGFwdGVyOwot
ICAgIGVsc2UgaWYgKG1fa2luZCA9PSBtZXRhZGF0YUtleXdvcmQoKSkKLSAgICAgICAga2luZCA9
IFBsYXRmb3JtVGV4dFRyYWNrOjpNZXRhRGF0YTsKKyAgICBQbGF0Zm9ybVRleHRUcmFjazo6VHJh
Y2tLaW5kIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9uOworICAgIGlm
IChraW5kKCkgPT0gc3VidGl0bGVzS2V5d29yZCgpKQorICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQ
bGF0Zm9ybVRleHRUcmFjazo6U3VidGl0bGU7CisgICAgZWxzZSBpZiAoa2luZCgpID09IGNhcHRp
b25zS2V5d29yZCgpKQorICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6
Q2FwdGlvbjsKKyAgICBlbHNlIGlmIChraW5kKCkgPT0gZGVzY3JpcHRpb25zS2V5d29yZCgpKQor
ICAgICAgICBwbGF0Zm9ybUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6RGVzY3JpcHRpb247Cisg
ICAgZWxzZSBpZiAoa2luZCgpID09IGNoYXB0ZXJzS2V5d29yZCgpKQorICAgICAgICBwbGF0Zm9y
bUtpbmQgPSBQbGF0Zm9ybVRleHRUcmFjazo6Q2hhcHRlcjsKKyAgICBlbHNlIGlmIChraW5kKCkg
PT0gbWV0YWRhdGFLZXl3b3JkKCkpCisgICAgICAgIHBsYXRmb3JtS2luZCA9IFBsYXRmb3JtVGV4
dFRyYWNrOjpNZXRhRGF0YTsKIAogICAgIFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja1R5cGUgdHlw
ZSA9IFBsYXRmb3JtVGV4dFRyYWNrOjpPdXRPZkJhbmQ7CiAgICAgaWYgKG1fdHJhY2tUeXBlID09
IFRyYWNrRWxlbWVudCkKQEAgLTUyMiw3ICs1NDIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtVGV4
dFRyYWNrPiBUZXh0VHJhY2s6OnBsYXRmb3JtVGV4dFRyYWNrKCkKICAgICBlbHNlIGlmIChtX3Ry
YWNrVHlwZSA9PSBJbkJhbmQpCiAgICAgICAgIHR5cGUgPSBQbGF0Zm9ybVRleHRUcmFjazo6SW5C
YW5kOwogCi0gICAgbV9wbGF0Zm9ybVRleHRUcmFjayA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVh
dGUodGhpcywgbV9sYWJlbCwgbV9sYW5ndWFnZSwga2luZCwgdHlwZSk7CisgICAgbV9wbGF0Zm9y
bVRleHRUcmFjayA9IFBsYXRmb3JtVGV4dFRyYWNrOjpjcmVhdGUodGhpcywgbGFiZWwoKSwgbGFu
Z3VhZ2UoKSwgcGxhdGZvcm1LaW5kLCB0eXBlKTsKIAogICAgIHJldHVybiBtX3BsYXRmb3JtVGV4
dFRyYWNrOwogfQpAQCAtNTM0LDcgKzU1NCw3IEBAIGJvb2wgVGV4dFRyYWNrOjppc01haW5Qcm9n
cmFtQ29udGVudCgpIGNvbnN0CiAgICAgLy8gZGlyZWN0b3JzIGNvbW1lbnRhcnkgaXMgbm90ICJt
YWluIHByb2dyYW0iIGJlY2F1c2UgaXQgaXMgbm90IGVzc2VudGlhbCBmb3IgdGhlIHByZXNlbnRh
dGlvbi4gSFRNTDUgZG9lc24ndCBoYXZlCiAgICAgLy8gYSB3YXkgdG8gZXhwcmVzcyB0aGlzIGlu
IGEgbWFjaGluZS1yZWFibGUgZm9ybSwgaXQgaXMgdHlwaWNhbGx5IGRvbmUgd2l0aCB0aGUgdHJh
Y2sgbGFiZWwsIHNvIHdlIGFzc3VtZSB0aGF0IGNhcHRpb24KICAgICAvLyB0cmFja3MgYXJlIG1h
aW4gY29udGVudCBhbmQgYWxsIG90aGVyIHRyYWNrIHR5cGVzIGFyZSBub3QuCi0gICAgcmV0dXJu
IG1fa2luZCA9PSBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICByZXR1cm4ga2luZCgpID09IGNhcHRp
b25zS2V5d29yZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaAppbmRleCA1NzY5NDViYmU1MjFjZDZhMmY2ZmZmZmQzN2U1NmFk
NjY3MjYwZmYzLi40YmEzMGU3NTY1NTQ1ZjA2N2JmOTFiYjY5NGJiMzYxN2ZlZTdmZTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRleHRUcmFja0N1ZTsK
IGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4
dFRyYWNrQ3VlPikgPSAwOwogfTsKIAotY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFz
ZQorY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0
CiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAsIHB1YmxpYyBQbGF0Zm9y
bVRleHRUcmFja0NsaWVudAogI2VuZGlmCkBAIC03MywzMiArNzMsMjYgQEAgcHVibGljOgogICAg
IH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKICAgICBzdGF0aWMg
VGV4dFRyYWNrKiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAgICBzdGF0aWMgVGV4dFRyYWNrKiBj
YXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKIAotICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OyB9Ci0g
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1l
bnQ7IH0KLQotICAgIEF0b21pY1N0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9
Ci0gICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpOwotCiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGRlc2NyaXB0aW9uc0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBjaGFwdGVyc0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBt
ZXRhZGF0YUtleXdvcmQoKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVs
dEtpbmRLZXl3b3JkKCkgY29uc3QgeyByZXR1cm4gc3VidGl0bGVzS2V5d29yZCgpOyB9CiAgICAg
c3RhdGljIGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0g
ICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZv
aWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7
IH0KLQotICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZ3Vh
Z2U7IH0KLSAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2Up
IHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9Ci0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBkaXNhYmxlZEtleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBo
aWRkZW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2hvd2luZ0tl
eXdvcmQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOworCiAgICAgQXRvbWljU3RyaW5nIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9kZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIApA
QCAtMTA5LDggKzEwMyw4IEBAIHB1YmxpYzoKICAgICBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKCk7
CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogYWN0aXZlQ3VlcygpIGNvbnN0OwogCi0gICAgdm9pZCBj
bGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9Ci0gICAgVGV4dFRyYWNrQ2xpZW50KiBjbGll
bnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgp
IE9WRVJSSURFIHsgbV9jbGllbnQgPSAwOyB9CisgICAgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgdm9pZCBhZGRDdWUoUGFzc1JlZlB0
cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2b2lkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqLCBFeGNl
cHRpb25Db2RlJik7CkBAIC0xNTQsMTUgKzE0OCwyNSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxQbGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UZXh0VHJhY2soKTsKICNlbmRpZgogCisgICAg
dXNpbmcgUmVmQ291bnRlZDxUcmFja0Jhc2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxU
cmFja0Jhc2U+OjpkZXJlZjsKKwogcHJvdGVjdGVkOgogICAgIFRleHRUcmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5k
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdl
LCBUZXh0VHJhY2tUeXBlKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJW
VFRfUkVHSU9OUykKICAgICBUZXh0VHJhY2tSZWdpb25MaXN0KiByZWdpb25MaXN0KCk7CiAjZW5k
aWYKIAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKICAg
ICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgorICAgIHZpcnR1
YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsK
KworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCiAgICAgVGV4dFRyYWNrUmVnaW9u
TGlzdCogZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlzdCgpOwpAQCAtMTc3LDEwICsxODEsOCBAQCBw
cml2YXRlOgogCiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgp
OwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7Ci0gICAgQXRvbWljU3Ry
aW5nIG1fa2luZDsKLSAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKLSAgICBBdG9taWNTdHJpbmcg
bV9sYW5ndWFnZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIEF0
b21pY1N0cmluZyBtX21vZGU7CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBU
ZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5jcHAKaW5kZXggOGFlNTZjMmIwNWU3NGQ2MDI5ZmIzNGQzYTFkYWM2ZDAwMDE2
NDcyMC4uOWE2Y2RiMTE2ZGFmMThhZDYzNjg1ODRiN2JiOTY1NmEzZDlmNTNjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBAIC0zMCwyMyArMzAsMTYg
QEAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFj
ay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJMb2Fk
YWJsZVRleHRUcmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2suaCIKLSNpbmNsdWRlICJUcmFja0V2ZW50LmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KEhUTUxNZWRp
YUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX293bmVyKG93bmVyKQotICAgICwgbV9wZW5kaW5n
RXZlbnRUaW1lcih0aGlzLCAmVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCi0g
ICAgLCBtX2Rpc3BhdGNoaW5nRXZlbnRzKDApCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBj
b250ZXh0KQogewotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogfQogCiBUZXh0
VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlzdCgpCkBAIC01OCw4ICs1MSwxMiBAQCB1bnNpZ25lZCBU
ZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX2FkZFRyYWNrVHJhY2tz
LnNpemUoKSArIG1fZWxlbWVudFRyYWNrcy5zaXplKCkgKyBtX2luYmFuZFRyYWNrcy5zaXplKCk7
CiB9CiAKLWludCBUZXh0VHJhY2tMaXN0OjpnZXRUcmFja0luZGV4KFRleHRUcmFjayAqdGV4dFRy
YWNrKQoraW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXgoVHJhY2tCYXNlICp0cmFjaykK
IHsKKyAgICBpZiAodHJhY2stPnR5cGUoKSAhPSBUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAg
ICAgcmV0dXJuIC0xOworICAgIFRleHRUcmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4
dFRyYWNrKj4odHJhY2spOworCiAgICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpUcmFja0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxMb2FkYWJs
ZVRleHRUcmFjayo+KHRleHRUcmFjayktPnRyYWNrRWxlbWVudEluZGV4KCk7CiAKQEAgLTk4LDcg
Kzk1LDcgQEAgaW50IFRleHRUcmFja0xpc3Q6OmdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVy
ZWRUcmFja3MoVGV4dFRyYWNrICp0ZXh0VHJhY2spCiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1f
aW5iYW5kVHJhY2tzW2ldLT5pc1JlbmRlcmVkKCkpCisgICAgICAgIGlmICghZ2V0SW5iYW5kVHJh
Y2soaSktPmlzUmVuZGVyZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAg
ICAgICAgaWYgKG1faW5iYW5kVHJhY2tzW2ldID09IHRleHRUcmFjaykKQEAgLTExMSw3ICsxMDgs
NyBAQCBpbnQgVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRy
YWNrcyhUZXh0VHJhY2sgKnRleHRUcmFjaykKICAgICByZXR1cm4gLTE7CiB9CiAKLVRleHRUcmFj
ayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKK1RleHRUcmFjayogVGV4dFRy
YWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICAvLyA0LjguMTAuMTIu
MSBUZXh0IHRyYWNrIG1vZGVsCiAgICAgLy8gVGhlIHRleHQgdHJhY2tzIGFyZSBzb3J0ZWQgYXMg
Zm9sbG93czoKQEAgLTEyOSwzNiArMTI2LDQ1IEBAIFRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbmRleCkKIAogICAgIGluZGV4IC09IG1fYWRkVHJhY2tUcmFja3Muc2l6
ZSgpOwogICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGdldEluYmFu
ZFRyYWNrKGluZGV4KTsKIAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFRleHRUcmFja0xpc3Q6
OmludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKFRleHRUcmFjayogdHJhY2spCitUZXh0
VHJhY2sqIFRleHRUcmFja0xpc3Q6OmdldEluYmFuZFRyYWNrKHVuc2lnbmVkIGluZGV4KSBjb25z
dAogewotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOworICAgIFRy
YWNrQmFzZSogdHJhY2sgPSBtX2luYmFuZFRyYWNrc1tpbmRleF0uZ2V0KCk7CisgICAgQVNTRVJU
KHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpUZXh0VHJhY2spOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayk7Cit9CiAKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6aW52
YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBz
aXplX3QgaW5kZXggPSBub3RGb3VuZDsKICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRl
eHRUcmFjazo6VHJhY2tFbGVtZW50KSB7Ci0gICAgICAgIHRyYWNrcyA9ICZtX2VsZW1lbnRUcmFj
a3M7CisgICAgICAgIGluZGV4ID0gbV9lbGVtZW50VHJhY2tzLmZpbmQodHJhY2spOworICAgICAg
ICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IG1fZWxlbWVudFRyYWNrcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIG1fZWxlbWVudFRyYWNrcy5hdChpbmRleCktPmludmFsaWRhdGVUcmFja0luZGV4
KCk7CisgICAgfSBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRU
cmFjaykgeworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlu
ZGV4ID0gbV9hZGRUcmFja1RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICAgICAgICAgIGlmIChpbmRl
eCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FkZFRyYWNrVHJhY2tzLnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgbV9hZGRUcmFja1RyYWNrc1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsK
KyAgICB9IGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkg
eworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGluZGV4ID0g
bV9pbmJhbmRUcmFja3MuZmluZCh0cmFjayk7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBtX2luYmFuZFRyYWNrc1tpXS0+aW52YWxpZGF0ZVRyYWNrSW5kZXgoKTsKLSAgICB9IGVsc2Ug
aWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKSB7Ci0gICAgICAg
IHRyYWNrcyA9ICZtX2FkZFRyYWNrVHJhY2tzOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9pbmJhbmRUcmFj
a3NbaV0tPmludmFsaWRhdGVUcmFja0luZGV4KCk7Ci0gICAgfSBlbHNlIGlmICh0cmFjay0+dHJh
Y2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgIHRyYWNrcyA9ICZtX2luYmFu
ZFRyYWNrczsKLSAgICBlbHNlCisgICAgICAgICAgICBnZXRJbmJhbmRUcmFjayhpKS0+aW52YWxp
ZGF0ZVRyYWNrSW5kZXgoKTsKKyAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0KLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJhY2spOwotICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChzaXplX3QgaSA9
IGluZGV4OyBpIDwgdHJhY2tzLT5zaXplKCk7ICsraSkKLSAgICAgICAgdHJhY2tzLT5hdChpbmRl
eCktPmludmFsaWRhdGVUcmFja0luZGV4KCk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBw
ZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBwcnBUcmFjaykKQEAgLTE4MCw1MSArMTg2LDYwIEBA
IHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBwcnBUcmFj
aykKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRyYWNrLmdldCgpKTsK
IAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1l
bnQoKSA9PSBtX293bmVyKTsKLSAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG1fb3duZXIpOwor
ICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQo
KSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOwogCiAg
ICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgVGV4
dFRyYWNrTGlzdDo6cmVtb3ZlKFRleHRUcmFjayogdHJhY2spCit2b2lkIFRleHRUcmFja0xpc3Q6
OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQogewotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
PiA+KiB0cmFja3MgPSAwOwotCi0gICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OlRyYWNrRWxlbWVudCkKLSAgICAgICAgdHJhY2tzID0gJm1fZWxlbWVudFRyYWNrczsKLSAg
ICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKLSAg
ICAgICAgdHJhY2tzID0gJm1fYWRkVHJhY2tUcmFja3M7Ci0gICAgZWxzZSBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAgICB0cmFja3MgPSAmbV9pbmJh
bmRUcmFja3M7CisgICAgaWYgKHRyYWNrLT50eXBlKCkgIT0gVHJhY2tCYXNlOjpUZXh0VHJhY2sp
CisgICAgICAgIHJldHVybjsKKyAgICBUZXh0VHJhY2sqIHRleHRUcmFjayA9IHN0YXRpY19jYXN0
PFRleHRUcmFjayo+KHRyYWNrKTsKKworICAgIHNpemVfdCBpbmRleCA9IG5vdEZvdW5kOworICAg
IGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQor
ICAgICAgICBtX2VsZW1lbnRUcmFja3MuZmluZCh0ZXh0VHJhY2spOworICAgIGVsc2UgaWYgKHRl
eHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKKyAgICAgICAgbV9h
ZGRUcmFja1RyYWNrcy5maW5kKHRleHRUcmFjayk7CisgICAgZWxzZSBpZiAodGV4dFRyYWNrLT50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgbV9pbmJhbmRUcmFja3Mu
ZmluZCh0ZXh0VHJhY2spOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICBzaXplX3QgaW5kZXggPSB0cmFja3MtPmZpbmQodHJhY2spOwogICAgIGlmIChpbmRl
eCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW52YWxpZGF0ZVRyYWNrSW5k
ZXhlc0FmdGVyVHJhY2sodHJhY2spOworICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRy
YWNrKHRleHRUcmFjayk7CiAKLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0
cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7CisgICAgQVNTRVJUKCF0cmFjay0+bWVk
aWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkpOwogICAgIHRy
YWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7CiAKLSAgICB0cmFja3MtPnJlbW92ZShpbmRleCk7Cisg
ICAgaWYgKHRleHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQp
CisgICAgICAgIG1fZWxlbWVudFRyYWNrcy5yZW1vdmUoaW5kZXgpOworICAgIGVsc2UgaWYgKHRl
eHRUcmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKKyAgICAgICAgbV9h
ZGRUcmFja1RyYWNrcy5yZW1vdmUoaW5kZXgpOworICAgIGVsc2UgaWYgKHRleHRUcmFjay0+dHJh
Y2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCisgICAgICAgIG1faW5iYW5kVHJhY2tzLnJl
bW92ZShpbmRleCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotYm9vbCBUZXh0VHJhY2tMaXN0Ojpjb250YWlucyhUZXh0VHJhY2sqIHRyYWNrKSBjb25zdAor
Ym9vbCBUZXh0VHJhY2tMaXN0Ojpjb250YWlucyhUcmFja0Jhc2UqIHRyYWNrKSBjb25zdAogewot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOwotICAgIAot
ICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpCi0g
ICAgICAgIHRyYWNrcyA9ICZtX2VsZW1lbnRUcmFja3M7Ci0gICAgZWxzZSBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6QWRkVHJhY2spCi0gICAgICAgIHRyYWNrcyA9ICZtX2Fk
ZFRyYWNrVHJhY2tzOwotICAgIGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJh
Y2s6OkluQmFuZCkKLSAgICAgICAgdHJhY2tzID0gJm1faW5iYW5kVHJhY2tzOwotICAgIGVsc2UK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKHRyYWNrLT50eXBlKCkgIT0g
VHJhY2tCYXNlOjpUZXh0VHJhY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBUZXh0VHJh
Y2sqIHRleHRUcmFjayA9IHN0YXRpY19jYXN0PFRleHRUcmFjayo+KHRyYWNrKTsKICAgICAKLSAg
ICByZXR1cm4gdHJhY2tzLT5maW5kKHRyYWNrKSAhPSBub3RGb3VuZDsKKyAgICBpZiAodGV4dFRy
YWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKKyAgICAgICAgcmV0
dXJuIG1fZWxlbWVudFRyYWNrcy5maW5kKHRyYWNrKSAhPSBub3RGb3VuZDsKKyAgICBpZiAodGV4
dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkFkZFRyYWNrKQorICAgICAgICByZXR1
cm4gbV9hZGRUcmFja1RyYWNrcy5maW5kKHRyYWNrKSAhPSBub3RGb3VuZDsKKyAgICBpZiAodGV4
dFRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmV0dXJu
IG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spICE9IG5vdEZvdW5kOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBU
ZXh0VHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKQEAgLTIzMiw0MSArMjQ3LDQgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRleHRUcmFja0xpc3Q7CiB9CiAK
LXZvaWQgVGV4dFRyYWNrTGlzdDo6c2NoZWR1bGVBZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8VGV4
dFRyYWNrPiB0cmFjaykKLXsKLSAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFu
ZCB0ZXh0IHRyYWNrcwotICAgIC8vIDQuOC4xMC4xMi40IFRleHQgdHJhY2sgQVBJCi0gICAgLy8g
Li4uIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgd2l0aCB0aGUgbmFtZSBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCAKLSAgICAvLyBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxhYmxl
LCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgd2l0aCAKLSAgICAvLyB0
aGUgdHJhY2sgYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSB0ZXh0IHRyYWNrJ3MgVGV4dFRy
YWNrIG9iamVjdCwgYXQgCi0gICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyB0ZXh0VHJhY2tzIGF0
dHJpYnV0ZSdzIFRleHRUcmFja0xpc3Qgb2JqZWN0LgotCi0gICAgUmVmUHRyPFRleHRUcmFjaz4g
dHJhY2tSZWYgPSB0cmFjazsKLSAgICBUcmFja0V2ZW50SW5pdCBpbml0aWFsaXplcjsKLSAgICBp
bml0aWFsaXplci50cmFjayA9IHRyYWNrUmVmOwotICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBm
YWxzZTsKLSAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7Ci0KLSAgICBtX3BlbmRp
bmdFdmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tF
dmVudCwgaW5pdGlhbGl6ZXIpKTsKLSAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LXZvaWQgVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VGV4dFRyYWNr
TGlzdD4qKQotewotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2ZW50czsKLQot
ICAgICsrbV9kaXNwYXRjaGluZ0V2ZW50czsKLSAgICBtX3BlbmRpbmdFdmVudHMuc3dhcChwZW5k
aW5nRXZlbnRzKTsKLSAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nRXZlbnRzLnNpemUoKTsKLSAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCi0gICAgICAg
IGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgpLCBJR05PUkVfRVhD
RVBUSU9OKTsKLSAgICAtLW1fZGlzcGF0Y2hpbmdFdmVudHM7Ci19Ci0KLU5vZGUqIFRleHRUcmFj
a0xpc3Q6Om93bmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9vd25lcjsKLX0KLQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmluZGV4IDFlZTE1Yzkz
Yzk4NzllNWM5YWE1ZTVkNGI2OTFkNDdjMDU0NjJhMjEuLmVmNTI2N2Q0MTU4ZDg1OTA2OTM1NDQw
ZjZjODJmMDg4ZTRlZDMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5oCkBAIC0yOCwyMSArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAot
I2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2lu
Y2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7Ci1jbGFzcyBUZXh0
VHJhY2tMaXN0OwogCi1jbGFzcyBUZXh0VHJhY2tMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4
dFRyYWNrTGlzdD4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitjbGFzcyBUZXh0VHJhY2tMaXN0IDog
cHVibGljIFRyYWNrTGlzdEJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRl
eHRUcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CkBAIC01MCw1NCArNDIsMjcgQEAgcHVibGljOgog
ICAgIH0KICAgICB+VGV4dFRyYWNrTGlzdCgpOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7Ci0gICAgaW50IGdldFRyYWNrSW5kZXgoVGV4dFRyYWNrKik7CiAgICAgaW50IGdldFRyYWNr
SW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRyYWNrKik7Ci0gICAgYm9vbCBjb250
YWlucyhUZXh0VHJhY2sqKSBjb25zdDsKIAotICAgIFRleHRUcmFjayogaXRlbSh1bnNpZ25lZCBp
bmRleCk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGludCBnZXRUcmFja0luZGV4KFRyYWNrQmFzZSopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBjb250YWlucyhUcmFja0Jhc2UqKSBjb25zdCBPVkVSUklERTsKKworICAgIFRl
eHRUcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoUGFz
c1JlZlB0cjxUZXh0VHJhY2s+KTsKLSAgICB2b2lkIHJlbW92ZShUZXh0VHJhY2sqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNv
bnN0OwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD46OnJlZjsKLSAgICB1c2lu
ZyBSZWZDb3VudGVkPFRleHRUcmFja0xpc3Q+OjpkZXJlZjsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHQ7IH0KLQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkdHJh
Y2spOwotCi0gICAgdm9pZCBjbGVhck93bmVyKCkgeyBtX293bmVyID0gMDsgfQotICAgIE5vZGUq
IG93bmVyKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSB7IHJl
dHVybiBtX2Rpc3BhdGNoaW5nRXZlbnRzOyB9CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrTGlz
dChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgLy8g
RXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KLSAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotCi0gICAgdm9pZCBz
Y2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKLSAgICB2b2lkIGFz
eW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRleHRUcmFja0xpc3Q+Kik7Ci0KKyAgICBUZXh0VHJh
Y2sqIGdldEluYmFuZFRyYWNrKHVuc2lnbmVkKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGVU
cmFja0luZGV4ZXNBZnRlclRyYWNrKFRleHRUcmFjayopOwogCi0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OwotICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fb3duZXI7Ci0KLSAg
ICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKLSAgICBUaW1lcjxUZXh0
VHJhY2tMaXN0PiBtX3BlbmRpbmdFdmVudFRpbWVyOwotCi0gICAgRXZlbnRUYXJnZXREYXRhIG1f
ZXZlbnRUYXJnZXREYXRhOwotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fYWRkVHJh
Y2tUcmFja3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV9lbGVtZW50VHJhY2tz
OwotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1faW5iYW5kVHJhY2tzOwotCi0gICAg
aW50IG1fZGlzcGF0Y2hpbmdFdmVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpUZXh0
VHJhY2s+ID4gbV9hZGRUcmFja1RyYWNrczsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlRl
eHRUcmFjaz4gPiBtX2VsZW1lbnRUcmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKaW5kZXggNmEyYzM1ODIzZTYx
OTYyYTM3YzlmOGY0Y2VmZDk4OWRkYWI1MGRmZS4uZGU0ZTM4NTc0Y2Q4MTgwMmE2YWUwMTAxYTMw
MGM2YjI5MGI5ODJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcApA
QCAtMzAsOCArMzAsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UcmFja0Jhc2U6OlRy
YWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUeXBlIHR5cGUpCi0gICAg
OiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKK1RyYWNrQmFzZTo6VHJhY2tCYXNl
KFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsYW5ndWFnZSkKKyAgICA6IG1fbWVkaWFFbGVtZW50KDApCisgICAgLCBtX2xhYmVsKGxhYmVs
KQorICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBCYXNl
VHJhY2spOwogICAgIG1fdHlwZSA9IHR5cGU7CkBAIC00MSwyNCArNDMsMTQgQEAgVHJhY2tCYXNl
Ojp+VHJhY2tCYXNlKCkKIHsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBUcmFja0Jhc2U6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAordm9pZCBUcmFja0Jhc2U6OnNldEtpbmQoY29uc3QgQXRvbWlj
U3RyaW5nJiBraW5kKQogewotICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4
dFRyYWNrOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBUcmFja0Jhc2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci19CisgICAgU3RyaW5nIG9sZEtpbmQgPSBtX2tpbmQ7CiAKLUV2ZW50VGFyZ2V0RGF0
YSogVHJhY2tCYXNlOjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogVHJhY2tCYXNlOjplbnN1cmVFdmVudFRh
cmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CisgICAgaWYgKGlz
VmFsaWRLaW5kKGtpbmQpKQorICAgICAgICBtX2tpbmQgPSBraW5kOworICAgIGVsc2UKKyAgICAg
ICAgbV9raW5kID0gZGVmYXVsdEtpbmRLZXl3b3JkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCmluZGV4IGMwMDY2MGYwNTNh
ZDY0OTQxNjU4ZjIwZDc1MDMwY2FiYzkzMjc5ODkuLjU0NjI4OThjMGUwNTdlMjI3MGM5MTQxYTZh
ZDUyYjQzMmRhNzI0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaApAQCAt
MzMsMzUgKzMzLDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAKLWNsYXNzIFRyYWNrQmFz
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7Citj
bGFzcyBUcmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5UcmFja0Jhc2UoKTsKIAogICAgIGVudW0gVHlwZSB7IEJhc2VUcmFjaywg
VGV4dFRyYWNrLCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrIH07CiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwotICAgIAotICAgIHVzaW5nIFJlZkNv
dW50ZWQ8VHJhY2tCYXNlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6
ZGVyZWY7CisgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVu
dCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7IH0KKyAgICBIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQorCisgICAgQXRvbWljU3Ry
aW5nIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
S2luZChjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21pY1N0
cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CisKKyAgICBBdG9taWNTdHJpbmcgbGFu
Z3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CisgICAgdm9pZCBzZXRMYW5ndWFn
ZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsg
fQorCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlKTsKLSAgICAKLSAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7Ci0gICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworICAgIFRyYWNrQmFzZShU
eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1
YWdlKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5k
S2V5d29yZCgpIGNvbnN0ID0gMDsKKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVt
ZW50OwogCiBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOwotICAgIAotICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRh
cmdldERhdGE7CisgICAgQXRvbWljU3RyaW5nIG1fa2luZDsKKyAgICBBdG9taWNTdHJpbmcgbV9s
YWJlbDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFiODZlOGYzMDJlZDM5MGRmYWIwZTI1MWRmMzE1MGE0NDI4OWFiMWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3Bw
CkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRyYWNrQmFz
ZS5oIgorI2luY2x1ZGUgIlRyYWNrRXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1RyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UoSFRNTE1lZGlhRWxlbWVudCogb3duZXIs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fb3duZXIob3duZXIpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHRoaXMs
ICZUcmFja0xpc3RCYXNlOjphc3luY0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fZGlzcGF0Y2hp
bmdFdmVudHMoMCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKK30KKwor
VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UoKQoreworfQorCit1bnNpZ25lZCBUcmFja0xp
c3RCYXNlOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5zaXpl
KCk7Cit9CisKK2ludCBUcmFja0xpc3RCYXNlOjpnZXRUcmFja0luZGV4KFRyYWNrQmFzZSAqdHJh
Y2spCit7CisgICAgcmV0dXJuIG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spOworfQorCit2b2lk
IFRyYWNrTGlzdEJhc2U6OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNrKQoreworICAgIHNpemVfdCBp
bmRleCA9IG1faW5iYW5kVHJhY2tzLmZpbmQodHJhY2spOworICAgIEFTU0VSVChpbmRleCAhPSBu
b3RGb3VuZCk7CisKKyAgICBBU1NFUlQodHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1fb3duZXIp
OworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7CisKKyAgICBSZWZQdHI8VHJhY2tCYXNl
PiB0cmFja1JlZiA9IG1faW5iYW5kVHJhY2tzW2luZGV4XTsKKworICAgIG1faW5iYW5kVHJhY2tz
LnJlbW92ZShpbmRleCk7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2tSZWYucmVs
ZWFzZSgpKTsKK30KKworYm9vbCBUcmFja0xpc3RCYXNlOjpjb250YWlucyhUcmFja0Jhc2UqIHRy
YWNrKSBjb25zdAoreworICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5maW5kKHRyYWNrKSAhPSBu
b3RGb3VuZDsKK30KKwordm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQo
UGFzc1JlZlB0cjxUcmFja0Jhc2U+IHRyYWNrKQoreworICAgIC8vIDQuOC4xMC41IExvYWRpbmcg
dGhlIG1lZGlhIHJlc291cmNlCisgICAgLy8gLi4uCisgICAgLy8gRmlyZSBhIHRydXN0ZWQgZXZl
bnQgd2l0aCB0aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCisg
ICAgLy8gbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJm
YWNlLCB3aXRoIHRoZSB0cmFjaworICAgIC8vIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUg
bmV3IEF1ZGlvVHJhY2sgb2JqZWN0LCBhdCB0aGlzCisgICAgLy8gQXVkaW9UcmFja0xpc3Qgb2Jq
ZWN0LgorICAgIC8vIC4uLgorICAgIC8vIEZpcmUgYSB0cnVzdGVkIGV2ZW50IHdpdGggdGhlIG5h
bWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcworICAgIC8vIG5vdCBjYW5j
ZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgd2l0aCB0aGUg
dHJhY2sKKyAgICAvLyBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIG5ldyBWaWRlb1RyYWNr
IG9iamVjdCwgYXQgdGhpcworICAgIC8vIFZpZGVvVHJhY2tMaXN0IG9iamVjdC4KKworICAgIC8v
IDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gNC44
LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKKyAgICAvLyAuLi4gdGhlbiBxdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90CisgICAg
Ly8gYnViYmxlIGFuZCBpcyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tF
dmVudCBpbnRlcmZhY2UsIHdpdGgKKyAgICAvLyB0aGUgdHJhY2sgYXR0cmlidXRlIGluaXRpYWxp
emVkIHRvIHRoZSB0ZXh0IHRyYWNrJ3MgVGV4dFRyYWNrIG9iamVjdCwgYXQKKyAgICAvLyB0aGUg
bWVkaWEgZWxlbWVudCdzIHRleHRUcmFja3MgYXR0cmlidXRlJ3MgVGV4dFRyYWNrTGlzdCBvYmpl
Y3QuIAorCisgICAgUmVmUHRyPFRyYWNrQmFzZT4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBUcmFj
a0V2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0aWFsaXplci50cmFjayA9IHRyYWNrUmVm
OworICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5j
ZWxhYmxlID0gZmFsc2U7CisKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZl
bnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1
bGVSZW1vdmVUcmFja0V2ZW50KFBhc3NSZWZQdHI8VHJhY2tCYXNlPiB0cmFjaykKK3sKKyAgICAv
LyA0LjguMTAuNiBPZmZzZXRzIGludG8gdGhlIG1lZGlhIHJlc291cmNlCisgICAgLy8gSWYgYXQg
YW55IHRpbWUgdGhlIHVzZXIgYWdlbnQgbGVhcm5zIHRoYXQgYW4gYXVkaW8gb3IgdmlkZW8gdHJh
Y2sgaGFzCisgICAgLy8gZW5kZWQgYW5kIGFsbCBtZWRpYSBkYXRhIHJlbGF0aW5nIHRvIHRoYXQg
dHJhY2sgY29ycmVzcG9uZHMgdG8gcGFydHMgb2YKKyAgICAvLyB0aGUgbWVkaWEgdGltZWxpbmUg
dGhhdCBhcmUgYmVmb3JlIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3NpdGlvbiwgdGhlCisgICAg
Ly8gdXNlciBhZ2VudCBtYXkgcXVldWUgYSB0YXNrIHRvIHJlbW92ZSB0aGUgdHJhY2sgZnJvbSB0
aGUgYXVkaW9UcmFja3MKKyAgICAvLyBhdHRyaWJ1dGUncyBBdWRpb1RyYWNrTGlzdCBvYmplY3Qg
b3IgdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSdzCisgICAgLy8gVmlkZW9UcmFja0xpc3Qgb2Jq
ZWN0IGFzIGFwcHJvcHJpYXRlIGFuZCB0aGVuIGZpcmUgYSB0cnVzdGVkIGV2ZW50CisgICAgLy8g
d2l0aCB0aGUgbmFtZSByZW1vdmV0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5v
dCBjYW5jZWxhYmxlLAorICAgIC8vIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJm
YWNlLCB3aXRoIHRoZSB0cmFjayBhdHRyaWJ1dGUKKyAgICAvLyBpbml0aWFsaXplZCB0byB0aGUg
QXVkaW9UcmFjayBvciBWaWRlb1RyYWNrIG9iamVjdCByZXByZXNlbnRpbmcgdGhlCisgICAgLy8g
dHJhY2ssIGF0IHRoZSBtZWRpYSBlbGVtZW50J3MgYWZvcmVtZW50aW9uZWQgQXVkaW9UcmFja0xp
c3Qgb3IKKyAgICAvLyBWaWRlb1RyYWNrTGlzdCBvYmplY3QuCisKKyAgICAvLyA0LjguMTAuMTIu
MyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIC8vIFdoZW4gYSB0cmFjayBl
bGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhlIG9sZCBwYXJlbnQgd2FzIGEK
KyAgICAvLyBtZWRpYSBlbGVtZW50LCB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgcmVtb3ZlIHRo
ZSB0cmFjayBlbGVtZW50J3MKKyAgICAvLyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0
aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MsCisgICAgLy8gYW5kIHRoZW4g
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IHdpdGggdGhlIG5hbWUgcmVtb3Zl
dHJhY2ssCisgICAgLy8gdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5jZWxhYmxl
LCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50CisgICAgLy8gaW50ZXJmYWNlLCB3aXRoIHRo
ZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncworICAgIC8v
IFRleHRUcmFjayBvYmplY3QsIGF0IHRoZSBtZWRpYSBlbGVtZW50J3MgdGV4dFRyYWNrcyBhdHRy
aWJ1dGUncworICAgIC8vIFRleHRUcmFja0xpc3Qgb2JqZWN0LgorCisgICAgUmVmUHRyPFRyYWNr
QmFzZT4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBUcmFja0V2ZW50SW5pdCBpbml0aWFsaXplcjsK
KyAgICBpbml0aWFsaXplci50cmFjayA9IHRyYWNrUmVmOworICAgIGluaXRpYWxpemVyLmJ1YmJs
ZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7CisKKyAgICBt
X3BlbmRpbmdFdmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVt
b3ZldHJhY2tFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFydE9uZVNob3Qo
MCk7Cit9CisKK3ZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVDaGFuZ2VFdmVudCgpCit7Cisg
ICAgLy8gNC44LjEwLjYgT2Zmc2V0cyBpbnRvIHRoZSBtZWRpYSByZXNvdXJjZQorICAgIC8vIFdo
ZW5ldmVyIGFuIGF1ZGlvIHRyYWNrIGluIGFuIEF1ZGlvVHJhY2tMaXN0IGlzIGVuYWJsZWQgb3Ig
ZGlzYWJsZWQsIHRoZQorICAgIC8vIHVzZXIgYWdlbnQgbXVzdCBxdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlCisgICAgLy8gQXVkaW9UcmFja0xp
c3Qgb2JqZWN0LgorICAgIC8vIC4uLgorICAgIC8vIFdoZW5ldmVyIGEgdHJhY2sgaW4gYSBWaWRl
b1RyYWNrTGlzdCB0aGF0IHdhcyBwcmV2aW91c2x5IG5vdCBzZWxlY3RlZCBpcworICAgIC8vIHNl
bGVjdGVkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxl
IGV2ZW50IG5hbWVkCisgICAgLy8gY2hhbmdlIGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3Qu
CisKKyAgICBFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9
IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKKworICAgIG1fcGVu
ZGluZ0V2ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQs
IGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lk
IFRyYWNrTGlzdEJhc2U6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRyYWNrTGlzdEJhc2U+
KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisKKyAgICAr
K21fZGlzcGF0Y2hpbmdFdmVudHM7CisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2
ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNw
YXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElP
Tik7CisgICAgLS1tX2Rpc3BhdGNoaW5nRXZlbnRzOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmYTU2MmViNzRhZTQ1
OTY3NjJhYjM1NTczM2NkZTQ2NTNkNWNiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgVHJhY2tMaXN0QmFzZV9oCisjZGVmaW5lIFRyYWNrTGlzdEJhc2Vf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7CitjbGFzcyBUcmFja0Jhc2U7CisKK2NsYXNzIFRyYWNrTGlzdEJhc2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1Ymxp
YzoKKyAgICB+VHJhY2tMaXN0QmFzZSgpOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBnZXRUcmFja0luZGV4KFRyYWNrQmFzZSopOworICAg
IHZpcnR1YWwgYm9vbCBjb250YWlucyhUcmFja0Jhc2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKFRyYWNrQmFzZSopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB1c2lu
ZyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxU
cmFja0xpc3RCYXNlPjo6ZGVyZWY7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHRyYWNrKTsKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihyZW1vdmV0cmFjayk7CisKKyAgICB2b2lkIGNsZWFyT3duZXIoKSB7
IG1fb3duZXIgPSAwOyB9CisgICAgSFRNTE1lZGlhRWxlbWVudCogb3duZXIoKSBjb25zdCB7IHJl
dHVybiBtX293bmVyOyB9CisKKyAgICBib29sIGlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSB7IHJl
dHVybiBtX2Rpc3BhdGNoaW5nRXZlbnRzOyB9CisKKyAgICAvLyBOZWVkcyB0byBiZSBwdWJsaWMg
c28gdHJhY2tzIGNhbiBjYWxsIGl0CisgICAgdm9pZCBzY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisK
K3Byb3RlY3RlZDoKKyAgICBUcmFja0xpc3RCYXNlKEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisKKyAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNz
UmVmUHRyPFRyYWNrQmFzZT4pOworICAgIHZvaWQgc2NoZWR1bGVSZW1vdmVUcmFja0V2ZW50KFBh
c3NSZWZQdHI8VHJhY2tCYXNlPik7CisKKyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4gPiBt
X2luYmFuZFRyYWNrczsKKworcHJpdmF0ZToKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1
YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4g
Jm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRp
bWVyPFRyYWNrTGlzdEJhc2U+Kik7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2Nv
bnRleHQ7CisgICAgSFRNTE1lZGlhRWxlbWVudCogbV9vd25lcjsKKworICAgIFZlY3RvcjxSZWZQ
dHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOworICAgIFRpbWVyPFRyYWNrTGlzdEJhc2U+IG1f
cGVuZGluZ0V2ZW50VGltZXI7CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERh
dGE7CisKKyAgICBpbnQgbV9kaXNwYXRjaGluZ0V2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAxYmYwNjE4NDE3Yzg3NjQzNzZkNDA4MjEz
NDg1ZWUzYjVjMTQ5ZjY0Li5mZmM1MzQ4NTM0ZDMyY2Y3OTNkMDFlMzY0ZTEyMjkxOWVmZDM3NjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0xMTAyLDcgKzExMDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjphZGRUZXh0VHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0cmFjaykKICAgICBpZiAoIW1fbWVk
aWFQbGF5ZXJDbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbWVkaWFQbGF5ZXJDbGll
bnQtPm1lZGlhUGxheWVyRGlkQWRkVHJhY2sodHJhY2spOworICAgIG1fbWVkaWFQbGF5ZXJDbGll
bnQtPm1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllcjo6cmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4g
dHJhY2spCkBAIC0xMTEwLDcgKzExMTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpyZW1vdmVUZXh0
VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0cmFjaykKICAgICBpZiAo
IW1fbWVkaWFQbGF5ZXJDbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbWVkaWFQbGF5
ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3ZlVHJhY2sodHJhY2spOworICAgIG1fbWVkaWFQ
bGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKIH0KIAog
Ym9vbCBNZWRpYVBsYXllcjo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRl
eCBlMTdhZDZjOTAwODNlZTRiZDc2MjU5M2RhM2Q4MWY0NTUxNmFhZmM5Li5hODExMTE4ODVjYjJl
NDg0YmNhMzJjODA5MDg2OTg5MDUwYjA0MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTIxOCw4ICsyMTgsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJj
ZUxvYWRlcigpIHsgcmV0dXJuIDA7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVU
cmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4
dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hhbmdlZChjb25zdCBJbnRS
ZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dFRyYWNrUmVwcmVzZW50YXRpb24o
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197896</attachid>
            <date>2013-04-12 15:42:48 -0700</date>
            <delta_ts>2013-04-13 08:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130412164226.patch</filename>
            <type>text/plain</type>
            <size>112380</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRlODhlYjA0NGI1ZDBk
OWQyZDdkM2EyODI1MWFkYjdiYzg4YjkxZS4uMTRlNjYwNTQyNDI5YzNiMTAyMGM3MmJjZDk0NjMy
Yzc1MjI4Y2U3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc5IEBACiAyMDEzLTA0LTEyICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KIAorICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNr
TGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2
ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFu
ZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRk
ZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBT
YW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0
VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5k
IHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFj
a3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdl
KTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFj
a3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDog
QWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFk
ZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRl
eHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBi
YXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1v
dmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRk
VGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBs
YXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQs
IGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCisyMDEzLTA0LTEyICBCcmVuZGFu
IExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKwogICAgICAgICBSZWZhY3RvciBUZXh0VHJh
Y2sgYW5kIFRleHRUcmFja0xpc3QgdG8gbWFrZSBpdCBlYXNpZXIgdG8gYWRkIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDMzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGNhYjI0MDM2N2VjMmI2MzYxYjQx
MWM0YmNjYzFjYWE0MmY5MzUzY2IuLmYzMDgzNGM5ZmQ0NTM2YmZiNzQ4YWE2YTEzMDA2NjE3YjAz
NTk1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNjg1LDE0ICsyNjg1LDIwIEBAIGVuZGlm
ICgpCiAKIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9J
RExfRklMRVMKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAorICAgICAgICBodG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5p
ZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCiAgICAgICAgIGh0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCisgICAgICAgIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5pZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwK
ICAgICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgaHRtbC90
cmFjay9BdWRpb1RyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNw
cAogICAgICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKICAgICAgICAgaHRtbC90
cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwCkBAIC0yNzA2LDYgKzI3MTIsOCBAQCBpZiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAgICAg
ICBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKKyAgICAg
ICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmNwcAogCiAgICAgICAgIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA2YjdjZDA3ZWM3YjQ1Mzk0NTFlMDVjN2Y1
NTc4ZWY5NDhlMjRhOWQ3Li40YTRiYWRhMGMzYjU3YjE3OGI1MDI0ZTMwZDQxZTE2OWJjOWViNzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC00NzIsMTIgKzQ3MiwxNiBAQAogI2lu
Y2x1ZGUgIkpTVGV4dEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRNZXRyaWNzLmNwcCIKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmNwcCIKKyNpbmNs
dWRlICJKU0F1ZGlvVHJhY2tMaXN0LmNwcCIKICNpbmNsdWRlICJKU0hUTUxUcmFja0VsZW1lbnQu
Y3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1
ZS5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCIKICNpbmNsdWRlICJKU1Rl
eHRUcmFja0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudC5jcHAiCisjaW5jbHVkZSAi
SlNWaWRlb1RyYWNrLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0LmNwcCIKICNlbmRp
ZgogI2luY2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCiAjaW5jbHVkZSAiSlNUb3VjaC5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwZDdhNjVkMjdlOTNiNjhkNzAwYmU4YmU2
OTMwYzE5MjI2NmJkMTQ4Li4xMGRlZDYyOGJlZjY3MGZiYmRhOThiYjczZmM5NjQwMDIwY2I4Nzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQzMSwxMSArNDMxLDE1IEBAIEJJ
TkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1l
bnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorICAg
ICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwg
XAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJChXZWJD
b3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svVmlkZW9UcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggZGJlY2E0NzFhN2M2MWM3NmNmNDIw
MTUxMDg2ODU4NWY5NzcyNzI0Zi4uNzkwOWUxYWU1MWUzYTVjYmMxNDY5Y2Y1NzE0YTViZjU0NTE5
YjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNjUyLDExICs2NTIsMTUgQEAg
ZW5hYmxlPyhHQU1FUEFEKSB7CiAKIGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgSURMX0JJTkRJ
TkdTICs9IFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKyAgICAkJFBX
RC9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAog
ICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQkUFdEL2h0
bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVHJhY2tF
dmVudC5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAgICQk
UFdEL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCiB9CiAKIGVuYWJsZT8oTUVESUFfU09V
UkNFKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1ZTA3NzNhMWVkNTRhNDA3
Zjc5ZjJiNTNiNjU1MWMyY2QyMmU0OTA1Li41YzA4MTRkNTc3MDRhZjlhZjcyYjlkNTI2ZDFiOGMx
OWYxYzI5Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE1ODYsMTEgKzE1
ODYsMTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxTaGFk
b3dFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwK
KwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUp
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0Lmlk
bCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNv
cmUpL2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9W
aWRlb1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmlk
bCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAJJChX
ZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAJJChXZWJDb3Jl
KS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXApAQCAtMjMyMCw2ICsyMzI0LDkg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0
dHJDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVy
U291cmNlTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9Db250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xp
c3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRl
ck5vZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0
b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3Rv
bS5jcHAgXApAQCAtMjQ3NCw2ICsyNDgxLDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgXApAQCAt
Mzc2Nyw2ICszNzc3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg1LDYgKzM3OTksMTIgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVs
ZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwK
QEAgLTU0OTUsNiArNTUxNSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6ZUxvZ2dpbmcuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dyYXBoaWNzQ29udGV4dDNETkVPTi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvTkVPTkhl
bHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0
ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3NSw2ICs1Nzk2LDcgQEAgd2ViY29yZV9wbGF0Zm9y
bV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDBhNTNjOThkMzE2NGZjZDdjNzkyNzdh
YjI5YmY2ZjM1ZTJkMmI2NTIuLjg1NThmNDIzZTBlMzIxY2E4YWU0YjM4Yzc2MjUzZGU0MTg2ZWFm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2Niw5ICszOTY2LDEzIEBAIGVuYWJsZT8oSkFWQVNDUklQ
VF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgSEVBREVSUyArPSBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJh
Y2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIFwK
ICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50LmggXAorICAgICAgICBodG1sL3RyYWNrL0F1
ZGlvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggXAogICAgICAgICBodG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmggXAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5oIFwKQEAg
LTM5NzksMjAgKzM5ODMsMzAgQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBodG1s
L3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmggXAog
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBcCisgICAgICAgIGh0bWwvdHJhY2sv
VmlkZW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKICAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2Vi
VlRUVG9rZW4uaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmggXAogICAg
ICAgICBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJh
Y2tQcml2YXRlLmggXAogCiAgICAgU09VUkNFUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9t
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
TGlzdEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20u
Y3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAog
ICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9B
dWRpb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIFwK
ICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKICAgICAgICAgaHRtbC90
cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFj
ay5jcHAgXApAQCAtNDAwMyw2ICs0MDE3LDggQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewogICAg
ICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNr
RXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisgICAg
ICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgXAog
ICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L1dlYlZUVFRva2VuaXplci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IDc5YzllMTAyNTkzZmQw
YzAwNDllNzcyYzIxZmVjMzM5NmM0NWNiZjMuLmE4ZjJmODE2MWM1NDNjZDhhZmY0ZjhkZWVmYmZk
ZGZkOGY4NWYwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTIxOCwxMSArMjE4LDE1IEBAIGVuZGlm
ICgpCiAKIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKyAgICAg
ICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0
b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0
Q3VzdG9tLmNwcAogICAgICkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZTBjZDA5YjFmYjQwOTEwZTIyZWQ0OWQ0MWY5YmVl
MTIzZjRhODhmZS4uOGExZTBkZTJlOTkxZWFlOTYzMWJmNGFhZDA4Zjk2YTQwZjI3NmU3YiAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5OTAy
LDYgKzI5OTAyLDEwIEBACiAJCQkJTmFtZT0iZ3JhcGhpY3MiCiAJCQkJPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQXVkaW9UcmFja1ByaXZhdGUu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXEJpdG1hcEltYWdlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
QEAgLTMwMzc4LDYgKzMwMzgyLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xWaWRlb1RyYWNrUHJpdmF0
ZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcV2luZFJ1bGUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAg
LTY1NzQ2LDYgKzY1NzU0LDIyIEBACiAJCQkJTmFtZT0idHJhY2siCiAJCQkJPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1RyYWNrLmNwcCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJh
Y2tcQXVkaW9UcmFjay5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1RyYWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1
ZGlvVHJhY2tMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEluYmFuZFRleHRUcmFjay5jcHAiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CkBAIC02NTgyNiw2ICs2NTg1MCwyMiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgog
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xWaWRlb1RyYWNrLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcdHJhY2tcVmlkZW9UcmFjay5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xWaWRlb1RyYWNrTGlzdC5jcHAiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XHRyYWNrXFZpZGVvVHJhY2tMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFdlYlZUVEVsZW1lbnQuY3BwIgogCQkJ
CQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGZjMTc1Mjk1ODIyOGZiMDZiOGUyZWE4MDYyN2UxNWM0ODIz
NGE1ZDMuLjQ0YzBhYzJkNWFhZjcxNDUyNmQxN2FmMmZlY2M0NmMxZGY3ZGI4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUx
MTMsNiArNTExMywxNiBAQAogCQlCQ0ZGNjQ5MjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRjY0
OTAwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThEOTggLyog
VHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBCRjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi87
IH07CiAJCUJFODhFMEMyMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBDMDE3MTVDRTI2
MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oICovOyB9OworCQlCRTg4RTBEODE3MTVEMkEyMDA2
NThEOTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCRTg4RTBDQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAg
Ki87IH07CisJCUJFODhFMEQ5MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBDRDE3MTVEMkEy
MDA2NThEOTggLyogQXVkaW9UcmFjay5oICovOyB9OworCQlCRTg4RTBEQjE3MTVEMkEyMDA2NThE
OTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkU4OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0
LmNwcCAqLzsgfTsKKwkJQkU4OEUwREMxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBE
MDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJQkU4OEUwREUx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVv
VHJhY2suY3BwICovOyB9OworCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUw
RDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCAqLzsgfTsKKwkJQkU4OEUwRTExNzE1
RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJ
CUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRTkxNzE1REQwOTAw
QzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi87IH07CisJCUJFRjI5RUVDMTcxNUREMDkw
MEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRUExNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJh
Y2tQcml2YXRlLmggKi87IH07CiAJCUMwNDZFMUFDMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6
ZWRTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMwNDZFMUFCMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCAqLzsg
fTsKIAkJQzBDMDU0Q0IxMTE4QzhFNDAwQ0UyNjM2IC8qIENvZGVHZW5lcmF0b3IucG0gaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNTBBMzAwRkUx
MDBGNjFBQjggLyogQ29kZUdlbmVyYXRvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJh
dGUtYmluZGluZ3MucGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODQyLDkg
KzExODUyLDIzIEBACiAJCUJFODU2MDUxMDcwMUY5MTEwMDIzOTc2OSAvKiBXZWJDb3JlVmlldy5t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBX
ZWJDb3JlVmlldy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJQkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5
OCAvKiBUcmFja0xpc3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRy
YWNrTGlzdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0MxNzE1
RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkU4OEUwQ0UxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEF1ZGlvVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCRTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja0xpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFj
a0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDExNzE1RDJBMjAw
NjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRp
b1RyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQyMTcx
NUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZpZGVvVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJFODhFMEQ0MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBWaWRlb1RyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJh
Y2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ3MTcxNUQyQTIw
MDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlk
ZW9UcmFja0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTkxRkM4QjA2
MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJFOTFGQzhDMDYxMzM2NjYwMDVF
Mzc5MCAvKiBQb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTk4M0Q5NTA1MkEyRTBBMDA4OTJE
ODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJQkVGMjlF
RTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJFRjI5RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcg
LyogTG9jYWxpemVkU3RyaW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMb2NhbGl6ZWRTdHJpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzBERkM4NkYwREI2ODQxQTAwM0VBRTdDIC8qIEpTQ29uc29sZUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbnNvbGVDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJv
Y2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlw
dHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc2ODUs
NiArMTc3MDksMTggQEAKIAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCRTg4RTBDQzE3MTVE
MkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4OEUwQ0QxNzE1RDJBMjAw
NjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBDRTE3MTVEMkEyMDA2NThEOTgg
LyogQXVkaW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8qIEF1
ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFja0xpc3QuaCAqLywKKwkJCQlCRTg4RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9U
cmFja0xpc3QuaWRsICovLAorCQkJCUJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrLmNwcCAqLywKKwkJCQlCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5o
ICovLAorCQkJCUJFODhFMEQ0MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmlkbCAqLywK
KwkJCQlCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwICovLAor
CQkJCUJFODhFMEQ2MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oICovLAorCQkJ
CUJFODhFMEQ3MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5pZGwgKi8sCiAJCQkJ
QkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovLAogCQkJCUJF
ODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi8sCiAJCQkJMDc5NDE3
OEYxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi8sCkBAIC0xODM0Miw2
ICsxODM3OCw4IEBACiAJCQkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMg
Ki8sCiAJCQkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNw
cCAqLywKIAkJCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2Uu
aCAqLywKKwkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUu
aCAqLywKKwkJCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUu
aCAqLywKIAkJCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwICov
LAogCQkJCUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovLAogCQkJ
CUIyNzUzNTM4MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgKi8sCkBAIC0yNDA2Nyw2ICsy
NDEwNSwxMiBAQAogCQkJCUUxNTI1NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QjUzMzQ5MTcxN0RFRTMwMEYyMDVGOSAvKiBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMEQ5MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1Ry
YWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5
OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2
NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFRjI5RUVCMTcx
NUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI3MDE0LDYgKzI3MDU4LDEwIEBACiAJCQkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3
QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCUUxQjUzMzQ3MTcxN0QwQTEwMEYyMDVGOSAvKiBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2
MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBE
ODE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
RTg4RTBEQjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkU4OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KaW5kZXggZjMyMmQ2NGNjN2QxN2E3ZmI3NTQwM2VhYmQyMTliZmQzZWVk
OTE5Ny4uZWVlZWViYTEwYTMyZTY1YTI5OWMyY2MwY2M3ODJmNDA4Y2UzMTYzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC00MzMsMTgg
KzQzMywyNCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlmIEVOQUJMRV9W
SURFTwogd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1aWxkZGlyKS9E
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwKKwkkKHRvcF9i
dWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0
LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
SFRNTEF1ZGlvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0Lmgg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4
dFRyYWNrQ3VlLmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1aWxkZGlyKS9E
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwKKwkkKHRvcF9i
dWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suaCBc
CisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRl
b1RyYWNrTGlzdC5oCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJp
dmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suY3BwIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXApA
QCAtNDUzLDYgKzQ1OSw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmggXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2
YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaAog
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFj
a0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRkNWMxZTQyNzM5Y2U2N2Q1ZDUyN2QzMGEzMmQ5MTQwNTU5MzZh
MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
VHJhY2tDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNr
Q3VzdG9tLmgiCisKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFja093bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNB
dWRpb1RyYWNrID0ganNDYXN0PEpTQXVkaW9UcmFjayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7
CisgICAgQXVkaW9UcmFjayogYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihq
c0F1ZGlvVHJhY2stPmltcGwoKSk7XAorCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0
b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzQXVkaW9UcmFj
ay0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisK
K3ZvaWQgSlNBdWRpb1RyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8
SlNBdWRpb1RyYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1
ZGlvVHJhY2ssICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpz
QXVkaW9UcmFjaywgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3Rh
dGljX2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0N1c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4Y2RlM2IxNzIwZThkNmNjZmJkNjE1YzI1ZTNlM2M1
NTI0ZTNkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tDdXN0b20uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
SlNBdWRpb1RyYWNrQ3VzdG9tX2gKKyNkZWZpbmUgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCog
cm9vdChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1l
bnQncyByb290IGlmIGl0IGhhcyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIHJvb3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5v
IG1lZGlhIGVsZW1lbnQsIHJldHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7
Cit9CisKK30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2MTZiMGQ0
YjhhYTkyOTQyMmYwNWFkNzU0OTMyNDA5YWExNmFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrTGlz
dE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9U
cmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGhh
bmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0
ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkp
OworCisgICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdy
YXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25z
aWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKGF1ZGlvVHJh
Y2tMaXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1
c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghYXVkaW9UcmFj
a0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFja0xpc3QtPmhhc0N1c3Rv
bVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVh
Y2hhYmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVy
KCkpKTsKK30KKwordm9pZCBKU0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrTGlzdCoganNB
dWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBD
T01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1
ZGlvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrTGlzdCwgdmlzaXRv
cik7CisKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxB
dWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICBhdWRpb1Ry
YWNrTGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMmJhMTBmNTU2ZThiNDgwMmU4YmE5NjZmZDFk
M2NlMTI0MzEyNDA1Ni4uNTFhZGYzNWUzNDlmODRlZGE2ZjAzYTdhNDkzOWVjM2VkYzQ0ZWQ0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmNwcCIKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0F0dHJDdXN0b20uY3Bw
IgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0N1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNBdWRpb1Ry
YWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNCbG9iQ3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NGb250RmFjZVJ1bGVD
dXN0b20uY3BwIgpAQCAtMTQ3LDYgKzE0OSw4IEBACiAjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RyZWVX
YWxrZXJDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3RvbS5jcHAiCisjaW5j
bHVkZSAiSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NL
ZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNDQwNjlkNTRmOTU0YTViMzAxMGE0NTViOTY2YmUwZjNlYzlhZGEzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNw
cApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3RvbS5oIgorCisj
aW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU1ZpZGVvVHJhY2tPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9UcmFjayA9IGpz
Q2FzdDxKU1ZpZGVvVHJhY2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJh
Y2sqIHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1RyYWNrLT5p
bXBsKCkpOworCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywg
aXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzVmlkZW9UcmFjay0+aGFzQ3VzdG9tUHJv
cGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5j
b250YWluc09wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNWaWRlb1Ry
YWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNWaWRlb1RyYWNrKiBqc1ZpZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2ssICZzX2lu
Zm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAg
QVNTRVJUKGpzVmlkZW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFjaywgdmlz
aXRvcik7CisKKyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9U
cmFjayo+KGpzVmlkZW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cm9vdCh2aWRlb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0
b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNlMzc1ZTU2N2U2YmEzOGEzZmQ2ZDJjOTk1YWYwYzFjZGY2YWIzZGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0
b20uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNWaWRlb1RyYWNrQ3Vz
dG9tX2gKKyNkZWZpbmUgSlNWaWRlb1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVD
dXN0b20uaCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCogcm9vdChWaWRlb1RyYWNr
KiB0cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0
IGhhcyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IHJvb3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQs
IHJldHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisKK30KKworI2Vu
ZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJkOTY3MTBkNjA5MzEwYzc4NzJhN2Rm
NDNiNmNkYjQzMzViMWQ1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5j
bHVkZSAiSlNWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrTGlzdE93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlk
ZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0Nl
bGwoKSk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8
VmlkZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworCisgICAgLy8gSWYg
dGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgcmVhY2hh
YmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2lu
ZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKHZpZGVvVHJhY2tMaXN0LT5pc0Zpcmlu
Z0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgdGhl
IGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVz
LCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghdmlkZW9UcmFja0xpc3QtPmhhc0V2ZW50
TGlzdGVuZXJzKCkgJiYgIWpzVmlkZW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBt
ZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0b3IuY29u
dGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsKK30KKwordm9p
ZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1RyYWNrTGlzdCA9
IGpzQ2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhqc1ZpZGVvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChT
dHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJhY2tMaXN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrTGlzdCwgdmlzaXRvcik7CisKKyAgICBWaWRl
b1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrTGlzdCo+
KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJv
b3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICB2aWRlb1RyYWNrTGlzdC0+dmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA4Mjc3N2E4NmVlZmRmYmViZTY4
OWM5YjkyMzM2ODgyOTU4MzkxYzNlLi5lYTA3OTliYjVkMGQ3MzRjMDFmNDY4YTYzZTFkNWIyMjA1
Y2ZiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNDEsNiArNDEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXVkaW9Db250ZXh0OworICAgIGNsYXNzIEF1
ZGlvVHJhY2tMaXN0OwogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQ7CiAgICAgY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBAIC02Nyw2ICs2
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTb3VyY2VCdWZmZXJMaXN0Owog
ICAgIGNsYXNzIFRleHRUcmFjazsKICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7CisgICAgY2xhc3Mg
VmlkZW9UcmFja0xpc3Q7CiAgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdlYktpdE5h
bWVkRmxvdzsKICAgICBjbGFzcyBXb3JrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgppbmRleCA0NzZkMWI1M2YxNDViYjI3MzQ5ODk5M2YzOWYxZDFjYmFhNjIzNTgz
Li44ZWE1YjdiMDNhYmFjYTAyZjI1ZjQ4YTJlZDU1OTkyNjNlYTQ3MGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEsNiArMSw3IEBACiBuYW1lc3BhY2U9
IkV2ZW50VGFyZ2V0IgogCiBBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCitBdWRp
b1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogQmF0dGVyeU1hbmFnZXIgY29uZGl0
aW9uYWw9QkFUVEVSWV9TVEFUVVMKIERlZGljYXRlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9
V09SS0VSUwogRE9NQXBwbGljYXRpb25DYWNoZQpAQCAtMzcsNiArMzgsNyBAQCBTVkdFbGVtZW50
SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCiBUZXh0VHJhY2sgY29uZGl0aW9uYWw9VklERU9fVFJB
Q0sKIFRleHRUcmFja0N1ZSBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNrTGlzdCBj
b25kaXRpb25hbD1WSURFT19UUkFDSworVmlkZW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9f
VFJBQ0sKIFdlYktpdE5hbWVkRmxvdwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdFQl9TT0NLRVRT
CiBXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggMWRkMzAxYzU4MWE2NzUzMjZkZjZlODI5MWUzZmYyNWMwOTVjNjll
OC4uMDQ1YmRjZDU4YWE4NjAyZTllNzhkYjI2MzBmMjNmNWRiOThjYmFkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05OCw2ICs5OCw4IEBACiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgor
I2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5oIgogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJh
bmRUZXh0VHJhY2suaCIKQEAgLTEwNSw2ICsxMDcsOCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAi
VGV4dFRyYWNrTGlzdC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAi
VmlkZW9UcmFja1ByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAg
LTI5Niw3ICszMDAsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICwgbV9wcm9jZXNz
aW5nUHJlZmVyZW5jZUNoYW5nZShmYWxzZSkKICAgICAsIG1fbGFzdFRleHRUcmFja1VwZGF0ZVRp
bWUoLTEpCiAgICAgLCBtX2NhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZlcmVuY2Vz
OjpBdXRvbWF0aWMpCisgICAgLCBtX2F1ZGlvVHJhY2tzKDApCiAgICAgLCBtX3RleHRUcmFja3Mo
MCkKKyAgICAsIG1fdmlkZW9UcmFja3MoMCkKICAgICAsIG1faWdub3JlVHJhY2tEaXNwbGF5VXBk
YXRlKDApCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMzMwLDEyICszMzYsMjIg
QEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGRvY3VtZW50KCkt
PnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAgIGlmIChtX2F1ZGlv
VHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXVkaW9UcmFja3MtPmxlbmd0aCgpOyArK2kpCisg
ICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOworICAgIH0K
ICAgICBpZiAobV90ZXh0VHJhY2tzKQogICAgICAgICBtX3RleHRUcmFja3MtPmNsZWFyT3duZXIo
KTsKICAgICBpZiAobV90ZXh0VHJhY2tzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBtX3RleHRUcmFj
a3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CiAgICAgfQorICAgIGlmIChtX3ZpZGVvVHJhY2tz
KSB7CisgICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAg
ICAgICBtX3ZpZGVvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOworICAgIH0KICNlbmRp
ZgogCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQpAQCAtMTM0OSw2ICsxMzY1LDExIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNr
KiB0cmFjaykKICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja0Vu
YWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFu
Z2UgdGhlIG1lZGlhIGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsK
ICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7
CkBAIC0xMzg4LDYgKzE0MDksMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tN
b2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1
ZXMoY3VycmVudFRpbWUoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFj
a1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikKK3sKKyAgICAvLyBXZSB3aWxsIHdhbnQgdG8g
Y2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlzdAorfQorCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayogdHJhY2sp
CiB7CiAgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQo
KSAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpICYmIHRy
YWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKQpAQCAtMjc5Miw2ICsy
ODE4LDE2IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9hZGVkKCkgY29uc3QK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gcHJw
VHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QXVkaW9UcmFjaz4g
dHJhY2sgPSBBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spOworCisgICAgYWRkQXVk
aW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCkBAIC0yODI3LDYgKzI4NjMsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXYKICAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIH0KIAordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJh
Y2spOworCisgICAgYWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3Qg
aXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEF1ZGlvVHJhY2sgd2l0aCB0aGUgQXVkaW9U
cmFja1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNr
LgorICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sq
PihwcnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsK
KworICAgIHJlbW92ZUF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjg0NCw2ICsyOTA3LDIzIEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQCiAgICAgcmVtb3ZlVGV4dFRyYWNrKHRleHRUcmFjay5n
ZXQoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVW
aWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIFZp
ZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgorICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICgh
dHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZVZpZGVvVHJhY2sodHJhY2suZ2V0
KCkpOworfQorCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRU
cmFjaz4gcGxhdGZvcm1UcmFjaykKIHsKQEAgLTI5MjAsNiArMzAwMCwxMSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKQogI2VuZGlmCiB9CiAKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKK3sK
KyAgICBhdWRpb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOworfQorCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIHRleHRUcmFja3Mo
KS0+YXBwZW5kKHRyYWNrKTsKQEAgLTI5MjcsNiArMzAxMiwxNiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRy
YWNrc0NoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNr
KFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIHZpZGVvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNr
KiB0cmFjaykKK3sKKyAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUodHJhY2spOworfQorCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewog
ICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwpAQCAtMjkzOCwxOCArMzAz
MywzMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sq
IHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAg
IG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmIChtX2F1ZGlvVHJhY2tzKQorICAgICAgICB3aGlsZSAodW5z
aWduZWQgbGVuZ3RoID0gbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZW1v
dmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3MtPml0ZW0obGVuZ3RoIC0gMSkpOwogCi0gICAgVHJh
Y2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7Ci0gICAgZm9yIChpbnQgaSA9IG1fdGV4
dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBUZXh0VHJhY2sq
IHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOworICAgIGlmIChtX3RleHRUcmFja3MpIHsK
KyAgICAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CisgICAgICAgIGZv
ciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAg
ICAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CiAKLSAg
ICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKLSAgICAg
ICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgICAgICBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICAgICAgICAgIHJlbW92ZVRl
eHRUcmFjayh0cmFjayk7CisgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAobV92aWRlb1RyYWNr
cykKKyAgICAgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fdmlkZW9UcmFja3MtPmxlbmd0
aCgpKQorICAgICAgICAgICAgcmVtb3ZlVmlkZW9UcmFjayhtX3ZpZGVvVHJhY2tzLT5pdGVtKGxl
bmd0aCAtIDEpKTsKIH0KIAogUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6
OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk4OSw2ICszMDk2
LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxl
YXNlKCk7CiB9CiAKK0F1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
cygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9hdWRpb1RyYWNrcykK
KyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgcmV0dXJuIG1f
YXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKIFRleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja3MoKSAKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0zMDAwLDYgKzMxMTgsMTcgQEAgVGV4dFRyYWNrTGlz
dCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpCiAgICAgcmV0dXJuIG1fdGV4dFRyYWNr
cy5nZXQoKTsKIH0KIAorVmlkZW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJh
Y2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tz
KQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4g
bV92aWRlb1RyYWNrcy5nZXQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRU
ZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogICAgIEFTU0VSVCh0
cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKQEAgLTQ5MTcsNyArNTA0Niw5IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgaW5mby5hZGRNZW1iZXIobV9tZWRpYVNvdXJj
ZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAg
aW5mby5hZGRNZW1iZXIobV9hdWRpb1RyYWNrcywgImF1ZGlvVHJhY2tzIik7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV90ZXh0VHJhY2tzLCAidGV4dFRyYWNrcyIpOworICAgIGluZm8uYWRkTWVtYmVy
KG1fdmlkZW9UcmFja3MsICJ2aWRlb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdGV4
dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLCAidGV4dFRyYWNrc1doZW5SZXNvdXJj
ZVNlbGVjdGlvbkJlZ2FuIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdWVUcmVlLCAiY3VlVHJl
ZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VycmVudGx5QWN0aXZlQ3VlcywgImN1cnJlbnRs
eUFjdGl2ZUN1ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
ZDA4NWU5ZGZiODg2MDQwN2VhZDkxOTFlYzI3Y2FiNGQ5MmI5NzY2My4uZmEyZjlmOGZiZTgwZTBi
MGQ5NzdkNTc2MjdjZmM1Y2JhYjA0ZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTM5LDEwICszOSwxMiBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIKICNpbmNsdWRlICJUZXh0
VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNr
LmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsOCArNzIsMTIgQEAgY2xh
c3MgTWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBB
dWRpb1RyYWNrTGlzdDsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIFRleHRUcmFja0xpc3Q7CitjbGFzcyBWaWRlb1RyYWNrTGlz
dDsKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxk
b3VibGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2
YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CkBAIC04NCw3ICs5MCw5IEBAIHR5cGVk
ZWYgVmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0OwogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBN
ZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGll
bnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2YXRlIFZpZGVvVHJh
Y2tDbGllbnQKICNlbmRpZgogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAg
LCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CkBAIC0yMjYsMTEgKzIzNCwxOCBA
QCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBT
dHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBhZGRUZXh0VHJhY2soa2luZCwgbGFiZWwsIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogICAg
IFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVtcHR5U3RyaW5n
KCksIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJh
Y2tzKCk7CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrcygpOworICAgIFZpZGVvVHJhY2tM
aXN0KiB2aWRlb1RyYWNrcygpOworCiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKKyAgICB2b2lkIGFkZEF1
ZGlvVHJhY2soQXVkaW9UcmFjayopOwogICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRleHRUcmFjayop
OworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CisgICAgdm9pZCByZW1vdmVB
dWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKICAgICB2b2lkIHJlbW92ZVRleHRUcmFjayhUZXh0VHJh
Y2sqKTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayopOwogICAgIHZvaWQg
cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25UcmFja3NDaGFu
Z2VkKCk7CiAgICAgdm9pZCBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpOwpA
QCAtMjM4LDggKzI1MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFRleHRU
cmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVRleHRU
cmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJE
aWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92
ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogCiAj
aWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vs
ZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4pIE9WRVJSSURFOwpA
QCAtMjc1LDYgKzI5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja0Rp
c3BsYXkoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKIAorICAgIC8vIEF1
ZGlvVHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2Vk
KEF1ZGlvVHJhY2sqKTsKKwogICAgIC8vIFRleHRUcmFja0NsaWVudAogICAgIHZpcnR1YWwgdm9p
ZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKICAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKik7CkBAIC0yODQsNiArMzA2LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3Zl
Q3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKKyAgICAvLyBWaWRl
b1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQo
VmlkZW9UcmFjayopOworCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9u
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiopOwogI2VuZGlmCkBAIC02OTksNyArNzI0LDkgQEAgcHJpdmF0ZToKIAog
ICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBtX2NhcHRpb25E
aXNwbGF5TW9kZTsKIAorICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRpb1RyYWNrczsK
ICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOworICAgIFJlZlB0cjxWaWRl
b1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4g
PiBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbjsKIAogICAgIEN1ZUludGVy
dmFsVHJlZSBtX2N1ZVRyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bAppbmRleCBjZWQ0MTc0NTlkYWJhMTM1ZWQwMDVlZjY1NDg2ZDI1YWY2ZTFjY2Q1Li4wNWJjMmRk
OGM0ZmI4ODRlN2JlYmQ2N2IwYzcyM2U5ZTVkNTE4YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTExNiw3ICsxMTYsOSBAQCB2b2lkIHdlYmtpdENhbmNl
bEtleVJlcXVlc3QoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9
TnVsbFN0cgogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9f
VFJBQ0sKIFRleHRUcmFjayBhZGRUZXh0VHJhY2soaW4gRE9NU3RyaW5nIGtpbmQsIGluIFtPcHRp
b25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYW5ndWFnZSkK
ICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CityZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9UcmFj
a0xpc3QgYXVkaW9UcmFja3M7CiByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrTGlzdCB0ZXh0
VHJhY2tzOworcmVhZG9ubHkgYXR0cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVvVHJhY2tzOwog
I2VuZGlmCiAKIFtSZWZsZWN0LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG1lZGlhR3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YmQ1NDNhMWY3MGI5NTQ3OGNiZjIxOTU1MTIzMjEwZmIwZDM3NDZkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNw
cApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAx
MyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKworI2luY2x1
ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRy
YWNrQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
QXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFsdGVybmF0aXZl
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmRlc2NyaXB0aW9uS2V5d29y
ZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlc2Ny
aXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHJldHVybiBkZXNjcmlwdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBB
dWRpb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBB
dWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1haW5EZXNjOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0aW9uLCAoInRy
YW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJl
dHVybiB0cmFuc2xhdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpj
b21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVudGFyeTsKK30KKworQXVkaW9UcmFj
azo6QXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OkF1
ZGlvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwgdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgp
KQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkpCisgICAgLCBtX2VuYWJsZWQodHJhY2tQ
cml2YXRlLT5lbmFibGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3ByaXZh
dGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworCisg
ICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZh
dGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZl
S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6
RGVzY3JpcHRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3
b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWlu
OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluRGVzYzoKKyAgICAgICAgc2V0
S2luZChBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OlRyYW5zbGF0aW9uOgorICAgICAgICBzZXRLaW5kKEF1
ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2luZChBdWRpb1Ry
YWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmluZygpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQXVkaW9UcmFjazo6fkF1ZGlvVHJhY2soKQor
eworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KDApOworfQorCitib29sIEF1ZGlvVHJhY2s6Omlz
VmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKHZh
bHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAodmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xhdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEF1ZGlvVHJhY2s6OnNldEVu
YWJsZWQoY29uc3QgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCh0
aGlzKTsKK30KKworc2l6ZV90IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgoKQoreworICAg
IEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvVHJhY2tJbmRl
eCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTM3NTc0NTFhZGIyZTNmYmI5NWM5
MjI3ODkzMDQwMzgzYzAzNDNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19oCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5h
YmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBw
dWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFjayhjbGllbnQsIHRy
YWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAgICBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBt
YWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2xh
dGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5
S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtl
eXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVkKGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkg
T1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5k
ZXgoKTsKKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCosIFBh
c3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisKKyAg
ICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBBdWRpb1RyYWNr
Q2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2
YXRlOworfTsKKworaW5saW5lIEF1ZGlvVHJhY2sqIHRvQXVkaW9UcmFjayhUcmFja0Jhc2UqIHRy
YWNrKQoreworICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFzZTo6QXVkaW9UcmFj
ayk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPih0cmFjayk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYjYzYzg1ZGQ5ODE4NGU2NjVmMWRi
NjQyNzFjYTQ0YmRlNmUzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAg
ICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAg
ICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBBdWRpb1RyYWNrIHsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcga2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBlbmFibGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzNTViNzNmZmRiNGQ3ODI2YWNlZTZmZmU5YjI3MmNm
NTdhNWYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVk
aW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitBdWRpb1RyYWNrTGlzdDo6
QXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQorewor
fQorCitBdWRpb1RyYWNrTGlzdDo6fkF1ZGlvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBBdWRp
b1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJhY2spCit7Cisg
ICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQg
dHJhY2tzIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNr
LT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0
cmFjayk7CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVk
aWFFbGVtZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25l
cigpKTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQor
CitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QK
K3sKKyAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAgICAgIHJldHVy
biB0b0F1ZGlvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKworICAgIHJldHVy
biAwOworfQorCitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6Z2V0VHJhY2tCeUlkKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBBdWRpb1RyYWNrKiB0cmFjayA9
IHRvQXVkaW9UcmFjayhtX2luYmFuZFRyYWNrc1tpXS5nZXQoKSk7CisgICAgICAgIGlmICh0cmFj
ay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB0cmFjazsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFja0xpc3Q6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQXVk
aW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNDRiOGJhM2QwMGQ3ZGU0ZWQwYmJkNTNhZjE1OTdh
NDY3NGIyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEF1ZGlvVHJhY2tMaXN0X2gKKyNkZWZpbmUgQXVkaW9UcmFja0xpc3RfaAorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0IDog
cHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1
ZGlvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEF1ZGlvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5BdWRpb1RyYWNr
TGlzdCgpOworCisgICAgQXVkaW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OworCisgICAgQXVkaW9UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPik7CisKKyAgICAvLyBFdmVu
dFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja0xpc3QoSFRNTE1lZGlh
RWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMxY2UwOGMyNGM5NDA0MTk0MGQ2Mzc4OGIz
MGI0ZTk0NmM2NWVjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAg
IENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgRXZlbnRU
YXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJs
ZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRpb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsK
KworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25y
ZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1
cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1
cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJh
aXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5oCmluZGV4IDVkZDNiZWY4NDY2OTNiNWQ5ODdmZGZmZjY2YmQ4MDExNTgzNmI0
YzEuLmJmM2ExODhjNzk5YTU1ODY5ODY0ZTc5ZWU1NWY2NWVhMWVkZGM2MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURFOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrTGlzdChIVE1M
TWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM0YTVkOWQxODU4YmVkYWFjOWY0
ZWQ0NDFjNjJkMTIxMjhkMzZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJW
aWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNl
LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZl
LCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjpjYXB0aW9uc0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNpZ24sICgic2lnbiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc2lnbjsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoInN1YnRp
dGxlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
c3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRh
cnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitWaWRlb1RyYWNrOjpWaWRl
b1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6VmlkZW9UcmFj
aywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAg
LCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fc2VsZWN0ZWQodHJhY2tQcml2YXRl
LT5zZWxlY3RlZCgpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9wcml2YXRlKHRy
YWNrUHJpdmF0ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKKworICAgIHN3
aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpB
bHRlcm5hdGl2ZToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdv
cmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRp
b25zOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoKKyAgICAgICAg
c2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNr
OjpzaWduS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJp
dmF0ZTo6U3VidGl0bGVzOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNv
bW1lbnRhcnk6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU6Cisg
ICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK1ZpZGVvVHJhY2s6On5WaWRlb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENs
aWVudCgwKTsKK30KKworYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdv
cmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNhcHRpb25zS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbktleXdv
cmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHNpZ25LZXl3b3Jk
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3
b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBjb21tZW50YXJ5
S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChjb25zdCBib29sIHNlbGVjdGVkKQorewor
ICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3NlbGVjdGVkID0gc2VsZWN0ZWQ7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRoaXMpOworfQorCitzaXplX3QgVmlkZW9U
cmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRiNjQ0ZDY2OTdjYzczNWY2N2QzOThmZDcwZGJmZWVmMjZiN2MxYTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApAQCAt
MCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tfaAor
I2RlZmluZSBWaWRlb1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1Ry
YWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xpZW50KCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayop
ID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMg
VmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8
VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7
IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRp
dmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2FwdGlvbnNLZXl3
b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaWduS2V5d29yZCgpOworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBl
bXB0eUF0b207IH0KKworICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOworCisgICAg
dmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAg
ICBWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQor
CisgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIFZpZGVv
VHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBy
aXZhdGVUcmFjayk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5kKGNv
bnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOworCisgICAgQXRvbWljU3RyaW5nIG1f
aWQ7CisgICAgYm9vbCBtX3NlbGVjdGVkOworICAgIFZpZGVvVHJhY2tDbGllbnQqIG1fY2xpZW50
OworCisgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9OworCitpbmxp
bmUgVmlkZW9UcmFjayogdG9WaWRlb1RyYWNrKFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgQVNT
RVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KHRyYWNrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjUyNmQzMzA3MTQ3ZjMxZGQyNGRhMmQ4NWRmYjIwODcyMGM3Mjcw
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFj
aGFibGUKK10gaW50ZXJmYWNlIFZpZGVvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFuIHNlbGVjdGVk
OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGMwN2M5NWM1NzgxNjZmNGViZTU2ZTdkY2ZmZTVlMDU5YjRlZTQ5NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3Bw
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitWaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3Qo
SFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQoreworfQorCitWaWRlb1RyYWNr
TGlzdDo6flZpZGVvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBWaWRlb1RyYWNrTGlzdDo6YXBw
ZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gcHJwVHJhY2spCit7CisgICAgUmVmUHRyPFZpZGVv
VHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQgdHJhY2tzIGluIHRoZSBt
ZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNrLT5pbmJhbmRUcmFja0lu
ZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CisKKyAgICBB
U1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0g
b3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsKKworICAgIHNj
aGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQorCitWaWRlb1RyYWNrKiBW
aWRlb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5k
ZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAgICAgIHJldHVybiB0b1ZpZGVvVHJhY2so
bV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKworICAgIHJldHVybiAwOworfQorCitWaWRl
b1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRlb1RyYWNrKG1faW5iYW5kVHJhY2tz
W2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQorICAgICAgICAgICAg
cmV0dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworbG9uZyBWaWRlb1RyYWNr
TGlzdDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0Cit7CisgICAgLy8gNC44LjEwLjEwLjEgQXVkaW9U
cmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IG9iamVjdHMKKyAgICAvLyBUaGUgVmlkZW9UcmFj
a0xpc3Quc2VsZWN0ZWRJbmRleCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGluZGV4IG9mIHRo
ZQorICAgIC8vIGN1cnJlbnRseSBzZWxlY3RlZCB0cmFjaywgaWYgYW55LiBJZiB0aGUgVmlkZW9U
cmFja0xpc3Qgb2JqZWN0IGRvZXMgbm90CisgICAgLy8gY3VycmVudGx5IHJlcHJlc2VudCBhbnkg
dHJhY2tzLCBvciBpZiBub25lIG9mIHRoZSB0cmFja3MgYXJlIHNlbGVjdGVkLAorICAgIC8vIGl0
IG11c3QgaW5zdGVhZCByZXR1cm4g4oiSMS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aCgpOyArK2kpIHsKKyAgICAgICAgVmlkZW9UcmFjayogdHJhY2sgPSB0b1ZpZGVvVHJhY2so
bV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAgICAgICBpZiAodHJhY2stPnNlbGVjdGVkKCkp
CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIC0xOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclZpZGVvVHJhY2tMaXN0OworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMTRmZmRjNGNlNmNmM2IzODU5ODg2OTlmY2Y3ZjExMGRiZDczNGQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWaWRlb1RyYWNrTGlzdF9o
CisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKwor
I2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1RyYWNrTGlzdCA6IHB1YmxpYyBUcmFja0xpc3RC
YXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrTGlzdD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrTGlzdChv
d25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VmlkZW9UcmFja0xpc3QoKTsKKworICAgIFZp
ZGVvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBs
b25nIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKworICAgIFZpZGVvVHJhY2sqIGl0ZW0odW5zaWdu
ZWQpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4pOworCisg
ICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFZpZGVvVHJhY2tMaXN0
KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQzNmFmNjIwYjg0NDU1
YWY3MzhkZWIxNDg0MDQxNjNmNGE1NTJiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0ZXIs
CisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0
b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgVmlkZW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4g
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVmlkZW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9N
U3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBE
T01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5l
ciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29s
ZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29s
ZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQp
CisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zODFmZWQzN2E0Yjk2NzFlMzFlMzgyNTM0YjA0MzkwOTQzYWE4YjAxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUu
aApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gK
KyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCgp
IHsgfQorfTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxB
dWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQ
cml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9UcmFj
a1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIEF1ZGlv
VHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAg
dmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJs
ZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwg
TWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAgdmlydHVhbCBL
aW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0
cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAg
IHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJv
dGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX2VuYWJsZWQoZmFs
c2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVu
dCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODdlOTQyNTQ0OWNjZDAwZmU4OGNlY2Q2N2Jm
OWVjNTc1NTQwODQ2My4uYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0NmI3ZDhjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cApAQCAtMTEwMyw2ICsxMTAzLDIyIEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXll
cjo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
dm9pZCBNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2
YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkQWRkQXVkaW9U
cmFjayh0cmFjayk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2soUGFz
c1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxh
eWVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5t
ZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2sodHJhY2spOworfQorCiB2b2lkIE1lZGlhUGxh
eWVyOjphZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0cmFj
aykKIHsKICAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCkBAIC0xMTE5LDYgKzExMzUsMjIg
QEAgdm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZT4gdHJhY2spCiAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5
ZXJEaWRSZW1vdmVUZXh0VHJhY2sodHJhY2spOwogfQogCit2b2lkIE1lZGlhUGxheWVyOjphZGRW
aWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrKQoreworICAgIGlm
ICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZWRpYVBs
YXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKHRyYWNrKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3ZlVmlk
ZW9UcmFjayh0cmFjayk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXI6OnJlcXVpcmVzVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnJlcXVpcmVz
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDU1YjllMmYyZjg3NDZkZDNmZDU3ZmViOWQyMThh
ZjFlMTViZTBjYzguLjFlZmQ3M2FmYTY0ZDU2YTA5NWRjNDkyZDkyZWZlNjk0ZGRiODQ2NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAt
MzIsMTEgKzMyLDEzIEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcm94eS5oIgogI2VuZGlmCiAK
KyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFj
a1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTIxOCw4ICsyMjAsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVm
UHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJl
bW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRS
ZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkJvdW5kc0NoYW5nZWQoY29uc3Qg
SW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSB7IH0KQEAgLTQ0OSw4ICs0NTUs
MTIgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWRlcigpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZvaWQgYWRkQXVkaW9UcmFj
ayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7CiAgICAgdm9pZCBhZGRUZXh0VHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CisgICAgdm9pZCBhZGRWaWRlb1Ry
YWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogICAgIHZvaWQgcmVtb3ZlVGV4
dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOworICAgIHZvaWQgcmVt
b3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPik7CiAKICAgICBib29s
IHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQwMmUzYmNjNDViM2JiYjEyODczCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFj
a1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tQ
cml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJh
Y2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0
ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZp
ZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQo
VmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQor
ICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsgbV9zZWxl
Y3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBDYXB0
aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAgdmly
dHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwg
QXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmly
dHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0K
KworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX3NlbGVj
dGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1ByaXZh
dGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zZWxlY3RlZDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197940</attachid>
            <date>2013-04-13 08:21:54 -0700</date>
            <delta_ts>2013-04-14 14:09:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130413092131.patch</filename>
            <type>text/plain</type>
            <size>112190</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIxNTEzYjc2Nzg4OTUw
NzMyZmY1ZmY4ZmY0YTMwNjdjZGM1OWU3Zi4uYTA4YzFlMTcxN2FlNDIzNGRmMWZjYjUzYTA1ZDE1
MjdjZGYwZTNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTEyICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNr
TGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2
ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFu
ZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRk
ZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBT
YW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0
VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5k
IHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFj
a3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdl
KTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFj
a3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDog
QWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFk
ZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRl
eHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBi
YXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1v
dmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRk
VGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBs
YXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQs
IGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0LTEzICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBi
dWlsZCBmaXggYWZ0ZXIgcjE0ODMwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2FiMjQwMzY3
ZWMyYjYzNjFiNDExYzRiY2NjMWNhYTQyZjkzNTNjYi4uZjMwODM0YzlmZDQ1MzZiZmI3NDhhYTZh
MTMwMDY2MTdiMDM1OTUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI2ODUsMTQgKzI2ODUs
MjAgQEAgZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisg
ICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKICAgICAg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAg
ICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmlkbAogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAg
ICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAogICAg
ICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAogICAgICAgICBodG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKQEAgLTI3MDYsNiArMjcxMiw4IEBAIGlmIChFTkFCTEVfVklERU9fVFJB
Q0spCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKICAgICAgICAgaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVy
LmNwcAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJh
Y2svVmlkZW9UcmFja0xpc3QuY3BwCiAKICAgICAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDZiN2NkMDdlYzdiNDUz
OTQ1MWUwNWM3ZjU1NzhlZjk0OGUyNGE5ZDcuLjRhNGJhZGEwYzNiNTdiMTc4YjUwMjRlMzBkNDFl
MTY5YmM5ZWI3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTQ3MiwxMiArNDcy
LDE2IEBACiAjaW5jbHVkZSAiSlNUZXh0RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTVGV4dE1ldHJp
Y3MuY3BwIgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2su
Y3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTSFRNTFRy
YWNrRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2luY2x1ZGUgIkpT
VGV4dFRyYWNrQ3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3QuY3BwIgogI2lu
Y2x1ZGUgIkpTVGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50LmNwcCIK
KyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3Qu
Y3BwIgogI2VuZGlmCiAjaW5jbHVkZSAiSlNUaW1lUmFuZ2VzLmNwcCIKICNpbmNsdWRlICJKU1Rv
dWNoLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBkN2E2NWQyN2U5M2I2
OGQ3MDBiZThiZTY5MzBjMTkyMjY2YmQxNDguLjEwZGVkNjI4YmVmNjcwZmJiZGE5OGJiNzNmYzk2
NDAwMjBjYjg3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDMxLDExICs0
MzEsMTUgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAgICQoV2ViQ29y
ZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL1Njcmlw
dFByb2ZpbGUuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBkYmVjYTQ3MWE3
YzYxYzc2Y2Y0MjAxNTEwODY4NTg1Zjk3NzI3MjRmLi43OTA5ZTFhZTUxZTNhNWNiYzE0NjljZjU3
MTRhNWJmNTQ1MTliMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC02NTIsMTEg
KzY1MiwxNSBAQCBlbmFibGU/KEdBTUVQQUQpIHsKIAogZW5hYmxlPyhWSURFT19UUkFDSykgewog
ICBJRExfQklORElOR1MgKz0gXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwg
XAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKICAgICAkJFBXRC9o
dG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAg
ICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90
cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlk
bCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKIH0KIAogZW5hYmxl
PyhNRURJQV9TT1VSQ0UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDg2M2Uy
NjdlZTE0MDRkYzg0NTM0MWRmNTU4NWQ2NTMzM2RiNmE1ZTIuLjVjMDgxNGQ1NzcwNGFmOWFmNzJi
OWQ1MjZkMWI4YzE5ZjFjMjkyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MTU4NiwxMSArMTU4NiwxNSBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUxpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwg
XAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisJJChXZWJDb3JlKS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
aWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwK
IAkkKFdlYkNvcmUpL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCkBAIC0yMzIw
LDYgKzIzMjQsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmxvYkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ0RBVEFT
ZWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0yNDc0LDYgKzI0ODEsOSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcCBcCkBAIC0zNzY3LDYgKzM3NzcsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lUmFuZ2VzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIFwKQEAgLTM3ODcsNiAr
MzgwMSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJh
c2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBcCisJ
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgXApAQCAtNTQ5Nyw2ICs1NTE1LDcg
QEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Jbml0aWFsaXplTG9nZ2luZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9ORU9OSGVscGVycy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaCBc
CkBAIC01Nzc3LDYgKzU3OTYsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1R5cGVz
ZXR0aW5nRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVW5p
dEJlemllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNr
UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggMGE1M2M5OGQzMTY0ZmNkN2M3OTI3N2FiMjliZjZmMzVlMmQyYjY1Mi4u
ODU1OGY0MjNlMGUzMjFjYThhZTRiMzhjNzYyNTNkZTQxODZlYWYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0zOTY2LDkgKzM5NjYsMTMgQEAgZW5hYmxlPyhKQVZBU0NSSVBUX0RFQlVHR0VSKSB7CiAKIGVu
YWJsZT8oVklERU9fVFJBQ0spIHsKICAgICBIRUFERVJTICs9IFwKKyAgICAgICAgYmluZGluZ3Mv
anMvSlNBdWRpb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1c3RvbS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKKyAgICAg
ICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBodG1sL0hUTUxU
cmFja0VsZW1lbnQuaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKyAgICAg
ICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJh
bmRUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBc
CiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmggXApAQCAtMzk3OSwyMCArMzk4MywzMCBA
QCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmgg
XAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorICAg
ICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogICAgICAgICBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIFwKICAgICAg
ICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBcCiAgICAgICAgIGxvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuaCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRl
LmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgg
XAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50
LmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAKICAg
ICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNw
cCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNU
cmFja0N1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGh0bWwvSFRNTFRy
YWNrRWxlbWVudC5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKyAg
ICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L0luYmFuZFRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBcCkBAIC00MDAzLDYg
KzQwMTcsOCBAQCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVHJh
Y2tCYXNlLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXAogICAgICAg
ICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwKICAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9Vc2VKU0MuY21ha2UKaW5kZXggNzljOWUxMDI1OTNmZDBjMDA0OWU3NzJjMjFmZWMzMzk2
YzQ1Y2JmMy4uYThmMmY4MTYxYzU0M2NkOGFmZjRmOGRlZWZiZmRkZmQ4Zjg1ZjAzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQpAQCAtMjE4LDExICsyMTgsMTUgQEAgZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9W
SURFT19UUkFDSykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgYmlu
ZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1
ZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2
ZW50Q3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3Bw
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCiAgICAgKQog
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBlMGNkMDliMWZiNDA5MTBlMjJlZDQ5ZDQxZjliZWUxMjNmNGE4OGZlLi44YTFlMGRl
MmU5OTFlYWU5NjMxYmY0YWFkMDhmOTZhNDBmMjc2ZTdiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk5MDIsNiArMjk5MDIsMTAgQEAKIAkJ
CQlOYW1lPSJncmFwaGljcyIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
Qml0bWFwSW1hZ2UuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMzAzNzgsNiArMzAzODIs
MTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRlLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xXaW5kUnVsZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjU3NDYsNiArNjU3NTQsMjIg
QEAKIAkJCQlOYW1lPSJ0cmFjayIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2suY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1RyYWNrLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFja0xpc3QuaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
dHJhY2tcSW5iYW5kVGV4dFRyYWNrLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1ODI2
LDYgKzY1ODUwLDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2suY3BwIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xWaWRlb1Ry
YWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcVmlkZW9UcmFja0xp
c3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcdHJhY2tcV2ViVlRURWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZmMxNzUyOTU4MjI4ZmIwNmI4ZTJlYTgwNjI3ZTE1YzQ4MjM0YTVkMy4uNDRjMGFjMmQ1YWFm
NzE0NTI2ZDE3YWYyZmVjYzQ2YzFkZjdkYjgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTExMyw2ICs1MTEzLDE2IEBACiAJ
CUJDRkY2NDkyMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2Rjcg
LyogTGVuZ3RoU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEJGMTcx
NUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLzsgfTsKIAkJQkU4OEUwQzIxNzE1
Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xp
c3RCYXNlLmggKi87IH07CisJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhF
MENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUwRDkx
NzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1Ry
YWNrLmggKi87IH07CisJCUJFODhFMERCMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4
RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICovOyB9OworCQlCRTg4
RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5OCAv
KiBBdWRpb1RyYWNrTGlzdC5oICovOyB9OworCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCRTg4RTBEMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi87IH07CisJ
CUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFjay5oICovOyB9OworCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlk
ZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAqLzsg
fTsKKwkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBENjE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJQkVGMjlFRUIxNzE1REQwOTAw
QzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFj
a1ByaXZhdGUuaCAqLzsgfTsKKwkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJh
Y2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLzsgfTsK
IAkJQzA0NkUxQUMxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA0NkUxQUIxMjA4QTlG
RTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICovOyB9OwogCQlDMEMwNTRDQjExMThD
OEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2Vu
ZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBG
RUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE4NDIsOSArMTE4NTIsMjMgQEAKIAkJQkU4
NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVWaWV3Lm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVWaWV3Lm07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTg4
RTBCRjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0xpc3RCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkU4OEUwQzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDQzE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Ry
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0QxNzE1RDJBMjAw
NjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXVkaW9UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRTE3MTVE
MkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVk
aW9UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENGMTcxNUQy
QTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFj
a0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvVHJhY2tMaXN0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9U
cmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQzMTcxNUQyQTIw
MDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZpZGVvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDQxNzE1
RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZp
ZGVvVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENTE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVmlkZW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCRTg4RTBENjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja0xpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDcxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJh
Y2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFOTFGQzhCMDYxMzM2NjYwMDVFMzc5MCAvKiBQ
b3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJQkU5MUZDOEMwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9h
cmRVSU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0Qzkg
LyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXVkaW9UcmFja1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkVGMjlF
RUExNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMwNDZFMUFCMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsaXplZFN0cmlu
Z3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMERGQzg2RjBEQjY4NDFBMDAz
RUFFN0MgLyogSlNDb25zb2xlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ29uc29sZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJs
OyBuYW1lID0gcHJlcHJvY2Vzc29yLnBtOyBwYXRoID0gc2NyaXB0cy9wcmVwcm9jZXNzb3IucG07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzY4NSw2ICsxNzcwOSwxOCBAQAogCQlC
MUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrLmNwcCAqLywKKwkJCQlCRTg4RTBDRDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFj
ay5oICovLAorCQkJCUJFODhFMENFMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmlkbCAq
LywKKwkJCQlCRTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICov
LAorCQkJCUJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovLAor
CQkJCUJFODhFMEQxMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5pZGwgKi8sCisJ
CQkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovLAorCQkJCUJF
ODhFMEQzMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi8sCisJCQkJQkU4OEUwRDQx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaWRsICovLAorCQkJCUJFODhFMEQ1MTcxNUQy
QTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi8sCisJCQkJQkU4OEUwRDYxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi8sCisJCQkJQkU4OEUwRDcxNzE1RDJBMjAw
NjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLywKIAkJCQlCRTg4RTBCRjE3MTVDRTI2MDA2
NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi8sCiAJCQkJQkU4OEUwQzAxNzE1Q0UyNjAwNjU4
RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLywKIAkJCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIg
LyogSW5iYW5kVGV4dFRyYWNrLmNwcCAqLywKQEAgLTE4MzQyLDYgKzE4Mzc4LDggQEAKIAkJCQk0
OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKIAkJCQk0OTA3MDdFNDEy
MTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovLAogCQkJCTQ5MDcwN0U1
MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovLAorCQkJCUJFRjI5RUU5
MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovLAorCQkJCUJFRjI5RUVB
MTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovLAogCQkJCUE4OTk0MzI3
MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8sCiAJCQkJQTg5OTQzMjYwQjQy
MzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmggKi8sCiAJCQkJQjI3NTM1MzgwQjA1MzgxNDAw
MkNFNjRGIC8qIENvbG9yLmNwcCAqLywKQEAgLTI0MDY3LDYgKzI0MTA1LDEyIEBACiAJCQkJRTE1
MjU1MTUxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIw
NUY5IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4
RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkU4OEUwRDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICov
LAorCQkJCUJFODhFMERDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBp
biBIZWFkZXJzICovLAorCQkJCUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5IC8qIEF1
ZGlvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRUYyOUVFQzE3MTVERDA5MDBD
NEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcwMTQsNiAr
MjcwNTgsMTAgQEAKIAkJCQlFMTUyNTUxNjE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFCNTMzNDcxNzE3RDBBMTAwRjIwNUY5IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xp
c3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAv
KiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMERCMTcxNUQyQTIwMDY1
OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBERTE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4
RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRl
eCBmMzIyZDY0Y2M3ZDE3YTdmYjc1NDAzZWFiZDIxOWJmZDNlZWQ5MTk3Li5lZWVlZWJhMTBhMzJl
NjVhMjk5YzJjYzBjYzc4MmY0MDhjZTMxNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KQEAgLTQzMywxOCArNDMzLDI0IEBAIHdlYmtpdGd0
a19nZG9tX2J1aWx0X2hfYXBpICs9IFwKIAogaWYgRU5BQkxFX1ZJREVPCiB3ZWJraXRndGtfZ2Rv
bV9idWlsdF9oX2FwaSArPSBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRk
aXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50Lmgg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRN
TFZpZGVvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTVRleHRUcmFjay5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWUuaCBcCiAJJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tD
dWVMaXN0LmggXAotCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVHJhY2tFdmVudC5oCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01UcmFja0V2ZW50LmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFjay5oIFwKKwkkKHRvcF9idWlsZGRpcikv
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmgKIHdlYmtp
dGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9X
ZWJLaXRET01IVE1MQXVkaW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnRQcml2YXRlLmggXAorCURlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmNwcCBcCkBAIC00NTMsNiArNDU5LDggQEAg
d2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaCBcCisJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oCiBlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGQ1YzFlNDI3MzljZTY3ZDVkNTI3ZDMwYTMyZDkxNDA1NTkzNmEwYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tDdXN0b20uaCIKKworI2luY2x1
ZGUgIkpTQXVkaW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8
SlNBdWRpb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBBdWRpb1RyYWNrKiBh
dWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9UcmFjay0+aW1wbCgp
KTtcCisKKyAgICAvLyBJZiB0aGUgdHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBp
cyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghanNBdWRpb1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0
aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNvbnRh
aW5zT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2spKTsKK30KKwordm9pZCBKU0F1ZGlvVHJhY2s6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBKU0F1ZGlvVHJhY2sqIGpzQXVkaW9UcmFjayA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2sqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzQXVkaW9UcmFjaywgJnNfaW5mbyk7
CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxk
cmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NF
UlQoanNBdWRpb1RyYWNrLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrLCB2aXNpdG9y
KTsKKworICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNr
Kj4oanNBdWRpb1RyYWNrLT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290
KGF1ZGlvVHJhY2spKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDhjZGUzYjE3MjBlOGQ2Y2NmYmQ2MTVjMjVlM2UzYzU1MjRlM2RkOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5o
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0F1ZGlvVHJhY2tDdXN0b21f
aAorI2RlZmluZSBKU0F1ZGlvVHJhY2tDdXN0b21faAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFj
ay5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSB2b2lkKiByb290KEF1ZGlvVHJhY2sqIHRy
YWNrKQoreworICAgIC8vIFJldHVybiB0aGUgbWVkaWEgZWxlbWVudCdzIHJvb3QgaWYgaXQgaGFz
IG9uZS4KKyAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9v
dCh0cmFjay0+bWVkaWFFbGVtZW50KCkpOworCisgICAgLy8gTm8gbWVkaWEgZWxlbWVudCwgcmV0
dXJuIHRoZSB0ZXh0IHRyYWNrLgorICAgIHJldHVybiB0cmFjazsKK30KKworfQorCisjZW5kaWYK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJh
Y2tMaXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzYxNmIwZDRiOGFhOTI5NDIyZjA1YWQ3NTQ5
MzI0MDlhYTE2YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRl
ICJKU0F1ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisj
aW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0F1ZGlvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrTGlzdCoganNBdWRpb1Ry
YWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgp
KTsKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRp
b1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUg
bGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUg
YmVjYXVzZQorICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRo
b3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBpZiAoYXVkaW9UcmFja0xpc3QtPmlzRmlyaW5nRXZl
bnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUgbGlz
dCBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0
IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFhdWRpb1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0
ZW5lcnMoKSAmJiAhanNBdWRpb1RyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1lZGlh
IGVsZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOworfQorCit2b2lkIEpT
QXVkaW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2tMaXN0KiBqc0F1ZGlvVHJhY2tMaXN0ID0ganND
YXN0PEpTQXVkaW9UcmFja0xpc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGpzQXVkaW9UcmFja0xpc3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVj
dHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzQXVkaW9UcmFja0xpc3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2tMaXN0LCB2aXNpdG9yKTsKKworICAgIEF1ZGlvVHJh
Y2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2tMaXN0Kj4oanNB
dWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChh
dWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOworICAgIGF1ZGlvVHJhY2tMaXN0LT52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAppbmRleCAyYmExMGY1NTZlOGI0ODAyZThiYTk2NmZkMWQzY2UxMjQzMTI0MDU2Li41MWFk
ZjM1ZTM0OWY4NGVkYTZmMDNhN2E0OTM5ZWMzZWRjNDRlZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTM0LDYgKzM0LDgg
QEAKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQXR0ckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNBdWRp
b1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0Jsb2JDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ0RBVEFTZWN0aW9uQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0NTU0ZvbnRGYWNlUnVsZUN1c3RvbS5jcHAiCkBAIC0xNDcs
NiArMTQ5LDggQEAKICNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1Ry
YWNrRXZlbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJlZVdhbGtlckN1c3RvbS5jcHAiCisj
aW5jbHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tM
aXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NDA2OWQ1NGY5NTRh
NWIzMDEwYTQ1NWI5NjZiZTBmM2VjOWFkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRlICJKU1ZpZGVvVHJh
Y2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiti
b29sIEpTVmlkZW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpTVmlkZW9UcmFjayo+
KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0
YXRpY19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisKKyAgICAvLyBJ
ZiB0aGUgdHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxl
LgorICAgIGlmICghanNWaWRlb1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChy
b290KHZpZGVvVHJhY2spKTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sq
IGpzVmlkZW9UcmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlkZW9UcmFjaywgJnNfaW5mbyk7CisgICAgQ09NUElMRV9B
U1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1RyYWNr
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrLCB2aXNpdG9yKTsKKworICAgIFZpZGVv
VHJhY2sqIHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1RyYWNr
LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2spKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzNzVlNTY3
ZTZiYTM4YTNmZDZkMmM5OTVhZjBjMWNkZjZhYjNkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBKU1ZpZGVvVHJhY2tDdXN0b21faAorI2RlZmluZSBKU1Zp
ZGVvVHJhY2tDdXN0b21faAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
SFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorI2luY2x1ZGUg
IkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2lubGluZSB2b2lkKiByb290KFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIC8v
IFJldHVybiB0aGUgbWVkaWEgZWxlbWVudCdzIHJvb3QgaWYgaXQgaGFzIG9uZS4KKyAgICBpZiAo
dHJhY2stPm1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+bWVkaWFF
bGVtZW50KCkpOworCisgICAgLy8gTm8gbWVkaWEgZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0IHRy
YWNrLgorICAgIHJldHVybiB0cmFjazsKK30KKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYmQ5NjcxMGQ2MDkzMTBjNzg3MmE3ZGY0M2I2Y2RiNDMzNWIxZDU3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
TGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tM
aXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2Rl
Q3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworYm9vbCBKU1ZpZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1RyYWNrTGlzdCA9IGpzQ2Fz
dDxKU1ZpZGVvVHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBWaWRlb1Ry
YWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrTGlzdCo+KGpz
VmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBpcyBmaXJpbmcg
ZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8v
IHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3Rl
bmVycy4KKyAgICBpZiAodmlkZW9UcmFja0xpc3QtPmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBoYXMgbm8gZXZlbnQg
bGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFi
bGUuCisgICAgaWYgKCF2aWRlb1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAhanNW
aWRlb1RyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVsZW1lbnQgcGFyZW50
IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9v
dCh2aWRlb1RyYWNrTGlzdC0+b3duZXIoKSkpOworfQorCit2b2lkIEpTVmlkZW9UcmFja0xpc3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBKU1ZpZGVvVHJhY2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9UcmFj
a0xpc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlkZW9UcmFj
a0xpc3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5n
RmxhZyk7CisgICAgQVNTRVJUKGpzVmlkZW9UcmFja0xpc3QtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihq
c1ZpZGVvVHJhY2tMaXN0LCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRlb1Ry
YWNrTGlzdCA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlzdC0+
aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrTGlzdC0+
b3duZXIoKSkpOworICAgIHZpZGVvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oCmluZGV4IDgyNzc3YTg2ZWVmZGZiZWJlNjg5YzliOTIzMzY4ODI5NTgzOTFj
M2UuLmVhMDc5OWJiNWQwZDczNGMwMWY0NjhhNjNlMWQ1YjIyMDVjZmI0YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBBdWRpb0NvbnRleHQ7CisgICAgY2xhc3MgQXVkaW9UcmFja0xpc3Q7CiAgICAg
Y2xhc3MgRGVkaWNhdGVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNh
Y2hlOwogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTY3LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFNvdXJjZUJ1ZmZlckxpc3Q7CiAgICAgY2xhc3MgVGV4dFRyYWNr
OwogICAgIGNsYXNzIFRleHRUcmFja0N1ZTsKKyAgICBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKICAg
ICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogICAgIGNsYXNz
IFdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDQ3
NmQxYjUzZjE0NWJiMjczNDk4OTkzZjM5ZjFkMWNiYWE2MjM1ODMuLjhlYTViN2IwM2FiYWNhMDJm
MjVmNDhhMmVkNTU5OTI2M2VhNDcwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgpAQCAtMSw2ICsxLDcgQEAKIG5hbWVzcGFjZT0iRXZlbnRUYXJnZXQiCiAKIEF1
ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0F1ZGlvVHJhY2tMaXN0IGNvbmRpdGlv
bmFsPVZJREVPX1RSQUNLCiBCYXR0ZXJ5TWFuYWdlciBjb25kaXRpb25hbD1CQVRURVJZX1NUQVRV
UwogRGVkaWNhdGVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBET01BcHBsaWNh
dGlvbkNhY2hlCkBAIC0zNyw2ICszOCw3IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25h
bD1TVkcKIFRleHRUcmFjayBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNrQ3VlIGNv
bmRpdGlvbmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RS
QUNLCitWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogV2ViS2l0TmFtZWRG
bG93CiBXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBjb25kaXRpb25h
bD1XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAx
ZGQzMDFjNTgxYTY3NTMyNmRmNmU4MjkxZTNmZjI1YzA5NWM2OWU4Li4wNDViZGNkNThhYTg2MDJl
OWU3OGRiMjYzMGYyM2Y1ZGI5OGNiYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTk4LDYgKzk4LDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiQXVkaW9UcmFj
a1ByaXZhdGUuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5jbHVk
ZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFjay5oIgpAQCAt
MTA1LDYgKzEwNyw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCisj
aW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5o
IgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMjk2LDcgKzMwMCw5IEBAIEhU
TUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hhbmdl
KGZhbHNlKQogICAgICwgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZSgtMSkKICAgICAsIG1fY2Fw
dGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYykKKyAgICAs
IG1fYXVkaW9UcmFja3MoMCkKICAgICAsIG1fdGV4dFRyYWNrcygwKQorICAgICwgbV92aWRlb1Ry
YWNrcygwKQogICAgICwgbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUoMCkKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJfQVVESU8pCkBAIC0zMzAsMTIgKzMzNiwyMiBAQCBIVE1MTWVkaWFFbGVtZW50
Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0No
YW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgaWYgKG1fYXVkaW9UcmFja3MpIHsKKyAgICAgICAg
bV9hdWRpb1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fYXVkaW9U
cmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogICAgIGlmIChtX3RleHRUcmFj
a3MpCiAgICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOwogICAgIGlmIChtX3RleHRU
cmFja3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+
bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+Y2xlYXJD
bGllbnQoKTsKICAgICB9CisgICAgaWYgKG1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92aWRl
b1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV92aWRlb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdmlkZW9UcmFja3Mt
Pml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAobV9tZWRp
YUNvbnRyb2xsZXIpCkBAIC0xMzQ5LDYgKzEzNjUsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIH0KIH0K
IAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9U
cmFjayopCit7CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJv
bHMgaGVyZSBvbmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0
VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+dHJh
Y2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsKQEAgLTEzODgsNiArMTQwOSwx
MSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFj
ayogdHJhY2spCiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsK
IH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZp
ZGVvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNv
bnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAodHJhY2st
PmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5kKCkg
IT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0
VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCkBAIC0yNzkyLDYgKzI4MTgsMTYgQEAgZG91YmxlIEhU
TUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9U
cmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IEF1ZGlvVHJhY2s6
OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRBdWRpb1RyYWNrKHRyYWNrLmdldCgp
KTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFj
ayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQogewogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAg
LTI4MjcsNiArMjg2MywzMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlk
QWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIGFkZFRleHRU
cmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcnBU
cmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0
cmFjayA9IFZpZGVvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRWaWRl
b1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gcHJw
VHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3Mp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2Ug
Y3JlYXRlZCB0aGUgQXVkaW9UcmFjayB3aXRoIHRoZSBBdWRpb1RyYWNrUHJpdmF0ZQorICAgIC8v
IHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2suCisgICAgUmVmUHRyPEF1ZGlv
VHJhY2s+IHRyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KHBycFRyYWNrLT5jbGllbnQo
KSk7CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlQXVkaW9U
cmFjayh0cmFjay5nZXQoKSk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCkBAIC0yODQ0LDYgKzI5MDcsMjMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1AKICAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIH0KIAordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMg
Y2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0aGUgVmlkZW9UcmFjayB3aXRoIHRoZSBW
aWRlb1RyYWNrUHJpdmF0ZQorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFZpZGVv
VHJhY2suCisgICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9U
cmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgcmVtb3ZlVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKICNpZiBVU0Uo
UExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZWxl
Y3RlZFRleHRUcmFjayhQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBwbGF0Zm9ybVRyYWNr
KQogewpAQCAtMjkyMCw2ICszMDAwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VD
YXB0aW9uVHJhY2tzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjphZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIGF1ZGlvVHJhY2tzKCkt
PmFwcGVuZCh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNr
KFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2spOwpA
QCAtMjkyNyw2ICszMDEyLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNr
KFRleHRUcmFjayogdHJhY2spCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQog
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2sp
Cit7CisgICAgdmlkZW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIG1f
YXVkaW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgVHJhY2tEaXNwbGF5VXBk
YXRlU2NvcGUgc2NvcGUodGhpcyk7CkBAIC0yOTM4LDE4ICszMDMzLDMwIEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiAgICAgY2xvc2VD
YXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZVZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgbV92aWRlb1RyYWNrcy0+cmVt
b3ZlKHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRU
cmFja3MoKQogewotICAgIGlmICghbV90ZXh0VHJhY2tzKQotICAgICAgICByZXR1cm47CisgICAg
aWYgKG1fYXVkaW9UcmFja3MpCisgICAgICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX2F1
ZGlvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlbW92ZUF1ZGlvVHJhY2sobV9hdWRp
b1RyYWNrcy0+aXRlbShsZW5ndGggLSAxKSk7CiAKLSAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29w
ZSBzY29wZSh0aGlzKTsKLSAgICBmb3IgKGludCBpID0gbV90ZXh0VHJhY2tzLT5sZW5ndGgoKSAt
IDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFj
a3MtPml0ZW0oaSk7CisgICAgaWYgKG1fdGV4dFRyYWNrcykgeworICAgICAgICBUcmFja0Rpc3Bs
YXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IG1fdGV4dFRy
YWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgVGV4dFRyYWNr
KiB0cmFjayA9IG1fdGV4dFRyYWNrcy0+aXRlbShpKTsKIAotICAgICAgICBpZiAodHJhY2stPnRy
YWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAgICAgICAgcmVtb3ZlVGV4dFRy
YWNrKHRyYWNrKTsKKyAgICAgICAgICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRy
YWNrOjpJbkJhbmQpCisgICAgICAgICAgICAgICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKyAg
ICAgICAgfQogICAgIH0KKworICAgIGlmIChtX3ZpZGVvVHJhY2tzKQorICAgICAgICB3aGlsZSAo
dW5zaWduZWQgbGVuZ3RoID0gbV92aWRlb1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAgICAgICBy
ZW1vdmVWaWRlb1RyYWNrKG1fdmlkZW9UcmFja3MtPml0ZW0obGVuZ3RoIC0gMSkpOwogfQogCiBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yOTg5LDYgKzMwOTYsMTcgQEAgUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFMKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsKIH0KIAorQXVkaW9U
cmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICBtX2F1ZGlvVHJh
Y2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV9hdWRpb1RyYWNrcy5nZXQoKTsK
K30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpIAogewog
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKQEAgLTMwMDAsNiArMzExOCwxNyBAQCBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzKCkKICAgICByZXR1cm4gbV90ZXh0VHJhY2tzLmdldCgpOwogfQogCitWaWRl
b1RyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MoKQoreworICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIG1fdmlkZW9U
cmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzLmdldCgp
OworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayhIVE1MVHJhY2tF
bGVtZW50KiB0cmFja0VsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFn
TmFtZSh0cmFja1RhZykpOwpAQCAtNDkxNyw3ICs1MDQ2LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNlLCAibWVkaWFTb3VyY2UiKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2F1
ZGlvVHJhY2tzLCAiYXVkaW9UcmFja3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFj
a3MsICJ0ZXh0VHJhY2tzIik7CisgICAgaW5mby5hZGRNZW1iZXIobV92aWRlb1RyYWNrcywgInZp
ZGVvVHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzV2hlblJlc291cmNl
U2VsZWN0aW9uQmVnYW4sICJ0ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4iKTsK
ICAgICBpbmZvLmFkZE1lbWJlcihtX2N1ZVRyZWUsICJjdWVUcmVlIik7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9jdXJyZW50bHlBY3RpdmVDdWVzLCAiY3VycmVudGx5QWN0aXZlQ3VlcyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMDg1ZTlkZmI4ODYwNDA3ZWFk
OTE5MWVjMjdjYWI0ZDkyYjk3NjYzLi5mYTJmOWY4ZmJlODBlMGIwZDk3N2Q1NzYyN2NmYzVjYmFi
MDRlNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzksMTAg
KzM5LDEyIEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJB
dWRpb1RyYWNrLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1
ZGUgIlBPREludGVydmFsVHJlZS5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUg
IlRleHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03MCw4ICs3MiwxMiBAQCBjbGFzcyBNZWRpYUtleXM7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0OworY2xh
c3MgQXVkaW9UcmFja1ByaXZhdGU7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOwogY2xh
c3MgVGV4dFRyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OworY2xhc3MgVmlkZW9UcmFj
a1ByaXZhdGU7CiAKIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRvdWJsZSwgVGV4dFRyYWNrQ3Vl
Kj4gQ3VlSW50ZXJ2YWxUcmVlOwogdHlwZWRlZiBDdWVJbnRlcnZhbFRyZWU6OkludGVydmFsVHlw
ZSBDdWVJbnRlcnZhbDsKQEAgLTg0LDcgKzkwLDkgQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50ZXJ2
YWw+IEN1ZUxpc3Q7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1l
bnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNU
eXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyAgICAsIHByaXZhdGUgQXVkaW9UcmFja0NsaWVudAogICAgICwgcHJpdmF0ZSBU
ZXh0VHJhY2tDbGllbnQKKyAgICAsIHByaXZhdGUgVmlkZW9UcmFja0NsaWVudAogI2VuZGlmCiAj
aWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAsIHB1YmxpYyBQbGF0Zm9ybVRl
eHRUcmFja01lbnVDbGllbnQKQEAgLTIyNiwxMSArMjM0LDE4IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZFRleHRUcmFjayhr
aW5kLCBsYWJlbCwgZW1wdHlTdHJpbmcoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJh
Y2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwg
ZWMpOyB9CiAKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja3MoKTsKICAgICBUZXh0VHJh
Y2tMaXN0KiB0ZXh0VHJhY2tzKCk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tzKCk7
CisKICAgICBDdWVMaXN0IGN1cnJlbnRseUFjdGl2ZUN1ZXMoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRseUFjdGl2ZUN1ZXM7IH0KIAorICAgIHZvaWQgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNr
Kik7CiAgICAgdm9pZCBhZGRUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCBhZGRWaWRl
b1RyYWNrKFZpZGVvVHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFj
ayopOwogICAgIHZvaWQgcmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQgcmVt
b3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CiAgICAgdm9pZCByZW1vdmVBbGxJbmJhbmRUcmFj
a3MoKTsKICAgICB2b2lkIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKICAgICB2b2lkIG5v
dGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CkBAIC0yMzgsOCArMjUzLDEyIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1l
bnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1l
bnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFz
c1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1Ry
YWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1v
dmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVm
UHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAKICNpZiBVU0UoUExBVEZPUk1fVEVY
VF9UUkFDS19NRU5VKQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhQYXNz
UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPikgT1ZFUlJJREU7CkBAIC0yNzUsNiArMjk0LDkgQEAg
cHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrRGlzcGxheSgpOwogICAgIHZvaWQg
dXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCisgICAgLy8gQXVkaW9UcmFja0NsaWVudAorICAg
IHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopOworCiAg
ICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3Rh
dGVDaGFuZ2VkKFRleHRUcmFjayopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hh
bmdlZChUZXh0VHJhY2sqKTsKQEAgLTI4NCw2ICszMDYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZT4pOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKIAorICAgIC8vIFZpZGVvVHJhY2tDbGllbnQKKyAgICB2
aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKik7CisKICAg
ICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB2b2lk
IHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKik7CiAj
ZW5kaWYKQEAgLTY5OSw3ICs3MjQsOSBAQCBwcml2YXRlOgogCiAgICAgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIG1fY2FwdGlvbkRpc3BsYXlNb2RlOwogCisgICAg
UmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0cjxUZXh0VHJh
Y2tMaXN0PiBtX3RleHRUcmFja3M7CisgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVv
VHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwogCiAgICAgQ3VlSW50ZXJ2YWxUcmVlIG1fY3VlVHJlZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IGNlZDQxNzQ1OWRh
YmExMzVlZDAwNWVmNjU0ODZkMjVhZjZlMWNjZDUuLjA1YmMyZGQ4YzRmYjg4NGU3YmViZDY3YjBj
NzIzZTllNWQ1MThhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bApAQCAtMTE2LDcgKzExNiw5IEBAIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVzdChpbiBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyCiAjaWYgZGVmaW5l
ZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogVGV4dFRyYWNrIGFk
ZFRleHRUcmFjayhpbiBET01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFi
ZWwsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1YWdlKQogICAgIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRpb1RyYWNrczsK
IHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7CityZWFkb25seSBh
dHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CiAjZW5kaWYKIAogW1JlZmxlY3Qs
IFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWFHcm91cDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZDU0
M2ExZjcwYjk1NDc4Y2JmMjE5NTUxMjMyMTBmYjBkMzc0NmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAgKzEsMTYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3Qu
aCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRpb24sICgiZGVzY3JpcHRp
b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGRl
c2NyaXB0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3
b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFp
biwgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJl
dHVybiBtYWluOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNj
S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICByZXR1cm4gbWFpbkRlc2M7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVk
aW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24iLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHRyYW5zbGF0aW9uOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFy
eSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKEF1ZGlv
VHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQ
cml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2
YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBtX2lkKHRyYWNr
UHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUtPmVuYWJsZWQoKSkK
KyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7
CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0
ZS0+a2luZCgpKSB7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6Cisg
ICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpEZXNjcmlwdGlvbjoKKyAgICAg
ICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQo
QXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVk
aW9UcmFja1ByaXZhdGU6Ok1haW5EZXNjOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1h
aW5EZXNjS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJp
dmF0ZTo6VHJhbnNsYXRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6dHJhbnNsYXRp
b25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRl
OjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3
b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpOb25l
OgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCitBdWRpb1RyYWNrOjp+QXVkaW9UcmFjaygpCit7CisgICAgbV9wcml2YXRlLT5z
ZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAodmFsdWUgPT0gYWx0ZXJuYXRpdmVL
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBkZXNjcmlw
dGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IG1h
aW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWlu
RGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHRy
YW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUg
PT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0RW5hYmxlZChjb25zdCBib29sIGVu
YWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRoaXMpOworfQorCitzaXplX3Qg
QXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9UcmFja0luZGV4KCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU1Mzc1NzQ1MWFkYjJlM2ZiYjk1YzkyMjc4OTMwNDAzODNjMDM0M2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJh
Y2tfaAorI2RlZmluZSBBdWRpb1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKwor
I2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNrOworCitjbGFzcyBB
dWRpb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrQ2xpZW50
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1Ry
YWNrKikgPSAwOworfTsKKworY2xhc3MgQXVkaW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1
YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXVkaW9UcmFjaz4gY3JlYXRlKEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1Jl
ZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAg
fQorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpIHsgbV9pZCA9IGlkOyB9CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRl
cm5hdGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZXNjcmlw
dGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29y
ZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zbGF0aW9uS2V5d29yZCgpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoY29uc3QgYm9v
bCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBPVkVSUklERSB7IG1fY2xpZW50
ID0gMDsgfQorICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpZW50OyB9CisKKyAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOworCitwcm90ZWN0ZWQ6
CisgICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiwgUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4pOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25z
dCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKworICAgIEF0b21pY1N0cmluZyBtX2lk
OworICAgIGJvb2wgbV9lbmFibGVkOworICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50Owor
CisgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9OworCitpbmxpbmUg
QXVkaW9UcmFjayogdG9BdWRpb1RyYWNrKFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgQVNTRVJU
KHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWRiNjNjODVkZDk4MTg0ZTY2NWYxZGI2NDI3MWNhNDRiZGU2ZTMxYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5p
ZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVP
X1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFi
bGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZTM1NWI3M2ZmZGI0ZDc4MjZhY2VlNmZmZTliMjcyY2Y1N2E1ZjBlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKQEAg
LTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorCisj
aW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChIVE1M
TWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAg
ICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK0F1ZGlvVHJhY2tMaXN0
Ojp+QXVkaW9UcmFja0xpc3QoKQoreworfQorCit2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQo
UGFzc1JlZlB0cjxBdWRpb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8QXVkaW9UcmFj
az4gdHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlh
IGZpbGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgo
KTsKKyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VS
VCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25l
cigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1
bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlv
VHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8
IG1faW5iYW5kVHJhY2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHRvQXVkaW9UcmFjayhtX2lu
YmFuZFRyYWNrc1tpbmRleF0uZ2V0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlvVHJh
Y2sqIEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIEF1ZGlvVHJhY2sqIHRyYWNrID0gdG9BdWRpb1RyYWNrKG1faW5i
YW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQorICAg
ICAgICAgICAgcmV0dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3Qg
QXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTM0NGI4YmEzZDAwZDdkZTRlZDBiYmQ1M2FmMTU5N2E0Njc0YjI3ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3RfaAor
I2RlZmluZSBBdWRpb1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFz
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3du
ZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICBBdWRp
b1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKKyAgICBB
dWRpb1RyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKwor
cHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYzFjZTA4YzI0Yzk0MDQxOTQwZDYzNzg4YjMwYjRlOTQ2YzY1ZWMxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5p
ZGwKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9f
VFJBQ0ssCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwKKyAgICBKU0N1c3Rv
bU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBBdWRp
b1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OworICAgIEF1ZGlvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBBdWRp
b1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0
cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOworCisgICAg
dm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1v
dmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXgg
NWRkM2JlZjg0NjY5M2I1ZDk4N2ZkZmZmNjZiZDgwMTE1ODM2YjRjMS4uYmYzYTE4OGM3OTlhNTU4
Njk4NjRlNzllZTU1ZjY1ZWExZWRkYzYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmUoVHJhY2tCYXNlKikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklE
RTsKIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MzRhNWQ5ZDE4NThiZWRhYWM5ZjRlZDQ0MWM2MmQxMjEyOGQzNmE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKworI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlICJWaWRl
b1RyYWNrTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFsdGVybmF0
aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhcHRp
b25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNr
OjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIGNhcHRpb25zLCAoIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZp
ZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBzaWduOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3VidGl0bGVzIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzdWJ0aXRsZXM7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNv
bW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0
dXJuIGNvbW1lbnRhcnk7Cit9CisKK1ZpZGVvVHJhY2s6OlZpZGVvVHJhY2soVmlkZW9UcmFja0Ns
aWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUp
CisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUtPmxh
YmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAsIG1faWQodHJhY2tQcml2YXRl
LT5pZCgpKQorICAgICwgbV9zZWxlY3RlZCh0cmFja1ByaXZhdGUtPnNlbGVjdGVkKCkpCisgICAg
LCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQoreworICAg
IG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworCisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtp
bmQoKSkgeworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAg
ICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM6CisgICAgICAgIHNldEtp
bmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6
Om1haW5LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpTaWduOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTdWJ0aXRsZXM6Cisg
ICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAg
c2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0
eVN0cmluZygpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworVmlkZW9UcmFjazo6
flZpZGVvVHJhY2soKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KDApOworfQorCitib29s
IFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0
Cit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc2lnbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFZpZGVvVHJhY2s6
OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCit7CisgICAgaWYgKG1fc2VsZWN0ZWQg
PT0gc2VsZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3Rl
ZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnZpZGVvVHJhY2tTZWxl
Y3RlZENoYW5nZWQodGhpcyk7Cit9CisKK3NpemVfdCBWaWRlb1RyYWNrOjppbmJhbmRUcmFja0lu
ZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT52
aWRlb1RyYWNrSW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI2NDRkNjY5
N2NjNzM1ZjY3ZDM5OGZkNzBkYmZlZWYyNmI3YzFhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisjZGVmaW5lIFZpZGVvVHJhY2tf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJhY2tDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikgPSAwOworfTsKKworY2xhc3Mg
VmlkZW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUNs
aWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gY3JlYXRl
KFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4g
dHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1Ry
YWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVvVHJh
Y2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAg
ICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
c3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1l
bnRhcnlLZXl3b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRL
aW5kS2V5d29yZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAg
Ym9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJD
bGllbnQoKSBPVkVSUklERSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBzaXplX3QgaW5iYW5k
VHJhY2tJbmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xp
ZW50KiwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJpdmF0ZVRyYWNrKTsKKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikg
Y29uc3QgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fc2Vs
ZWN0ZWQ7CisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8Vmlk
ZW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBWaWRlb1RyYWNrKiB0b1Zp
ZGVvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9
PSBUcmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb1Ry
YWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NTI2ZDMzMDcxNDdmMzFkZDI0ZGEyZDg1ZGZiMjA4NzIwYzcyNzAzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMCwwICsxLDM3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAgSlND
dXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2Ug
VmlkZW9UcmFjayB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmd1
YWdlOworCisgICAgYXR0cmlidXRlIGJvb2xlYW4gc2VsZWN0ZWQ7Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzA3Yzk1YzU3
ODE2NmY0ZWJlNTZlN2RjZmZlNWUwNTliNGVlNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK1ZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBv
d25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJh
c2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK1ZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFja0xp
c3QoKQoreworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxWaWRl
b1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBwcnBU
cmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCisg
ICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsKKyAgICBtX2luYmFu
ZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCghdHJhY2stPm1lZGlh
RWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFj
ay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50
KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK1ZpZGVvVHJhY2sqIFZpZGVvVHJhY2tMaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHRvVmlkZW9UcmFjayhtX2luYmFuZFRyYWNrc1tpbmRl
eF0uZ2V0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK1ZpZGVvVHJhY2sqIFZpZGVvVHJhY2tM
aXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVmlkZW9UcmFj
ayogdHJhY2sgPSB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAgICAg
ICBpZiAodHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gdHJhY2s7CisgICAg
fQorICAgIHJldHVybiAwOworfQorCitsb25nIFZpZGVvVHJhY2tMaXN0OjpzZWxlY3RlZEluZGV4
KCkgY29uc3QKK3sKKyAgICAvLyA0LjguMTAuMTAuMSBBdWRpb1RyYWNrTGlzdCBhbmQgVmlkZW9U
cmFja0xpc3Qgb2JqZWN0cworICAgIC8vIFRoZSBWaWRlb1RyYWNrTGlzdC5zZWxlY3RlZEluZGV4
IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgaW5kZXggb2YgdGhlCisgICAgLy8gY3VycmVudGx5
IHNlbGVjdGVkIHRyYWNrLCBpZiBhbnkuIElmIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgZG9l
cyBub3QKKyAgICAvLyBjdXJyZW50bHkgcmVwcmVzZW50IGFueSB0cmFja3MsIG9yIGlmIG5vbmUg
b2YgdGhlIHRyYWNrcyBhcmUgc2VsZWN0ZWQsCisgICAgLy8gaXQgbXVzdCBpbnN0ZWFkIHJldHVy
biDiiJIxLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAg
ICAgICBWaWRlb1RyYWNrKiB0cmFjayA9IHRvVmlkZW9UcmFjayhtX2luYmFuZFRyYWNrc1tpXS5n
ZXQoKSk7CisgICAgICAgIGlmICh0cmFjay0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgIHJldHVy
biBpOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlk
ZW9UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yVmlkZW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNGZmZGM0Y2U2
Y2YzYjM4NTk4ODY5OWZjZjdmMTEwZGJkNzM0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tMaXN0X2gKKyNkZWZpbmUgVmlkZW9UcmFj
a0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0
QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2Ns
YXNzIFZpZGVvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVu
dCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7Cisg
ICAgfQorICAgIH5WaWRlb1RyYWNrTGlzdCgpOworCisgICAgVmlkZW9UcmFjayogZ2V0VHJhY2tC
eUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAgIGxvbmcgc2VsZWN0ZWRJbmRleCgp
IGNvbnN0OworCisgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25lZCkgY29uc3Q7CisgICAgdm9p
ZCBhcHBlbmQoUGFzc1JlZlB0cjxWaWRlb1RyYWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdldAor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCos
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDM2YWY2MjBiODQ0NTVhZjczOGRlYjE0ODQwNDE2M2Y0
YTU1MmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5pZGwKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0
aW9uYWw9VklERU9fVFJBQ0ssCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwK
KyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGlu
dGVyZmFjZSBWaWRlb1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoOworICAgIFZpZGVvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBWaWRlb1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRy
YWNrOworCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2
ZW50RXhjZXB0aW9uKTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MWZlZDM3YTRiOTY3MWUz
MWUzODI1MzRiMDQzOTA5NDNhYThiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja1ByaXZhdGVfaAorI2RlZmluZSBBdWRpb1RyYWNr
UHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBB
dWRpb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvVHJhY2tQcml2YXRlPiB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1ByaXZhdGUpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVk
aW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRl
KCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xp
ZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQq
IGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5h
YmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfTsKKyAgICB2aXJ0dWFs
IGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorCisgICAgZW51bSBL
aW5kIHsgQWx0ZXJuYXRpdmUsIERlc2NyaXB0aW9uLCBNYWluLCBNYWluRGVzYywgVHJhbnNsYXRp
b24sIENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IHsg
cmV0dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyBy
ZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBpbnQgYXVkaW9U
cmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgQXVkaW9U
cmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fZW5hYmxlZChmYWxzZSkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBi
b29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCA4N2U5NDI1NDQ5Y2NkMDBmZTg4Y2VjZDY3YmY5ZWM1NzU1NDA4NDYzLi5jNTIz
ODU4MGI5MTlmZGJhOTVkNTUyNGNlYWViNWIxNzQ2YjdkOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMTAzLDYgKzExMDMs
MjIgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxheWVyOjpjYWNoZWRSZXNvdXJjZUxv
YWRlcigpCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIE1lZGlhUGxheWVyOjph
ZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrKQoreworICAg
IGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZWRp
YVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKHRyYWNrKTsKK30KKwor
dm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQ
cml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3Zl
QXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXI6OmFkZFRleHRUcmFjayhQ
YXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHRyYWNrKQogewogICAgIGlmICghbV9t
ZWRpYVBsYXllckNsaWVudCkKQEAgLTExMTksNiArMTEzNSwyMiBAQCB2b2lkIE1lZGlhUGxheWVy
OjpyZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0cmFj
aykKICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFj
ayh0cmFjayk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2soUGFzc1JlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllckRpZEFkZFZpZGVvVHJhY2sodHJhY2spOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpyZW1v
dmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrKQoreworICAg
IGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZWRp
YVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKHRyYWNrKTsKK30K
KwogYm9vbCBNZWRpYVBsYXllcjo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggNTViOWUyZjJmODc0NmRkM2ZkNTdmZWI5ZDIxOGFmMWUxNWJlMGNjOC4uMWVmZDcz
YWZhNjRkNTZhMDk1ZGM0OTJkOTJlZmU2OTRkZGI4NDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMiwxMSArMzIsMTMgQEAKICNp
bmNsdWRlICJNZWRpYVBsYXllclByb3h5LmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgIkF1ZGlvVHJh
Y2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgpAQCAtMjE4LDggKzIyMCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigp
IHsgcmV0dXJuIDA7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZh
dGU+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikg
eyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQYXNz
UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4p
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2soUGFz
c1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hhbmdlZChjb25zdCBJbnRSZWN0JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYpIHsgfQpAQCAtNDQ5LDggKzQ1NSwxMiBAQCBwdWJsaWM6CiAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgdm9pZCBhZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGU+KTsKICAgICB2b2lkIGFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIGFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4pOworICAgIHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1
ZGlvVHJhY2tQcml2YXRlPik7CiAgICAgdm9pZCByZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CisgICAgdm9pZCByZW1vdmVWaWRlb1RyYWNrKFBhc3NS
ZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KTsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NjEwM2Ni
MTgxNWE1YzlhYTU2NDAyZTNiY2M0NWIzYmJiMTI4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCkBAIC0wLDAg
KzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja1ByaXZhdGVfaAorI2RlZmluZSBW
aWRlb1RyYWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9Cit9Owor
CitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvVHJhY2tQ
cml2YXRlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGUpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVmlkZW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVvVHJh
Y2tQcml2YXRlKCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChWaWRlb1RyYWNrUHJpdmF0ZUNs
aWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgVmlkZW9UcmFja1ByaXZh
dGVDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkgeyBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7IH07
CisgICAgdmlydHVhbCBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsg
fQorCisgICAgZW51bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIENhcHRpb25zLCBNYWluLCBTaWduLCBT
dWJ0aXRsZXMsIENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNv
bnN0IHsgcmV0dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29u
c3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwo
KSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBs
YW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBpbnQg
dmlkZW9UcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAg
VmlkZW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fc2VsZWN0ZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7
CisgICAgYm9vbCBtX3NlbGVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198010</attachid>
            <date>2013-04-14 14:09:53 -0700</date>
            <delta_ts>2013-04-15 13:11:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130414150928.patch</filename>
            <type>text/plain</type>
            <size>113219</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjkwYmNiYmY3MmQ5ZGQ1
ODVkZDNiZmQzM2E5Mjk1ZGY1OWYyMDlkYy4uNDRkOTY2OTkwNWI1N2JiYmQxNDAzYWY4MGFkZTUx
ZmY2NmFmNWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTE0ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNr
TGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2
ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFu
ZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRk
ZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBT
YW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0
VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5k
IHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFj
a3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdl
KTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFj
a3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDog
QWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFk
ZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRl
eHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBi
YXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1v
dmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRk
VGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBs
YXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQs
IGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0LTE0ICBBbmRyZWFz
IEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmx5IE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0cyBzaG91bGQgYmUgYWJsZSB0byBoYXZlIENTU09NIHdyYXBwZXJzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAzZDFlY2U5Y2U3NTI1N2UwNDg5YzhmMDljZmQ1MzQxMWVjODI3OTI1
Li5kMmYyMDJjY2MzYjkyNDI3OWY4YmU5ZTFjYWRmZTU2NjA4YjZmZjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjY4NSwxNCArMjY4NSwyMCBAQCBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1ZJ
REVPX1RSQUNLKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCisgICAgICAgIGh0
bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5pZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCiAgICAgICAgIGh0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
aWRsCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKICAgICAgICAgaHRtbC90
cmFjay9UcmFja0V2ZW50LmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCisg
ICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCiAgICAgKQogCiAgICAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAK
KyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKICAgICAgICAgaHRtbC90cmFj
ay9JbmJhbmRUZXh0VHJhY2suY3BwCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMjcwNiw2ICsyNzEy
LDggQEAgaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmNwcAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKICAgICAgICAg
aHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKIAogICAgICAg
ICBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKaW5kZXggNmI3Y2QwN2VjN2I0NTM5NDUxZTA1YzdmNTU3OGVmOTQ4ZTI0YTlkNy4uNGE0
YmFkYTBjM2I1N2IxNzhiNTAyNGUzMGQ0MWUxNjliYzllYjc5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLmNwcApAQCAtNDcyLDEyICs0NzIsMTYgQEAKICNpbmNsdWRlICJKU1RleHRFdmVudC5j
cHAiCiAjaW5jbHVkZSAiSlNUZXh0TWV0cmljcy5jcHAiCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5jcHAiCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrTGlz
dC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MVHJhY2tFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU1Rl
eHRUcmFjay5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWUuY3BwIgogI2luY2x1ZGUgIkpT
VGV4dFRyYWNrQ3VlTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0LmNwcCIKICNp
bmNsdWRlICJKU1RyYWNrRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5jcHAiCisj
aW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdC5jcHAiCiAjZW5kaWYKICNpbmNsdWRlICJKU1RpbWVS
YW5nZXMuY3BwIgogI2luY2x1ZGUgIkpTVG91Y2guY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggMGQ3YTY1ZDI3ZTkzYjY4ZDcwMGJlOGJlNjkzMGMxOTIyNjZiZDE0OC4uMTBk
ZWQ2MjhiZWY2NzBmYmJkYTk4YmI3M2ZjOTY0MDAyMGNiODc5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC00MzEsMTEgKzQzMSwxNSBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAg
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbCBcCisgICAgJChXZWJD
b3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCmluZGV4IGRiZWNhNDcxYTdjNjFjNzZjZjQyMDE1MTA4Njg1ODVmOTc3MjcyNGYu
Ljc5MDllMWFlNTFlM2E1Y2JjMTQ2OWNmNTcxNGE1YmY1NDUxOWIzMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKQEAgLTY1MiwxMSArNjUyLDE1IEBAIGVuYWJsZT8oR0FNRVBBRCkgewog
CiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQV0Qv
aHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAgICAg
JCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKyAgICAkJFBX
RC9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmlkbAogfQogCiBlbmFibGU/KE1FRElBX1NPVVJDRSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggNWI3NzIzOTE4ZDcxNjI1OGZjMjZlNmFiMGRjY2U1YTE3Njcw
N2U3NS4uNjI3NDc1MjY2MGE1MDBkODU2MzVlZDUyYmJlNzk5ZjIwZWE0ZmViOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02NSw2ICs2NSwxMCBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Byb2Nlc3NpbmdFdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Tb3VyY2VOb2RlLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNlTm9kZS5oIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1RyYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrTGlz
dC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrTGlzdC5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmFySW5mby5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNCYXJJbmZvLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCZWZvcmVMb2Fk
RXZlbnQuY3BwIFwKQEAgLTc3Nyw2ICs3ODEsMTAgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmFsaWRpdHlTdGF0ZS5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1ZvaWRDYWxsYmFjay5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmlkZW9U
cmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrLmggXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2F2ZVNoYXBlck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2F2ZVNo
YXBlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVUYWJsZS5jcHAgXApA
QCAtMTU4NiwxMSArMTU5NCwxNSBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKIAkkKFdlYkNvcmUp
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9z
aGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVk
aW9UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwg
XAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZUxpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5p
ZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisJJChXZWJDb3Jl
KS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRs
IFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCkBAIC0y
MzIwLDYgKzIzMzIsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmxvYkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ0RB
VEFTZWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0yNDc0LDYgKzI0ODksOSBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcCBcCkBAIC0zNzY3LDYgKzM3ODUsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lUmFuZ2VzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggXAor
CVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIFwKQEAgLTM3ODcs
NiArMzgwOSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlz
dEJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgXApAQCAtNTQ5Nyw2ICs1NTIz
LDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Jbml0aWFsaXplTG9nZ2luZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9ORU9OSGVscGVycy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04u
aCBcCkBAIC01Nzc3LDYgKzU4MDQsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1R5
cGVzZXR0aW5nRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VW5pdEJlemllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKaW5kZXggNWQ3ODAxMDQ5YzlkYWFjY2NlZjgyY2MxZTUwMDhiZTZlOWI4NzEw
YS4uNDBmOTI0YTIwODY0MDM5ZGNhMDIxNzY1YmEwNzg1NTM2NzZkODRkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CkBAIC0zOTY2LDkgKzM5NjYsMTMgQEAgZW5hYmxlPyhKQVZBU0NSSVBUX0RFQlVHR0VSKSB7CiAK
IGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgICBIRUFERVJTICs9IFwKKyAgICAgICAgYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRU
cmFja0N1c3RvbS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBodG1sL0hU
TUxUcmFja0VsZW1lbnQuaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKyAg
ICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9J
bmJhbmRUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2su
aCBcCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmggXApAQCAtMzk3OSwyMCArMzk4Mywz
MCBAQCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNl
LmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svVHJhY2tMaXN0QmFzZS5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAor
ICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogICAgICAgICBodG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIFwKICAg
ICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBcCiAgICAgICAgIGxvYWRlci9UZXh0
VHJhY2tMb2FkZXIuaCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2
YXRlLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xp
ZW50LmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAK
ICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNUcmFja0N1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwK
KyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3Ry
YWNrL0luYmFuZFRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBcCkBAIC00MDAz
LDYgKzQwMTcsOCBAQCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2sv
VHJhY2tCYXNlLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXAogICAg
ICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9W
aWRlb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwK
ICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVy
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggNzljOWUxMDI1OTNmZDBjMDA0OWU3NzJjMjFmZWMz
Mzk2YzQ1Y2JmMy4uYThmMmY4MTYxYzU0M2NkOGFmZjRmOGRlZWZiZmRkZmQ4Zjg1ZjAzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQpAQCAtMjE4LDExICsyMTgsMTUgQEAgZW5kaWYgKCkKIAogaWYgKEVOQUJM
RV9WSURFT19UUkFDSykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAg
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9K
U0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3Bw
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFj
a0V2ZW50Q3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20u
Y3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCiAgICAg
KQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCAwZjNmYjFmZmY4NGUxNzIzN2E5ZjhhOTMxMTcyYzEwYWVjYWZhYTBlLi4zZjQ4
NzdlNWU4MDg0MzIyYWEzM2YxZjhjYTVlZGYxOGE1YzA1MjEwIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk5MDIsNiArMjk5MDIsMTAgQEAK
IAkJCQlOYW1lPSJncmFwaGljcyIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcQml0bWFwSW1hZ2UuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMzAzNzgsNiArMzAz
ODIsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRlLmgiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xXaW5kUnVsZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjU3NDYsNiArNjU3NTQs
MjIgQEAKIAkJCQlOYW1lPSJ0cmFjayIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2suY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1RyYWNrLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFja0xpc3QuaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcdHJhY2tcSW5iYW5kVGV4dFRyYWNrLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1
ODI2LDYgKzY1ODUwLDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2suY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xWaWRl
b1RyYWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmNwcCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcVmlkZW9UcmFj
a0xpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxcdHJhY2tcV2ViVlRURWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMzg1MGJhOTM4NWFiNzAzOTVkN2EzZTU3MDVkYjU2MzQ3ZWY1ODYzNC4uOGFjZTg2Zjcx
YmMzOTAxNTY0MzliNGVkYzFjMDU5OWQxMTgwNGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTExMyw2ICs1MTEzLDE2IEBA
CiAJCUJDRkY2NDkyMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2
RjcgLyogTGVuZ3RoU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEJG
MTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLzsgfTsKIAkJQkU4OEUwQzIx
NzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFj
a0xpc3RCYXNlLmggKi87IH07CisJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1Ry
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUw
RDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrLmggKi87IH07CisJCUJFODhFMERCMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
RTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICovOyB9OworCQlC
RTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovOyB9OworCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBEMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi87IH07
CisJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBEMzE3MTVEMkEyMDA2NThE
OTggLyogVmlkZW9UcmFjay5oICovOyB9OworCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAq
LzsgfTsKKwkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBENjE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJQkVGMjlFRUIxNzE1REQw
OTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9U
cmFja1ByaXZhdGUuaCAqLzsgfTsKKwkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVv
VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLzsg
fTsKIAkJQzA0NkUxQUMxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA0NkUxQUIxMjA4
QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICovOyB9OwogCQlDMEMwNTRDQjEx
MThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEz
MDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE4NDIsOSArMTE4NTIsMjMgQEAKIAkJ
QkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNvcmVWaWV3Lm0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVWaWV3Lm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlC
RTg4RTBCRjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0xpc3RCYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkU4OEUwQzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDQzE3MTVEMkEyMDA2NThEOTggLyog
QXVkaW9UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRp
b1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0QxNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRTE3
MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QXVkaW9UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENGMTcx
NUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9U
cmFja0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvVHJhY2tMaXN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlk
ZW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQzMTcxNUQy
QTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZpZGVvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDQx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFZpZGVvVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENTE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCRTg4RTBENjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja0xpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDcxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVv
VHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFOTFGQzhCMDYxMzM2NjYwMDVFMzc5MCAv
KiBQb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU5MUZDOEMwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCUJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5
Ym9hcmRVSU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0
QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9UcmFja1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkVG
MjlFRUExNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMwNDZFMUFCMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJp
bmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsaXplZFN0
cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMERGQzg2RjBEQjY4NDFB
MDAzRUFFN0MgLyogSlNDb25zb2xlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ29uc29sZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
ZXJsOyBuYW1lID0gcHJlcHJvY2Vzc29yLnBtOyBwYXRoID0gc2NyaXB0cy9wcmVwcm9jZXNzb3Iu
cG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzY4NSw2ICsxNzcwOSwxOCBAQAog
CQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBB
dWRpb1RyYWNrLmNwcCAqLywKKwkJCQlCRTg4RTBDRDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9U
cmFjay5oICovLAorCQkJCUJFODhFMENFMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmlk
bCAqLywKKwkJCQlCRTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3Bw
ICovLAorCQkJCUJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oICov
LAorCQkJCUJFODhFMEQxMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5pZGwgKi8s
CisJCQkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovLAorCQkJ
CUJFODhFMEQzMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi8sCisJCQkJQkU4OEUw
RDQxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaWRsICovLAorCQkJCUJFODhFMEQ1MTcx
NUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi8sCisJCQkJQkU4OEUwRDYxNzE1
RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi8sCisJCQkJQkU4OEUwRDcxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLywKIAkJCQlCRTg4RTBCRjE3MTVDRTI2
MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi8sCiAJCQkJQkU4OEUwQzAxNzE1Q0UyNjAw
NjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLywKIAkJCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2
QzIgLyogSW5iYW5kVGV4dFRyYWNrLmNwcCAqLywKQEAgLTE4MzQyLDYgKzE4Mzc4LDggQEAKIAkJ
CQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKIAkJCQk0OTA3MDdF
NDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovLAogCQkJCTQ5MDcw
N0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovLAorCQkJCUJFRjI5
RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovLAorCQkJCUJFRjI5
RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovLAogCQkJCUE4OTk0
MzI3MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8sCiAJCQkJQTg5OTQzMjYw
QjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmggKi8sCiAJCQkJQjI3NTM1MzgwQjA1Mzgx
NDAwMkNFNjRGIC8qIENvbG9yLmNwcCAqLywKQEAgLTI0MDY3LDYgKzI0MTA1LDEyIEBACiAJCQkJ
RTE1MjU1MTUxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAw
RjIwNUY5IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
RTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkU4OEUwRDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJFODhFMERDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2su
aCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5IC8q
IEF1ZGlvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRUYyOUVFQzE3MTVERDA5
MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcwMTQs
NiArMjcwNTgsMTAgQEAKIAkJCQlFMTUyNTUxNjE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFCNTMzNDcxNzE3RDBBMTAwRjIwNUY5IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFj
a0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMERCMTcxNUQyQTIw
MDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBE
RTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
RTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpp
bmRleCBmMzIyZDY0Y2M3ZDE3YTdmYjc1NDAzZWFiZDIxOWJmZDNlZWQ5MTk3Li5lZWVlZWJhMTBh
MzJlNjVhMjk5YzJjYzBjYzc4MmY0MDhjZTMxNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KQEAgLTQzMywxOCArNDMzLDI0IEBAIHdlYmtp
dGd0a19nZG9tX2J1aWx0X2hfYXBpICs9IFwKIAogaWYgRU5BQkxFX1ZJREVPCiB3ZWJraXRndGtf
Z2RvbV9idWlsdF9oX2FwaSArPSBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50
LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
SFRNTFZpZGVvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVRleHRUcmFjay5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRk
aXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWUuaCBcCiAJ
JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJh
Y2tDdWVMaXN0LmggXAotCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVHJhY2tFdmVudC5oCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50LmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFjay5oIFwKKwkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmgKIHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnRQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnRQcml2YXRlLmggXAorCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmNwcCBcCkBAIC00NTMsNiArNDU5LDgg
QEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oCiBlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGQ1YzFlNDI3MzljZTY3ZDVkNTI3ZDMwYTMyZDkxNDA1NTkzNmEwYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tDdXN0b20uaCIKKworI2lu
Y2x1ZGUgIkpTQXVkaW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nh
c3Q8SlNBdWRpb1RyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBBdWRpb1RyYWNr
KiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9UcmFjay0+aW1w
bCgpKTtcCisKKyAgICAvLyBJZiB0aGUgdHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBp
dCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghanNBdWRpb1RyYWNrLT5oYXNDdXN0b21Qcm9w
ZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNv
bnRhaW5zT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2spKTsKK30KKwordm9pZCBKU0F1ZGlvVHJh
Y2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU0F1ZGlvVHJhY2sqIGpzQXVkaW9UcmFjayA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2sqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzQXVkaW9UcmFjaywgJnNfaW5m
byk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBB
U1NFUlQoanNBdWRpb1RyYWNrLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrLCB2aXNp
dG9yKTsKKworICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1Ry
YWNrKj4oanNBdWRpb1RyYWNrLT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChy
b290KGF1ZGlvVHJhY2spKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3Rv
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDhjZGUzYjE3MjBlOGQ2Y2NmYmQ2MTVjMjVlM2UzYzU1MjRlM2RkOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3Rv
bS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0F1ZGlvVHJhY2tDdXN0
b21faAorI2RlZmluZSBKU0F1ZGlvVHJhY2tDdXN0b21faAorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQXVkaW9U
cmFjay5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlND
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSB2b2lkKiByb290KEF1ZGlvVHJhY2sq
IHRyYWNrKQoreworICAgIC8vIFJldHVybiB0aGUgbWVkaWEgZWxlbWVudCdzIHJvb3QgaWYgaXQg
aGFzIG9uZS4KKyAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4g
cm9vdCh0cmFjay0+bWVkaWFFbGVtZW50KCkpOworCisgICAgLy8gTm8gbWVkaWEgZWxlbWVudCwg
cmV0dXJuIHRoZSB0ZXh0IHRyYWNrLgorICAgIHJldHVybiB0cmFjazsKK30KKworfQorCisjZW5k
aWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
VHJhY2tMaXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzYxNmIwZDRiOGFhOTI5NDIyZjA1YWQ3
NTQ5MzI0MDlhYTE2YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNs
dWRlICJKU0F1ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0F1ZGlvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrTGlzdCoganNBdWRp
b1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2Vs
bCgpKTsKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxB
dWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0
aGUgbGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFi
bGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5n
IHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBpZiAoYXVkaW9UcmFja0xpc3QtPmlzRmlyaW5n
RXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUg
bGlzdCBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMs
IGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCFhdWRpb1RyYWNrTGlzdC0+aGFzRXZlbnRM
aXN0ZW5lcnMoKSAmJiAhanNBdWRpb1RyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1l
ZGlhIGVsZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250
YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOworfQorCit2b2lk
IEpTQXVkaW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2tMaXN0KiBqc0F1ZGlvVHJhY2tMaXN0ID0g
anNDYXN0PEpTQXVkaW9UcmFja0xpc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGpzQXVkaW9UcmFja0xpc3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzQXVkaW9UcmFja0xpc3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2tMaXN0LCB2aXNpdG9yKTsKKworICAgIEF1ZGlv
VHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2tMaXN0Kj4o
anNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9v
dChhdWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOworICAgIGF1ZGlvVHJhY2tMaXN0LT52aXNpdEpT
RXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAppbmRleCAyYmExMGY1NTZlOGI0ODAyZThiYTk2NmZkMWQzY2UxMjQzMTI0MDU2Li41
MWFkZjM1ZTM0OWY4NGVkYTZmMDNhN2E0OTM5ZWMzZWRjNDRlZDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTM0LDYgKzM0
LDggQEAKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXJDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQXR0ckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNB
dWRpb1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU0Jsb2JDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ0RBVEFTZWN0aW9u
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NTU0ZvbnRGYWNlUnVsZUN1c3RvbS5jcHAiCkBAIC0x
NDcsNiArMTQ5LDggQEAKICNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U1RyYWNrRXZlbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJlZVdhbGtlckN1c3RvbS5jcHAi
CisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJh
Y2tMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NDA2OWQ1NGY5
NTRhNWIzMDEwYTQ1NWI5NjZiZTBmM2VjOWFkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRlICJKU1ZpZGVv
VHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citib29sIEpTVmlkZW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpTVmlkZW9UcmFj
ayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9
IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisKKyAgICAv
LyBJZiB0aGUgdHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hh
YmxlLgorICAgIGlmICghanNWaWRlb1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9v
dChyb290KHZpZGVvVHJhY2spKTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJh
Y2sqIGpzVmlkZW9UcmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlkZW9UcmFjaywgJnNfaW5mbyk7CisgICAgQ09NUElM
RV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1Ry
YWNrLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrLCB2aXNpdG9yKTsKKworICAgIFZp
ZGVvVHJhY2sqIHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1Ry
YWNrLT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2sp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzNzVl
NTY3ZTZiYTM4YTNmZDZkMmM5OTVhZjBjMWNkZjZhYjNkYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU1ZpZGVvVHJhY2tDdXN0b21faAorI2RlZmluZSBK
U1ZpZGVvVHJhY2tDdXN0b21faAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorI2luY2x1
ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2lubGluZSB2b2lkKiByb290KFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAg
IC8vIFJldHVybiB0aGUgbWVkaWEgZWxlbWVudCdzIHJvb3QgaWYgaXQgaGFzIG9uZS4KKyAgICBp
ZiAodHJhY2stPm1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+bWVk
aWFFbGVtZW50KCkpOworCisgICAgLy8gTm8gbWVkaWEgZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0
IHRyYWNrLgorICAgIHJldHVybiB0cmFjazsKK30KKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9t
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYmQ5NjcxMGQ2MDkzMTBjNzg3MmE3ZGY0M2I2Y2RiNDMzNWIxZDU3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVvVHJh
Y2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNO
b2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworYm9vbCBKU1ZpZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1RyYWNrTGlzdCA9IGpz
Q2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBWaWRl
b1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrTGlzdCo+
KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBpcyBmaXJp
bmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAg
IC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxp
c3RlbmVycy4KKyAgICBpZiAodmlkZW9UcmFja0xpc3QtPmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBoYXMgbm8gZXZl
bnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFj
aGFibGUuCisgICAgaWYgKCF2aWRlb1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAh
anNWaWRlb1RyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVsZW1lbnQgcGFy
ZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qo
cm9vdCh2aWRlb1RyYWNrTGlzdC0+b3duZXIoKSkpOworfQorCit2b2lkIEpTVmlkZW9UcmFja0xp
c3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1ZpZGVvVHJhY2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9U
cmFja0xpc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlkZW9U
cmFja0xpc3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzVmlkZW9UcmFja0xpc3QtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bihqc1ZpZGVvVHJhY2tMaXN0LCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2tMaXN0KiB2aWRl
b1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNrTGlz
dC0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrTGlz
dC0+b3duZXIoKSkpOworICAgIHZpZGVvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnMo
dmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCmluZGV4IDgyNzc3YTg2ZWVmZGZiZWJlNjg5YzliOTIzMzY4ODI5NTgz
OTFjM2UuLmVhMDc5OWJiNWQwZDczNGMwMWY0NjhhNjNlMWQ1YjIyMDVjZmI0YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBBdWRpb0NvbnRleHQ7CisgICAgY2xhc3MgQXVkaW9UcmFja0xpc3Q7CiAg
ICAgY2xhc3MgRGVkaWNhdGVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBET01BcHBsaWNhdGlv
bkNhY2hlOwogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTY3LDYgKzY4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFNvdXJjZUJ1ZmZlckxpc3Q7CiAgICAgY2xhc3MgVGV4dFRy
YWNrOwogICAgIGNsYXNzIFRleHRUcmFja0N1ZTsKKyAgICBjbGFzcyBWaWRlb1RyYWNrTGlzdDsK
ICAgICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogICAgIGNs
YXNzIFdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4
IDQ3NmQxYjUzZjE0NWJiMjczNDk4OTkzZjM5ZjFkMWNiYWE2MjM1ODMuLjhlYTViN2IwM2FiYWNh
MDJmMjVmNDhhMmVkNTU5OTI2M2VhNDcwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgpAQCAtMSw2ICsxLDcgQEAKIG5hbWVzcGFjZT0iRXZlbnRUYXJnZXQiCiAK
IEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0F1ZGlvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiBCYXR0ZXJ5TWFuYWdlciBjb25kaXRpb25hbD1CQVRURVJZX1NU
QVRVUwogRGVkaWNhdGVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBET01BcHBs
aWNhdGlvbkNhY2hlCkBAIC0zNyw2ICszOCw3IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRp
b25hbD1TVkcKIFRleHRUcmFjayBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNrQ3Vl
IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVP
X1RSQUNLCitWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogV2ViS2l0TmFt
ZWRGbG93CiBXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBjb25kaXRp
b25hbD1XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCAxZGQzMDFjNTgxYTY3NTMyNmRmNmU4MjkxZTNmZjI1YzA5NWM2OWU4Li4wNDViZGNkNThhYTg2
MDJlOWU3OGRiMjYzMGYyM2Y1ZGI5OGNiYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTk4LDYgKzk4LDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiQXVkaW9U
cmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5j
bHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFjay5oIgpA
QCAtMTA1LDYgKzEwNyw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0Lmgi
CisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0
ZS5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMjk2LDcgKzMwMCw5IEBA
IEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hh
bmdlKGZhbHNlKQogICAgICwgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZSgtMSkKICAgICAsIG1f
Y2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYykKKyAg
ICAsIG1fYXVkaW9UcmFja3MoMCkKICAgICAsIG1fdGV4dFRyYWNrcygwKQorICAgICwgbV92aWRl
b1RyYWNrcygwKQogICAgICwgbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUoMCkKICNlbmRpZgog
I2lmIEVOQUJMRShXRUJfQVVESU8pCkBAIC0zMzAsMTIgKzMzNiwyMiBAQCBIVE1MTWVkaWFFbGVt
ZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgaWYgKG1fYXVkaW9UcmFja3MpIHsKKyAgICAg
ICAgbV9hdWRpb1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fYXVk
aW9UcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogICAgIGlmIChtX3RleHRU
cmFja3MpCiAgICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOwogICAgIGlmIChtX3Rl
eHRUcmFja3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNr
cy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+Y2xl
YXJDbGllbnQoKTsKICAgICB9CisgICAgaWYgKG1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92
aWRlb1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV92aWRlb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdmlkZW9UcmFj
a3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAobV9t
ZWRpYUNvbnRyb2xsZXIpCkBAIC0xMzQ5LDYgKzEzNjUsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIH0K
IH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVk
aW9UcmFjayopCit7CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29u
dHJvbHMgaGVyZSBvbmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+
dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsKQEAgLTEzODgsNiArMTQw
OSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayogdHJhY2spCiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgp
KTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFuZ2UgdGhlIG1lZGlh
IGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAodHJh
Y2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5k
KCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBU
ZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCkBAIC0yNzkyLDYgKzI4MTgsMTYgQEAgZG91Ymxl
IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVk
aW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IEF1ZGlvVHJh
Y2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRBdWRpb1RyYWNrKHRyYWNrLmdl
dCgpKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRU
cmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQogewogICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
QEAgLTI4MjcsNiArMjg2MywzMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIGFkZFRl
eHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBw
cnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxWaWRlb1RyYWNr
PiB0cmFjayA9IFZpZGVvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRW
aWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4g
cHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fYXVkaW9UcmFj
a3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ug
d2UgY3JlYXRlZCB0aGUgQXVkaW9UcmFjayB3aXRoIHRoZSBBdWRpb1RyYWNrUHJpdmF0ZQorICAg
IC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2suCisgICAgUmVmUHRyPEF1
ZGlvVHJhY2s+IHRyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KHBycFRyYWNrLT5jbGll
bnQoKSk7CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlQXVk
aW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
PiBwcnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0yODQ0LDYgKzI5MDcsMjMgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRl
eHRUcmFja1AKICAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIH0KIAordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2soUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRo
aXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0aGUgVmlkZW9UcmFjayB3aXRoIHRo
ZSBWaWRlb1RyYWNrUHJpdmF0ZQorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBsYXllckRpZEFkZFZp
ZGVvVHJhY2suCisgICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gc3RhdGljX2Nhc3Q8Vmlk
ZW9UcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVtb3ZlVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKICNpZiBV
U0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRT
ZWxlY3RlZFRleHRUcmFjayhQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBwbGF0Zm9ybVRy
YWNrKQogewpAQCAtMjkyMCw2ICszMDAwLDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xv
c2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjphZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIGF1ZGlvVHJhY2tz
KCktPmFwcGVuZCh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRy
YWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2sp
OwpAQCAtMjkyNyw2ICszMDEyLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRy
YWNrKFRleHRUcmFjayogdHJhY2spCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwog
fQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJh
Y2spCit7CisgICAgdmlkZW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAg
IG1fYXVkaW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgVHJhY2tEaXNwbGF5
VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CkBAIC0yOTM4LDE4ICszMDMzLDMwIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiAgICAgY2xv
c2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgbV92aWRlb1RyYWNrcy0+
cmVtb3ZlKHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJh
bmRUcmFja3MoKQogewotICAgIGlmICghbV90ZXh0VHJhY2tzKQotICAgICAgICByZXR1cm47Cisg
ICAgaWYgKG1fYXVkaW9UcmFja3MpCisgICAgICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBt
X2F1ZGlvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlbW92ZUF1ZGlvVHJhY2sobV9h
dWRpb1RyYWNrcy0+aXRlbShsZW5ndGggLSAxKSk7CiAKLSAgICBUcmFja0Rpc3BsYXlVcGRhdGVT
Y29wZSBzY29wZSh0aGlzKTsKLSAgICBmb3IgKGludCBpID0gbV90ZXh0VHJhY2tzLT5sZW5ndGgo
KSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRU
cmFja3MtPml0ZW0oaSk7CisgICAgaWYgKG1fdGV4dFRyYWNrcykgeworICAgICAgICBUcmFja0Rp
c3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IG1fdGV4
dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgVGV4dFRy
YWNrKiB0cmFjayA9IG1fdGV4dFRyYWNrcy0+aXRlbShpKTsKIAotICAgICAgICBpZiAodHJhY2st
PnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQotICAgICAgICAgICAgcmVtb3ZlVGV4
dFRyYWNrKHRyYWNrKTsKKyAgICAgICAgICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4
dFRyYWNrOjpJbkJhbmQpCisgICAgICAgICAgICAgICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsK
KyAgICAgICAgfQogICAgIH0KKworICAgIGlmIChtX3ZpZGVvVHJhY2tzKQorICAgICAgICB3aGls
ZSAodW5zaWduZWQgbGVuZ3RoID0gbV92aWRlb1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAgICAg
ICByZW1vdmVWaWRlb1RyYWNrKG1fdmlkZW9UcmFja3MtPml0ZW0obGVuZ3RoIC0gMSkpOwogfQog
CiBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yOTg5LDYgKzMwOTYsMTcgQEAgUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFMKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsKIH0KIAorQXVk
aW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKK3sKKyAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICBtX2F1ZGlv
VHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV9hdWRpb1RyYWNrcy5nZXQo
KTsKK30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpIAog
ewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKQEAgLTMwMDAsNiArMzExOCwxNyBAQCBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tzKCkKICAgICByZXR1cm4gbV90ZXh0VHJhY2tzLmdldCgpOwogfQogCitW
aWRlb1RyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MoKQoreworICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzLmdl
dCgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayhIVE1MVHJh
Y2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFz
VGFnTmFtZSh0cmFja1RhZykpOwpAQCAtNDkxNyw3ICs1MDQ2LDkgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb24KICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNlLCAibWVkaWFTb3VyY2Ui
KTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlciht
X2F1ZGlvVHJhY2tzLCAiYXVkaW9UcmFja3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRU
cmFja3MsICJ0ZXh0VHJhY2tzIik7CisgICAgaW5mby5hZGRNZW1iZXIobV92aWRlb1RyYWNrcywg
InZpZGVvVHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzV2hlblJlc291
cmNlU2VsZWN0aW9uQmVnYW4sICJ0ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4i
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2N1ZVRyZWUsICJjdWVUcmVlIik7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9jdXJyZW50bHlBY3RpdmVDdWVzLCAiY3VycmVudGx5QWN0aXZlQ3VlcyIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMDg1ZTlkZmI4ODYwNDA3
ZWFkOTE5MWVjMjdjYWI0ZDkyYjk3NjYzLi5mYTJmOWY4ZmJlODBlMGIwZDk3N2Q1NzYyN2NmYzVj
YmFiMDRlNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzks
MTAgKzM5LDEyIEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRl
ICJBdWRpb1RyYWNrLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2lu
Y2x1ZGUgIlBPREludGVydmFsVHJlZS5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1
ZGUgIlRleHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw4ICs3MiwxMiBAQCBjbGFzcyBNZWRpYUtleXM7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0Owor
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGU7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOwog
Y2xhc3MgVGV4dFRyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OworY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGU7CiAKIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRvdWJsZSwgVGV4dFRyYWNr
Q3VlKj4gQ3VlSW50ZXJ2YWxUcmVlOwogdHlwZWRlZiBDdWVJbnRlcnZhbFRyZWU6OkludGVydmFs
VHlwZSBDdWVJbnRlcnZhbDsKQEAgLTg0LDcgKzkwLDkgQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50
ZXJ2YWw+IEN1ZUxpc3Q7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9y
dHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKyAgICAsIHByaXZhdGUgQXVkaW9UcmFja0NsaWVudAogICAgICwgcHJpdmF0
ZSBUZXh0VHJhY2tDbGllbnQKKyAgICAsIHByaXZhdGUgVmlkZW9UcmFja0NsaWVudAogI2VuZGlm
CiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAsIHB1YmxpYyBQbGF0Zm9y
bVRleHRUcmFja01lbnVDbGllbnQKQEAgLTIyNiwxMSArMjM0LDE4IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZFRleHRUcmFj
ayhraW5kLCBsYWJlbCwgZW1wdHlTdHJpbmcoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmco
KSwgZWMpOyB9CiAKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja3MoKTsKICAgICBUZXh0
VHJhY2tMaXN0KiB0ZXh0VHJhY2tzKCk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tz
KCk7CisKICAgICBDdWVMaXN0IGN1cnJlbnRseUFjdGl2ZUN1ZXMoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRseUFjdGl2ZUN1ZXM7IH0KIAorICAgIHZvaWQgYWRkQXVkaW9UcmFjayhBdWRpb1Ry
YWNrKik7CiAgICAgdm9pZCBhZGRUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCBhZGRW
aWRlb1RyYWNrKFZpZGVvVHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlvVHJhY2soQXVkaW9U
cmFjayopOwogICAgIHZvaWQgcmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQg
cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CiAgICAgdm9pZCByZW1vdmVBbGxJbmJhbmRU
cmFja3MoKTsKICAgICB2b2lkIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKICAgICB2b2lk
IG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CkBAIC0yMzgsOCArMjUzLDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxUcmFja0Vs
ZW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2so
UGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRWaWRl
b1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRS
ZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNz
UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAKICNpZiBVU0UoUExBVEZPUk1f
VEVYVF9UUkFDS19NRU5VKQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhQ
YXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPikgT1ZFUlJJREU7CkBAIC0yNzUsNiArMjk0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrRGlzcGxheSgpOwogICAgIHZv
aWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCisgICAgLy8gQXVkaW9UcmFja0NsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopOwor
CiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5
U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5k
Q2hhbmdlZChUZXh0VHJhY2sqKTsKQEAgLTI4NCw2ICszMDYsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwg
UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKIAorICAgIC8vIFZpZGVvVHJhY2tDbGllbnQKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKik7CisK
ICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKik7
CiAjZW5kaWYKQEAgLTY5OSw3ICs3MjQsOSBAQCBwcml2YXRlOgogCiAgICAgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIG1fY2FwdGlvbkRpc3BsYXlNb2RlOwogCisg
ICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0cjxUZXh0
VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CisgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3Zp
ZGVvVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrc1do
ZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwogCiAgICAgQ3VlSW50ZXJ2YWxUcmVlIG1fY3VlVHJl
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IGNlZDQxNzQ1
OWRhYmExMzVlZDAwNWVmNjU0ODZkMjVhZjZlMWNjZDUuLjA1YmMyZGQ4YzRmYjg4NGU3YmViZDY3
YjBjNzIzZTllNWQ1MThhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbApAQCAtMTE2LDcgKzExNiw5IEBAIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVzdChpbiBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyCiAjaWYgZGVm
aW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogVGV4dFRyYWNr
IGFkZFRleHRUcmFjayhpbiBET01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcg
bGFiZWwsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1YWdlKQogICAgIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRpb1RyYWNr
czsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7CityZWFkb25s
eSBhdHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CiAjZW5kaWYKIAogW1JlZmxl
Y3QsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWFHcm91
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
ZDU0M2ExZjcwYjk1NDc4Y2JmMjE5NTUxMjMyMTBmYjBkMzc0NmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAgKzEsMTYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFja0xp
c3QuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjphbHRl
cm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2NvbnN0IEF0
b21pY1N0cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRpb24sICgiZGVzY3Jp
cHRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJu
IGRlc2NyaXB0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5L
ZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
bWFpbiwgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiBtYWluOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6Om1haW5E
ZXNjS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbkRlc2M7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
QXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHRyYW5zbGF0aW9u
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3Jk
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVu
dGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKEF1
ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJh
Y2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQ
cml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBtX2lkKHRy
YWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUtPmVuYWJsZWQo
KSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUp
Cit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJp
dmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6
CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpEZXNjcmlwdGlvbjoKKyAg
ICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtp
bmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QXVkaW9UcmFja1ByaXZhdGU6Ok1haW5EZXNjOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6
Om1haW5EZXNjS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNr
UHJpdmF0ZTo6VHJhbnNsYXRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6dHJhbnNs
YXRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlL
ZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpO
b25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitBdWRpb1RyYWNrOjp+QXVkaW9UcmFjaygpCit7CisgICAgbV9wcml2YXRl
LT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAodmFsdWUgPT0gYWx0ZXJuYXRp
dmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBkZXNj
cmlwdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09
IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBt
YWluRGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09
IHRyYW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFs
dWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0RW5hYmxlZChjb25zdCBib29s
IGVuYWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRoaXMpOworfQorCitzaXpl
X3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0
ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9UcmFja0luZGV4KCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1Mzc1NzQ1MWFkYjJlM2ZiYjk1YzkyMjc4OTMwNDAzODNjMDM0
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2suaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlv
VHJhY2tfaAorI2RlZmluZSBBdWRpb1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNrOworCitjbGFz
cyBBdWRpb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrQ2xp
ZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRp
b1RyYWNrKikgPSAwOworfTsKKworY2xhc3MgQXVkaW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2Us
IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8QXVkaW9UcmFjaz4gY3JlYXRlKEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFz
c1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBh
bHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZXNj
cmlwdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5
d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5EZXNjS2V5d29yZCgp
OworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zbGF0aW9uS2V5d29yZCgpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgYm9vbCBlbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoY29uc3Qg
Ym9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBPVkVSUklERSB7IG1fY2xp
ZW50ID0gMDsgfQorICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpZW50OyB9CisKKyAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOworCitwcm90ZWN0
ZWQ6CisgICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiwgUGFzc1JlZlB0cjxBdWRpb1Ry
YWNrUHJpdmF0ZT4pOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChj
b25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKworICAgIEF0b21pY1N0cmluZyBt
X2lkOworICAgIGJvb2wgbV9lbmFibGVkOworICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50
OworCisgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9OworCitpbmxp
bmUgQXVkaW9UcmFjayogdG9BdWRpb1RyYWNrKFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgQVNT
RVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpBdWRpb1RyYWNrKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KHRyYWNrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWRiNjNjODVkZDk4MTg0ZTY2NWYxZGI2NDI3MWNhNDRiZGU2ZTMx
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFj
aGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZTM1NWI3M2ZmZGI0ZDc4MjZhY2VlNmZmZTliMjcyY2Y1N2E1ZjBlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgor
CisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChI
VE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
KyAgICA6IFRyYWNrTGlzdEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK0F1ZGlvVHJhY2tM
aXN0Ojp+QXVkaW9UcmFja0xpc3QoKQoreworfQorCit2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBl
bmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8QXVkaW9U
cmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1l
ZGlhIGZpbGUgb3JkZXIuCisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5k
ZXgoKTsKKyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFT
U0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBv
d25lcigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2No
ZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK0F1ZGlvVHJhY2sqIEF1
ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRl
eCA8IG1faW5iYW5kVHJhY2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHRvQXVkaW9UcmFjayht
X2luYmFuZFRyYWNrc1tpbmRleF0uZ2V0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlv
VHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIEF1ZGlvVHJhY2sqIHRyYWNrID0gdG9BdWRpb1RyYWNrKG1f
aW5iYW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQor
ICAgICAgICAgICAgcmV0dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTM0NGI4YmEzZDAwZDdkZTRlZDBiYmQ1M2FmMTU5N2E0Njc0YjI3ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3Rf
aAorI2RlZmluZSBBdWRpb1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisK
KyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0
QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNy
ZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qo
b3duZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICBB
dWRpb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKKyAg
ICBBdWRpb1RyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2b2lkIGFwcGVu
ZChQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYzFjZTA4YzI0Yzk0MDQxOTQwZDYzNzg4YjMwYjRlOTQ2YzY1ZWMxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5pZGwKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklE
RU9fVFJBQ0ssCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwKKyAgICBKU0N1
c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBB
dWRpb1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoOworICAgIEF1ZGlvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBB
dWRpb1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25h
ZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOworCisg
ICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCBy
ZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVh
biBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0
aW9uKTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5k
ZXggNWRkM2JlZjg0NjY5M2I1ZDk4N2ZkZmZmNjZiZDgwMTE1ODM2YjRjMS4uYmYzYTE4OGM3OTlh
NTU4Njk4NjRlNzllZTU1ZjY1ZWExZWRkYzYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoVHJhY2tCYXNlKikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVS
UklERTsKIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MzRhNWQ5ZDE4NThiZWRhYWM5ZjRlZDQ0MWM2MmQxMjEyOGQz
NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKwor
I2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRpdmUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFsdGVy
bmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNh
cHRpb25zLCAoImNhcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIGNhcHRpb25zLCAoIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgcmV0dXJuIGNhcHRpb25zOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgc2lnbiwgKCJzaWduIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzaWduOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgic3VidGl0bGVzIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzdWJ0aXRsZXM7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAo
ImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
cmV0dXJuIGNvbW1lbnRhcnk7Cit9CisKK1ZpZGVvVHJhY2s6OlZpZGVvVHJhY2soVmlkZW9UcmFj
a0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0cmFja1ByaXZh
dGUpCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUt
PmxhYmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAsIG1faWQodHJhY2tQcml2
YXRlLT5pZCgpKQorICAgICwgbV9zZWxlY3RlZCh0cmFja1ByaXZhdGUtPnNlbGVjdGVkKCkpCisg
ICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQorewor
ICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworCisgICAgc3dpdGNoIChtX3ByaXZhdGUt
PmtpbmQoKSkgeworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgorICAg
ICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM6CisgICAgICAgIHNl
dEtpbmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJh
Y2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQ
cml2YXRlOjpTaWduOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTdWJ0aXRsZXM6
CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAg
ICAgc2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChl
bXB0eVN0cmluZygpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworVmlkZW9UcmFj
azo6flZpZGVvVHJhY2soKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KDApOworfQorCiti
b29sIFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNv
bnN0Cit7CisgICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc2lnbktleXdvcmQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHN1YnRpdGxlc0tleXdvcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFZpZGVvVHJh
Y2s6OnNldFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCit7CisgICAgaWYgKG1fc2VsZWN0
ZWQgPT0gc2VsZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VsZWN0ZWQgPSBzZWxl
Y3RlZDsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnZpZGVvVHJhY2tT
ZWxlY3RlZENoYW5nZWQodGhpcyk7Cit9CisKK3NpemVfdCBWaWRlb1RyYWNrOjppbmJhbmRUcmFj
a0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT52aWRlb1RyYWNrSW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI2NDRk
NjY5N2NjNzM1ZjY3ZDM5OGZkNzBkYmZlZWYyNmI3YzFhMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC0wLDAgKzEsOTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisjZGVmaW5lIFZpZGVvVHJh
Y2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJhY2tDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikgPSAwOworfTsKKworY2xh
c3MgVmlkZW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0
ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gY3Jl
YXRlKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0
ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRl
b1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVv
VHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
KyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNv
bW1lbnRhcnlLZXl3b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1
bHRLaW5kS2V5d29yZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisg
ICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJDbGllbnQoKSBPVkVSUklERSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tDbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBzaXplX3QgaW5i
YW5kVHJhY2tJbmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNr
Q2xpZW50KiwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJpdmF0ZVRyYWNrKTsKKwor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1f
c2VsZWN0ZWQ7CisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8
VmlkZW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBWaWRlb1RyYWNrKiB0
b1ZpZGVvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBBU1NFUlQodHJhY2stPnR5cGUo
KSA9PSBUcmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWRl
b1RyYWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NTI2ZDMzMDcxNDdmMzFkZDI0ZGEyZDg1ZGZiMjA4NzIwYzcyNzAzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMCwwICsx
LDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAg
SlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZh
Y2UgVmlkZW9UcmFjayB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxh
bmd1YWdlOworCisgICAgYXR0cmlidXRlIGJvb2xlYW4gc2VsZWN0ZWQ7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzA3Yzk1
YzU3ODE2NmY0ZWJlNTZlN2RjZmZlNWUwNTliNGVlNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKQEAgLTAsMCArMSw5OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK1ZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50
KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlz
dEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK1ZpZGVvVHJhY2tMaXN0Ojp+VmlkZW9UcmFj
a0xpc3QoKQoreworfQorCit2b2lkIFZpZGVvVHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxW
aWRlb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBw
cnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIu
CisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsKKyAgICBtX2lu
YmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCghdHJhY2stPm1l
ZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0
cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2
ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK1ZpZGVvVHJhY2sqIFZpZGVvVHJhY2tMaXN0Ojpp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJh
Y2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHRvVmlkZW9UcmFjayhtX2luYmFuZFRyYWNrc1tp
bmRleF0uZ2V0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK1ZpZGVvVHJhY2sqIFZpZGVvVHJh
Y2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVmlkZW9U
cmFjayogdHJhY2sgPSB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAg
ICAgICBpZiAodHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gdHJhY2s7Cisg
ICAgfQorICAgIHJldHVybiAwOworfQorCitsb25nIFZpZGVvVHJhY2tMaXN0OjpzZWxlY3RlZElu
ZGV4KCkgY29uc3QKK3sKKyAgICAvLyA0LjguMTAuMTAuMSBBdWRpb1RyYWNrTGlzdCBhbmQgVmlk
ZW9UcmFja0xpc3Qgb2JqZWN0cworICAgIC8vIFRoZSBWaWRlb1RyYWNrTGlzdC5zZWxlY3RlZElu
ZGV4IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgaW5kZXggb2YgdGhlCisgICAgLy8gY3VycmVu
dGx5IHNlbGVjdGVkIHRyYWNrLCBpZiBhbnkuIElmIHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3Qg
ZG9lcyBub3QKKyAgICAvLyBjdXJyZW50bHkgcmVwcmVzZW50IGFueSB0cmFja3MsIG9yIGlmIG5v
bmUgb2YgdGhlIHRyYWNrcyBhcmUgc2VsZWN0ZWQsCisgICAgLy8gaXQgbXVzdCBpbnN0ZWFkIHJl
dHVybiDiiJIxLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICBWaWRlb1RyYWNrKiB0cmFjayA9IHRvVmlkZW9UcmFjayhtX2luYmFuZFRyYWNrc1tp
XS5nZXQoKSk7CisgICAgICAgIGlmICh0cmFjay0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
VmlkZW9UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yVmlkZW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNGZmZGM0
Y2U2Y2YzYjM4NTk4ODY5OWZjZjdmMTEwZGJkNzM0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tMaXN0X2gKKyNkZWZpbmUgVmlkZW9U
cmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tM
aXN0QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisK
K2NsYXNzIFZpZGVvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7
CisgICAgfQorICAgIH5WaWRlb1RyYWNrTGlzdCgpOworCisgICAgVmlkZW9UcmFjayogZ2V0VHJh
Y2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAgIGxvbmcgc2VsZWN0ZWRJbmRl
eCgpIGNvbnN0OworCisgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25lZCkgY29uc3Q7CisgICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxWaWRlb1RyYWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdl
dAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Qg
T1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVu
dCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDM2YWY2MjBiODQ0NTVhZjczOGRlYjE0ODQwNDE2
M2Y0YTU1MmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrTGlzdC5pZGwKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBFdmVudFRhcmdl
dCwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitd
IGludGVyZmFjZSBWaWRlb1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOworICAgIFZpZGVvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKKyAgICBWaWRlb1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92
ZXRyYWNrOworCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7
CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7
CisgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2Vz
KEV2ZW50RXhjZXB0aW9uKTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MWZlZDM3YTRiOTY3
MWUzMWUzODI1MzRiMDQzOTA5NDNhYThiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja1ByaXZhdGVfaAorI2RlZmluZSBBdWRpb1Ry
YWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9Cit9OworCitjbGFz
cyBBdWRpb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvVHJhY2tQcml2YXRl
PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1ByaXZhdGUpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1Ry
YWNrUHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QXVkaW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2
YXRlKCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCog
Y2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfTsKKyAgICB2aXJ0
dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorCisgICAgZW51
bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIERlc2NyaXB0aW9uLCBNYWluLCBNYWluRGVzYywgVHJhbnNs
YXRpb24sIENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3Qg
eyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBj
b25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5n
dWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBpbnQgYXVk
aW9UcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgQXVk
aW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fZW5hYmxlZChmYWxzZSkKKyAgICB7CisgICAg
fQorCitwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBtX2NsaWVudDsKKyAg
ICBib29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAppbmRleCA4N2U5NDI1NDQ5Y2NkMDBmZTg4Y2VjZDY3YmY5ZWM1NzU1NDA4NDYzLi5j
NTIzODU4MGI5MTlmZGJhOTVkNTUyNGNlYWViNWIxNzQ2YjdkOGNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMTAzLDYgKzEx
MDMsMjIgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxheWVyOjpjYWNoZWRSZXNvdXJj
ZUxvYWRlcigpCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIE1lZGlhUGxheWVy
OjphZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrKQorewor
ICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9t
ZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKHRyYWNrKTsKK30K
Kwordm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVt
b3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXI6OmFkZFRleHRUcmFj
ayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHRyYWNrKQogewogICAgIGlmICgh
bV9tZWRpYVBsYXllckNsaWVudCkKQEAgLTExMTksNiArMTEzNSwyMiBAQCB2b2lkIE1lZGlhUGxh
eWVyOjpyZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0
cmFjaykKICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRpZFJlbW92ZVRleHRU
cmFjayh0cmFjayk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2soUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVy
Q2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRp
YVBsYXllckRpZEFkZFZpZGVvVHJhY2sodHJhY2spOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpy
ZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrKQorewor
ICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9t
ZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKHRyYWNrKTsK
K30KKwogYm9vbCBNZWRpYVBsYXllcjo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggNTViOWUyZjJmODc0NmRkM2ZkNTdmZWI5ZDIxOGFmMWUxNWJlMGNjOC4uMWVm
ZDczYWZhNjRkNTZhMDk1ZGM0OTJkOTJlZmU2OTRkZGI4NDY1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMiwxMSArMzIsMTMgQEAK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByb3h5LmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgIkF1ZGlv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgpAQCAtMjE4LDggKzIyMCwxMiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRl
cigpIHsgcmV0dXJuIDA7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGU+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRl
PikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2so
UGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hhbmdlZChjb25zdCBJbnRSZWN0JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgSW50UmVjdCYpIHsgfQpAQCAtNDQ5LDggKzQ1NSwxMiBAQCBwdWJsaWM6CiAg
ICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisgICAgdm9pZCBhZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+KTsKICAgICB2b2lkIGFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIGFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4pOworICAgIHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRy
PEF1ZGlvVHJhY2tQcml2YXRlPik7CiAgICAgdm9pZCByZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CisgICAgdm9pZCByZW1vdmVWaWRlb1RyYWNrKFBh
c3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KTsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50
YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NjEw
M2NiMTgxNWE1YzlhYTU2NDAyZTNiY2M0NWIzYmJiMTI4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja1ByaXZhdGVfaAorI2RlZmlu
ZSBWaWRlb1RyYWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9Cit9
OworCitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvVHJh
Y2tQcml2YXRlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGUp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVmlkZW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVv
VHJhY2tQcml2YXRlKCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChWaWRlb1RyYWNrUHJpdmF0
ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgVmlkZW9UcmFja1By
aXZhdGVDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkgeyBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7
IH07CisgICAgdmlydHVhbCBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rl
ZDsgfQorCisgICAgZW51bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIENhcHRpb25zLCBNYWluLCBTaWdu
LCBTdWJ0aXRsZXMsIENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkg
Y29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFi
ZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBp
bnQgdmlkZW9UcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgVmlkZW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fc2VsZWN0ZWQoZmFsc2UpCisgICAg
eworICAgIH0KKworcHJpdmF0ZToKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGll
bnQ7CisgICAgYm9vbCBtX3NlbGVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198174</attachid>
            <date>2013-04-15 13:11:54 -0700</date>
            <delta_ts>2013-04-15 14:10:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130415141128.patch</filename>
            <type>text/plain</type>
            <size>117861</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA2ZWMwMjU2YWQ3Mjgx
ODczNWVmODIyNTAwMGRiODE2NDlhZTlhZS4uYzJjMWE1MWJjNDQxMWUxYzcwMDI4YmU4MDJhMjM5
Mjk1NDc5NDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTEyICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNr
TGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2
ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFu
ZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRk
ZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBT
YW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0
VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5k
IHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFj
a3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdl
KTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFj
a3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDog
QWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFk
ZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRl
eHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBi
YXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1v
dmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRk
VGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBs
YXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQs
IGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0LTE1ICBSb2JlcnQg
SG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBBbiBpbmxpbmUgZWxlbWVudCB3
aXRoIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBjaGlsZCBkb2VzIG5vdCBjb3JyZWN0bHkgY2Fs
Y3VsYXRlL3JlbmRlciBwYWRkaW5nIGFuZCBtYXJnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
M2QxZWNlOWNlNzUyNTdlMDQ4OWM4ZjA5Y2ZkNTM0MTFlYzgyNzkyNS4uZDJmMjAyY2NjM2I5MjQy
NzlmOGJlOWUxY2FkZmU1NjYwOGI2ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI2ODUs
MTQgKzI2ODUsMjAgQEAgZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBs
aXN0KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJh
Y2suaWRsCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCiAgICAgICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5p
ZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAogICAgICAgICBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5p
ZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNr
L1ZpZGVvVHJhY2tMaXN0LmlkbAogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNr
LmNwcAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAogICAgICAgICBo
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTI3MDYsNiArMjcxMiw4IEBAIGlmIChFTkFCTEVf
VklERU9fVFJBQ0spCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKICAgICAg
ICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRU
VG9rZW5pemVyLmNwcAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCisgICAgICAg
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCiAKICAgICAgICAgbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDZiN2Nk
MDdlYzdiNDUzOTQ1MWUwNWM3ZjU1NzhlZjk0OGUyNGE5ZDcuLjRhNGJhZGEwYzNiNTdiMTc4YjUw
MjRlMzBkNDFlMTY5YmM5ZWI3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTQ3
MiwxMiArNDcyLDE2IEBACiAjaW5jbHVkZSAiSlNUZXh0RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpT
VGV4dE1ldHJpY3MuY3BwIgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1
ZGlvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuY3BwIgogI2luY2x1ZGUg
IkpTSFRNTFRyYWNrRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2lu
Y2x1ZGUgIkpTVGV4dFRyYWNrQ3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2
ZW50LmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9U
cmFja0xpc3QuY3BwIgogI2VuZGlmCiAjaW5jbHVkZSAiSlNUaW1lUmFuZ2VzLmNwcCIKICNpbmNs
dWRlICJKU1RvdWNoLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBkN2E2
NWQyN2U5M2I2OGQ3MDBiZThiZTY5MzBjMTkyMjY2YmQxNDguLjEwZGVkNjI4YmVmNjcwZmJiZGE5
OGJiNzNmYzk2NDAwMjBjYjg3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
NDMxLDExICs0MzEsMTUgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9B
dWRpb1RyYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAg
ICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVj
dG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBk
YmVjYTQ3MWE3YzYxYzc2Y2Y0MjAxNTEwODY4NTg1Zjk3NzI3MjRmLi43OTA5ZTFhZTUxZTNhNWNi
YzE0NjljZjU3MTRhNWJmNTQ1MTliMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBA
IC02NTIsMTEgKzY1MiwxNSBAQCBlbmFibGU/KEdBTUVQQUQpIHsKIAogZW5hYmxlPyhWSURFT19U
UkFDSykgewogICBJRExfQklORElOR1MgKz0gXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKICAg
ICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0
LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQ
V0QvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKIH0K
IAogZW5hYmxlPyhNRURJQV9TT1VSQ0UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDFlNmVkZGM0MzE4MTI4M2FlMWQ3MDhmMWRmYzAyOTAyYTE5OGQ4ZmIuLjlhYTAyODQ4NzU0
MjMxZDRlMzY1YjhlNzk1MDg1OTc4MjA1ODFlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtNjUsNiArNjUsMTAgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb1NvdXJjZU5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFjay5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0JhckluZm8uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmFySW5mby5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmVmb3JlTG9hZEV2ZW50LmNwcCBcCkBAIC03
NzcsNiArNzgxLDEwIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1ZhbGlkaXR5U3RhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1ZvaWRDYWxsYmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJh
Y2suaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZpZGVvVHJhY2suY3BwIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTVmlkZW9UcmFjay5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTVmlkZW9UcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmlk
ZW9UcmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2Rl
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2RlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlVGFibGUuY3BwIFwKQEAgLTE1ODYsMTEgKzE1OTQs
MTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBc
CiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUp
L2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBc
CiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAJJChXZWJD
b3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAJJChXZWJDb3JlKS9p
bnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXApAQCAtMjMyMCw2ICsyMzMyLDkgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291
cmNlTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
Q3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5v
ZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3RvbS5j
cHAgXApAQCAtMjQ3NCw2ICsyNDg5LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgXApAQCAtMzc2
Nyw2ICszNzg1LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg3LDYgKzM4MDksMTAgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwKQEAgLTU0OTcsNiArNTUyMyw3IEBAIHdlYmNvcmVfcGxh
dGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6ZUxv
Z2dpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRC
cmlkZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNr
UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dy
YXBoaWNzQ29udGV4dDNETkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jcHUvYXJtL2ZpbHRlcnMvTkVPTkhlbHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3Nyw2ICs1
ODA0LDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1cmVz
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IDVkNzgwMTA0OWM5ZGFhY2NjZWY4MmNjMWU1MDA4YmU2ZTliODcxMGEuLjQwZjkyNGEyMDg2NDAz
OWRjYTAyMTc2NWJhMDc4NTUzNjc2ZDg0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2Niw5ICszOTY2
LDEzIEBAIGVuYWJsZT8oSkFWQVNDUklQVF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVPX1RS
QUNLKSB7CiAgICAgSEVBREVSUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFj
a0N1c3RvbS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmgg
XAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgg
XAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggXAogICAgICAgICBodG1s
L3RyYWNrL1RleHRUcmFjay5oIFwKQEAgLTM5NzksMjAgKzM5ODMsMzAgQEAgZW5hYmxlPyhWSURF
T19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICAgICAgaHRt
bC90cmFjay9UcmFja0V2ZW50LmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
aCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBc
CiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
V2ViVlRUVG9rZW5pemVyLmggXAogICAgICAgICBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAor
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggXAogCiAgICAgU09VUkNFUyArPSBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
IFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogICAg
ICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5jcHAgXApAQCAtNDAwMyw2ICs0MDE3LDggQEAgZW5h
YmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgXAog
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAor
ICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCmluZGV4IDc5YzllMTAyNTkzZmQwYzAwNDllNzcyYzIxZmVjMzM5NmM0NWNiZjMuLmE4ZjJm
ODE2MWM1NDNjZDhhZmY0ZjhkZWVmYmZkZGZkOGY4NWYwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAg
LTIxOCwxMSArMjE4LDE1IEBAIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0N1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5n
cy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJh
Y2tDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAK
KyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBiaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICkKIGVuZGlmICgpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMGYzZmIx
ZmZmODRlMTcyMzdhOWY4YTkzMTE3MmMxMGFlY2FmYWEwZS4uM2Y0ODc3ZTVlODA4NDMyMmFhMzNm
MWY4Y2E1ZWRmMThhNWMwNTIxMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTI5OTAyLDYgKzI5OTAyLDEwIEBACiAJCQkJTmFtZT0iZ3JhcGhp
Y3MiCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcQXVkaW9UcmFja1ByaXZhdGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEJpdG1hcEltYWdlLmNw
cCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTMwMzc4LDYgKzMwMzgyLDEwIEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xWaWRlb1RyYWNrUHJpdmF0ZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcV2luZFJ1bGUuaCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1NzQ2LDYgKzY1NzU0LDIyIEBACiAJCQkJTmFtZT0i
dHJhY2siCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFj
a1xBdWRpb1RyYWNrLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFjay5oIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1Ry
YWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEluYmFuZFRl
eHRUcmFjay5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02NTgyNiw2ICs2NTg1MCwyMiBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFx0cmFja1xWaWRlb1RyYWNrLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcVmlkZW9UcmFjay5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFj
a1xWaWRlb1RyYWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNr
XFdlYlZUVEVsZW1lbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWUxMjllZmU0
ZGM0ZWM1ZjJkMDExNTU5ZTNlNDkwODVlY2QzOWEuLjA1NTU0NDkxYjRlMmUwY2FiMjU0NDVlNGU1
ZDdiNTE5ODRiNzJmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMTUsNiArNTExNSwyNCBAQAogCQlCQ0ZGNjQ5MjBFQUQx
NUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNGRjY0OTAwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCRTg4
RTBDMTE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBCRjE3MTVDRTI2MDA2NThEOTgg
LyogVHJhY2tMaXN0QmFzZS5jcHAgKi87IH07CiAJCUJFODhFMEMyMTcxNUNFMjYwMDY1OEQ5OCAv
KiBUcmFja0xpc3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBDMDE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oICovOyB9
OworCQlCRTg4RTBEODE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBDQzE3MTVEMkEyMDA2
NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi87IH07CisJCUJFODhFMEQ5MTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBDRDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5oICovOyB9Owor
CQlCRTg4RTBEQjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQ0YxNzE1RDJBMjAw
NjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJQkU4OEUwREMxNzE1RDJBMjAw
NjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xp
c3QuaCAqLzsgfTsKKwkJQkU4OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDIx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovOyB9OworCQlCRTg4RTBERjE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2su
aCAqLzsgfTsKKwkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQ1
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFODhFMEUy
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2tMaXN0LmggKi87IH07CisJCUJFOEVGMDQyMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1
ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi87IH07CisJ
CUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDNGMTcxQzhGRjkwMDlCNDhD
MyAvKiBKU0F1ZGlvVHJhY2suaCAqLzsgfTsKKwkJQkU4RUYwNDQxNzFDOEZGOTAwOUI0OEMzIC8q
IEpTQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3Qu
Y3BwICovOyB9OworCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYw
NDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJQkU4RUYw
NEExNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NjE3MUM5MDE0MDA5QjQ4QzMgLyog
SlNWaWRlb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNEIxNzFDOTAxNDAwOUI0OEMzIC8qIEpT
VmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovOyB9OworCQlC
RThFRjA0QzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0ODE3MUM5MDE0MDA5
QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFOEVGMDREMTcxQzkwMTQw
MDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0OTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1Ry
YWNrTGlzdC5oICovOyB9OworCQlCRUYyOUVFQjE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFj
a1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovOyB9Owor
CQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFRjI5RUVBMTcxNUREMDkw
MEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovOyB9OwogCQlDMDQ2RTFBQzEyMDhBOUZF
MDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxp
emVkU3RyaW5ncy5jcHAgKi87IH07CiAJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAvKiBDb2Rl
R2VuZXJhdG9yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0gKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBDMDU0Q0MxMTE4QzhF
NDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8qIGdlbmVy
YXRlLWJpbmRpbmdzLnBsICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMTg0Niw5ICsxMTg2NCwzMSBAQAogCQlCRTg1NjA1MTA3MDFGOTExMDAyMzk3
NjkgLyogV2ViQ29yZVZpZXcubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5vYmpjOyBwYXRoID0gV2ViQ29yZVZpZXcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJFODhFMEJGMTcxNUNFMjYwMDY1OEQ5
OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRyYWNrTGlzdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTg4
RTBDMDE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUcmFja0xpc3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENFMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb1RyYWNrLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDAxNzE1
RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvVHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJFODhFMEQxMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gQXVkaW9UcmFja0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCRTg4RTBEMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENDE3MTVEMkEyMDA2NThEOTggLyogVmlk
ZW9UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlkZW9UcmFjay5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRl
b1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ2MTcx
NUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCRTg4RTBENzE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0F1ZGlvVHJhY2suY3BwOyBwYXRo
ID0gSlNBdWRpb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYw
M0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBKU0F1ZGlvVHJhY2suaDsgcGF0aCA9IEpTQXVkaW9UcmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNB
dWRpb1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
U0F1ZGlvVHJhY2tMaXN0LmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRp
b1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0F1ZGlvVHJh
Y2tMaXN0Lmg7IHBhdGggPSBKU0F1ZGlvVHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJFOEVGMDQ2MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNWaWRlb1RyYWNrLmNwcDsgcGF0
aCA9IEpTVmlkZW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVG
MDQ3MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSlNWaWRlb1RyYWNrLmg7IHBhdGggPSBKU1ZpZGVvVHJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDgxNzFDOTAxNDAwOUI0OEMzIC8qIEpT
VmlkZW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SlNWaWRlb1RyYWNrTGlzdC5jcHA7IHBhdGggPSBKU1ZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDkxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlk
ZW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNWaWRlb1Ry
YWNrTGlzdC5oOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUJFOTFGQzhDMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlC
RTk4M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVLZXli
b2FyZFVJTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKKwkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFRjI5RUVBMTcxNUREMDkwMEM0QjRD
OSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWaWRlb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDQ2
RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZWRTdHJpbmdzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBERkM4NkYwREI2ODQxQTAwM0VBRTdDIC8qIEpTQ29uc29s
ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbnNv
bGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEYyQTQzRjEzODY5
QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nl
c3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY2ODksNiArMTY3MjksMTAgQEAKIAkJCQk0OUVFQ0VGMzEwNTA3MEM0
MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVDRjE5MTA1MDcyRjMwMDA5
OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgKi8sCiAJCQkJNDlFRUNGMUExMDUwNzJGMzAw
MDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8sCisJCQkJQkU4RUYwM0UxNzFDOEZGOTAw
OUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4RUYwM0YxNzFDOEZGOTAwOUI0
OEMzIC8qIEpTQXVkaW9UcmFjay5oICovLAorCQkJCUJFOEVGMDQwMTcxQzhGRjkwMDlCNDhDMyAv
KiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMg
LyogSlNBdWRpb1RyYWNrTGlzdC5oICovLAogCQkJCTY1REYzMjMzMDlEMURFNjUwMDBCRTMyNSAv
KiBKU0NhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk2NURGMzIzNDA5RDFERTY1MDAwQkUzMjUg
LyogSlNDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTY1REYzMjM1MDlEMURFNjUwMDBCRTMyNSAv
KiBKU0NhbnZhc1BhdHRlcm4uY3BwICovLApAQCAtMTY5MjMsNiArMTY5NjcsMTAgQEAKIAkJCQk5
MTA4OUQzMDE0QzMzNUNEMDA1QUZDNDkgLyogSlNVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJ
CTE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwICovLAogCQkJ
CTE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCAqLywKKwkJCQlC
RThFRjA0NjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCAqLywKKwkJCQlCRThF
RjA0NzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggKi8sCisJCQkJQkU4RUYwNDgx
NzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3BwICovLAorCQkJCUJFOEVGMDQ5
MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi8sCiAJCQkJOTdFOUVDOEIx
NURDNDkyRjAwNEYyRTcxIC8qIEpTVm9pZENhbGxiYWNrLmNwcCAqLywKIAkJCQk5N0U5RUM4QzE1
REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suaCAqLywKIAkJCQlBN0QyMEY2MDEwN0Y0
MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3BwICovLApAQCAtMTc2OTEsNiArMTc3
MzksMTggQEAKIAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCRTg4RTBDQzE3MTVEMkEyMDA2
NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4OEUwQ0QxNzE1RDJBMjAwNjU4RDk4
IC8qIEF1ZGlvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBDRTE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJh
Y2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFj
a0xpc3QuaCAqLywKKwkJCQlCRTg4RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xp
c3QuaWRsICovLAorCQkJCUJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNw
cCAqLywKKwkJCQlCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oICovLAor
CQkJCUJFODhFMEQ0MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmlkbCAqLywKKwkJCQlC
RTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwICovLAorCQkJCUJF
ODhFMEQ2MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oICovLAorCQkJCUJFODhF
MEQ3MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5pZGwgKi8sCiAJCQkJQkU4OEUw
QkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovLAogCQkJCUJFODhFMEMw
MTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi8sCiAJCQkJMDc5NDE3OEYxNjZF
ODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi8sCkBAIC0xODM0OCw2ICsxODQw
OCw4IEBACiAJCQkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8sCiAJ
CQkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLywK
IAkJCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLywK
KwkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLywK
KwkJCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLywK
IAkJCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwICovLAogCQkJ
CUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovLAogCQkJCUIyNzUz
NTM4MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgKi8sCkBAIC0yNDA3NCw2ICsyNDEzNiwx
NiBAQAogCQkJCUUxNTI1NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQjUzMzQ5
MTcxN0RFRTMwMEYyMDVGOSAvKiBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJFODhFMEQ5MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFj
a0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBW
aWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFRjI5RUVCMTcxNUREMDkw
MEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkVGMjlF
RUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCRThFRjA0MzE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkU4RUYwNEIxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9U
cmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8qIEpT
VmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcwMjIsNiArMjcwOTQsMTQgQEAK
IAkJCQlFMTUyNTUxNjE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCNTMzNDcxNzE3
RDBBMTAwRjIwNUY5IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMERCMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBERTE3MTVEMkEyMDA2NThE
OTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBFMTE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4RUYw
NDIxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCRThFRjA0NDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlCRThFRjA0QTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDRDMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVv
VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggZjMyMmQ2NGNjN2QxN2E3ZmI3NTQwM2VhYmQy
MTliZmQzZWVkOTE5Ny4uZWVlZWViYTEwYTMyZTY1YTI5OWMyY2MwY2M3ODJmNDA4Y2UzMTYzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBA
IC00MzMsMTggKzQzMywyNCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlm
IEVOQUJMRV9WSURFTwogd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwK
KwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlv
VHJhY2tMaXN0LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJ
JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJh
Y2tMaXN0LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlLmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikv
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwK
KwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVv
VHJhY2suaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01WaWRlb1RyYWNrTGlzdC5oCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJp
dmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxl
bWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9F
bGVtZW50UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVk
aW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1Ry
YWNrTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJh
Y2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJp
dmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlz
dC5jcHAgXApAQCAtNDUzLDYgKzQ1OSw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2
YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVM
aXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1
ZUxpc3RQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRl
b1RyYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJh
Y2tMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZl
bnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFBy
aXZhdGUuaAogZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
VHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWMxZTQyNzM5Y2U2N2Q1ZDUyN2QzMGEzMmQ5
MTQwNTU5MzZhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNB
dWRpb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9U
cmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0PEpTQXVkaW9UcmFjayo+KGhhbmRsZS5nZXQoKS5h
c0NlbGwoKSk7CisgICAgQXVkaW9UcmFjayogYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlv
VHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwoKSk7XAorCisgICAgLy8gSWYgdGhlIHRyYWNrIGhh
cyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpz
QXVkaW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNr
KSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sg
PSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhqc0F1ZGlvVHJhY2ssICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKGpzQXVkaW9UcmFjaywgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1Ry
YWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4Y2RlM2IxNzIwZThkNmNjZmJkNjE1
YzI1ZTNlM2M1NTI0ZTNkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKyNkZWZpbmUgSlNBdWRpb1RyYWNrQ3VzdG9t
X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20u
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxp
bmUgdm9pZCogcm9vdChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1l
ZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhhcyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKwor
ICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQsIHJldHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1
cm4gdHJhY2s7Cit9CisKK30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWM2MTZiMGQ0YjhhYTkyOTQyMmYwNWFkNzU0OTMyNDA5YWExNmFkOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3Bw
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRp
b1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNr
TGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlv
VHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0
LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVy
cywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBp
cyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYg
KGF1ZGlvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQg
aGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICgh
YXVkaW9UcmFja0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFja0xpc3Qt
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
SXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUu
CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xp
c3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBKU0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNr
TGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2tMaXN0LCAmc19pbmZv
KTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFT
U0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrTGlz
dCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0
aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAg
ICBhdWRpb1RyYWNrTGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMmJhMTBmNTU2ZThiNDgwMmU4
YmE5NjZmZDFkM2NlMTI0MzEyNDA1Ni4uNTFhZGYzNWUzNDlmODRlZGE2ZjAzYTdhNDkzOWVjM2Vk
YzQ0ZWQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmNw
cCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0F0dHJD
dXN0b20uY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0N1c3RvbS5jcHAiCisjaW5jbHVkZSAi
SlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNCbG9iQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NGb250
RmFjZVJ1bGVDdXN0b20uY3BwIgpAQCAtMTQ3LDYgKzE0OSw4IEBACiAjaW5jbHVkZSAiSlNUcmFj
a0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1RyZWVXYWxrZXJDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3RvbS5j
cHAiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5
ZnJhbWVzUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDQwNjlkNTRmOTU0YTViMzAxMGE0NTViOTY2YmUwZjNlYzlhZGEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3Rv
bS5oIgorCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU1ZpZGVvVHJhY2tPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9U
cmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAg
IFZpZGVvVHJhY2sqIHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRl
b1RyYWNrLT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJv
cGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzVmlkZW9UcmFjay0+aGFz
Q3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrKSk7Cit9CisKK3ZvaWQg
SlNWaWRlb1RyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBqc1ZpZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRl
b1RyYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJh
Y2ssICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7CisgICAgQVNTRVJUKGpzVmlkZW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9U
cmFjaywgdmlzaXRvcik7CisKKyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nh
c3Q8VmlkZW9UcmFjayo+KGpzVmlkZW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1
c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNlMzc1ZTU2N2U2YmEzOGEzZmQ2ZDJjOTk1YWYwYzFjZGY2YWIz
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tDdXN0b20uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNWaWRl
b1RyYWNrQ3VzdG9tX2gKKyNkZWZpbmUgSlNWaWRlb1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJKU05vZGVDdXN0b20uaCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCogcm9vdChW
aWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyBy
b290IGlmIGl0IGhhcyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlh
IGVsZW1lbnQsIHJldHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisK
K30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJkOTY3MTBkNjA5MzEw
Yzc4NzJhN2RmNDNiNmNkYjQzMzViMWQ1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrTGlzdE93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xp
c3QqIGpzVmlkZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGhhbmRsZS5n
ZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3Rh
dGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworCisg
ICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIg
aXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBm
b3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKHZpZGVvVHJhY2tMaXN0
LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBw
cm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghdmlkZW9UcmFja0xpc3Qt
Pmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzVmlkZW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3Bl
cnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxl
IGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZp
c2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsK
K30KKwordm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1Ry
YWNrTGlzdCA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJh
Y2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrTGlzdCwgdmlzaXRvcik7CisK
KyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1Ry
YWNrTGlzdCo+KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICB2aWRlb1RyYWNrTGlz
dC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA4Mjc3N2E4NmVl
ZmRmYmViZTY4OWM5YjkyMzM2ODgyOTU4MzkxYzNlLi5lYTA3OTliYjVkMGQ3MzRjMDFmNDY4YTYz
ZTFkNWIyMjA1Y2ZiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNDEsNiArNDEs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXVkaW9Db250ZXh0OworICAg
IGNsYXNzIEF1ZGlvVHJhY2tMaXN0OwogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQ7
CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBA
IC02Nyw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTb3VyY2VCdWZm
ZXJMaXN0OwogICAgIGNsYXNzIFRleHRUcmFjazsKICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7Cisg
ICAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNz
IFdlYktpdE5hbWVkRmxvdzsKICAgICBjbGFzcyBXb3JrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA0NzZkMWI1M2YxNDViYjI3MzQ5ODk5M2YzOWYxZDFj
YmFhNjIzNTgzLi44ZWE1YjdiMDNhYmFjYTAyZjI1ZjQ4YTJlZDU1OTkyNjNlYTQ3MGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEsNiArMSw3IEBACiBu
YW1lc3BhY2U9IkV2ZW50VGFyZ2V0IgogCiBBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FV
RElPCitBdWRpb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogQmF0dGVyeU1hbmFn
ZXIgY29uZGl0aW9uYWw9QkFUVEVSWV9TVEFUVVMKIERlZGljYXRlZFdvcmtlckNvbnRleHQgY29u
ZGl0aW9uYWw9V09SS0VSUwogRE9NQXBwbGljYXRpb25DYWNoZQpAQCAtMzcsNiArMzgsNyBAQCBT
VkdFbGVtZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCiBUZXh0VHJhY2sgY29uZGl0aW9uYWw9
VklERU9fVFJBQ0sKIFRleHRUcmFja0N1ZSBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRy
YWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSworVmlkZW9UcmFja0xpc3QgY29uZGl0aW9u
YWw9VklERU9fVFJBQ0sKIFdlYktpdE5hbWVkRmxvdwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdF
Ql9TT0NLRVRTCiBXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMWRkMzAxYzU4MWE2NzUzMjZkZjZlODI5MWUzZmYy
NWMwOTVjNjllOC4uMDQ1YmRjZDU4YWE4NjAyZTllNzhkYjI2MzBmMjNmNWRiOThjYmFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05OCw2ICs5OCw4IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNr
TGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2suaCIKQEAgLTEwNSw2ICsxMDcsOCBAQAogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAj
aW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisj
aW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9B
VURJTykKQEAgLTI5Niw3ICszMDAsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICwg
bV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZShmYWxzZSkKICAgICAsIG1fbGFzdFRleHRUcmFj
a1VwZGF0ZVRpbWUoLTEpCiAgICAgLCBtX2NhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpBdXRvbWF0aWMpCisgICAgLCBtX2F1ZGlvVHJhY2tzKDApCiAgICAgLCBtX3Rl
eHRUcmFja3MoMCkKKyAgICAsIG1fdmlkZW9UcmFja3MoMCkKICAgICAsIG1faWdub3JlVHJhY2tE
aXNwbGF5VXBkYXRlKDApCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMzMwLDEy
ICszMzYsMjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGRv
Y3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFj
a3ModGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGRvY3VtZW50KCktPnVucmVn
aXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAgIGlm
IChtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyT3duZXIoKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXVkaW9UcmFja3MtPmxlbmd0aCgp
OyArK2kpCisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgp
OworICAgIH0KICAgICBpZiAobV90ZXh0VHJhY2tzKQogICAgICAgICBtX3RleHRUcmFja3MtPmNs
ZWFyT3duZXIoKTsKICAgICBpZiAobV90ZXh0VHJhY2tzKSB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBt
X3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CiAgICAgfQorICAgIGlmIChtX3Zp
ZGVvVHJhY2tzKSB7CisgICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpOyArK2kp
CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOworICAg
IH0KICNlbmRpZgogCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQpAQCAtMTM0OSw2ICsxMzY1
LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQo
VGV4dFRyYWNrKiB0cmFjaykKICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVk
aW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwgd2Fu
dCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0
cmFjaykKIHsKICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tF
bGVtZW50KSB7CkBAIC0xMzg4LDYgKzE0MDksMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIHVwZGF0ZUFjdGl2ZVRl
eHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikKK3sKKyAgICAvLyBXZSB3aWxs
IHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlzdAor
fQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFj
ayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpjYXB0aW9u
c0tleXdvcmQoKSAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKQpAQCAt
Mjc5Miw2ICsyODE4LDE2IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9hZGVk
KCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QXVk
aW9UcmFjaz4gdHJhY2sgPSBBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spOworCisg
ICAgYWRkQXVkaW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlPiBwcnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0yODI3LDYgKzI4NjMsMzMgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXYKICAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIH0KIAor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUodGhp
cywgcHJwVHJhY2spOworCisgICAgYWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NS
ZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBU
aGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEF1ZGlvVHJhY2sgd2l0aCB0
aGUgQXVkaW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRB
dWRpb1RyYWNrLgorICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PEF1
ZGlvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAg
IHJldHVybjsKKworICAgIHJlbW92ZUF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjg0NCw2ICsy
OTA3LDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0
VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQCiAgICAgcmVtb3ZlVGV4dFRyYWNrKHRl
eHRUcmFjay5nZXQoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBycFRyYWNr
KQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0
ZWQgdGhlIFZpZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNz
ZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgorICAgIFJlZlB0cjxWaWRlb1RyYWNr
PiB0cmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOwor
ICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZVZpZGVvVHJhY2so
dHJhY2suZ2V0KCkpOworfQorCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0
Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UcmFjaykKIHsKQEAgLTI5MjAsNiArMzAwMCwxMSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKQogI2VuZGlm
CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0
cmFjaykKK3sKKyAgICBhdWRpb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOworfQorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIHRl
eHRUcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKQEAgLTI5MjcsNiArMzAxMiwxNiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3Nl
Q2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRW
aWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIHZpZGVvVHJhY2tzKCktPmFwcGVu
ZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhB
dWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUodHJhY2spOwor
fQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRy
YWNrKQogewogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwpAQCAtMjkz
OCwxOCArMzAzMywzMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhU
ZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNr
KQoreworICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRy
YWNrcykKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2F1ZGlvVHJhY2tzKQorICAgICAgICB3
aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAg
ICAgICByZW1vdmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3MtPml0ZW0obGVuZ3RoIC0gMSkpOwog
Ci0gICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7Ci0gICAgZm9yIChpbnQg
aSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBU
ZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOworICAgIGlmIChtX3RleHRU
cmFja3MpIHsKKyAgICAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7Cisg
ICAgICAgIGZvciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0aCgpIC0gMTsgaSA+PSAwOyAt
LWkpIHsKKyAgICAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0o
aSk7CiAKLSAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFu
ZCkKLSAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgICAgICBpZiAo
dHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICAgICAgICAg
IHJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAobV92
aWRlb1RyYWNrcykKKyAgICAgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fdmlkZW9UcmFj
a3MtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmVtb3ZlVmlkZW9UcmFjayhtX3ZpZGVvVHJhY2tz
LT5pdGVtKGxlbmd0aCAtIDEpKTsKIH0KIAogUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk4
OSw2ICszMDk2LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAgICAgcmV0dXJuIHRleHRU
cmFjay5yZWxlYXNlKCk7CiB9CiAKK0F1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojph
dWRpb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9hdWRp
b1RyYWNrcykKKyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0OjpjcmVhdGUo
dGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAg
cmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKIFRleHRUcmFja0xpc3QqIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0zMDAwLDYgKzMxMTgsMTcgQEAgVGV4
dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpCiAgICAgcmV0dXJuIG1f
dGV4dFRyYWNrcy5nZXQoKTsKIH0KIAorVmlkZW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6
OnZpZGVvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3Zp
ZGVvVHJhY2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9UcmFja0xpc3Q6OmNyZWF0
ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAg
ICByZXR1cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogICAg
IEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKQEAgLTQ5MTcsNyAr
NTA0Niw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgaW5mby5hZGRNZW1iZXIobV9t
ZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgaW5mby5hZGRNZW1iZXIobV9hdWRpb1RyYWNrcywgImF1ZGlvVHJhY2tzIik7CiAg
ICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzLCAidGV4dFRyYWNrcyIpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fdmlkZW9UcmFja3MsICJ2aWRlb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVt
YmVyKG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLCAidGV4dFRyYWNrc1do
ZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdWVUcmVl
LCAiY3VlVHJlZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VycmVudGx5QWN0aXZlQ3Vlcywg
ImN1cnJlbnRseUFjdGl2ZUN1ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggZDA4NWU5ZGZiODg2MDQwN2VhZDkxOTFlYzI3Y2FiNGQ5MmI5NzY2My4uZmEyZjlm
OGZiZTgwZTBiMGQ5NzdkNTc2MjdjZmM1Y2JhYjA0ZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTM5LDEwICszOSwxMiBAQAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsOCArNzIs
MTIgQEAgY2xhc3MgTWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3Mg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIFRleHRUcmFja0xpc3Q7CitjbGFzcyBWaWRl
b1RyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiB0eXBlZGVmIFBPREludGVy
dmFsVHJlZTxkb3VibGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5cGVkZWYg
Q3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CkBAIC04NCw3ICs5MCw5
IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0OwogCiBjbGFzcyBIVE1MTWVk
aWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQs
IHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBwcml2YXRlIEF1ZGlv
VHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2YXRl
IFZpZGVvVHJhY2tDbGllbnQKICNlbmRpZgogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01F
TlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CkBAIC0yMjYsMTEg
KzIzNCwxOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFj
ayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwgbGFiZWwsIGVtcHR5U3RyaW5nKCksIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5n
JiBraW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVt
cHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogCisgICAgQXVkaW9UcmFja0xpc3Qq
IGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrcygpOworICAgIFZp
ZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworCiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3Rp
dmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKKyAgICB2
b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayopOwogICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRl
eHRUcmFjayopOworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CisgICAgdm9p
ZCByZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKICAgICB2b2lkIHJlbW92ZVRleHRUcmFj
ayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayopOwog
ICAgIHZvaWQgcmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25U
cmFja3NDaGFuZ2VkKCk7CiAgICAgdm9pZCBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hh
bmdlcygpOwpAQCAtMjM4LDggKzI1MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEFkZFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVk
aW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
ckRpZFJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIE9WRVJS
SURFOwogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4pIE9W
RVJSSURFOwpAQCAtMjc1LDYgKzI5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZVRl
eHRUcmFja0Rpc3BsYXkoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKIAor
ICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0VuYWJs
ZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKTsKKwogICAgIC8vIFRleHRUcmFja0NsaWVudAogICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKik7CkBAIC0yODQsNiAr
MzA2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRy
YWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKKyAg
ICAvLyBWaWRlb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3Rl
ZENoYW5nZWQoVmlkZW9UcmFjayopOworCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopOwogI2VuZGlmCkBAIC02OTksNyArNzI0LDkgQEAgcHJp
dmF0ZToKIAogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBt
X2NhcHRpb25EaXNwbGF5TW9kZTsKIAorICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRp
b1RyYWNrczsKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOworICAgIFJl
ZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4gPiBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbjsKIAogICAg
IEN1ZUludGVydmFsVHJlZSBtX2N1ZVRyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbAppbmRleCBjZWQ0MTc0NTlkYWJhMTM1ZWQwMDVlZjY1NDg2ZDI1YWY2ZTFjY2Q1
Li4wNWJjMmRkOGM0ZmI4ODRlN2JlYmQ2N2IwYzcyM2U5ZTVkNTE4YWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTExNiw3ICsxMTYsOSBAQCB2b2lkIHdl
YmtpdENhbmNlbEtleVJlcXVlc3QoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5k
ZWZpbmVkQXM9TnVsbFN0cgogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFC
TEVfVklERU9fVFJBQ0sKIFRleHRUcmFjayBhZGRUZXh0VHJhY2soaW4gRE9NU3RyaW5nIGtpbmQs
IGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBs
YW5ndWFnZSkKICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CityZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9UcmFja0xpc3QgYXVkaW9UcmFja3M7CiByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNr
TGlzdCB0ZXh0VHJhY2tzOworcmVhZG9ubHkgYXR0cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVv
VHJhY2tzOwogI2VuZGlmCiAKIFtSZWZsZWN0LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG1lZGlhR3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmQ1NDNhMWY3MGI5NTQ3OGNiZjIxOTU1MTIzMjEwZmIw
ZDM3NDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIK
KworI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlRyYWNrQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRp
dmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFs
dGVybmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmRlc2NyaXB0
aW9uS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBkZXNjcmlwdGlvbjsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbjsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1haW5EZXNjOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0
aW9uLCAoInRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHJldHVybiB0cmFuc2xhdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRp
b1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVudGFyeTsKK30KKwor
QXVkaW9UcmFjazo6QXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQ
dHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRyYWNrQmFzZShUcmFj
a0Jhc2U6OkF1ZGlvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwgdHJhY2tQcml2YXRlLT5s
YW5ndWFnZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkpCisgICAgLCBtX2VuYWJs
ZWQodHJhY2tQcml2YXRlLT5lbmFibGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAg
LCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRo
aXMpOworCisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgQXVkaW9U
cmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFs
dGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNr
UHJpdmF0ZTo6RGVzY3JpcHRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6ZGVzY3Jp
cHRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpNYWluOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluRGVzYzoKKyAg
ICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OlRyYW5zbGF0aW9uOgorICAgICAgICBz
ZXRLaW5kKEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2lu
ZChBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmlu
ZygpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQXVkaW9UcmFjazo6fkF1ZGlv
VHJhY2soKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KDApOworfQorCitib29sIEF1ZGlv
VHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7Cisg
ICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xhdGlvbktleXdvcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEF1ZGlvVHJh
Y2s6OnNldEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX2VuYWJsZWQg
PT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZW5hYmxlZDsK
KworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmF1ZGlvVHJhY2tFbmFibGVk
Q2hhbmdlZCh0aGlzKTsKK30KKworc2l6ZV90IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgo
KQoreworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlv
VHJhY2tJbmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTM3NTc0NTFhZGIy
ZTNmYmI5NWM5MjI3ODkzMDQwMzgzYzAzNDNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19oCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlv
VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRp
b1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNr
UHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFjayhj
bGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrKCk7
CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9p
ZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiB0cmFuc2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBj
b21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZh
dWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eUF0b207IH0KKwor
ICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmFibGVkKGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xpZW50
KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgc2l6ZV90IGluYmFu
ZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0Ns
aWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJ
REU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBB
dWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZT4gbV9wcml2YXRlOworfTsKKworaW5saW5lIEF1ZGlvVHJhY2sqIHRvQXVkaW9UcmFjayhUcmFj
a0Jhc2UqIHRyYWNrKQoreworICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFzZTo6
QXVkaW9UcmFjayk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPih0cmFjayk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYjYzYzg1ZGQ5ODE4
NGU2NjVmMWRiNjQyNzFjYTQ0YmRlNmUzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5j
dGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBBdWRpb1RyYWNrIHsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxh
YmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBh
dHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzNTViNzNmZmRiNGQ3ODI2YWNlZTZm
ZmU5YjI3MmNmNTdhNWYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitBdWRpb1Ry
YWNrTGlzdDo6QXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250
ZXh0KQoreworfQorCitBdWRpb1RyYWNrTGlzdDo6fkF1ZGlvVHJhY2tMaXN0KCkKK3sKK30KKwor
dm9pZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJh
Y2spCit7CisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAv
LyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRl
eCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0
KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0
cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxl
bWVudChvd25lcigpKTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNl
KCkpOworfQorCitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAg
ICAgIHJldHVybiB0b0F1ZGlvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKwor
ICAgIHJldHVybiAwOworfQorCitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6Z2V0VHJhY2tC
eUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBBdWRpb1RyYWNr
KiB0cmFjayA9IHRvQXVkaW9UcmFjayhtX2luYmFuZFRyYWNrc1tpXS5nZXQoKSk7CisgICAgICAg
IGlmICh0cmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB0cmFjazsKKyAgICB9
CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFja0xpc3Q6
OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yQXVkaW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9BdWRpb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNDRiOGJhM2QwMGQ3ZGU0ZWQwYmJk
NTNhZjE1OTdhNDY3NGIyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEF1ZGlvVHJhY2tMaXN0X2gKKyNkZWZpbmUgQXVkaW9UcmFja0xpc3RfaAorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1ZGlvVHJh
Y2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEF1ZGlvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5B
dWRpb1RyYWNrTGlzdCgpOworCisgICAgQXVkaW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0OworCisgICAgQXVkaW9UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPik7CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja0xpc3Qo
SFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMxY2UwOGMyNGM5NDA0MTk0
MGQ2Mzc4OGIzMGI0ZTk0NmM2NWVjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisg
ICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21J
c1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRpb1RyYWNrIGl0ZW0oaW4gdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3Ry
aW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFu
IHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFu
IHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisg
ICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5oCmluZGV4IDVkZDNiZWY4NDY2OTNiNWQ5ODdmZGZmZjY2YmQ4
MDExNTgzNmI0YzEuLmJmM2ExODhjNzk5YTU1ODY5ODY0ZTc5ZWU1NWY2NWVhMWVkZGM2MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURF
OwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNr
TGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM0YTVkOWQxODU4
YmVkYWFjOWY0ZWQ0NDFjNjJkMTIxMjhkMzZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJWaWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
VHJhY2tCYXNlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFs
dGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNpZ24sICgic2lnbiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc2lnbjsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVz
LCAoInN1YnRpdGxlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitWaWRlb1Ry
YWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6
VmlkZW9UcmFjaywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdl
KCkpCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fc2VsZWN0ZWQodHJh
Y2tQcml2YXRlLT5zZWxlY3RlZCgpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9w
cml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsK
KworICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKKyAgICBjYXNlIFZpZGVvVHJhY2tQ
cml2YXRlOjpBbHRlcm5hdGl2ZToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZh
dGU6OkNhcHRpb25zOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoK
KyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjoKKyAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpzaWduS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRl
b1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1
YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1By
aXZhdGU6OkNvbW1lbnRhcnk6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFy
eUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK1ZpZGVvVHJhY2s6On5WaWRlb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZh
dGUtPnNldENsaWVudCgwKTsKK30KKworYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRlcm5h
dGl2ZUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNh
cHRpb25zS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0g
bWFpbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHNp
Z25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBzdWJ0
aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBj
b21tZW50YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChjb25zdCBib29sIHNlbGVj
dGVkKQoreworICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRoaXMpOworfQorCitzaXpl
X3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0
ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRiNjQ0ZDY2OTdjYzczNWY2N2QzOThmZDcwZGJmZWVmMjZiN2Mx
YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2suaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVv
VHJhY2tfaAorI2RlZmluZSBWaWRlb1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNp
bmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFz
cyBWaWRlb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xp
ZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlk
ZW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNl
LCBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
YWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2Fw
dGlvbnNLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdv
cmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaWduS2V5d29yZCgpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wp
OworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9
IDA7IH0KKyAgICBWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2Ns
aWVudDsgfQorCisgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgor
ICAgIFZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGU+IHByaXZhdGVUcmFjayk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVmFs
aWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOworCisgICAgQXRvbWlj
U3RyaW5nIG1faWQ7CisgICAgYm9vbCBtX3NlbGVjdGVkOworICAgIFZpZGVvVHJhY2tDbGllbnQq
IG1fY2xpZW50OworCisgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9
OworCitpbmxpbmUgVmlkZW9UcmFjayogdG9WaWRlb1RyYWNrKFRyYWNrQmFzZSogdHJhY2spCit7
CisgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KHRyYWNrKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUyNmQzMzA3MTQ3ZjMxZGQyNGRhMmQ4NWRmYjIw
ODcyMGM3MjcwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3Vz
dG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIFZpZGVvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBr
aW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFu
IHNlbGVjdGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGMwN2M5NWM1NzgxNjZmNGViZTU2ZTdkY2ZmZTVlMDU5YjRlZTQ5
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFj
a0xpc3QuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNr
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitWaWRlb1RyYWNrTGlzdDo6VmlkZW9U
cmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQoreworfQorCitW
aWRlb1RyYWNrTGlzdDo6flZpZGVvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBWaWRlb1RyYWNr
TGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gcHJwVHJhY2spCit7CisgICAgUmVm
UHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQgdHJhY2tz
IGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNrLT5pbmJh
bmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7
CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVt
ZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsK
KworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQorCitWaWRl
b1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAg
ICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAgICAgIHJldHVybiB0b1Zp
ZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKworICAgIHJldHVybiAwOwor
fQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0VHJhY2tCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgo
KTsgKytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRlb1RyYWNrKG1faW5i
YW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQorICAg
ICAgICAgICAgcmV0dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworbG9uZyBW
aWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0Cit7CisgICAgLy8gNC44LjEwLjEw
LjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IG9iamVjdHMKKyAgICAvLyBUaGUg
VmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRleCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGlu
ZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRseSBzZWxlY3RlZCB0cmFjaywgaWYgYW55LiBJZiB0
aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRvZXMgbm90CisgICAgLy8gY3VycmVudGx5IHJlcHJl
c2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25lIG9mIHRoZSB0cmFja3MgYXJlIHNlbGVjdGVkLAor
ICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1cm4g4oiSMS4KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVmlkZW9UcmFjayogdHJhY2sgPSB0b1Zp
ZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAgICAgICBpZiAodHJhY2stPnNl
bGVjdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIC0xOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclZpZGVvVHJhY2tM
aXN0OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMTRmZmRjNGNlNmNmM2IzODU5ODg2OTlmY2Y3ZjExMGRiZDczNGQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
TGlzdC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWaWRlb1Ry
YWNrTGlzdF9oCisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1RyYWNrTGlzdCA6IHB1YmxpYyBU
cmFja0xpc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNr
TGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1Ry
YWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VmlkZW9UcmFja0xpc3QoKTsK
KworICAgIFZpZGVvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKKyAgICBsb25nIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKworICAgIFZpZGVvVHJhY2sqIGl0
ZW0odW5zaWduZWQpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFj
az4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFZpZGVv
VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQzNmFm
NjIwYjg0NDU1YWY3MzhkZWIxNDg0MDQxNjNmNGE1NTJiZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4
ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisg
ICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgVmlkZW9UcmFja0xpc3QgeworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBWaWRlb1RyYWNr
IGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVmlkZW9UcmFjayBnZXRUcmFja0J5
SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hh
bmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZl
bnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBF
dmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zODFmZWQzN2E0Yjk2NzFlMzFlMzgyNTM0YjA0MzkwOTQzYWE4YjAxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFj
a1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tQ
cml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJh
Y2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0
ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1
ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQo
QXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQor
ICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxl
ZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlwdGlv
biwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAg
dmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1
YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207
IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX2Vu
YWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJp
dmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODdlOTQyNTQ0OWNjZDAwZmU4
OGNlY2Q2N2JmOWVjNTc1NTQwODQ2My4uYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0
NmI3ZDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcApAQCAtMTEwMyw2ICsxMTAzLDIyIEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBN
ZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogfQogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQordm9pZCBNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlv
VHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlk
QWRkQXVkaW9UcmFjayh0cmFjayk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFt
X21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVy
Q2xpZW50LT5tZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2sodHJhY2spOworfQorCiB2b2lk
IE1lZGlhUGxheWVyOjphZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlPiB0cmFjaykKIHsKICAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCkBAIC0xMTE5LDYg
KzExMzUsMjIgQEAgdm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gdHJhY2spCiAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+
bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sodHJhY2spOwogfQogCit2b2lkIE1lZGlhUGxh
eWVyOjphZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrKQor
eworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKHRyYWNrKTsK
K30KKwordm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVv
VHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlk
UmVtb3ZlVmlkZW9UcmFjayh0cmFjayk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXI6OnJlcXVpcmVz
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUt
PnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDU1YjllMmYyZjg3NDZkZDNmZDU3
ZmViOWQyMThhZjFlMTViZTBjYzguLjFlZmQ3M2FmYTY0ZDU2YTA5NWRjNDkyZDkyZWZlNjk0ZGRi
ODQ2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMzIsMTEgKzMyLDEzIEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcm94eS5oIgog
I2VuZGlmCiAKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTIxOCw4ICsy
MjAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlh
UGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9CiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFj
ayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFz
c1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkJvdW5kc0NoYW5n
ZWQoY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSB7IH0KQEAgLTQ0
OSw4ICs0NTUsMTIgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRS
ZXNvdXJjZUxvYWRlcigpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZvaWQgYWRk
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7CiAgICAgdm9pZCBhZGRU
ZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CisgICAgdm9pZCBh
ZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIHJl
bW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogICAgIHZvaWQg
cmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOworICAg
IHZvaWQgcmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPik7CiAK
ICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNr
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1By
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQwMmUzYmNjNDViM2JiYjEy
ODczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZp
ZGVvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1Ry
YWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlKCkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBz
ZXRDbGllbnQoVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNs
aWVudDsgfQorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQp
IHsgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0
aXZlLCBDYXB0aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07
CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2
aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAg
IHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9
CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0
eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2YXRlKCkKKyAgICAgICAg
OiBtX3NlbGVjdGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zZWxlY3RlZDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198185</attachid>
            <date>2013-04-15 14:10:23 -0700</date>
            <delta_ts>2013-04-15 14:57:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130415150958.patch</filename>
            <type>text/plain</type>
            <size>122478</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA2ZWMwMjU2YWQ3Mjgx
ODczNWVmODIyNTAwMGRiODE2NDlhZTlhZS4uYzJjMWE1MWJjNDQxMWUxYzcwMDI4YmU4MDJhMjM5
Mjk1NDc5NDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTEyICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNr
TGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2
ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFu
ZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRk
ZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBT
YW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0
VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5k
IHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFj
a3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdl
KTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFj
a3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDog
QWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFk
ZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRl
eHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBi
YXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1v
dmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRk
VGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBs
YXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQs
IGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0LTE1ICBSb2JlcnQg
SG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBBbiBpbmxpbmUgZWxlbWVudCB3
aXRoIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBjaGlsZCBkb2VzIG5vdCBjb3JyZWN0bHkgY2Fs
Y3VsYXRlL3JlbmRlciBwYWRkaW5nIGFuZCBtYXJnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
M2QxZWNlOWNlNzUyNTdlMDQ4OWM4ZjA5Y2ZkNTM0MTFlYzgyNzkyNS4uZDJmMjAyY2NjM2I5MjQy
NzlmOGJlOWUxY2FkZmU1NjYwOGI2ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI2ODUs
MTQgKzI2ODUsMjAgQEAgZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBs
aXN0KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJh
Y2suaWRsCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCiAgICAgICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5p
ZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAogICAgICAgICBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5p
ZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNr
L1ZpZGVvVHJhY2tMaXN0LmlkbAogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNr
LmNwcAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAogICAgICAgICBo
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTI3MDYsNiArMjcxMiw4IEBAIGlmIChFTkFCTEVf
VklERU9fVFJBQ0spCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKICAgICAg
ICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRU
VG9rZW5pemVyLmNwcAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCisgICAgICAg
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCiAKICAgICAgICAgbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDZiN2Nk
MDdlYzdiNDUzOTQ1MWUwNWM3ZjU1NzhlZjk0OGUyNGE5ZDcuLjRhNGJhZGEwYzNiNTdiMTc4YjUw
MjRlMzBkNDFlMTY5YmM5ZWI3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTQ3
MiwxMiArNDcyLDE2IEBACiAjaW5jbHVkZSAiSlNUZXh0RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpT
VGV4dE1ldHJpY3MuY3BwIgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1
ZGlvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuY3BwIgogI2luY2x1ZGUg
IkpTSFRNTFRyYWNrRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2lu
Y2x1ZGUgIkpTVGV4dFRyYWNrQ3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2
ZW50LmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9U
cmFja0xpc3QuY3BwIgogI2VuZGlmCiAjaW5jbHVkZSAiSlNUaW1lUmFuZ2VzLmNwcCIKICNpbmNs
dWRlICJKU1RvdWNoLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBkN2E2
NWQyN2U5M2I2OGQ3MDBiZThiZTY5MzBjMTkyMjY2YmQxNDguLjEwZGVkNjI4YmVmNjcwZmJiZGE5
OGJiNzNmYzk2NDAwMjBjYjg3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
NDMxLDExICs0MzEsMTUgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9B
dWRpb1RyYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAg
ICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVj
dG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBk
YmVjYTQ3MWE3YzYxYzc2Y2Y0MjAxNTEwODY4NTg1Zjk3NzI3MjRmLi43OTA5ZTFhZTUxZTNhNWNi
YzE0NjljZjU3MTRhNWJmNTQ1MTliMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBA
IC02NTIsMTEgKzY1MiwxNSBAQCBlbmFibGU/KEdBTUVQQUQpIHsKIAogZW5hYmxlPyhWSURFT19U
UkFDSykgewogICBJRExfQklORElOR1MgKz0gXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKICAg
ICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0
LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQ
V0QvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKIH0K
IAogZW5hYmxlPyhNRURJQV9TT1VSQ0UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDFlNmVkZGM0MzE4MTI4M2FlMWQ3MDhmMWRmYzAyOTAyYTE5OGQ4ZmIuLjlhYTAyODQ4NzU0
MjMxZDRlMzY1YjhlNzk1MDg1OTc4MjA1ODFlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtNjUsNiArNjUsMTAgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb1NvdXJjZU5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFjay5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0JhckluZm8uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmFySW5mby5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmVmb3JlTG9hZEV2ZW50LmNwcCBcCkBAIC03
NzcsNiArNzgxLDEwIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1ZhbGlkaXR5U3RhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1ZvaWRDYWxsYmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJh
Y2suaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZpZGVvVHJhY2suY3BwIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTVmlkZW9UcmFjay5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTVmlkZW9UcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmlk
ZW9UcmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2Rl
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2RlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlVGFibGUuY3BwIFwKQEAgLTE1ODYsMTEgKzE1OTQs
MTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBc
CiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUp
L2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBc
CiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAJJChXZWJD
b3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAJJChXZWJDb3JlKS9p
bnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXApAQCAtMjMyMCw2ICsyMzMyLDkgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291
cmNlTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
Q3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5v
ZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3RvbS5j
cHAgXApAQCAtMjQ3NCw2ICsyNDg5LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgXApAQCAtMzc2
Nyw2ICszNzg1LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg3LDYgKzM4MDksMTAgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwKQEAgLTU0OTcsNiArNTUyMyw3IEBAIHdlYmNvcmVfcGxh
dGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6ZUxv
Z2dpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRC
cmlkZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNr
UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dy
YXBoaWNzQ29udGV4dDNETkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jcHUvYXJtL2ZpbHRlcnMvTkVPTkhlbHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3Nyw2ICs1
ODA0LDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1cmVz
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IDVkNzgwMTA0OWM5ZGFhY2NjZWY4MmNjMWU1MDA4YmU2ZTliODcxMGEuLjQwZjkyNGEyMDg2NDAz
OWRjYTAyMTc2NWJhMDc4NTUzNjc2ZDg0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2Niw5ICszOTY2
LDEzIEBAIGVuYWJsZT8oSkFWQVNDUklQVF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVPX1RS
QUNLKSB7CiAgICAgSEVBREVSUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFj
a0N1c3RvbS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmgg
XAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgg
XAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggXAogICAgICAgICBodG1s
L3RyYWNrL1RleHRUcmFjay5oIFwKQEAgLTM5NzksMjAgKzM5ODMsMzAgQEAgZW5hYmxlPyhWSURF
T19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICAgICAgaHRt
bC90cmFjay9UcmFja0V2ZW50LmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
aCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBc
CiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
V2ViVlRUVG9rZW5pemVyLmggXAogICAgICAgICBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAor
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggXAogCiAgICAgU09VUkNFUyArPSBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
IFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogICAg
ICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5jcHAgXApAQCAtNDAwMyw2ICs0MDE3LDggQEAgZW5h
YmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgXAog
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAor
ICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCmluZGV4IDc5YzllMTAyNTkzZmQwYzAwNDllNzcyYzIxZmVjMzM5NmM0NWNiZjMuLmE4ZjJm
ODE2MWM1NDNjZDhhZmY0ZjhkZWVmYmZkZGZkOGY4NWYwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAg
LTIxOCwxMSArMjE4LDE1IEBAIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0N1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5n
cy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJh
Y2tDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAK
KyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBiaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICkKIGVuZGlmICgpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMGYzZmIx
ZmZmODRlMTcyMzdhOWY4YTkzMTE3MmMxMGFlY2FmYWEwZS4uM2Y0ODc3ZTVlODA4NDMyMmFhMzNm
MWY4Y2E1ZWRmMThhNWMwNTIxMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTI5OTAyLDYgKzI5OTAyLDEwIEBACiAJCQkJTmFtZT0iZ3JhcGhp
Y3MiCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcQXVkaW9UcmFja1ByaXZhdGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEJpdG1hcEltYWdlLmNw
cCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTMwMzc4LDYgKzMwMzgyLDEwIEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xWaWRlb1RyYWNrUHJpdmF0ZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcV2luZFJ1bGUuaCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1NzQ2LDYgKzY1NzU0LDIyIEBACiAJCQkJTmFtZT0i
dHJhY2siCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFj
a1xBdWRpb1RyYWNrLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFjay5oIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1Ry
YWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEluYmFuZFRl
eHRUcmFjay5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02NTgyNiw2ICs2NTg1MCwyMiBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFx0cmFja1xWaWRlb1RyYWNrLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcVmlkZW9UcmFjay5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFj
a1xWaWRlb1RyYWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNr
XFdlYlZUVEVsZW1lbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWUxMjllZmU0
ZGM0ZWM1ZjJkMDExNTU5ZTNlNDkwODVlY2QzOWEuLmRlZjQzZjYwNjNhMzk5ZTIyZjE4NTVhZTY4
Y2RhM2I3ZWRmZTc4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMTMsOCArNTExMywzMiBAQAogCQlCQ0ZFMkYxMjBDMUI1
ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0ZFMkYxMDBDMUI1ODM3MDAyMDIzNUYgLyogSlNSZWN0LmggKi87IH07
CiAJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkY2NDhGMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQ0ZGNjQ5MjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRjY0OTAwRUFEMTVD
MjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCRTZERjcwQjE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICov
OyB9OworCQlCRTZERjcwQzE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwOTE3
MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmggKi87IH07CisJCUJFNkRGNzBE
MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFNkRGNzBBMTcxQ0EyQzUwMERE
NTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJQkU2REY3MTExNzFD
QTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwRTE3MUNBMkRBMDBERDUyQjggLyog
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQkU2REY3MTIxNzFDQTJEQTAwREQ1MkI4
IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkU2REY3MEYxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1
c3RvbS5oICovOyB9OworCQlCRTZERjcxMzE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNr
TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5j
cHAgKi87IH07CiAJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEJG
MTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLzsgfTsKIAkJQkU4OEUwQzIx
NzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFj
a0xpc3RCYXNlLmggKi87IH07CisJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1Ry
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUw
RDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrLmggKi87IH07CisJCUJFODhFMERCMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
RTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICovOyB9OworCQlC
RTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovOyB9OworCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBEMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi87IH07
CisJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBEMzE3MTVEMkEyMDA2NThE
OTggLyogVmlkZW9UcmFjay5oICovOyB9OworCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAq
LzsgfTsKKwkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBENjE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJQkU4RUYwNDIxNzFDOEZG
OTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1Ry
YWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYw
M0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovOyB9OworCQlCRThFRjA0NDE3
MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFOEVGMDQ1MTcxQzhGRjkwMDlCNDhDMyAv
KiBKU0F1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5o
ICovOyB9OworCQlCRThFRjA0QTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDQ2MTcx
QzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwICovOyB9OworCQlCRThFRjA0QjE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1Ry
YWNrLmggKi87IH07CisJCUJFOEVGMDRDMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
OEVGMDQ4MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJ
QkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDQ5MTcxQzkwMTQwMDlC
NDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJCUJFRjI5RUVCMTcxNUREMDkwMEM0
QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlLmggKi87IH07CisJCUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNr
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkVGMjlFRUExNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi87IH07CiAJ
CUMwNDZFMUFDMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwNDZFMUFCMTIwOEE5RkUw
MEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCAqLzsgfTsKIAkJQzBDMDU0Q0IxMTE4QzhF
NDAwQ0UyNjM2IC8qIENvZGVHZW5lcmF0b3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNTBBMzAwRkUxMDBGNjFBQjggLyogQ29kZUdlbmVy
YXRvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNzBBMzAwRkVB
MDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODQyLDEzICsxMTg2Niw0MSBAQAogCQlCQ0ZF
MkYxMDBDMUI1ODM3MDAyMDIzNUYgLyogSlNSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1JlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGRjY0
OEYwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aEJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMZW5ndGhCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNG
RjY0OTAwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGVuZ3RoU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCRTZERjcwODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmlkZW9UcmFja0N1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzA5MTcxQ0EyQzUwMERENTJCOCAv
KiBKU1ZpZGVvVHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNWaWRlb1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRG
NzBBMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTZERjcwRTE3MUNBMkRBMDBERDUyQjgg
LyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXVkaW9UcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJFNkRGNzBGMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb1RyYWNrQ3VzdG9tLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzEwMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1
ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCRTg1NUY3RjA3MDFFODM1MDAyMzk3NjkgLyogV2ViQ29yZVZpZXcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVZpZXcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUJFODU2MDUxMDcwMUY5MTEwMDIzOTc2OSAvKiBXZWJDb3JlVmlldy5tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJDb3JlVmlldy5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
QkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNrTGlzdEJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0MxNzE1RDJBMjAwNjU4RDk4IC8q
IEF1ZGlvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVk
aW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENEMTcxNUQy
QTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0Ux
NzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEF1ZGlvVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRjE3
MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFja0xpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDExNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAv
KiBWaWRlb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZp
ZGVvVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMzE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ0
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBWaWRlb1RyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDUx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ3MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlkZW9UcmFja0xpc3QuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMg
LyogSlNBdWRpb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQXVkaW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDNG
MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNBdWRpb1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJFOEVGMDQwMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNB
dWRpb1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlv
VHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQ2MTcxQzkw
MTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNWaWRlb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZpZGVvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkU4RUYwNDgxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQ5MTcxQzkwMTQwMDlC
NDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVmlkZW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU5
MUZDOEIwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTkxRkM4QzA2MTMz
NjY2MDA1RTM3OTAgLyogUG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU5ODNEOTUwNTJBMkUw
QTAwODkyRDg1IC8qIFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJ
CUJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFj
a1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1By
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA0NkUxQUIxMjA4QTlGRTAw
QkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTG9jYWxpemVkU3RyaW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMwREZDODZGMERCNjg0MUEwMDNFQUU3QyAvKiBKU0NvbnNvbGVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb25zb2xlQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8q
IHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGgg
PSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE2Njg5LDYgKzE2NzQxLDEwIEBACiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpT
QXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwICovLAogCQkJCTQ5RUVDRjFBMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0Fy
cmF5QnVmZmVyVmlldy5oICovLAorCQkJCUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1
ZGlvVHJhY2suY3BwICovLAorCQkJCUJFOEVGMDNGMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlv
VHJhY2suaCAqLywKKwkJCQlCRThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNr
TGlzdC5jcHAgKi8sCisJCQkJQkU4RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
a0xpc3QuaCAqLywKIAkJCQk2NURGMzIzMzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFk
aWVudC5jcHAgKi8sCiAJCQkJNjVERjMyMzQwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3Jh
ZGllbnQuaCAqLywKIAkJCQk2NURGMzIzNTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0
ZXJuLmNwcCAqLywKQEAgLTE2OTIzLDYgKzE2OTc5LDEwIEBACiAJCQkJOTEwODlEMzAxNEMzMzVD
RDAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLywKIAkJCQkxNUM3NzA5MjEwMEQz
Q0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmNwcCAqLywKIAkJCQkxNUM3NzA5MTEwMEQz
Q0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmggKi8sCisJCQkJQkU4RUYwNDYxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgKi8sCisJCQkJQkU4RUYwNDcxNzFDOTAxNDAw
OUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovLAorCQkJCUJFOEVGMDQ4MTcxQzkwMTQwMDlCNDhD
MyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRThFRjA0OTE3MUM5MDE0MDA5QjQ4
QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oICovLAogCQkJCTk3RTlFQzhCMTVEQzQ5MkYwMDRGMkU3
MSAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgKi8sCiAJCQkJOTdFOUVDOEMxNURDNDkyRjAwNEYyRTcx
IC8qIEpTVm9pZENhbGxiYWNrLmggKi8sCiAJCQkJQTdEMjBGNjAxMDdGNDA2OTAwQTgwMzkyIC8q
IEpTV2ViR0xBY3RpdmVJbmZvLmNwcCAqLywKQEAgLTE3NjkxLDYgKzE3NzUxLDE4IEBACiAJCUIx
QUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQkU4OEUwQ0MxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2suY3BwICovLAorCQkJCUJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
LmggKi8sCisJCQkJQkU4OEUwQ0UxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaWRsICov
LAorCQkJCUJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgKi8s
CisJCQkJQkU4OEUwRDAxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi8sCisJ
CQkJQkU4OEUwRDExNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmlkbCAqLywKKwkJ
CQlCRTg4RTBEMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi8sCisJCQkJQkU4
OEUwRDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBENDE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwRDUxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBENjE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLywKKwkJCQlCRTg4RTBENzE3MTVEMkEyMDA2
NThEOTggLyogVmlkZW9UcmFja0xpc3QuaWRsICovLAogCQkJCUJFODhFMEJGMTcxNUNFMjYwMDY1
OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLywKIAkJCQlCRTg4RTBDMDE3MTVDRTI2MDA2NThE
OTggLyogVHJhY2tMaXN0QmFzZS5oICovLAogCQkJCTA3OTQxNzhGMTY2RTg1NUYwMDk0MTZDMiAv
KiBJbmJhbmRUZXh0VHJhY2suY3BwICovLApAQCAtMTgzNDgsNiArMTg0MjAsOCBAQAogCQkJCTQ5
RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAogCQkJCTQ5MDcwN0U0MTIx
OUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8sCiAJCQkJNDkwNzA3RTUx
MjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8sCisJCQkJQkVGMjlFRTkx
NzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCisJCQkJQkVGMjlFRUEx
NzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcw
QjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIz
Mzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzODBCMDUzODE0MDAy
Q0U2NEYgLyogQ29sb3IuY3BwICovLApAQCAtMTg4MjksNiArMTg5MDMsOSBAQAogCQkJCUJDMkVE
NkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUVG
MTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgKi8s
CiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cCAqLywKKwkJCQlCRTZERjcwRTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcCAqLywKKwkJCQlCRTZERjcwRjE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3Vz
dG9tLmggKi8sCisJCQkJQkU2REY3MTAxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xp
c3RDdXN0b20uY3BwICovLAogCQkJCUZEOEFBNjNCMTY5NTE0OEUwMEQyRUE2OCAvKiBKU0JpcXVh
ZEZpbHRlck5vZGVDdXN0b20uY3BwICovLAogCQkJCTg5MzFERTVBMTRDNDRDNDQwMDBEQzlEMiAv
KiBKU0Jsb2JDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCkBAIC0xODkzOCw2ICsxOTAx
NSw5IEBACiAJCQkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAq
LywKIAkJCQkwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNw
cCAqLywKIAkJCQk1MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9t
LmNwcCAqLywKKwkJCQlCRTZERjcwODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3Vz
dG9tLmNwcCAqLywKKwkJCQlCRTZERjcwOTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNr
Q3VzdG9tLmggKi8sCisJCQkJQkU2REY3MEExNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFj
a0xpc3RDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0QzQxMjk3MzU0OTAw
QUNBOTg5IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFE
MTRCNDEyOTczNENBMDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNw
cCAqLywKQEAgLTI0MDc0LDYgKzI0MTU0LDE4IEBACiAJCQkJRTE1MjU1MTUxNkZEMjM1MDAwM0Q3
QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5IC8qIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThE
OTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwRDkxNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMERDMTcx
NUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4
OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFj
a1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAv
KiBKU0F1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDQ1MTcxQzhGRjkwMDlC
NDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCRThFRjA0QjE3
MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRThF
RjA0RDE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkU2REY3MEMxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQkU2REY3MTIxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFj
a0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzAyMiw2ICsyNzExNCwxOCBAQAogCQkJCUUx
NTI1NTE2MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUI1MzM0NzE3MTdEMEExMDBG
MjA1RjkgLyogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkU4OEUwQzExNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQkU4OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkU4OEUwREIxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBW
aWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5
OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRThFRjA0MjE3MUM4
RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVG
MDQ0MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJFOEVGMDRBMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQkU4RUYwNEMxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU2REY3MEIxNzFDQTJDNTAwREQ1MkI4IC8qIEpT
VmlkZW9UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcwRDE3MUNBMkM1
MDBERDUyQjggLyogSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCRTZERjcxMTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggZjMyMmQ2NGNjN2QxN2E3ZmI3NTQwM2VhYmQy
MTliZmQzZWVkOTE5Ny4uZWVlZWViYTEwYTMyZTY1YTI5OWMyY2MwY2M3ODJmNDA4Y2UzMTYzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBA
IC00MzMsMTggKzQzMywyNCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlm
IEVOQUJMRV9WSURFTwogd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwK
KwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlv
VHJhY2tMaXN0LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJ
JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJh
Y2tMaXN0LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlLmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikv
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwK
KwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVv
VHJhY2suaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01WaWRlb1RyYWNrTGlzdC5oCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJp
dmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxl
bWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9F
bGVtZW50UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVk
aW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1Ry
YWNrTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJh
Y2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJp
dmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlz
dC5jcHAgXApAQCAtNDUzLDYgKzQ1OSw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2
YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVM
aXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1
ZUxpc3RQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRl
b1RyYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJh
Y2tMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZl
bnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFBy
aXZhdGUuaAogZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
VHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWMxZTQyNzM5Y2U2N2Q1ZDUyN2QzMGEzMmQ5
MTQwNTU5MzZhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNB
dWRpb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFj
a093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9U
cmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0PEpTQXVkaW9UcmFjayo+KGhhbmRsZS5nZXQoKS5h
c0NlbGwoKSk7CisgICAgQXVkaW9UcmFjayogYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlv
VHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwoKSk7XAorCisgICAgLy8gSWYgdGhlIHRyYWNrIGhh
cyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpz
QXVkaW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNr
KSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sg
PSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhqc0F1ZGlvVHJhY2ssICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKGpzQXVkaW9UcmFjaywgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1Ry
YWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4Y2RlM2IxNzIwZThkNmNjZmJkNjE1
YzI1ZTNlM2M1NTI0ZTNkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgSlNBdWRpb1RyYWNrQ3VzdG9tX2gKKyNkZWZpbmUgSlNBdWRpb1RyYWNrQ3VzdG9t
X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20u
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxp
bmUgdm9pZCogcm9vdChBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1l
ZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhhcyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKwor
ICAgIC8vIE5vIG1lZGlhIGVsZW1lbnQsIHJldHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1
cm4gdHJhY2s7Cit9CisKK30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWM2MTZiMGQ0YjhhYTkyOTQyMmYwNWFkNzU0OTMyNDA5YWExNmFkOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3Bw
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRp
b1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNr
TGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlv
VHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0
LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVy
cywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBp
cyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYg
KGF1ZGlvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQg
aGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICgh
YXVkaW9UcmFja0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFja0xpc3Qt
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
SXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUu
CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xp
c3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBKU0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNr
TGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2tMaXN0LCAmc19pbmZv
KTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFT
U0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrTGlz
dCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0
aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAg
ICBhdWRpb1RyYWNrTGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMmJhMTBmNTU2ZThiNDgwMmU4
YmE5NjZmZDFkM2NlMTI0MzEyNDA1Ni4uNTFhZGYzNWUzNDlmODRlZGE2ZjAzYTdhNDkzOWVjM2Vk
YzQ0ZWQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmNw
cCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0F0dHJD
dXN0b20uY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0N1c3RvbS5jcHAiCisjaW5jbHVkZSAi
SlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNCbG9iQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NGb250
RmFjZVJ1bGVDdXN0b20uY3BwIgpAQCAtMTQ3LDYgKzE0OSw4IEBACiAjaW5jbHVkZSAiSlNUcmFj
a0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1RyZWVXYWxrZXJDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3RvbS5j
cHAiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5
ZnJhbWVzUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDQwNjlkNTRmOTU0YTViMzAxMGE0NTViOTY2YmUwZjNlYzlhZGEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3Rv
bS5oIgorCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU1ZpZGVvVHJhY2tPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9U
cmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAg
IFZpZGVvVHJhY2sqIHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRl
b1RyYWNrLT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJv
cGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzVmlkZW9UcmFjay0+aGFz
Q3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrKSk7Cit9CisKK3ZvaWQg
SlNWaWRlb1RyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrKiBqc1ZpZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRl
b1RyYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJh
Y2ssICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7CisgICAgQVNTRVJUKGpzVmlkZW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9U
cmFjaywgdmlzaXRvcik7CisKKyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nh
c3Q8VmlkZW9UcmFjayo+KGpzVmlkZW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1
c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNlMzc1ZTU2N2U2YmEzOGEzZmQ2ZDJjOTk1YWYwYzFjZGY2YWIz
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tDdXN0b20uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNWaWRl
b1RyYWNrQ3VzdG9tX2gKKyNkZWZpbmUgSlNWaWRlb1RyYWNrQ3VzdG9tX2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJKU05vZGVDdXN0b20uaCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suaCIKKwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgdm9pZCogcm9vdChW
aWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICAvLyBSZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyBy
b290IGlmIGl0IGhhcyBvbmUuCisgICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPm1lZGlhRWxlbWVudCgpKTsKKworICAgIC8vIE5vIG1lZGlh
IGVsZW1lbnQsIHJldHVybiB0aGUgdGV4dCB0cmFjay4KKyAgICByZXR1cm4gdHJhY2s7Cit9CisK
K30KKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJkOTY3MTBkNjA5MzEw
Yzc4NzJhN2RmNDNiNmNkYjQzMzViMWQ1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrTGlzdE93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xp
c3QqIGpzVmlkZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGhhbmRsZS5n
ZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3Rh
dGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworCisg
ICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIg
aXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBm
b3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKHZpZGVvVHJhY2tMaXN0
LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3RvbSBw
cm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghdmlkZW9UcmFja0xpc3Qt
Pmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzVmlkZW9UcmFja0xpc3QtPmhhc0N1c3RvbVByb3Bl
cnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxl
IGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZp
c2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsK
K30KKwordm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1Ry
YWNrTGlzdCA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxF
X0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJh
Y2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrTGlzdCwgdmlzaXRvcik7CisK
KyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1Ry
YWNrTGlzdCo+KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICB2aWRlb1RyYWNrTGlz
dC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA4Mjc3N2E4NmVl
ZmRmYmViZTY4OWM5YjkyMzM2ODgyOTU4MzkxYzNlLi5lYTA3OTliYjVkMGQ3MzRjMDFmNDY4YTYz
ZTFkNWIyMjA1Y2ZiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNDEsNiArNDEs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXVkaW9Db250ZXh0OworICAg
IGNsYXNzIEF1ZGlvVHJhY2tMaXN0OwogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQ7
CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBA
IC02Nyw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTb3VyY2VCdWZm
ZXJMaXN0OwogICAgIGNsYXNzIFRleHRUcmFjazsKICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7Cisg
ICAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNz
IFdlYktpdE5hbWVkRmxvdzsKICAgICBjbGFzcyBXb3JrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA0NzZkMWI1M2YxNDViYjI3MzQ5ODk5M2YzOWYxZDFj
YmFhNjIzNTgzLi44ZWE1YjdiMDNhYmFjYTAyZjI1ZjQ4YTJlZDU1OTkyNjNlYTQ3MGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEsNiArMSw3IEBACiBu
YW1lc3BhY2U9IkV2ZW50VGFyZ2V0IgogCiBBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FV
RElPCitBdWRpb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogQmF0dGVyeU1hbmFn
ZXIgY29uZGl0aW9uYWw9QkFUVEVSWV9TVEFUVVMKIERlZGljYXRlZFdvcmtlckNvbnRleHQgY29u
ZGl0aW9uYWw9V09SS0VSUwogRE9NQXBwbGljYXRpb25DYWNoZQpAQCAtMzcsNiArMzgsNyBAQCBT
VkdFbGVtZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCiBUZXh0VHJhY2sgY29uZGl0aW9uYWw9
VklERU9fVFJBQ0sKIFRleHRUcmFja0N1ZSBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRy
YWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSworVmlkZW9UcmFja0xpc3QgY29uZGl0aW9u
YWw9VklERU9fVFJBQ0sKIFdlYktpdE5hbWVkRmxvdwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdF
Ql9TT0NLRVRTCiBXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMWRkMzAxYzU4MWE2NzUzMjZkZjZlODI5MWUzZmYy
NWMwOTVjNjllOC4uMDQ1YmRjZDU4YWE4NjAyZTllNzhkYjI2MzBmMjNmNWRiOThjYmFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05OCw2ICs5OCw4IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNr
TGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2suaCIKQEAgLTEwNSw2ICsxMDcsOCBAQAogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAj
aW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisj
aW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9B
VURJTykKQEAgLTI5Niw3ICszMDAsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICwg
bV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZShmYWxzZSkKICAgICAsIG1fbGFzdFRleHRUcmFj
a1VwZGF0ZVRpbWUoLTEpCiAgICAgLCBtX2NhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpBdXRvbWF0aWMpCisgICAgLCBtX2F1ZGlvVHJhY2tzKDApCiAgICAgLCBtX3Rl
eHRUcmFja3MoMCkKKyAgICAsIG1fdmlkZW9UcmFja3MoMCkKICAgICAsIG1faWdub3JlVHJhY2tE
aXNwbGF5VXBkYXRlKDApCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMzMwLDEy
ICszMzYsMjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGRv
Y3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFj
a3ModGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGRvY3VtZW50KCktPnVucmVn
aXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAgIGlm
IChtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyT3duZXIoKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXVkaW9UcmFja3MtPmxlbmd0aCgp
OyArK2kpCisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgp
OworICAgIH0KICAgICBpZiAobV90ZXh0VHJhY2tzKQogICAgICAgICBtX3RleHRUcmFja3MtPmNs
ZWFyT3duZXIoKTsKICAgICBpZiAobV90ZXh0VHJhY2tzKSB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBt
X3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CiAgICAgfQorICAgIGlmIChtX3Zp
ZGVvVHJhY2tzKSB7CisgICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpOyArK2kp
CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOworICAg
IH0KICNlbmRpZgogCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQpAQCAtMTM0OSw2ICsxMzY1
LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQo
VGV4dFRyYWNrKiB0cmFjaykKICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVk
aW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwgd2Fu
dCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0
cmFjaykKIHsKICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tF
bGVtZW50KSB7CkBAIC0xMzg4LDYgKzE0MDksMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIHVwZGF0ZUFjdGl2ZVRl
eHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikKK3sKKyAgICAvLyBXZSB3aWxs
IHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlzdAor
fQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFj
ayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpjYXB0aW9u
c0tleXdvcmQoKSAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29y
ZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKQpAQCAt
Mjc5Miw2ICsyODE4LDE2IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9hZGVk
KCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QXVk
aW9UcmFjaz4gdHJhY2sgPSBBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spOworCisg
ICAgYWRkQXVkaW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlPiBwcnBUcmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0yODI3LDYgKzI4NjMsMzMgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXYKICAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKIH0KIAor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUodGhp
cywgcHJwVHJhY2spOworCisgICAgYWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7Cit9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NS
ZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBU
aGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEF1ZGlvVHJhY2sgd2l0aCB0
aGUgQXVkaW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRB
dWRpb1RyYWNrLgorICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PEF1
ZGlvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOworICAgIGlmICghdHJhY2spCisgICAgICAg
IHJldHVybjsKKworICAgIHJlbW92ZUF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjg0NCw2ICsy
OTA3LDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0
VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQCiAgICAgcmVtb3ZlVGV4dFRyYWNrKHRl
eHRUcmFjay5nZXQoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJE
aWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBycFRyYWNr
KQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0
ZWQgdGhlIFZpZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFja1ByaXZhdGUKKyAgICAvLyBwYXNz
ZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgorICAgIFJlZlB0cjxWaWRlb1RyYWNr
PiB0cmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkpOwor
ICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZVZpZGVvVHJhY2so
dHJhY2suZ2V0KCkpOworfQorCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0
Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UcmFjaykKIHsKQEAgLTI5MjAsNiArMzAwMCwxMSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKQogI2VuZGlm
CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0
cmFjaykKK3sKKyAgICBhdWRpb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOworfQorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIHRl
eHRUcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKQEAgLTI5MjcsNiArMzAxMiwxNiBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3Nl
Q2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRW
aWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIHZpZGVvVHJhY2tzKCktPmFwcGVu
ZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhB
dWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUodHJhY2spOwor
fQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRy
YWNrKQogewogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwpAQCAtMjkz
OCwxOCArMzAzMywzMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhU
ZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNr
KQoreworICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRy
YWNrcykKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2F1ZGlvVHJhY2tzKQorICAgICAgICB3
aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAg
ICAgICByZW1vdmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3MtPml0ZW0obGVuZ3RoIC0gMSkpOwog
Ci0gICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7Ci0gICAgZm9yIChpbnQg
aSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBU
ZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOworICAgIGlmIChtX3RleHRU
cmFja3MpIHsKKyAgICAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7Cisg
ICAgICAgIGZvciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0aCgpIC0gMTsgaSA+PSAwOyAt
LWkpIHsKKyAgICAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0o
aSk7CiAKLSAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFu
ZCkKLSAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgICAgICBpZiAo
dHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5CYW5kKQorICAgICAgICAgICAgICAg
IHJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAobV92
aWRlb1RyYWNrcykKKyAgICAgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fdmlkZW9UcmFj
a3MtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmVtb3ZlVmlkZW9UcmFjayhtX3ZpZGVvVHJhY2tz
LT5pdGVtKGxlbmd0aCAtIDEpKTsKIH0KIAogUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk4
OSw2ICszMDk2LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAgICAgcmV0dXJuIHRleHRU
cmFjay5yZWxlYXNlKCk7CiB9CiAKK0F1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojph
dWRpb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9hdWRp
b1RyYWNrcykKKyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0OjpjcmVhdGUo
dGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAg
cmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKIFRleHRUcmFja0xpc3QqIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0zMDAwLDYgKzMxMTgsMTcgQEAgVGV4
dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpCiAgICAgcmV0dXJuIG1f
dGV4dFRyYWNrcy5nZXQoKTsKIH0KIAorVmlkZW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6
OnZpZGVvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3Zp
ZGVvVHJhY2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9UcmFja0xpc3Q6OmNyZWF0
ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAg
ICByZXR1cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogICAg
IEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKQEAgLTQ5MTcsNyAr
NTA0Niw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgaW5mby5hZGRNZW1iZXIobV9t
ZWRpYVNvdXJjZSwgIm1lZGlhU291cmNlIik7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgaW5mby5hZGRNZW1iZXIobV9hdWRpb1RyYWNrcywgImF1ZGlvVHJhY2tzIik7CiAg
ICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzLCAidGV4dFRyYWNrcyIpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fdmlkZW9UcmFja3MsICJ2aWRlb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVt
YmVyKG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLCAidGV4dFRyYWNrc1do
ZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdWVUcmVl
LCAiY3VlVHJlZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VycmVudGx5QWN0aXZlQ3Vlcywg
ImN1cnJlbnRseUFjdGl2ZUN1ZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggZDA4NWU5ZGZiODg2MDQwN2VhZDkxOTFlYzI3Y2FiNGQ5MmI5NzY2My4uZmEyZjlm
OGZiZTgwZTBiMGQ5NzdkNTc2MjdjZmM1Y2JhYjA0ZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTM5LDEwICszOSwxMiBAQAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsOCArNzIs
MTIgQEAgY2xhc3MgTWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3Mg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIFRleHRUcmFja0xpc3Q7CitjbGFzcyBWaWRl
b1RyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiB0eXBlZGVmIFBPREludGVy
dmFsVHJlZTxkb3VibGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5cGVkZWYg
Q3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CkBAIC04NCw3ICs5MCw5
IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0OwogCiBjbGFzcyBIVE1MTWVk
aWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQs
IHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBwcml2YXRlIEF1ZGlv
VHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2YXRl
IFZpZGVvVHJhY2tDbGllbnQKICNlbmRpZgogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01F
TlUpCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CkBAIC0yMjYsMTEg
KzIzNCwxOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFj
ayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBhZGRUZXh0VHJhY2soa2luZCwgbGFiZWwsIGVtcHR5U3RyaW5nKCksIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5n
JiBraW5kLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVt
cHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogCisgICAgQXVkaW9UcmFja0xpc3Qq
IGF1ZGlvVHJhY2tzKCk7CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrcygpOworICAgIFZp
ZGVvVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpOworCiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3Rp
dmVDdWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKKyAgICB2
b2lkIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayopOwogICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRl
eHRUcmFjayopOworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CisgICAgdm9p
ZCByZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKICAgICB2b2lkIHJlbW92ZVRleHRUcmFj
ayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayopOwog
ICAgIHZvaWQgcmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25U
cmFja3NDaGFuZ2VkKCk7CiAgICAgdm9pZCBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hh
bmdlcygpOwpAQCAtMjM4LDggKzI1MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEFkZFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVk
aW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
ckRpZFJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIE9WRVJS
SURFOwogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4pIE9W
RVJSSURFOwpAQCAtMjc1LDYgKzI5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZVRl
eHRUcmFja0Rpc3BsYXkoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKIAor
ICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0VuYWJs
ZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKTsKKwogICAgIC8vIFRleHRUcmFja0NsaWVudAogICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKik7CkBAIC0yODQsNiAr
MzA2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRy
YWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKKyAg
ICAvLyBWaWRlb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3Rl
ZENoYW5nZWQoVmlkZW9UcmFjayopOworCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJl
c2VudGF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopOwogI2VuZGlmCkBAIC02OTksNyArNzI0LDkgQEAgcHJp
dmF0ZToKIAogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBt
X2NhcHRpb25EaXNwbGF5TW9kZTsKIAorICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRp
b1RyYWNrczsKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOworICAgIFJl
ZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4gPiBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbjsKIAogICAg
IEN1ZUludGVydmFsVHJlZSBtX2N1ZVRyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbAppbmRleCBjZWQ0MTc0NTlkYWJhMTM1ZWQwMDVlZjY1NDg2ZDI1YWY2ZTFjY2Q1
Li4wNWJjMmRkOGM0ZmI4ODRlN2JlYmQ2N2IwYzcyM2U5ZTVkNTE4YWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTExNiw3ICsxMTYsOSBAQCB2b2lkIHdl
YmtpdENhbmNlbEtleVJlcXVlc3QoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5k
ZWZpbmVkQXM9TnVsbFN0cgogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFC
TEVfVklERU9fVFJBQ0sKIFRleHRUcmFjayBhZGRUZXh0VHJhY2soaW4gRE9NU3RyaW5nIGtpbmQs
IGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBs
YW5ndWFnZSkKICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CityZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9UcmFja0xpc3QgYXVkaW9UcmFja3M7CiByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNr
TGlzdCB0ZXh0VHJhY2tzOworcmVhZG9ubHkgYXR0cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVv
VHJhY2tzOwogI2VuZGlmCiAKIFtSZWZsZWN0LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG1lZGlhR3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmQ1NDNhMWY3MGI5NTQ3OGNiZjIxOTU1MTIzMjEwZmIw
ZDM3NDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIK
KworI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlRyYWNrQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWx0ZXJuYXRpdmUsICgiYWx0ZXJuYXRp
dmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGFs
dGVybmF0aXZlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmRlc2NyaXB0
aW9uS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGRlc2NyaXB0aW9uLCAoImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBkZXNjcmlwdGlvbjsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW4sICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbjsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluRGVzYywgKCJtYWluLWRlc2MiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1haW5EZXNjOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYW5zbGF0
aW9uLCAoInRyYW5zbGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHJldHVybiB0cmFuc2xhdGlvbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRp
b1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVudGFyeTsKK30KKwor
QXVkaW9UcmFjazo6QXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQ
dHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRyYWNrQmFzZShUcmFj
a0Jhc2U6OkF1ZGlvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwgdHJhY2tQcml2YXRlLT5s
YW5ndWFnZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkpCisgICAgLCBtX2VuYWJs
ZWQodHJhY2tQcml2YXRlLT5lbmFibGVkKCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAg
LCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRo
aXMpOworCisgICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgeworICAgIGNhc2UgQXVkaW9U
cmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmFs
dGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNr
UHJpdmF0ZTo6RGVzY3JpcHRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6ZGVzY3Jp
cHRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpNYWluOgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluRGVzYzoKKyAg
ICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OlRyYW5zbGF0aW9uOgorICAgICAgICBz
ZXRLaW5kKEF1ZGlvVHJhY2s6OnRyYW5zbGF0aW9uS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToKKyAgICAgICAgc2V0S2lu
ZChBdWRpb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZToKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmlu
ZygpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQXVkaW9UcmFjazo6fkF1ZGlv
VHJhY2soKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KDApOworfQorCitib29sIEF1ZGlv
VHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0Cit7Cisg
ICAgaWYgKHZhbHVlID09IGFsdGVybmF0aXZlS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb25LZXl3b3JkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBtYWluS2V5d29yZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbkRlc2NLZXl3b3JkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh2YWx1ZSA9PSB0cmFuc2xhdGlvbktleXdvcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNvbW1lbnRhcnlLZXl3b3JkKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEF1ZGlvVHJh
Y2s6OnNldEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX2VuYWJsZWQg
PT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZW5hYmxlZDsK
KworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmF1ZGlvVHJhY2tFbmFibGVk
Q2hhbmdlZCh0aGlzKTsKK30KKworc2l6ZV90IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgo
KQoreworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlv
VHJhY2tJbmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTM3NTc0NTFhZGIy
ZTNmYmI5NWM5MjI3ODkzMDQwMzgzYzAzNDNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19oCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlv
VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRp
b1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNr
UHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFjayhj
bGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrKCk7
CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9p
ZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiB0cmFuc2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBj
b21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZh
dWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eUF0b207IH0KKwor
ICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmFibGVkKGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xpZW50
KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgc2l6ZV90IGluYmFu
ZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0Ns
aWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJ
REU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBB
dWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZT4gbV9wcml2YXRlOworfTsKKworaW5saW5lIEF1ZGlvVHJhY2sqIHRvQXVkaW9UcmFjayhUcmFj
a0Jhc2UqIHRyYWNrKQoreworICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFzZTo6
QXVkaW9UcmFjayk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPih0cmFjayk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYjYzYzg1ZGQ5ODE4
NGU2NjVmMWRiNjQyNzFjYTQ0YmRlNmUzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5j
dGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBBdWRpb1RyYWNrIHsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxh
YmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBh
dHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzNTViNzNmZmRiNGQ3ODI2YWNlZTZm
ZmU5YjI3MmNmNTdhNWYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitBdWRpb1Ry
YWNrTGlzdDo6QXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250
ZXh0KQoreworfQorCitBdWRpb1RyYWNrTGlzdDo6fkF1ZGlvVHJhY2tMaXN0KCkKK3sKK30KKwor
dm9pZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJh
Y2spCit7CisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAv
LyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRl
eCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0
KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0
cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxl
bWVudChvd25lcigpKTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNl
KCkpOworfQorCitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAg
ICAgIHJldHVybiB0b0F1ZGlvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKwor
ICAgIHJldHVybiAwOworfQorCitBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6Z2V0VHJhY2tC
eUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2luYmFuZFRyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBBdWRpb1RyYWNr
KiB0cmFjayA9IHRvQXVkaW9UcmFjayhtX2luYmFuZFRyYWNrc1tpXS5nZXQoKSk7CisgICAgICAg
IGlmICh0cmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB0cmFjazsKKyAgICB9
CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFja0xpc3Q6
OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yQXVkaW9UcmFja0xpc3Q7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9BdWRpb1RyYWNrTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNDRiOGJhM2QwMGQ3ZGU0ZWQwYmJk
NTNhZjE1OTdhNDY3NGIyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEF1ZGlvVHJhY2tMaXN0X2gKKyNkZWZpbmUgQXVkaW9UcmFja0xpc3RfaAorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1ZGlvVHJh
Y2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEF1ZGlvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5B
dWRpb1RyYWNrTGlzdCgpOworCisgICAgQXVkaW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0OworCisgICAgQXVkaW9UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPik7CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja0xpc3Qo
SFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMxY2UwOGMyNGM5NDA0MTk0
MGQ2Mzc4OGIzMGI0ZTk0NmM2NWVjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisg
ICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21J
c1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRpb1RyYWNrIGl0ZW0oaW4gdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3Ry
aW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFu
IHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFu
IHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisg
ICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5oCmluZGV4IDVkZDNiZWY4NDY2OTNiNWQ5ODdmZGZmZjY2YmQ4
MDExNTgzNmI0YzEuLmJmM2ExODhjNzk5YTU1ODY5ODY0ZTc5ZWU1NWY2NWVhMWVkZGM2MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURF
OwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNr
TGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM0YTVkOWQxODU4
YmVkYWFjOWY0ZWQ0NDFjNjJkMTIxMjhkMzZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJWaWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
VHJhY2tCYXNlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFs
dGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNpZ24sICgic2lnbiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc2lnbjsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVz
LCAoInN1YnRpdGxlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitWaWRlb1Ry
YWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6
VmlkZW9UcmFjaywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdl
KCkpCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fc2VsZWN0ZWQodHJh
Y2tQcml2YXRlLT5zZWxlY3RlZCgpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9w
cml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsK
KworICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKKyAgICBjYXNlIFZpZGVvVHJhY2tQ
cml2YXRlOjpBbHRlcm5hdGl2ZToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZh
dGU6OkNhcHRpb25zOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoK
KyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjoKKyAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpzaWduS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRl
b1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1
YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1By
aXZhdGU6OkNvbW1lbnRhcnk6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFy
eUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK1ZpZGVvVHJhY2s6On5WaWRlb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZh
dGUtPnNldENsaWVudCgwKTsKK30KKworYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRlcm5h
dGl2ZUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNh
cHRpb25zS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0g
bWFpbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHNp
Z25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBzdWJ0
aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBj
b21tZW50YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChjb25zdCBib29sIHNlbGVj
dGVkKQoreworICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRoaXMpOworfQorCitzaXpl
X3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0
ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRiNjQ0ZDY2OTdjYzczNWY2N2QzOThmZDcwZGJmZWVmMjZiN2Mx
YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2suaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVv
VHJhY2tfaAorI2RlZmluZSBWaWRlb1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNp
bmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFz
cyBWaWRlb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xp
ZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlk
ZW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNl
LCBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
YWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2Fw
dGlvbnNLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdv
cmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaWduS2V5d29yZCgpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wp
OworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9
IDA7IH0KKyAgICBWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2Ns
aWVudDsgfQorCisgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgor
ICAgIFZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGU+IHByaXZhdGVUcmFjayk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVmFs
aWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOworCisgICAgQXRvbWlj
U3RyaW5nIG1faWQ7CisgICAgYm9vbCBtX3NlbGVjdGVkOworICAgIFZpZGVvVHJhY2tDbGllbnQq
IG1fY2xpZW50OworCisgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9
OworCitpbmxpbmUgVmlkZW9UcmFjayogdG9WaWRlb1RyYWNrKFRyYWNrQmFzZSogdHJhY2spCit7
CisgICAgQVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KHRyYWNrKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUyNmQzMzA3MTQ3ZjMxZGQyNGRhMmQ4NWRmYjIw
ODcyMGM3MjcwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3Vz
dG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIFZpZGVvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBr
aW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFu
IHNlbGVjdGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGMwN2M5NWM1NzgxNjZmNGViZTU2ZTdkY2ZmZTVlMDU5YjRlZTQ5
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFj
a0xpc3QuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNr
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitWaWRlb1RyYWNrTGlzdDo6VmlkZW9U
cmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0KQoreworfQorCitW
aWRlb1RyYWNrTGlzdDo6flZpZGVvVHJhY2tMaXN0KCkKK3sKK30KKwordm9pZCBWaWRlb1RyYWNr
TGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gcHJwVHJhY2spCit7CisgICAgUmVm
UHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJbnNlcnQgdHJhY2tz
IGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9IHRyYWNrLT5pbmJh
bmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7
CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVt
ZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsK
KworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQorCitWaWRl
b1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAg
ICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAgICAgIHJldHVybiB0b1Zp
ZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKworICAgIHJldHVybiAwOwor
fQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0VHJhY2tCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgo
KTsgKytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRlb1RyYWNrKG1faW5i
YW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQorICAg
ICAgICAgICAgcmV0dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworbG9uZyBW
aWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0Cit7CisgICAgLy8gNC44LjEwLjEw
LjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IG9iamVjdHMKKyAgICAvLyBUaGUg
VmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRleCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGlu
ZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRseSBzZWxlY3RlZCB0cmFjaywgaWYgYW55LiBJZiB0
aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRvZXMgbm90CisgICAgLy8gY3VycmVudGx5IHJlcHJl
c2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25lIG9mIHRoZSB0cmFja3MgYXJlIHNlbGVjdGVkLAor
ICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1cm4g4oiSMS4KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVmlkZW9UcmFjayogdHJhY2sgPSB0b1Zp
ZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAgICAgICBpZiAodHJhY2stPnNl
bGVjdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIC0xOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclZpZGVvVHJhY2tM
aXN0OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMTRmZmRjNGNlNmNmM2IzODU5ODg2OTlmY2Y3ZjExMGRiZDczNGQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
TGlzdC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWaWRlb1Ry
YWNrTGlzdF9oCisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1RyYWNrTGlzdCA6IHB1YmxpYyBU
cmFja0xpc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNr
TGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1Ry
YWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VmlkZW9UcmFja0xpc3QoKTsK
KworICAgIFZpZGVvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKKyAgICBsb25nIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKworICAgIFZpZGVvVHJhY2sqIGl0
ZW0odW5zaWduZWQpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFj
az4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFZpZGVv
VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQzNmFm
NjIwYjg0NDU1YWY3MzhkZWIxNDg0MDQxNjNmNGE1NTJiZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4
ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisg
ICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgVmlkZW9UcmFja0xpc3QgeworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBWaWRlb1RyYWNr
IGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVmlkZW9UcmFjayBnZXRUcmFja0J5
SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hh
bmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZl
bnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBF
dmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zODFmZWQzN2E0Yjk2NzFlMzFlMzgyNTM0YjA0MzkwOTQzYWE4YjAxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFj
a1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tQ
cml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJh
Y2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0
ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1
ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQo
QXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQor
ICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxl
ZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlwdGlv
biwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAg
dmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1
YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207
IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX2Vu
YWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJp
dmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODdlOTQyNTQ0OWNjZDAwZmU4
OGNlY2Q2N2JmOWVjNTc1NTQwODQ2My4uYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0
NmI3ZDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcApAQCAtMTEwMyw2ICsxMTAzLDIyIEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBN
ZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogfQogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQordm9pZCBNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlv
VHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlk
QWRkQXVkaW9UcmFjayh0cmFjayk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFt
X21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVy
Q2xpZW50LT5tZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2sodHJhY2spOworfQorCiB2b2lk
IE1lZGlhUGxheWVyOjphZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlPiB0cmFjaykKIHsKICAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCkBAIC0xMTE5LDYg
KzExMzUsMjIgQEAgdm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gdHJhY2spCiAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+
bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sodHJhY2spOwogfQogCit2b2lkIE1lZGlhUGxh
eWVyOjphZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrKQor
eworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKHRyYWNrKTsK
K30KKwordm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVv
VHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlk
UmVtb3ZlVmlkZW9UcmFjayh0cmFjayk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXI6OnJlcXVpcmVz
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUt
PnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDU1YjllMmYyZjg3NDZkZDNmZDU3
ZmViOWQyMThhZjFlMTViZTBjYzguLjFlZmQ3M2FmYTY0ZDU2YTA5NWRjNDkyZDkyZWZlNjk0ZGRi
ODQ2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMzIsMTEgKzMyLDEzIEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcm94eS5oIgog
I2VuZGlmCiAKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTIxOCw4ICsy
MjAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlh
UGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9CiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFj
ayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFz
c1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkJvdW5kc0NoYW5n
ZWQoY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSB7IH0KQEAgLTQ0
OSw4ICs0NTUsMTIgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRS
ZXNvdXJjZUxvYWRlcigpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZvaWQgYWRk
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7CiAgICAgdm9pZCBhZGRU
ZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CisgICAgdm9pZCBh
ZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIHJl
bW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogICAgIHZvaWQg
cmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOworICAg
IHZvaWQgcmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPik7CiAK
ICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNr
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1By
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNDYxMDNjYjE4MTVhNWM5YWE1NjQwMmUzYmNjNDViM2JiYjEy
ODczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZp
ZGVvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1Ry
YWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlKCkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBz
ZXRDbGllbnQoVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNs
aWVudDsgfQorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQp
IHsgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0
aXZlLCBDYXB0aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07
CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2
aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAg
IHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9
CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0
eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IHZpZGVvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIFZpZGVvVHJhY2tQcml2YXRlKCkKKyAgICAgICAg
OiBtX3NlbGVjdGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9U
cmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zZWxlY3RlZDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198191</attachid>
            <date>2013-04-15 14:57:43 -0700</date>
            <delta_ts>2013-04-16 09:19:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113965-20130415155717.patch</filename>
            <type>text/plain</type>
            <size>123352</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA2ZWMwMjU2YWQ3Mjgx
ODczNWVmODIyNTAwMGRiODE2NDlhZTlhZS4uYzJjMWE1MWJjNDQxMWUxYzcwMDI4YmU4MDJhMjM5
Mjk1NDc5NDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTEyICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNr
TGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2
ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFu
ZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1l
ZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRk
ZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBT
YW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0
VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5k
IHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFj
a3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdl
KTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFj
a3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDog
QWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFk
ZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRl
eHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBi
YXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1v
dmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRk
VGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBs
YXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQs
IGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0LTE1ICBSb2JlcnQg
SG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBBbiBpbmxpbmUgZWxlbWVudCB3
aXRoIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBjaGlsZCBkb2VzIG5vdCBjb3JyZWN0bHkgY2Fs
Y3VsYXRlL3JlbmRlciBwYWRkaW5nIGFuZCBtYXJnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
M2QxZWNlOWNlNzUyNTdlMDQ4OWM4ZjA5Y2ZkNTM0MTFlYzgyNzkyNS4uZDJmMjAyY2NjM2I5MjQy
NzlmOGJlOWUxY2FkZmU1NjYwOGI2ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI2ODUs
MTQgKzI2ODUsMjAgQEAgZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBs
aXN0KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJh
Y2suaWRsCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCiAgICAgICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5p
ZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAogICAgICAgICBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5p
ZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNr
L1ZpZGVvVHJhY2tMaXN0LmlkbAogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNr
LmNwcAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAogICAgICAgICBo
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTI3MDYsNiArMjcxMiw4IEBAIGlmIChFTkFCTEVf
VklERU9fVFJBQ0spCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKICAgICAg
ICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRU
VG9rZW5pemVyLmNwcAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCisgICAgICAg
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCiAKICAgICAgICAgbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDZiN2Nk
MDdlYzdiNDUzOTQ1MWUwNWM3ZjU1NzhlZjk0OGUyNGE5ZDcuLjRhNGJhZGEwYzNiNTdiMTc4YjUw
MjRlMzBkNDFlMTY5YmM5ZWI3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTQ3
MiwxMiArNDcyLDE2IEBACiAjaW5jbHVkZSAiSlNUZXh0RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpT
VGV4dE1ldHJpY3MuY3BwIgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1
ZGlvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuY3BwIgogI2luY2x1ZGUg
IkpTSFRNTFRyYWNrRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2lu
Y2x1ZGUgIkpTVGV4dFRyYWNrQ3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2
ZW50LmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9U
cmFja0xpc3QuY3BwIgogI2VuZGlmCiAjaW5jbHVkZSAiSlNUaW1lUmFuZ2VzLmNwcCIKICNpbmNs
dWRlICJKU1RvdWNoLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBkN2E2
NWQyN2U5M2I2OGQ3MDBiZThiZTY5MzBjMTkyMjY2YmQxNDguLjEwZGVkNjI4YmVmNjcwZmJiZGE5
OGJiNzNmYzk2NDAwMjBjYjg3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
NDMxLDExICs0MzEsMTUgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9B
dWRpb1RyYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAg
ICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVj
dG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBk
YmVjYTQ3MWE3YzYxYzc2Y2Y0MjAxNTEwODY4NTg1Zjk3NzI3MjRmLi43OTA5ZTFhZTUxZTNhNWNi
YzE0NjljZjU3MTRhNWJmNTQ1MTliMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBA
IC02NTIsMTEgKzY1MiwxNSBAQCBlbmFibGU/KEdBTUVQQUQpIHsKIAogZW5hYmxlPyhWSURFT19U
UkFDSykgewogICBJRExfQklORElOR1MgKz0gXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKICAg
ICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0
LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQ
V0QvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKIH0K
IAogZW5hYmxlPyhNRURJQV9TT1VSQ0UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDFlNmVkZGM0MzE4MTI4M2FlMWQ3MDhmMWRmYzAyOTAyYTE5OGQ4ZmIuLjlhYTAyODQ4NzU0
MjMxZDRlMzY1YjhlNzk1MDg1OTc4MjA1ODFlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtNjUsNiArNjUsMTAgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb1NvdXJjZU5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFjay5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0JhckluZm8uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmFySW5mby5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmVmb3JlTG9hZEV2ZW50LmNwcCBcCkBAIC03
NzcsNiArNzgxLDEwIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1ZhbGlkaXR5U3RhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1ZvaWRDYWxsYmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJh
Y2suaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZpZGVvVHJhY2suY3BwIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTVmlkZW9UcmFjay5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTVmlkZW9UcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmlk
ZW9UcmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2Rl
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2RlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlVGFibGUuY3BwIFwKQEAgLTE1ODYsMTEgKzE1OTQs
MTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBc
CiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUp
L2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBc
CiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAJJChXZWJD
b3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAJJChXZWJDb3JlKS9p
bnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXApAQCAtMjMyMCw2ICsyMzMyLDkgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291
cmNlTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
Q3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5v
ZGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3RvbS5j
cHAgXApAQCAtMjQ3NCw2ICsyNDg5LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgXApAQCAtMzc2
Nyw2ICszNzg1LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg3LDYgKzM4MDksMTAgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwKQEAgLTU0OTcsNiArNTUyMyw3IEBAIHdlYmNvcmVfcGxh
dGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6ZUxv
Z2dpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRC
cmlkZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNr
UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dy
YXBoaWNzQ29udGV4dDNETkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jcHUvYXJtL2ZpbHRlcnMvTkVPTkhlbHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3Nyw2ICs1
ODA0LDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1cmVz
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IDVkNzgwMTA0OWM5ZGFhY2NjZWY4MmNjMWU1MDA4YmU2ZTliODcxMGEuLjQwZjkyNGEyMDg2NDAz
OWRjYTAyMTc2NWJhMDc4NTUzNjc2ZDg0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2Niw5ICszOTY2
LDEzIEBAIGVuYWJsZT8oSkFWQVNDUklQVF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVPX1RS
QUNLKSB7CiAgICAgSEVBREVSUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFj
a0N1c3RvbS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTVmlkZW9UcmFja0N1c3RvbS5oIFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmgg
XAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgg
XAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggXAogICAgICAgICBodG1s
L3RyYWNrL1RleHRUcmFjay5oIFwKQEAgLTM5NzksMjAgKzM5ODMsMzAgQEAgZW5hYmxlPyhWSURF
T19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICAgICAgaHRt
bC90cmFjay9UcmFja0V2ZW50LmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
aCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBc
CiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBcCiAgICAgICAgIGh0bWwvdHJhY2sv
V2ViVlRUVG9rZW5pemVyLmggXAogICAgICAgICBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAor
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggXAogCiAgICAgU09VUkNFUyArPSBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
IFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXAogICAg
ICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5jcHAgXApAQCAtNDAwMyw2ICs0MDE3LDggQEAgZW5h
YmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgXAog
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAor
ICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCmluZGV4IDc5YzllMTAyNTkzZmQwYzAwNDllNzcyYzIxZmVjMzM5NmM0NWNiZjMuLmE4ZjJm
ODE2MWM1NDNjZDhhZmY0ZjhkZWVmYmZkZGZkOGY4NWYwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAg
LTIxOCwxMSArMjE4LDE1IEBAIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0N1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5n
cy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJh
Y2tDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAK
KyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBiaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICkKIGVuZGlmICgpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMGYzZmIx
ZmZmODRlMTcyMzdhOWY4YTkzMTE3MmMxMGFlY2FmYWEwZS4uM2Y0ODc3ZTVlODA4NDMyMmFhMzNm
MWY4Y2E1ZWRmMThhNWMwNTIxMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTI5OTAyLDYgKzI5OTAyLDEwIEBACiAJCQkJTmFtZT0iZ3JhcGhp
Y3MiCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcQXVkaW9UcmFja1ByaXZhdGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEJpdG1hcEltYWdlLmNw
cCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTMwMzc4LDYgKzMwMzgyLDEwIEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xWaWRlb1RyYWNrUHJpdmF0ZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcV2luZFJ1bGUuaCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1NzQ2LDYgKzY1NzU0LDIyIEBACiAJCQkJTmFtZT0i
dHJhY2siCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFj
a1xBdWRpb1RyYWNrLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFjay5oIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1Ry
YWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEluYmFuZFRl
eHRUcmFjay5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02NTgyNiw2ICs2NTg1MCwyMiBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFx0cmFja1xWaWRlb1RyYWNrLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcVmlkZW9UcmFjay5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFj
a1xWaWRlb1RyYWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNr
XFdlYlZUVEVsZW1lbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZWUxMjllZmU0
ZGM0ZWM1ZjJkMDExNTU5ZTNlNDkwODVlY2QzOWEuLmMyOTQ1NWE0N2RlMWViY2QwOTRjODU5YWI3
OTY5MWQyM2Y1MjZiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMTMsOCArNTExMywzMiBAQAogCQlCQ0ZFMkYxMjBDMUI1
ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0ZFMkYxMDBDMUI1ODM3MDAyMDIzNUYgLyogSlNSZWN0LmggKi87IH07
CiAJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkY2NDhGMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQ0ZGNjQ5MjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRjY0OTAwRUFEMTVD
MjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCRTZERjcwQjE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICov
OyB9OworCQlCRTZERjcwQzE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwOTE3
MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmggKi87IH07CisJCUJFNkRGNzBE
MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFNkRGNzBBMTcxQ0EyQzUwMERE
NTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJQkU2REY3MTExNzFD
QTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwRTE3MUNBMkRBMDBERDUyQjggLyog
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQkU2REY3MTIxNzFDQTJEQTAwREQ1MkI4
IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkU2REY3MEYxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1
c3RvbS5oICovOyB9OworCQlCRTZERjcxMzE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNr
TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5j
cHAgKi87IH07CiAJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEJG
MTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLzsgfTsKIAkJQkU4OEUwQzIx
NzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFj
a0xpc3RCYXNlLmggKi87IH07CisJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1Ry
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUw
RDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrLmggKi87IH07CisJCUJFODhFMERCMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
RTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICovOyB9OworCQlC
RTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovOyB9OworCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBEMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi87IH07
CisJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBEMzE3MTVEMkEyMDA2NThE
OTggLyogVmlkZW9UcmFjay5oICovOyB9OworCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAq
LzsgfTsKKwkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBENjE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJQkU4RUYwNDIxNzFDOEZG
OTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1Ry
YWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYw
M0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovOyB9OworCQlCRThFRjA0NDE3
MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFOEVGMDQ1MTcxQzhGRjkwMDlCNDhDMyAv
KiBKU0F1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5o
ICovOyB9OworCQlCRThFRjA0QTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDQ2MTcx
QzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwICovOyB9OworCQlCRThFRjA0QjE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1Ry
YWNrLmggKi87IH07CisJCUJFOEVGMDRDMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
OEVGMDQ4MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJ
QkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDQ5MTcxQzkwMTQwMDlC
NDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJCUJFRjI5RUVCMTcxNUREMDkwMEM0
QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlLmggKi87IH07CisJCUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNr
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkVGMjlFRUExNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi87IH07CiAJ
CUMwNDZFMUFDMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwNDZFMUFCMTIwOEE5RkUw
MEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCAqLzsgfTsKIAkJQzBDMDU0Q0IxMTE4QzhF
NDAwQ0UyNjM2IC8qIENvZGVHZW5lcmF0b3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNTBBMzAwRkUxMDBGNjFBQjggLyogQ29kZUdlbmVy
YXRvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNzBBMzAwRkVB
MDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODQyLDEzICsxMTg2Niw0MSBAQAogCQlCQ0ZF
MkYxMDBDMUI1ODM3MDAyMDIzNUYgLyogSlNSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1JlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGRjY0
OEYwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aEJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMZW5ndGhCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNG
RjY0OTAwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGVuZ3RoU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCRTZERjcwODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmlkZW9UcmFja0N1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzA5MTcxQ0EyQzUwMERENTJCOCAv
KiBKU1ZpZGVvVHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNWaWRlb1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRG
NzBBMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTZERjcwRTE3MUNBMkRBMDBERDUyQjgg
LyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXVkaW9UcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJFNkRGNzBGMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb1RyYWNrQ3VzdG9tLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzEwMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1
ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCRTg1NUY3RjA3MDFFODM1MDAyMzk3NjkgLyogV2ViQ29yZVZpZXcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVZpZXcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUJFODU2MDUxMDcwMUY5MTEwMDIzOTc2OSAvKiBXZWJDb3JlVmlldy5tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJDb3JlVmlldy5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
QkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNrTGlzdEJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0MxNzE1RDJBMjAwNjU4RDk4IC8q
IEF1ZGlvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVk
aW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENEMTcxNUQy
QTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0Ux
NzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEF1ZGlvVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRjE3
MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFja0xpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDExNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAv
KiBWaWRlb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZp
ZGVvVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMzE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ0
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBWaWRlb1RyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDUx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ3MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlkZW9UcmFja0xpc3QuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMg
LyogSlNBdWRpb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQXVkaW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDNG
MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNBdWRpb1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJFOEVGMDQwMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNB
dWRpb1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlv
VHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQ2MTcxQzkw
MTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNWaWRlb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZpZGVvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkU4RUYwNDgxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQ5MTcxQzkwMTQwMDlC
NDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVmlkZW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU5
MUZDOEIwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTkxRkM4QzA2MTMz
NjY2MDA1RTM3OTAgLyogUG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU5ODNEOTUwNTJBMkUw
QTAwODkyRDg1IC8qIFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJ
CUJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFj
a1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1By
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA0NkUxQUIxMjA4QTlGRTAw
QkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTG9jYWxpemVkU3RyaW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMwREZDODZGMERCNjg0MUEwMDNFQUU3QyAvKiBKU0NvbnNvbGVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb25zb2xlQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8q
IHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGgg
PSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE2Njg5LDYgKzE2NzQxLDEwIEBACiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpT
QXJyYXlCdWZmZXIuaCAqLywKIAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwICovLAogCQkJCTQ5RUVDRjFBMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0Fy
cmF5QnVmZmVyVmlldy5oICovLAorCQkJCUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1
ZGlvVHJhY2suY3BwICovLAorCQkJCUJFOEVGMDNGMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlv
VHJhY2suaCAqLywKKwkJCQlCRThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNr
TGlzdC5jcHAgKi8sCisJCQkJQkU4RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
a0xpc3QuaCAqLywKIAkJCQk2NURGMzIzMzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFk
aWVudC5jcHAgKi8sCiAJCQkJNjVERjMyMzQwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3Jh
ZGllbnQuaCAqLywKIAkJCQk2NURGMzIzNTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0
ZXJuLmNwcCAqLywKQEAgLTE2OTIzLDYgKzE2OTc5LDEwIEBACiAJCQkJOTEwODlEMzAxNEMzMzVD
RDAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLywKIAkJCQkxNUM3NzA5MjEwMEQz
Q0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmNwcCAqLywKIAkJCQkxNUM3NzA5MTEwMEQz
Q0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmggKi8sCisJCQkJQkU4RUYwNDYxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgKi8sCisJCQkJQkU4RUYwNDcxNzFDOTAxNDAw
OUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovLAorCQkJCUJFOEVGMDQ4MTcxQzkwMTQwMDlCNDhD
MyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRThFRjA0OTE3MUM5MDE0MDA5QjQ4
QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oICovLAogCQkJCTk3RTlFQzhCMTVEQzQ5MkYwMDRGMkU3
MSAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgKi8sCiAJCQkJOTdFOUVDOEMxNURDNDkyRjAwNEYyRTcx
IC8qIEpTVm9pZENhbGxiYWNrLmggKi8sCiAJCQkJQTdEMjBGNjAxMDdGNDA2OTAwQTgwMzkyIC8q
IEpTV2ViR0xBY3RpdmVJbmZvLmNwcCAqLywKQEAgLTE3NjkxLDYgKzE3NzUxLDE4IEBACiAJCUIx
QUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQkU4OEUwQ0MxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2suY3BwICovLAorCQkJCUJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
LmggKi8sCisJCQkJQkU4OEUwQ0UxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaWRsICov
LAorCQkJCUJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgKi8s
CisJCQkJQkU4OEUwRDAxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi8sCisJ
CQkJQkU4OEUwRDExNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmlkbCAqLywKKwkJ
CQlCRTg4RTBEMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi8sCisJCQkJQkU4
OEUwRDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBENDE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwRDUxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBENjE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLywKKwkJCQlCRTg4RTBENzE3MTVEMkEyMDA2
NThEOTggLyogVmlkZW9UcmFja0xpc3QuaWRsICovLAogCQkJCUJFODhFMEJGMTcxNUNFMjYwMDY1
OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLywKIAkJCQlCRTg4RTBDMDE3MTVDRTI2MDA2NThE
OTggLyogVHJhY2tMaXN0QmFzZS5oICovLAogCQkJCTA3OTQxNzhGMTY2RTg1NUYwMDk0MTZDMiAv
KiBJbmJhbmRUZXh0VHJhY2suY3BwICovLApAQCAtMTgzNDgsNiArMTg0MjAsOCBAQAogCQkJCTQ5
RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAogCQkJCTQ5MDcwN0U0MTIx
OUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8sCiAJCQkJNDkwNzA3RTUx
MjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8sCisJCQkJQkVGMjlFRTkx
NzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCisJCQkJQkVGMjlFRUEx
NzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcw
QjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIz
Mzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzODBCMDUzODE0MDAy
Q0U2NEYgLyogQ29sb3IuY3BwICovLApAQCAtMTg4MjksNiArMTg5MDMsOSBAQAogCQkJCUJDMkVE
NkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUVG
MTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgKi8s
CiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cCAqLywKKwkJCQlCRTZERjcwRTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9t
LmNwcCAqLywKKwkJCQlCRTZERjcwRjE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3Vz
dG9tLmggKi8sCisJCQkJQkU2REY3MTAxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xp
c3RDdXN0b20uY3BwICovLAogCQkJCUZEOEFBNjNCMTY5NTE0OEUwMEQyRUE2OCAvKiBKU0JpcXVh
ZEZpbHRlck5vZGVDdXN0b20uY3BwICovLAogCQkJCTg5MzFERTVBMTRDNDRDNDQwMDBEQzlEMiAv
KiBKU0Jsb2JDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCkBAIC0xODkzOCw2ICsxOTAx
NSw5IEBACiAJCQkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAq
LywKIAkJCQkwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNw
cCAqLywKIAkJCQk1MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9t
LmNwcCAqLywKKwkJCQlCRTZERjcwODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3Vz
dG9tLmNwcCAqLywKKwkJCQlCRTZERjcwOTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNr
Q3VzdG9tLmggKi8sCisJCQkJQkU2REY3MEExNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFj
a0xpc3RDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0QzQxMjk3MzU0OTAw
QUNBOTg5IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFE
MTRCNDEyOTczNENBMDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNw
cCAqLywKQEAgLTIxMDI1LDYgKzIxMTA1LDcgQEAKIAkJCQlGRDMxNjA4OTEyQjAyNkY3MDBDMUEz
NTkgLyogQXVkaW9Tb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ2MkY1MkUx
NDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEQjA1MkUwMTU2MUE0MkMwMEI1MDBENiAvKiBBdWRpb1N1bW1pbmdKdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlv
VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4QjEyQjAyNkY3MDBDMUEz
NTkgLyogQXVkaW9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDYwMTJEMjZF
MzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNGLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2
ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjM4ODgsNiArMjM5NjksNyBAQAogCQkJCTE1Qzc3MDhEMTAwRDNDNkIwMDVC
QTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBRjEyQjAy
NkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUx
MjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRUY0MThDRjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1
bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRkZGOUFFMTU5RDlCMDYwMDIwQkJENSAvKiBW
aWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0
OTIwMDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQwNzQs
NiArMjQxNTYsMTYgQEAKIAkJCQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUI1MzM0OTE3MTdERUUzMDBGMjA1RjkgLyogQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJFODhFMEMyMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RC
YXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBEOTE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwREMxNzE1RDJBMjAwNjU4RDk4IC8q
IEF1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBERjE3MTVEMkEyMDA2
NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwRTIxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCRThFRjA0
MzE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
RThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkU4RUYwNEIxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xp
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFNkRGNzBDMTcxQ0EyQzUwMERENTJCOCAvKiBKU1Zp
ZGVvVHJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCUJFNkRGNzEyMTcxQ0EyREEwMERE
NTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcwMjIsNiAr
MjcxMTQsMTggQEAKIAkJCQlFMTUyNTUxNjE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFCNTMzNDcxNzE3RDBBMTAwRjIwNUY5IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xp
c3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAv
KiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFODhFMERCMTcxNUQyQTIwMDY1
OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBERTE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4
RTBFMTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQkU4RUYwNDIxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlCRThFRjA0NDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRThFRjA0QTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNW
aWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDRDMTcxQzkwMTQwMDlCNDhD
MyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFNkRGNzBCMTcx
Q0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkU2REY3MEQxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQkU2REY3MTExNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9U
cmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcxMzE3MUNBMkRBMDBERDUy
QjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IGYzMjJkNjRj
YzdkMTdhN2ZiNzU0MDNlYWJkMjE5YmZkM2VlZDkxOTcuLmVlZWVlYmExMGEzMmU2NWEyOTljMmNj
MGNjNzgyZjQwOGNlMzE2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbQpAQCAtNDMzLDE4ICs0MzMsMjQgQEAgd2Via2l0Z3RrX2dkb21fYnVp
bHRfaF9hcGkgKz0gXAogCiBpZiBFTkFCTEVfVklERU8KIHdlYmtpdGd0a19nZG9tX2J1aWx0X2hf
YXBpICs9IFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktp
dERPTUF1ZGlvVHJhY2suaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQuaCBcCiAJJCh0b3Bf
YnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVt
ZW50LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NVGV4dFRyYWNrLmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZS5oIFwKIAkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaCBc
Ci0JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFj
a0V2ZW50LmgKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktp
dERPTVRyYWNrRXZlbnQuaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuaAogd2Via2l0Z3RrX2dkb21f
YnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhU
TUxBdWRpb0VsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
SFRNTEF1ZGlvRWxlbWVudFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTUhUTUxWaWRlb0VsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVGV4dFRyYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTVRleHRUcmFja1ByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTVRleHRUcmFja0xpc3QuY3BwIFwKQEAgLTQ1Myw2ICs0NTksOCBAQCB3ZWJraXRndGtf
Z2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9X
ZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NVmlkZW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01WaWRlb1RyYWNrTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRv
bS9XZWJLaXRET01UcmFja0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTVRyYWNrRXZlbnRQcml2YXRlLmgKIGVuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDVjMWU0Mjcz
OWNlNjdkNWQ1MjdkMzBhMzJkOTE0MDU1OTM2YTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcApAQCAtMCwwICsxLDYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0N1c3RvbS5oIgorCisjaW5jbHVkZSAiSlNBdWRp
b1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworYm9vbCBKU0F1ZGlvVHJhY2tPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU0F1ZGlvVHJhY2sqIGpzQXVkaW9UcmFjayA9IGpzQ2FzdDxKU0F1ZGlvVHJh
Y2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEF1ZGlvVHJhY2sqIGF1ZGlvVHJhY2sg
PSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4oanNBdWRpb1RyYWNrLT5pbXBsKCkpO1wKKworICAg
IC8vIElmIHRoZSB0cmFjayBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFj
aGFibGUuCisgICAgaWYgKCFqc0F1ZGlvVHJhY2stPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVS
b290KHJvb3QoYXVkaW9UcmFjaykpOworfQorCit2b2lkIEpTQXVkaW9UcmFjazo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9U
cmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0PEpTQXVkaW9UcmFjayo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNBdWRpb1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlv
VHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2ssIHZpc2l0b3IpOworCisgICAg
QXVkaW9UcmFjayogYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlv
VHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFj
aykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGNk
ZTNiMTcyMGU4ZDZjY2ZiZDYxNWMyNWUzZTNjNTUyNGUzZGQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTQXVkaW9UcmFja0N1c3RvbV9oCisjZGVmaW5l
IEpTQXVkaW9UcmFja0N1c3RvbV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNs
dWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmgiCisjaW5j
bHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJvb3QoQXVkaW9UcmFjayogdHJhY2spCit7Cisg
ICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAg
IGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiByb290KHRyYWNrLT5t
ZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBtZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRl
eHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOworfQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFjNjE2YjBkNGI4YWE5Mjk0MjJmMDVhZDc1NDkzMjQwOWFhMTZh
ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
VHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTQXVkaW9U
cmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJK
U05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitib29sIEpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2tMaXN0KiBqc0F1ZGlvVHJhY2tMaXN0ID0g
anNDYXN0PEpTQXVkaW9UcmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEF1
ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2tMaXN0
Kj4oanNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZp
cmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisg
ICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQg
bGlzdGVuZXJzLgorICAgIGlmIChhdWRpb1RyYWNrTGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVy
cygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBl
dmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJl
YWNoYWJsZS4KKyAgICBpZiAoIWF1ZGlvVHJhY2tMaXN0LT5oYXNFdmVudExpc3RlbmVycygpICYm
ICFqc0F1ZGlvVHJhY2tMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBw
YXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9v
dChyb290KGF1ZGlvVHJhY2tMaXN0LT5vd25lcigpKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNr
TGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRp
b1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNBdWRp
b1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNBdWRpb1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKGpzQXVkaW9UcmFja0xpc3QsIHZpc2l0b3IpOworCisgICAgQXVkaW9UcmFja0xpc3QqIGF1
ZGlvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tM
aXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2tM
aXN0LT5vd25lcigpKSk7CisgICAgYXVkaW9UcmFja0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVy
cyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4
IDJiYTEwZjU1NmU4YjQ4MDJlOGJhOTY2ZmQxZDNjZTEyNDMxMjQwNTYuLjUxYWRmMzVlMzQ5Zjg0
ZWRhNmYwM2E3YTQ5MzllYzNlZGM0NGVkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1
ZGUgIkdDQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNBdHRyQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tDdXN0
b20uY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTQmxvYkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTQ1NTRm9udEZhY2VSdWxlQ3VzdG9tLmNwcCIKQEAgLTE0Nyw2ICsxNDksOCBA
QAogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJK
U1ZpZGVvVHJhY2tDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3RDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2Vi
S2l0UG9pbnRDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VmlkZW9UcmFja0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ0MDY5ZDU0Zjk1NGE1YjMwMTBhNDU1
Yjk2NmJlMGYzZWM5YWRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRl
ICJKU1ZpZGVvVHJhY2tDdXN0b20uaCIKKworI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRl
b1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNW
aWRlb1RyYWNrKiBqc1ZpZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKKyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8
VmlkZW9UcmFjayo+KGpzVmlkZW9UcmFjay0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSB0cmFj
ayBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYg
KCFqc1ZpZGVvVHJhY2stPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9U
cmFjaykpOworfQorCit2b2lkIEpTVmlkZW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1Ry
YWNrID0ganNDYXN0PEpTVmlkZW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoanNWaWRlb1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1
Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVvVHJhY2stPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbihqc1ZpZGVvVHJhY2ssIHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFjayogdmlk
ZW9UcmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7
CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QodmlkZW9UcmFjaykpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTM3NWU1NjdlNmJhMzhhM2Zk
NmQyYzk5NWFmMGMxY2RmNmFiM2RhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEpTVmlkZW9UcmFja0N1c3RvbV9oCisjZGVmaW5lIEpTVmlkZW9UcmFja0N1
c3RvbV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisjaW5jbHVkZSAiSlNWaWRlb1Ry
YWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
aW5saW5lIHZvaWQqIHJvb3QoVmlkZW9UcmFjayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRo
ZSBtZWRpYSBlbGVtZW50J3Mgcm9vdCBpZiBpdCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVk
aWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7
CisKKyAgICAvLyBObyBtZWRpYSBlbGVtZW50LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAg
cmV0dXJuIHRyYWNrOworfQorCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJiZDk2NzEwZDYwOTMxMGM3ODcyYTdkZjQzYjZjZGI0MzM1YjFkNTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9t
LmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3QuaCIKKwor
I2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIK
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpT
VmlkZW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1ZpZGVvVHJhY2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlkZW9U
cmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJhY2tMaXN0KiB2
aWRlb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNr
TGlzdC0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0
ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBw
ZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAg
IGlmICh2aWRlb1RyYWNrTGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMg
YW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBp
ZiAoIXZpZGVvVHJhY2tMaXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1ZpZGVvVHJhY2tM
aXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hh
YmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHZpZGVvVHJh
Y2tMaXN0LT5vd25lcigpKSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9U
cmFja0xpc3QqIGpzVmlkZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrTGlzdCwgJnNf
aW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNp
dENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAg
ICBBU1NFUlQoanNWaWRlb1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFj
a0xpc3QsIHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0g
c3RhdGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOwor
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7
CisgICAgdmlkZW9UcmFja0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgKaW5kZXggODI3NzdhODZlZWZkZmJlYmU2ODljOWI5MjMzNjg4Mjk1ODM5MWMzZS4uZWEwNzk5
YmI1ZDBkNzM0YzAxZjQ2OGE2M2UxZDViMjIwNWNmYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEF1ZGlvQ29udGV4dDsKKyAgICBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKICAgICBjbGFzcyBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAg
Y2xhc3MgRE9NV2luZG93OwpAQCAtNjcsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgU291cmNlQnVmZmVyTGlzdDsKICAgICBjbGFzcyBUZXh0VHJhY2s7CiAgICAgY2xh
c3MgVGV4dFRyYWNrQ3VlOworICAgIGNsYXNzIFZpZGVvVHJhY2tMaXN0OwogICAgIGNsYXNzIFdl
YlNvY2tldDsKICAgICBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiAgICAgY2xhc3MgV29ya2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNDc2ZDFiNTNmMTQ1
YmIyNzM0OTg5OTNmMzlmMWQxY2JhYTYyMzU4My4uOGVhNWI3YjAzYWJhY2EwMmYyNWY0OGEyZWQ1
NTk5MjYzZWE0NzBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CkBAIC0xLDYgKzEsNyBAQAogbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKIAogQXVkaW9Db250ZXh0
IGNvbmRpdGlvbmFsPVdFQl9BVURJTworQXVkaW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9f
VFJBQ0sKIEJhdHRlcnlNYW5hZ2VyIGNvbmRpdGlvbmFsPUJBVFRFUllfU1RBVFVTCiBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVdPUktFUlMKIERPTUFwcGxpY2F0aW9uQ2FjaGUK
QEAgLTM3LDYgKzM4LDcgQEAgU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFsPVNWRwogVGV4
dFRyYWNrIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tDdWUgY29uZGl0aW9uYWw9
VklERU9fVFJBQ0sKIFRleHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKK1ZpZGVv
VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXROYW1lZEZsb3cKIFdlYlNv
Y2tldCBjb25kaXRpb25hbD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFkZDMwMWM1ODFh
Njc1MzI2ZGY2ZTgyOTFlM2ZmMjVjMDk1YzY5ZTguLjA0NWJkY2Q1OGFhODYwMmU5ZTc4ZGIyNjMw
ZjIzZjVkYjk4Y2JhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtOTgsNiArOTgsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisj
aW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJIVE1MVHJh
Y2tFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCkBAIC0xMDUsNiArMTA3
LDggQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4
dFRyYWNrQ3VlTGlzdC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrTGlzdC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfQVVESU8pCkBAIC0yOTYsNyArMzAwLDkgQEAgSFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW0KICAgICAsIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UoZmFsc2UpCiAg
ICAgLCBtX2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lKC0xKQogICAgICwgbV9jYXB0aW9uRGlzcGxh
eU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6QXV0b21hdGljKQorICAgICwgbV9hdWRpb1Ry
YWNrcygwKQogICAgICwgbV90ZXh0VHJhY2tzKDApCisgICAgLCBtX3ZpZGVvVHJhY2tzKDApCiAg
ICAgLCBtX2lnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZSgwKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
Ql9BVURJTykKQEAgLTMzMCwxMiArMzM2LDIyIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5n
U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyh0aGlzKTsKKyAgICBpZiAobV9hdWRpb1RyYWNrcykgeworICAgICAgICBtX2F1ZGlvVHJh
Y2tzLT5jbGVhck93bmVyKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F1
ZGlvVHJhY2tzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy0+aXRl
bShpKS0+Y2xlYXJDbGllbnQoKTsKKyAgICB9CiAgICAgaWYgKG1fdGV4dFRyYWNrcykKICAgICAg
ICAgbV90ZXh0VHJhY2tzLT5jbGVhck93bmVyKCk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsg
KytpKQogICAgICAgICAgICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwog
ICAgIH0KKyAgICBpZiAobV92aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5j
bGVhck93bmVyKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZpZGVvVHJh
Y2tzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgbV92aWRlb1RyYWNrcy0+aXRlbShpKS0+
Y2xlYXJDbGllbnQoKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGlmIChtX21lZGlhQ29udHJvbGxl
cikKQEAgLTEzNDksNiArMTM2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCiAgICAgfQogfQogCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKikKK3sK
KyAgICAvLyBXZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9u
Y2UgdGhleSBleGlzdAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVD
aGFuZ2VkKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9
PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkgewpAQCAtMTM4OCw2ICsxNDA5LDExIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykK
ICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogfQogCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayop
Cit7CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMgaGVy
ZSBvbmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tL
aW5kQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+a2luZCgpICE9
IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJh
Y2s6OnN1YnRpdGxlc0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hv
d2luZ0tleXdvcmQoKSkKQEAgLTI3OTIsNiArMjgxOCwxNiBAQCBkb3VibGUgSFRNTE1lZGlhRWxl
bWVudDo6cGVyY2VudExvYWRlZCgpIGNvbnN0CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NS
ZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gQXVkaW9UcmFjazo6Y3JlYXRlKHRo
aXMsIHBycFRyYWNrKTsKKworICAgIGFkZEF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjgyNyw2ICsy
ODYzLDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJh
Y2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2CiAgICAgYWRkVGV4dFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRB
ZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQorewor
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gVmlk
ZW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKTsKKworICAgIGFkZFZpZGVvVHJhY2sodHJh
Y2suZ2V0KCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVt
b3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9hdWRpb1RyYWNrcykKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gVGhpcyBjYXN0IGlzIHNhZmUgYmVjYXVzZSB3ZSBjcmVhdGVkIHRo
ZSBBdWRpb1RyYWNrIHdpdGggdGhlIEF1ZGlvVHJhY2tQcml2YXRlCisgICAgLy8gcGFzc2VkIHRv
IG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjay4KKyAgICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJh
Y2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4ocHJwVHJhY2stPmNsaWVudCgpKTsKKyAgICBp
ZiAoIXRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmVBdWRpb1RyYWNrKHRyYWNr
LmdldCgpKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92
ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQog
ewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKQEAgLTI4NDQsNiArMjkwNywyMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUAogICAg
IHJlbW92ZVRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwogfQogCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJh
Y2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV92aWRlb1RyYWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBjYXN0IGlzIHNh
ZmUgYmVjYXVzZSB3ZSBjcmVhdGVkIHRoZSBWaWRlb1RyYWNrIHdpdGggdGhlIFZpZGVvVHJhY2tQ
cml2YXRlCisgICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjay4KKyAg
ICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4ocHJw
VHJhY2stPmNsaWVudCgpKTsKKyAgICBpZiAoIXRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZW1vdmVWaWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwogI2lmIFVTRShQTEFURk9STV9U
RVhUX1RSQUNLX01FTlUpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFRy
YWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IHBsYXRmb3JtVHJhY2spCiB7CkBAIC0y
OTIwLDYgKzMwMDAsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZUNhcHRpb25UcmFj
a3NDaGFuZ2VkKCkKICNlbmRpZgogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlv
VHJhY2soQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgYXVkaW9UcmFja3MoKS0+YXBwZW5kKHRy
YWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soVGV4dFRyYWNr
KiB0cmFjaykKIHsKICAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CkBAIC0yOTI3LDYg
KzMwMTIsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soVGV4dFRyYWNr
KiB0cmFjaykKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICB2
aWRlb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgbV9hdWRpb1RyYWNr
cy0+cmVtb3ZlKHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0
VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBz
Y29wZSh0aGlzKTsKQEAgLTI5MzgsMTggKzMwMzMsMzAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKICAgICBjbG9zZUNhcHRpb25UcmFj
a3NDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVmlkZW9UcmFj
ayhWaWRlb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX3ZpZGVvVHJhY2tzLT5yZW1vdmUodHJhY2sp
OworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFuZFRyYWNrcygpCiB7
Ci0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9hdWRp
b1RyYWNrcykKKyAgICAgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fYXVkaW9UcmFja3Mt
Pmxlbmd0aCgpKQorICAgICAgICAgICAgcmVtb3ZlQXVkaW9UcmFjayhtX2F1ZGlvVHJhY2tzLT5p
dGVtKGxlbmd0aCAtIDEpKTsKIAotICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRo
aXMpOwotICAgIGZvciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0aCgpIC0gMTsgaSA+PSAw
OyAtLWkpIHsKLSAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4dFRyYWNrcy0+aXRlbShp
KTsKKyAgICBpZiAobV90ZXh0VHJhY2tzKSB7CisgICAgICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNj
b3BlIHNjb3BlKHRoaXMpOworICAgICAgICBmb3IgKGludCBpID0gbV90ZXh0VHJhY2tzLT5sZW5n
dGgoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0g
bV90ZXh0VHJhY2tzLT5pdGVtKGkpOwogCi0gICAgICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkg
PT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgICAgICByZW1vdmVUZXh0VHJhY2sodHJhY2sp
OworICAgICAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFu
ZCkKKyAgICAgICAgICAgICAgICByZW1vdmVUZXh0VHJhY2sodHJhY2spOworICAgICAgICB9CiAg
ICAgfQorCisgICAgaWYgKG1fdmlkZW9UcmFja3MpCisgICAgICAgIHdoaWxlICh1bnNpZ25lZCBs
ZW5ndGggPSBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJlbW92ZVZpZGVv
VHJhY2sobV92aWRlb1RyYWNrcy0+aXRlbShsZW5ndGggLSAxKSk7CiB9CiAKIFBhc3NSZWZQdHI8
VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBr
aW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTI5ODksNiArMzA5NiwxNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFjaz4g
SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
UwogICAgIHJldHVybiB0ZXh0VHJhY2sucmVsZWFzZSgpOwogfQogCitBdWRpb1RyYWNrTGlzdCog
SFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja3MoKQoreworICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRp
b1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKworICAgIHJldHVybiBtX2F1ZGlvVHJhY2tzLmdldCgpOworfQorCiBUZXh0
VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkgCiB7CiAgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMzAw
MCw2ICszMTE4LDE3IEBAIFRleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a3MoKQogICAgIHJldHVybiBtX3RleHRUcmFja3MuZ2V0KCk7CiB9CiAKK1ZpZGVvVHJhY2tMaXN0
KiBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGlmICghbV92aWRlb1RyYWNrcykKKyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZp
ZGVvVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOworCisgICAgcmV0dXJuIG1fdmlkZW9UcmFja3MuZ2V0KCk7Cit9CisKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRy
YWNrRWxlbWVudCkKIHsKICAgICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNr
VGFnKSk7CkBAIC00OTE3LDcgKzUwNDYsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAg
IGluZm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2UsICJtZWRpYVNvdXJjZSIpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGluZm8uYWRkTWVtYmVyKG1fYXVkaW9UcmFja3Ms
ICJhdWRpb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdGV4dFRyYWNrcywgInRleHRU
cmFja3MiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3ZpZGVvVHJhY2tzLCAidmlkZW9UcmFja3Mi
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25C
ZWdhbiwgInRleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbiIpOwogICAgIGluZm8u
YWRkTWVtYmVyKG1fY3VlVHJlZSwgImN1ZVRyZWUiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2N1
cnJlbnRseUFjdGl2ZUN1ZXMsICJjdXJyZW50bHlBY3RpdmVDdWVzIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQwODVlOWRmYjg4NjA0MDdlYWQ5MTkxZWMyN2Nh
YjRkOTJiOTc2NjMuLmZhMmY5ZjhmYmU4MGUwYjBkOTc3ZDU3NjI3Y2ZjNWNiYWIwNGU0NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zOSwxMCArMzksMTIgQEAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2su
aCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiUE9ESW50
ZXJ2YWxUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNr
Q3VlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTcwLDggKzcyLDEyIEBAIGNsYXNzIE1lZGlhS2V5czsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorY2xhc3MgQXVkaW9UcmFja0xpc3Q7CitjbGFzcyBBdWRpb1Ry
YWNrUHJpdmF0ZTsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBUZXh0VHJh
Y2tMaXN0OworY2xhc3MgVmlkZW9UcmFja0xpc3Q7CitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsK
IAogdHlwZWRlZiBQT0RJbnRlcnZhbFRyZWU8ZG91YmxlLCBUZXh0VHJhY2tDdWUqPiBDdWVJbnRl
cnZhbFRyZWU7CiB0eXBlZGVmIEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxUeXBlIEN1ZUludGVy
dmFsOwpAQCAtODQsNyArOTAsOSBAQCB0eXBlZGVmIFZlY3RvcjxDdWVJbnRlcnZhbD4gQ3VlTGlz
dDsKIAogY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGlj
IE1lZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQs
IHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
dWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
ICAgICwgcHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0Ns
aWVudAorICAgICwgcHJpdmF0ZSBWaWRlb1RyYWNrQ2xpZW50CiAjZW5kaWYKICNpZiBVU0UoUExB
VEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVu
dUNsaWVudApAQCAtMjI2LDExICsyMzQsMTggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8VGV4
dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGxhYmVs
LCBlbXB0eVN0cmluZygpLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4
dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFk
ZFRleHRUcmFjayhraW5kLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBlYyk7IH0KIAor
ICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrcygpOwogICAgIFRleHRUcmFja0xpc3QqIHRl
eHRUcmFja3MoKTsKKyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja3MoKTsKKwogICAgIEN1
ZUxpc3QgY3VycmVudGx5QWN0aXZlQ3VlcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudGx5QWN0
aXZlQ3VlczsgfQogCisgICAgdm9pZCBhZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKICAgICB2
b2lkIGFkZFRleHRUcmFjayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIGFkZFZpZGVvVHJhY2soVmlk
ZW9UcmFjayopOworICAgIHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKik7CiAgICAg
dm9pZCByZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCByZW1vdmVWaWRlb1Ry
YWNrKFZpZGVvVHJhY2sqKTsKICAgICB2b2lkIHJlbW92ZUFsbEluYmFuZFRyYWNrcygpOwogICAg
IHZvaWQgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5TWVkaWFQ
bGF5ZXJPZlRleHRUcmFja0NoYW5nZXMoKTsKQEAgLTIzOCw4ICsyNTMsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogCisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1
ZGlvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFj
ayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+KSBPVkVSUklERTsKIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01F
TlUpCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxh
dGZvcm1UZXh0VHJhY2s+KSBPVkVSUklERTsKQEAgLTI3NSw2ICsyOTQsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0
VHJhY2tEaXNwbGF5KCk7CiAKKyAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2
b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKik7CisKICAgICAvLyBUZXh0
VHJhY2tDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQo
VGV4dFRyYWNrKik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRU
cmFjayopOwpAQCAtMjg0LDYgKzMwNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAgICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZT4pOwogCisgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9p
ZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKTsKKwogICAgIGJvb2wgcmVx
dWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRy
YWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNlbmRpZgpAQCAt
Njk5LDcgKzcyNCw5IEBAIHByaXZhdGU6CiAKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpD
YXB0aW9uRGlzcGxheU1vZGUgbV9jYXB0aW9uRGlzcGxheU1vZGU7CiAKKyAgICBSZWZQdHI8QXVk
aW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja3M7CiAgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1f
dGV4dFRyYWNrczsKKyAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CiAg
ICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2Vs
ZWN0aW9uQmVnYW47CiAKICAgICBDdWVJbnRlcnZhbFRyZWUgbV9jdWVUcmVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggY2VkNDE3NDU5ZGFiYTEzNWVkMDA1
ZWY2NTQ4NmQyNWFmNmUxY2NkNS4uMDViYzJkZDhjNGZiODg0ZTdiZWJkNjdiMGM3MjNlOWU1ZDUx
OGFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC0xMTYs
NyArMTE2LDkgQEAgdm9pZCB3ZWJraXRDYW5jZWxLZXlSZXF1ZXN0KGluIFtUcmVhdE51bGxBcz1O
dWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHIKICNpZiBkZWZpbmVkKEVOQUJMRV9W
SURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiBUZXh0VHJhY2sgYWRkVGV4dFRyYWNr
KGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09w
dGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpCiAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwor
cmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tzOwogcmVhZG9ubHkg
YXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBW
aWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNrczsKICNlbmRpZgogCiBbUmVmbGVjdCwgVHJlYXROdWxs
QXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYUdyb3VwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJkNTQzYTFmNzBiOTU0
NzhjYmYyMTk1NTEyMzIxMGZiMGQzNzQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNs
dWRlICJBdWRpb1RyYWNrLmgiCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorI2luY2x1
ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29y
ZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVy
bmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBB
dWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJkZXNjcmlwdGlvbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb247
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluLCAoIm1haW4i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1haW47
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbkRlc2Ms
ICgibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiBtYWluRGVzYzsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjp0
cmFuc2xhdGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCB0cmFuc2xhdGlvbiwgKCJ0cmFuc2xhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gdHJhbnNsYXRpb247Cit9CisKK2NvbnN0
IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1l
bnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJu
IGNvbW1lbnRhcnk7Cit9CisKK0F1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVu
dCogY2xpZW50LCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisg
ICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZhdGUtPmxhYmVs
KCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAsIG1faWQodHJhY2tQcml2YXRlLT5p
ZCgpKQorICAgICwgbV9lbmFibGVkKHRyYWNrUHJpdmF0ZS0+ZW5hYmxlZCgpKQorICAgICwgbV9j
bGllbnQoY2xpZW50KQorICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBtX3By
aXZhdGUtPnNldENsaWVudCh0aGlzKTsKKworICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkp
IHsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKKyAgICAgICAgc2V0
S2luZChBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgorICAgICAgICBzZXRLaW5k
KEF1ZGlvVHJhY2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNr
OjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJp
dmF0ZTo6TWFpbkRlc2M6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3
b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpUcmFu
c2xhdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkNvbW1lbnRh
cnk6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5vbmU6CisgICAgICAg
IHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K0F1ZGlvVHJhY2s6On5BdWRpb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCgw
KTsKK30KKworYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKSBjb25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uS2V5d29y
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbktleXdvcmQo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IG1haW5EZXNjS2V5d29y
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gdHJhbnNsYXRpb25L
ZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBjb21tZW50
YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBBdWRpb1RyYWNrOjpzZXRFbmFibGVkKGNvbnN0IGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZW5hYmxlZCA9IGVuYWJsZWQ7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQodGhpcyk7Cit9CisKK3NpemVfdCBBdWRpb1RyYWNr
OjppbmJhbmRUcmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5hdWRpb1RyYWNrSW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVk
aW9UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTUzNzU3NDUxYWRiMmUzZmJiOTVjOTIyNzg5MzA0MDM4M2MwMzQzYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCkBAIC0wLDAg
KzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja19oCisjZGVm
aW5lIEF1ZGlvVHJhY2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
QXVkaW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1ZGlvVHJhY2tD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSA9IDA7
Cit9OworCitjbGFzcyBBdWRpb1RyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEF1ZGlv
VHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b1RyYWNrPiBjcmVhdGUoQXVkaW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEF1ZGlv
VHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEF1ZGlvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+QXVkaW9UcmFjaygpOworCisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQorICAgIHZvaWQgc2V0SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgeyBtX2lk
ID0gaWQ7IH0KKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFsdGVybmF0aXZlS2V5
d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NyaXB0aW9uS2V5d29y
ZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5LZXl3b3JkKCk7CisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbkRlc2NLZXl3b3JkKCk7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgdHJhbnNsYXRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgZGVmYXVsdEtpbmRLZXl3b3JkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gZW1wdHlBdG9tOyB9CisKKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChjb25zdCBib29sKTsKKworICAg
IHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIE9WRVJSSURFIHsgbV9jbGllbnQgPSAwOyB9Cisg
ICAgQXVkaW9UcmFja0NsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0K
KworICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CisKK3Byb3RlY3RlZDoKKyAgICBBdWRp
b1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7
CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0
cmluZyYpIGNvbnN0IE9WRVJSSURFOworCisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgYm9v
bCBtX2VuYWJsZWQ7CisgICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQ
dHI8QXVkaW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBBdWRpb1RyYWNr
KiB0b0F1ZGlvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBBU1NFUlQodHJhY2stPnR5
cGUoKSA9PSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
dWRpb1RyYWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZGI2M2M4NWRkOTgxODRlNjY1ZjFkYjY0MjcxY2E0NGJkZTZlMzFhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbApAQCAtMCww
ICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisg
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRl
cmZhY2UgQXVkaW9UcmFjayB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGxhbmd1YWdlOworCisgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMzU1
YjczZmZkYjRkNzgyNmFjZWU2ZmZlOWIyNzJjZjU3YTVmMGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJB
dWRpb1RyYWNrLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1l
bnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tM
aXN0QmFzZShvd25lciwgY29udGV4dCkKK3sKK30KKworQXVkaW9UcmFja0xpc3Q6On5BdWRpb1Ry
YWNrTGlzdCgpCit7Cit9CisKK3ZvaWQgQXVkaW9UcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRy
PEF1ZGlvVHJhY2s+IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9
IHBycFRyYWNrOworCisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRl
ci4KKyAgICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOworICAgIG1f
aW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOworCisgICAgQVNTRVJUKCF0cmFjay0+
bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkpOworICAg
IHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQob3duZXIoKSk7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNr
RXZlbnQodHJhY2sucmVsZWFzZSgpKTsKK30KKworQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6
Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRU
cmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdG9BdWRpb1RyYWNrKG1faW5iYW5kVHJhY2tz
W2luZGV4XS5nZXQoKSk7CisKKyAgICByZXR1cm4gMDsKK30KKworQXVkaW9UcmFjayogQXVkaW9U
cmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgQXVkaW9UcmFjayogdHJhY2sgPSB0b0F1ZGlvVHJhY2sobV9pbmJhbmRUcmFja3Nb
aV0uZ2V0KCkpOworICAgICAgICBpZiAodHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICBy
ZXR1cm4gdHJhY2s7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvckF1ZGlvVHJhY2tMaXN0OworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzQ0
YjhiYTNkMDBkN2RlNGVkMGJiZDUzYWYxNTk3YTQ2NzRiMjdmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrTGlzdF9oCisjZGVmaW5lIEF1
ZGlvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRy
YWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNr
OworCitjbGFzcyBBdWRpb1RyYWNrTGlzdCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRp
YUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrTGlzdChvd25lciwgY29udGV4
dCkpOworICAgIH0KKyAgICB+QXVkaW9UcmFja0xpc3QoKTsKKworICAgIEF1ZGlvVHJhY2sqIGdl
dFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworICAgIEF1ZGlvVHJhY2sq
IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8
QXVkaW9UcmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJjMWNlMDhjMjRjOTQwNDE5NDBkNjM3ODhiMzBiNGU5NDZjNjVlYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAg
ICBJbmRleGVkR2V0dGVyLAorICAgIEV2ZW50VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0
aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2tMaXN0
IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgQXVk
aW9UcmFjayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIEF1ZGlvVHJhY2sgZ2V0
VHJhY2tCeUlkKGluIERPTVN0cmluZyBpZCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmNoYW5nZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNrOworICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3ZldHJhY2s7CisKKyAgICB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlz
dGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3BhdGNoRXZl
bnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAppbmRleCA1ZGQzYmVmODQ2
NjkzYjVkOTg3ZmRmZmY2NmJkODAxMTU4MzZiNGMxLi5iZjNhMTg4Yzc5OWE1NTg2OTg2NGU3OWVl
NTVmNjVlYTFlZGRjNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShU
cmFja0Jhc2UqKSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2
YXRlOgogICAgIFRleHRUcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgzNGE1ZDlkMTg1OGJlZGFhYzlmNGVkNDQxYzYyZDEyMTI4ZDM2YTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC0w
LDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCisjaW5jbHVkZSAiRXZl
bnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1Ry
YWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgiY2Fw
dGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJu
IGNhcHRpb25zOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6Om1haW5LZXl3
b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2Fw
dGlvbnMsICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6
c2lnbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIHNpZ247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6
c3VidGl0bGVzS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVu
dGFyeTsKK30KKworVmlkZW9UcmFjazo6VmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRy
YWNrQmFzZShUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwgdHJh
Y2tQcml2YXRlLT5sYW5ndWFnZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkpCisg
ICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS0+c2VsZWN0ZWQoKSkKKyAgICAsIG1fY2xpZW50
KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRl
LT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7Cisg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQo
VmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKKyAgICAgICAgc2V0S2luZChWaWRlb1Ry
YWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9U
cmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktleXdv
cmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlNpZ246
CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1YnRpdGxlczoKKyAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKFZp
ZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitWaWRlb1RyYWNrOjp+VmlkZW9UcmFj
aygpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgVmlkZW9UcmFj
azo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBp
ZiAodmFsdWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKHZhbHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICh2YWx1ZSA9PSBzaWduS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6c2V0U2VsZWN0
ZWQoY29uc3QgYm9vbCBzZWxlY3RlZCkKK3sKKyAgICBpZiAobV9zZWxlY3RlZCA9PSBzZWxlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOworCisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdl
ZCh0aGlzKTsKK30KKworc2l6ZV90IFZpZGVvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgoKQorewor
ICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvVHJhY2tJ
bmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjY0NGQ2Njk3Y2M3MzVmNjdk
Mzk4ZmQ3MGRiZmVlZjI2YjdjMWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBWaWRlb1RyYWNrX2gKKyNkZWZpbmUgVmlkZW9UcmFja19oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
VmlkZW9UcmFjazsKKworY2xhc3MgVmlkZW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+VmlkZW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNr
U2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKSA9IDA7Cit9OworCitjbGFzcyBWaWRlb1RyYWNr
IDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrPiBjcmVhdGUoVmlkZW9UcmFj
a0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0cmFja1ByaXZh
dGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2soY2xpZW50
LCB0cmFja1ByaXZhdGUpKTsKKyAgICB9CisgICAgdmlydHVhbCB+VmlkZW9UcmFjaygpOworCisg
ICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgc2V0
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGFsdGVybmF0aXZlS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIG1haW5LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
c2lnbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJ0aXRsZXNL
ZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29tbWVudGFyeUtleXdv
cmQoKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVsdEtpbmRLZXl3b3Jk
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisKKyAgICBib29sIHNlbGVj
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRT
ZWxlY3RlZChjb25zdCBib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIE9W
RVJSSURFIHsgbV9jbGllbnQgPSAwOyB9CisgICAgVmlkZW9UcmFja0NsaWVudCogY2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4
KCk7CisKK3Byb3RlY3RlZDoKKyAgICBWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqLCBQYXNz
UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcml2YXRlVHJhY2spOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVS
UklERTsKKworICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIGJvb2wgbV9zZWxlY3RlZDsKKyAg
ICBWaWRlb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZT4gbV9wcml2YXRlOworfTsKKworaW5saW5lIFZpZGVvVHJhY2sqIHRvVmlkZW9UcmFjayhU
cmFja0Jhc2UqIHRyYWNrKQoreworICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFz
ZTo6VmlkZW9UcmFjayk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPih0cmFj
ayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MjZkMzMwNzE0
N2YzMWRkMjRkYTJkODVkZmIyMDg3MjBjNzI3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtG
dW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBWaWRlb1RyYWNr
IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcga2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGxhYmVsOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAg
ICBhdHRyaWJ1dGUgYm9vbGVhbiBzZWxlY3RlZDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMDdjOTVjNTc4MTY2ZjRlYmU1
NmU3ZGNmZmU1ZTA1OWI0ZWU0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKwor
I2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworVmlk
ZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShvd25lciwg
Y29udGV4dCkKK3sKK30KKworVmlkZW9UcmFja0xpc3Q6On5WaWRlb1RyYWNrTGlzdCgpCit7Cit9
CisKK3ZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IHBy
cFRyYWNrKQoreworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0cmFjayA9IHBycFRyYWNrOworCisg
ICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRlci4KKyAgICBzaXplX3Qg
aW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOworICAgIG1faW5iYW5kVHJhY2tzLmlu
c2VydChpbmRleCwgdHJhY2spOworCisgICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkg
fHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkpOworICAgIHRyYWNrLT5zZXRNZWRp
YUVsZW1lbnQob3duZXIoKSk7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2sucmVs
ZWFzZSgpKTsKK30KKworVmlkZW9UcmFjayogVmlkZW9UcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gdG9WaWRlb1RyYWNrKG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKSk7
CisKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9UcmFjayogVmlkZW9UcmFja0xpc3Q6OmdldFRy
YWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAgICBWaWRlb1RyYWNrKiB0cmFjayA9
IHRvVmlkZW9UcmFjayhtX2luYmFuZFRyYWNrc1tpXS5nZXQoKSk7CisgICAgICAgIGlmICh0cmFj
ay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB0cmFjazsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK2xvbmcgVmlkZW9UcmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgoKSBjb25zdAor
eworICAgIC8vIDQuOC4xMC4xMC4xIEF1ZGlvVHJhY2tMaXN0IGFuZCBWaWRlb1RyYWNrTGlzdCBv
YmplY3RzCisgICAgLy8gVGhlIFZpZGVvVHJhY2tMaXN0LnNlbGVjdGVkSW5kZXggYXR0cmlidXRl
IG11c3QgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUKKyAgICAvLyBjdXJyZW50bHkgc2VsZWN0ZWQg
dHJhY2ssIGlmIGFueS4gSWYgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCBkb2VzIG5vdAorICAg
IC8vIGN1cnJlbnRseSByZXByZXNlbnQgYW55IHRyYWNrcywgb3IgaWYgbm9uZSBvZiB0aGUgdHJh
Y2tzIGFyZSBzZWxlY3RlZCwKKyAgICAvLyBpdCBtdXN0IGluc3RlYWQgcmV0dXJuIOKIkjEuCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFZpZGVv
VHJhY2sqIHRyYWNrID0gdG9WaWRlb1RyYWNrKG1faW5iYW5kVHJhY2tzW2ldLmdldCgpKTsKKyAg
ICAgICAgaWYgKHRyYWNrLT5zZWxlY3RlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAg
fQorICAgIHJldHVybiAtMTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrTGlz
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JWaWRlb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE0ZmZkYzRjZTZjZjNiMzg1OTg4
Njk5ZmNmN2YxMTBkYmQ3MzRkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgVmlkZW9UcmFja0xpc3RfaAorI2RlZmluZSBWaWRlb1RyYWNrTGlzdF9oCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFjazsKKworY2xhc3MgVmlkZW9U
cmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVmlkZW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAg
flZpZGVvVHJhY2tMaXN0KCk7CisKKyAgICBWaWRlb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgbG9uZyBzZWxlY3RlZEluZGV4KCkgY29uc3Q7CisK
KyAgICBWaWRlb1RyYWNrKiBpdGVtKHVuc2lnbmVkKSBjb25zdDsKKyAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPFZpZGVvVHJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKwor
cHJpdmF0ZToKKyAgICBWaWRlb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZkMzZhZjYyMGI4NDQ1NWFmNzM4ZGViMTQ4NDA0MTYzZjRhNTUyYmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmlkbApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURF
T19UUkFDSywKKyAgICBJbmRleGVkR2V0dGVyLAorICAgIEV2ZW50VGFyZ2V0LAorICAgIEpTQ3Vz
dG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIFZp
ZGVvVHJhY2tMaXN0IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisgICAgVmlkZW9UcmFjayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFZp
ZGVvVHJhY2sgZ2V0VHJhY2tCeUlkKGluIERPTVN0cmluZyBpZCk7CisKKyAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFk
ZHRyYWNrOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3ZldHJhY2s7CisKKyAg
ICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFu
IGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRp
b24pOworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QXVkaW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1
ZGlvVHJhY2tQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgxZmVkMzdhNGI5NjcxZTMxZTM4MjUzNGIw
NDM5MDk0M2FhOGIwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBBdWRpb1RyYWNrUHJpdmF0ZV9oCisjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlX2gK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+QXVkaW9UcmFja1ByaXZhdGVDbGllbnQoKSB7IH0KK307CisKK2NsYXNzIEF1ZGlvVHJhY2tQ
cml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8QXVkaW9UcmFja1ByaXZhdGU+IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJp
dmF0ZSgpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGUoKSB7IH0KKwor
ICAgIHZvaWQgc2V0Q2xpZW50KEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9j
bGllbnQgPSBjbGllbnQ7IH0KKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkg
eyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBlbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisKKyAgICBlbnVtIEtpbmQgeyBBbHRl
cm5hdGl2ZSwgRGVzY3JpcHRpb24sIE1haW4sIE1haW5EZXNjLCBUcmFuc2xhdGlvbiwgQ29tbWVu
dGFyeSwgTm9uZSB9OworICAgIHZpcnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gTm9u
ZTsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBlbXB0
eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJu
IGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
eyByZXR1cm4gZW1wdHlBdG9tOyB9CisKKyAgICB2aXJ0dWFsIGludCBhdWRpb1RyYWNrSW5kZXgo
KSBjb25zdCB7IHJldHVybiAwOyB9CisKK3Byb3RlY3RlZDoKKyAgICBBdWRpb1RyYWNrUHJpdmF0
ZSgpCisgICAgICAgIDogbV9lbmFibGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9lbmFi
bGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDg3ZTk0MjU0NDljY2QwMGZlODhjZWNkNjdiZjllYzU3NTU0MDg0NjMuLmM1MjM4NTgwYjkxOWZk
YmE5NWQ1NTI0Y2VhZWI1YjE3NDZiN2Q4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTExMDMsNiArMTEwMywyMiBAQCBDYWNo
ZWRSZXNvdXJjZUxvYWRlciogTWVkaWFQbGF5ZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKIH0K
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK3ZvaWQgTWVkaWFQbGF5ZXI6OmFkZEF1ZGlvVHJh
Y2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21l
ZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xp
ZW50LT5tZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2sodHJhY2spOworfQorCit2b2lkIE1lZGlh
UGxheWVyOjpyZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRy
YWNrKQoreworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBNZWRpYVBsYXllcjo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gdHJhY2spCiB7CiAgICAgaWYgKCFtX21lZGlhUGxheWVy
Q2xpZW50KQpAQCAtMTExOSw2ICsxMTM1LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZVRl
eHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHRyYWNrKQogICAgIG1f
bWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsK
IH0KIAordm9pZCBNZWRpYVBsYXllcjo6YWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJh
Y2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkQWRk
VmlkZW9UcmFjayh0cmFjayk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZVZpZGVvVHJh
Y2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21l
ZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xp
ZW50LT5tZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2sodHJhY2spOworfQorCiBib29sIE1l
ZGlhUGxheWVyOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5yZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1
NWI5ZTJmMmY4NzQ2ZGQzZmQ1N2ZlYjlkMjE4YWYxZTE1YmUwY2M4Li4xZWZkNzNhZmE2NGQ1NmEw
OTVkYzQ5MmQ5MmVmZTY5NGRkYjg0NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTMyLDExICszMiwxMyBAQAogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJveHkuaCIKICNlbmRpZgogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUu
aCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CkBAIC0yMTgsOCArMjIwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENhY2hlZFJl
c291cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4g
MDsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPElu
YmFuZFRleHRUcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJE
aWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1v
dmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgeyB9CisgICAg
dmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZp
ZGVvVHJhY2tQcml2YXRlPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0JikgeyB9CkBAIC00NDksOCArNDU1LDEyIEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNv
dXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyAgICB2b2lkIGFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZT4pOwogICAgIHZvaWQgYWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZT4pOworICAgIHZvaWQgYWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPik7CisgICAgdm9pZCByZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGU+KTsKICAgICB2b2lkIHJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4pOwogCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0
aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ2MTAzY2IxODE1YTVjOWFh
NTY0MDJlM2JjYzQ1YjNiYmIxMjg3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBWaWRlb1RyYWNrUHJpdmF0ZV9oCisjZGVmaW5lIFZpZGVvVHJhY2tQ
cml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGVDbGllbnQoKSB7IH0KK307CisKK2NsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8VmlkZW9UcmFja1ByaXZhdGU+IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1RyYWNrUHJpdmF0ZSk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQ
cml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRl
b1RyYWNrUHJpdmF0ZSgpKTsKKyAgICB9CisgICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGUo
KSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGll
bnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCog
Y2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxl
Y3RlZChib29sIHNlbGVjdGVkKSB7IG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsgfTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CisKKyAgICBl
bnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgQ2FwdGlvbnMsIE1haW4sIFNpZ24sIFN1YnRpdGxlcywg
Q29tbWVudGFyeSwgTm9uZSB9OworICAgIHZpcnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1
cm4gTm9uZTsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVy
biBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsg
cmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisKKyAgICB2aXJ0dWFsIGludCB2aWRlb1RyYWNr
SW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CisKK3Byb3RlY3RlZDoKKyAgICBWaWRlb1RyYWNr
UHJpdmF0ZSgpCisgICAgICAgIDogbV9zZWxlY3RlZChmYWxzZSkKKyAgICB7CisgICAgfQorCitw
cml2YXRlOgorICAgIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBib29s
IG1fc2VsZWN0ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2Vu
ZGlmCg==
</data>
<flag name="commit-queue"
          id="219995"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198336</attachid>
            <date>2013-04-16 09:19:42 -0700</date>
            <delta_ts>2013-04-16 12:49:10 -0700</delta_ts>
            <desc>Updated to fix Mac builds.</desc>
            <filename>patch_2.txt</filename>
            <type>text/plain</type>
            <size>121422</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTE2ICBCcmVuZGFu
IExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNlcyBh
bmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlJ3Mg
bm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJlc3Rp
bmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFjaywg
VmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUuCisg
ICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFt
OiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6IEFk
ZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNrTGlz
dCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAgICog
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2ZW50
IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFuZCBt
X3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdl
ZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFj
a1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1lZGlh
UGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRkZWQs
IGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6IEFk
ZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJh
Y2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2sp
OiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5kIHZp
ZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlv
VHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKTog
QWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5jdGlv
bnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFja3Mg
YW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDogQWRk
ZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAqIGh0
bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3Bw
OiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFkZCBt
aXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJhY2sv
VmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRleHRU
cmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAgICAg
KiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNl
ZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1vdmVB
dWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRkVGV4
dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBsYXll
ckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1l
ZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwgYmFz
ZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1lCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQsIGJh
c2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0LTE1ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6
OnJlbW92ZVRleHRUcmFjayBzaG91bGQgY2xlYXIgdHJhY2sgY2xpZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2ODUsMTQgKzI2ODUsMjAgQEAgZW5kaWYgKCkKIAog
aWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0lETF9GSUxF
UworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisgICAgICAgIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAogICAg
ICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVMaXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAg
ICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAogICAgICkK
IAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBodG1sL3RyYWNrL0F1
ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCiAgICAg
ICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAogICAgICAgICBodG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAg
LTI3MDYsNiArMjcxMiw4IEBAIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgICAgIGh0bWwv
dHJhY2svV2ViVlRURWxlbWVudC5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAorICAgICAgICBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3Qu
Y3BwCiAKICAgICAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKIApJbmRleDog
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsMTIgKzQ3Miwx
NiBAQAogI2luY2x1ZGUgIkpTVGV4dEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRNZXRyaWNz
LmNwcCIKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmNw
cCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0LmNwcCIKICNpbmNsdWRlICJKU0hUTUxUcmFj
a0VsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmNwcCIKICNpbmNsdWRlICJKU1Rl
eHRUcmFja0N1ZS5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCIKICNpbmNs
dWRlICJKU1RleHRUcmFja0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudC5jcHAiCisj
aW5jbHVkZSAiSlNWaWRlb1RyYWNrLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0LmNw
cCIKICNlbmRpZgogI2luY2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCiAjaW5jbHVkZSAiSlNUb3Vj
aC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE0ODQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTQzMSwxMSArNDMxLDE1IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFj
a0V2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
cHJpCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTY1MiwxMSArNjUyLDE1IEBAIGVuYWJsZT8oR0FNRVBBRCkg
ewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQ
V0QvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAg
ICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkJFBXRC9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFj
a0xpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKyAgICAk
JFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmlkbAogfQogCiBlbmFibGU/KE1FRElBX1NPVVJDRSkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMCBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9T
b3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNlTm9k
ZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFjay5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1RyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b1RyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmFySW5mby5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCYXJJbmZvLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNCZWZvcmVMb2FkRXZlbnQuY3BwIFwKQEAgLTc3Nyw2ICs3ODEsMTAgQEAgd2ViY29y
ZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmFsaWRpdHlT
dGF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZvaWRDYWxsYmFjay5oIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTVmlkZW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNW
aWRlb1RyYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrTGlzdC5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrTGlzdC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dhdmVUYWJsZS5jcHAgXApAQCAtMTU4NiwxMSArMTU5NCwxNSBAQCBkb21fYmluZGluZ19pZGxz
ICs9IFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIFwKKwkkKFdlYkNv
cmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9B
dWRpb1RyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRs
IFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAJJChXZWJDb3Jl
KS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50
LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKwkkKFdlYkNv
cmUpL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmlkbCBcCkBAIC0yMzIwLDYgKzIzMzIsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0yNDc0LDYgKzI0ODks
OSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3Vz
dG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9t
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBcCkBAIC0zNzY3LDYgKzM3ODUsMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lUmFuZ2VzLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwIFwKQEAgLTM3ODcsNiArMzgwOSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAg
XApAQCAtNTQ5Nyw2ICs1NTIzLDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Jbml0aWFsaXplTG9nZ2luZy5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9ORU9O
SGVscGVycy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2Zp
bHRlcnMvRkVCbGVuZE5FT04uaCBcCkBAIC01Nzc3LDYgKzU4MDQsNyBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1R5cGVzZXR0aW5nRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVW5pdEJlemllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aENhY2hlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoSXRlcmF0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDg0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zOTY2LDkgKzM5
NjYsMTMgQEAgZW5hYmxlPyhKQVZBU0NSSVBUX0RFQlVHR0VSKSB7CiAKIGVuYWJsZT8oVklERU9f
VFJBQ0spIHsKICAgICBIRUFERVJTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5oIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKKyAgICAgICAgYmluZGluZ3Mv
anMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQu
aCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
aCBcCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrLmggXApAQCAtMzk3OSwyMCArMzk4MywzMCBAQCBlbmFibGU/KFZJ
REVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogICAgICAgICBo
dG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFz
ZS5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorICAgICAgICBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5o
IFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIFwKICAgICAgICAgaHRtbC90cmFj
ay9XZWJWVFRUb2tlbml6ZXIuaCBcCiAgICAgICAgIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBc
CisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggXAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAKICAgICBTT1VSQ0VTICs9
IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBcCisgICAgICAg
IGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKyAgICAgICAgaHRtbC90
cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCiAg
ICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBcCkBAIC00MDAzLDYgKzQwMTcsOCBAQCBl
bmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBc
CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBc
CisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIxOCwxMSArMjE4LDE1IEBAIGVuZGlmICgpCiAKIGlm
IChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKyAgICAgICAgYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdWVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3Vz
dG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNw
cAogICAgICkKIGVuZGlmICgpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk5MDIsNiAr
Mjk5MDIsMTAgQEAKIAkJCQlOYW1lPSJncmFwaGljcyIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcQml0bWFwSW1hZ2UuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAt
MzAzNzgsNiArMzAzODIsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRlLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xXaW5kUnVsZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjU3
NDYsNiArNjU3NTQsMjIgQEAKIAkJCQlOYW1lPSJ0cmFjayIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2suY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xB
dWRpb1RyYWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9U
cmFja0xpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcSW5iYW5kVGV4dFRyYWNrLmNwcCIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KQEAgLTY1ODI2LDYgKzY1ODUwLDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2suY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFx0cmFja1xWaWRlb1RyYWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmNwcCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJh
Y2tcVmlkZW9UcmFja0xpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcV2ViVlRURWxlbWVudC5jcHAiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMTMs
OCArNTExMywzMiBAQAogCQlCQ0ZFMkYxMjBDMUI1ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZFMkYxMDBDMUI1
ODM3MDAyMDIzNUYgLyogSlNSZWN0LmggKi87IH07CiAJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0ZGNjQ5MjBFQUQxNUMy
MDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNGRjY0OTAwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCRTZERjcw
QjE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFNkRGNzA4MTcxQ0EyQzUwMERENTJC
OCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovOyB9OworCQlCRTZERjcwQzE3MUNBMkM1MDBE
RDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwOTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1Ry
YWNrQ3VzdG9tLmggKi87IH07CisJCUJFNkRGNzBEMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVv
VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJFNkRGNzBBMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3Vz
dG9tLmNwcCAqLzsgfTsKKwkJQkU2REY3MTExNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFj
a0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRTZERjcwRTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLzsg
fTsKKwkJQkU2REY3MTIxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU2REY3MEYxNzFD
QTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5oICovOyB9OworCQlCRTZERjcxMzE3
MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcxMDE3MUNBMkRBMDBERDUy
QjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCUJFODhFMEMxMTcxNUNF
MjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEJGMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xp
c3RCYXNlLmNwcCAqLzsgfTsKIAkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlz
dEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi87IH07CisJCUJFODhF
MEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBB
dWRpb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUwRDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwREIxNzE1RDJBMjAwNjU4RDk4
IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5j
cHAgKi87IH07CisJCUJFODhFMERDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDAx
NzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi87IH07CisJCUJFODhFMERFMTcx
NUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQz
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJFODhFMEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi87
IH07CisJCUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDYxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJCUJFOEVGMDQyMTcxQzhGRjkw
MDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
ay5jcHAgKi87IH07CisJCUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDNG
MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLzsgfTsKKwkJQkU4RUYwNDQxNzFD
OEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpT
QXVkaW9UcmFja0xpc3QuY3BwICovOyB9OworCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU4RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCAq
LzsgfTsKKwkJQkU4RUYwNEExNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NjE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNEIxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFj
ay5oICovOyB9OworCQlCRThFRjA0QzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThF
RjA0ODE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJF
OEVGMDREMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0OTE3MUM5MDE0MDA5QjQ4
QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oICovOyB9OworCQlCRUYyOUVFQjE3MTVERDA5MDBDNEI0
QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRUExNzE1REQwOTAw
QzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi87IH07CiAJCUMwNDZFMUFDMTIwOEE5RkUw
MEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwNDZFMUFCMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6
ZWRTdHJpbmdzLmNwcCAqLzsgfTsKIAkJQzBDMDU0Q0IxMTE4QzhFNDAwQ0UyNjM2IC8qIENvZGVH
ZW5lcmF0b3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Y4QjMwNTBBMzAwRkUxMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvci5wbSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDQzExMThDOEU0
MDBDRTI2MzYgLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJh
dGUtYmluZGluZ3MucGwgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTExODQyLDEzICsxMTg2Niw0MSBAQAogCQlCQ0ZFMkYxMDBDMUI1ODM3MDAyMDIz
NUYgLyogSlNSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGRjY0OEYwRUFEMTVDMjAwQzFENkY3
IC8qIExlbmd0aEJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZW5ndGhC
b3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGRjY0OTAwRUFEMTVDMjAwQzFE
NkY3IC8qIExlbmd0aFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVu
Z3RoU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTZERjcwODE3MUNBMkM1
MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVmlkZW9UcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJFNkRGNzA5MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWaWRlb1RyYWNrQ3VzdG9t
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzBBMTcxQ0EyQzUwMERENTJC
OCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCRTZERjcwRTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFj
a0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzBGMTcxQ0Ey
REEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNBdWRpb1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJFNkRGNzEwMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFja0xp
c3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTg1NUY3RjA3MDFF
ODM1MDAyMzk3NjkgLyogV2ViQ29yZVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJFODU2MDUxMDcwMUY5MTEw
MDIzOTc2OSAvKiBXZWJDb3JlVmlldy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJDb3JlVmlldy5tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU4OEUwQkYxNzE1Q0UyNjAw
NjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVHJhY2tMaXN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNrTGlzdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkU4OEUwQ0MxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFjay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0UxNzE1RDJBMjAwNjU4RDk4IC8q
IEF1ZGlvVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvVHJhY2suaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyog
QXVkaW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXVkaW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBE
MDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkU4OEUwRDExNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVHJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTggLyogVmlk
ZW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ0MTcxNUQyQTIwMDY1OEQ5OCAv
KiBWaWRlb1RyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaWRlb1RyYWNrLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUw
RDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJFODhFMEQ3MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlkZW9UcmFja0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDNGMTcxQzhGRjkwMDlCNDhDMyAv
KiBKU0F1ZGlvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRp
b1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQwMTcxQzhGRjkw
MDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvVHJhY2tMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQ2MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1Zp
ZGVvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRl
b1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDcxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1ZpZGVvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYw
NDgxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQ5MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJh
Y2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmlkZW9UcmFja0xp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU5MUZDOEIwNjEzMzY2NjAwNUUz
NzkwIC8qIFBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTkxRkM4QzA2MTMzNjY2MDA1RTM3OTAgLyogUG9z
aXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU5ODNEOTUwNTJBMkUwQTAwODkyRDg1IC8qIFdlYkNv
cmVLZXlib2FyZFVJTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCUJFRjI5RUU5MTcxNUREMDkw
MEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA0NkUxQUIxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXpl
ZFN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxp
emVkU3RyaW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwREZDODZGMERC
Njg0MUEwMDNFQUU3QyAvKiBKU0NvbnNvbGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDb25zb2xlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nl
c3Nvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Njg5LDYgKzE2NzQxLDEw
IEBACiAJCQkJNDlFRUNFRjMxMDUwNzBDNDAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXIuaCAqLywK
IAkJCQk0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICov
LAogCQkJCTQ5RUVDRjFBMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICov
LAorCQkJCUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwICovLAor
CQkJCUJFOEVGMDNGMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLywKKwkJCQlC
RThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAgKi8sCisJCQkJ
QkU4RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCAqLywKIAkJCQk2
NURGMzIzMzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5jcHAgKi8sCiAJCQkJ
NjVERjMyMzQwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuaCAqLywKIAkJCQk2
NURGMzIzNTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmNwcCAqLywKQEAgLTE2
OTIzLDYgKzE2OTc5LDEwIEBACiAJCQkJOTEwODlEMzAxNEMzMzVDRDAwNUFGQzQ5IC8qIEpTVWlu
dDhDbGFtcGVkQXJyYXkuaCAqLywKIAkJCQkxNUM3NzA5MjEwMEQzQ0E4MDA1QkEyNjcgLyogSlNW
YWxpZGl0eVN0YXRlLmNwcCAqLywKIAkJCQkxNUM3NzA5MTEwMEQzQ0E4MDA1QkEyNjcgLyogSlNW
YWxpZGl0eVN0YXRlLmggKi8sCisJCQkJQkU4RUYwNDYxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlk
ZW9UcmFjay5jcHAgKi8sCisJCQkJQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9U
cmFjay5oICovLAorCQkJCUJFOEVGMDQ4MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tM
aXN0LmNwcCAqLywKKwkJCQlCRThFRjA0OTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNr
TGlzdC5oICovLAogCQkJCTk3RTlFQzhCMTVEQzQ5MkYwMDRGMkU3MSAvKiBKU1ZvaWRDYWxsYmFj
ay5jcHAgKi8sCiAJCQkJOTdFOUVDOEMxNURDNDkyRjAwNEYyRTcxIC8qIEpTVm9pZENhbGxiYWNr
LmggKi8sCiAJCQkJQTdEMjBGNjAxMDdGNDA2OTAwQTgwMzkyIC8qIEpTV2ViR0xBY3RpdmVJbmZv
LmNwcCAqLywKQEAgLTE3NjkxLDYgKzE3NzUxLDE4IEBACiAJCUIxQUQ0RTc3MTNBMTJBNzIwMDg0
NkIyNyAvKiB0cmFjayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQkU4OEUwQ0MxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwICovLAorCQkJ
CUJFODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi8sCisJCQkJQkU4OEUw
Q0UxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaWRsICovLAorCQkJCUJFODhFMENGMTcx
NUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgKi8sCisJCQkJQkU4OEUwRDAxNzE1
RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi8sCisJCQkJQkU4OEUwRDExNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmlkbCAqLywKKwkJCQlCRTg4RTBEMjE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi8sCisJCQkJQkU4OEUwRDMxNzE1RDJBMjAwNjU4
RDk4IC8qIFZpZGVvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBENDE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVv
VHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBENjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9U
cmFja0xpc3QuaCAqLywKKwkJCQlCRTg4RTBENzE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFj
a0xpc3QuaWRsICovLAogCQkJCUJFODhFMEJGMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RC
YXNlLmNwcCAqLywKIAkJCQlCRTg4RTBDMDE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFz
ZS5oICovLAogCQkJCTA3OTQxNzhGMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2su
Y3BwICovLApAQCAtMTgzNDgsNiArMTg0MjAsOCBAQAogCQkJCTQ5RTkxMUIyMEVGODZEMjcwMDlE
MENBRiAvKiB0cmFuc2Zvcm1zICovLAogCQkJCTQ5MDcwN0U0MTIxOUMwNDMwMEQ5MEU1MSAvKiBB
TkdMRVdlYktpdEJyaWRnZS5jcHAgKi8sCiAJCQkJNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8q
IEFOR0xFV2ViS2l0QnJpZGdlLmggKi8sCisJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8q
IEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCisJCQkJQkVGMjlFRUExNzE1REQwOTAwQzRCNEM5IC8q
IFZpZGVvVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8q
IEJpdG1hcEltYWdlLmNwcCAqLywKIAkJCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0
bWFwSW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3Bw
ICovLApAQCAtMTg4MjksNiArMTg5MDMsOSBAQAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJG
RiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQwMERDRjMzQiAv
KiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIw
MkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKKwkJCQlCRTZERjcw
RTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLywKKwkJCQlCRTZE
RjcwRjE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmggKi8sCisJCQkJQkU2
REY3MTAxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwICovLAog
CQkJCUZEOEFBNjNCMTY5NTE0OEUwMEQyRUE2OCAvKiBKU0JpcXVhZEZpbHRlck5vZGVDdXN0b20u
Y3BwICovLAogCQkJCTg5MzFERTVBMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3Bw
ICovLAogCQkJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREN1c3RvbS5jcHAgKi8sCkBAIC0xODkzOCw2ICsxOTAxNSw5IEBACiAJCQkJMDc4NDYz
ODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLywKIAkJCQkwN0I1QTMwQTE0
Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk1MTZCQjc5
MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCAqLywKKwkJCQlCRTZE
RjcwODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAqLywKKwkJCQlC
RTZERjcwOTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmggKi8sCisJCQkJ
QkU2REY3MEExNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwICov
LAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0QzQxMjk3MzU0OTAwQUNBOTg5IC8qIEpTV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTRCNDEyOTczNENBMDBBQ0E5
ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCAqLywKQEAgLTIxMDI1LDYg
KzIxMTA1LDcgQEAKIAkJCQlGRDMxNjA4OTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9Tb3VyY2VQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ2MkY1MkUxNDU4OThEODAwOTRCMEVEIC8q
IEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQjA1MkUw
MTU2MUE0MkMwMEI1MDBENiAvKiBBdWRpb1N1bW1pbmdKdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjA4QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDYwMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRo
ZW50aWNhdGlvbkNGLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0
MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjM4ODgs
NiArMjM5NjksNyBAQAogCQkJCTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBRjEyQjAyNkY3MDBDMUEzNTkgLyogVmVj
dG9yTWF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8q
IFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkVGMjlFRUMxNzE1
REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUY0MThDRjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTNGRkZGOUFFMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNp
YmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQwNzQsNiArMjQxNTYsMTYgQEAKIAkJ
CQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUI1MzM0OTE3MTdERUUz
MDBGMjA1RjkgLyogQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJFODhFMEMyMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCRTg4RTBEOTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkU4OEUwREMxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFj
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVv
VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCRThFRjA0MzE3MUM4RkY5MDA5QjQ4QzMg
LyogSlNBdWRpb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRThFRjA0NTE3MUM4RkY5MDA5
QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4RUYwNEIx
NzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4
RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJFNkRGNzBDMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uaCBp
biBIZWFkZXJzICovLAorCQkJCUJFNkRGNzEyMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJh
Y2tDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcwMjIsNiArMjcxMTQsMTggQEAKIAkJCQlF
MTUyNTUxNjE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCNTMzNDcxNzE3RDBBMTAw
RjIwNUY5IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJFODhFMERCMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBERTE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBFMTE3MTVEMkEyMDA2NThE
OTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4RUYwNDIxNzFD
OEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRThF
RjA0NDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlCRThFRjA0QTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUJFOEVGMDRDMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFNkRGNzBCMTcxQ0EyQzUwMERENTJCOCAvKiBK
U1ZpZGVvVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU2REY3MEQxNzFDQTJD
NTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkU2REY3MTExNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCRTZERjcxMzE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNr
TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTQ4NDU0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5
KQpAQCAtNDMzLDE4ICs0MzMsMjQgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAog
CiBpZiBFTkFCTEVfVklERU8KIHdlYmtpdGd0a19nZG9tX2J1aWx0X2hfYXBpICs9IFwKKwkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2su
aCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01B
dWRpb1RyYWNrTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50LmggXAogCSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrLmgg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4
dFRyYWNrTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVRleHRUcmFja0N1ZS5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaCBcCi0JJCh0b3BfYnVpbGRk
aXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFja0V2ZW50LmgKKwkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQu
aCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01W
aWRlb1RyYWNrLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuaAogd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxBdWRpb0VsZW1lbnQu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVu
dFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhUTUxWaWRl
b0VsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZp
ZGVvRWxlbWVudFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERP
TUF1ZGlvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVk
aW9UcmFja0xpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4
dFRyYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFj
a1ByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFj
a0xpc3QuY3BwIFwKQEAgLTQ1Myw2ICs0NTksOCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3Vl
UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJh
Y2tDdWVMaXN0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
VmlkZW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRl
b1RyYWNrTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UcmFj
a0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZl
bnRQcml2YXRlLmgKIGVuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRl
ICJKU0F1ZGlvVHJhY2suaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitib29sIEpTQXVkaW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNBdWRpb1RyYWNrID0ganNDYXN0PEpT
QXVkaW9UcmFjayo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFjayogYXVk
aW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwoKSk7
XAorCisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMg
bm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzQXVkaW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVydGll
cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNrOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2ssICZzX2luZm8pOwor
ICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJU
KGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFjaywgdmlzaXRvcik7
CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFjayo+
KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChh
dWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1
c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBKU0F1ZGlvVHJhY2tDdXN0b21faAorI2RlZmluZSBKU0F1ZGlvVHJhY2tDdXN0b21faAorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgor
I2luY2x1ZGUgIkpTQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSB2b2lk
KiByb290KEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAgIC8vIFJldHVybiB0aGUgbWVkaWEgZWxl
bWVudCdzIHJvb3QgaWYgaXQgaGFzIG9uZS4KKyAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVudCgp
KQorICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+bWVkaWFFbGVtZW50KCkpOworCisgICAgLy8g
Tm8gbWVkaWEgZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0IHRyYWNrLgorICAgIHJldHVybiB0cmFj
azsKK30KKworfQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTQXVkaW9UcmFj
a0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05v
ZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitib29sIEpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2tMaXN0KiBqc0F1ZGlvVHJhY2tMaXN0ID0ganND
YXN0PEpTQXVkaW9UcmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIEF1ZGlv
VHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2tMaXN0Kj4o
anNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmlu
ZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAg
Ly8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlz
dGVuZXJzLgorICAgIGlmIChhdWRpb1RyYWNrTGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVu
dCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNo
YWJsZS4KKyAgICBpZiAoIWF1ZGlvVHJhY2tMaXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFq
c0F1ZGlvVHJhY2tMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJl
bnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChy
b290KGF1ZGlvVHJhY2tMaXN0LT5vd25lcigpKSk7Cit9CisKK3ZvaWQgSlNBdWRpb1RyYWNrTGlz
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1Ry
YWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNBdWRpb1Ry
YWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBP
dmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRp
bmdGbGFnKTsKKyAgICBBU1NFUlQoanNBdWRpb1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KGpzQXVkaW9UcmFja0xpc3QsIHZpc2l0b3IpOworCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlv
VHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0
LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2tMaXN0
LT5vd25lcigpKSk7CisgICAgYXVkaW9UcmFja0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2
aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAko
cmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUg
IkdDQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNBdHRyQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tDdXN0b20u
Y3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
QmxvYkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTQ1NTRm9udEZhY2VSdWxlQ3VzdG9tLmNwcCIKQEAgLTE0Nyw2ICsxNDksOCBAQAog
I2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0
UG9pbnRDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3RvbS5oIgorCisjaW5jbHVkZSAi
SlNWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBKU1ZpZGVvVHJhY2tPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9UcmFjayA9IGpzQ2FzdDxKU1Zp
ZGVvVHJhY2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJhY2sqIHZpZGVv
VHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1RyYWNrLT5pbXBsKCkpOwor
CisgICAgLy8gSWYgdGhlIHRyYWNrIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90
IHJlYWNoYWJsZS4KKyAgICBpZiAoIWpzVmlkZW9UcmFjay0+aGFzQ3VzdG9tUHJvcGVydGllcygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09w
YXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNrKSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNW
aWRlb1RyYWNrKiBqc1ZpZGVvVHJhY2sgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2ssICZzX2luZm8pOworICAg
IENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpz
VmlkZW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFjaywgdmlzaXRvcik7CisK
KyAgICBWaWRlb1RyYWNrKiB2aWRlb1RyYWNrID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KGpz
VmlkZW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh2aWRl
b1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3Rv
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBK
U1ZpZGVvVHJhY2tDdXN0b21faAorI2RlZmluZSBKU1ZpZGVvVHJhY2tDdXN0b21faAorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSB2b2lkKiBy
b290KFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIC8vIFJldHVybiB0aGUgbWVkaWEgZWxlbWVu
dCdzIHJvb3QgaWYgaXQgaGFzIG9uZS4KKyAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVudCgpKQor
ICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+bWVkaWFFbGVtZW50KCkpOworCisgICAgLy8gTm8g
bWVkaWEgZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0IHRyYWNrLgorICAgIHJldHVybiB0cmFjazsK
K30KKworfQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xp
c3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVD
dXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citib29sIEpTVmlkZW9UcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0
PEpTVmlkZW9UcmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFZpZGVvVHJh
Y2tMaXN0KiB2aWRlb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNW
aWRlb1RyYWNrTGlzdC0+aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSBsaXN0IGlzIGZpcmluZyBl
dmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8g
dGhlIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVu
ZXJzLgorICAgIGlmICh2aWRlb1RyYWNrTGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBs
aXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJs
ZS4KKyAgICBpZiAoIXZpZGVvVHJhY2tMaXN0LT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1Zp
ZGVvVHJhY2tMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUgbWVkaWEgZWxlbWVudCBwYXJlbnQg
aXMgcmVhY2hhYmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290
KHZpZGVvVHJhY2tMaXN0LT5vd25lcigpKSk7Cit9CisKK3ZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTVmlkZW9UcmFja0xpc3QqIGpzVmlkZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNr
TGlzdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNr
TGlzdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdG
bGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1RyYWNrTGlzdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpz
VmlkZW9UcmFja0xpc3QsIHZpc2l0b3IpOworCisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJh
Y2tMaXN0ID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5p
bXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2tMaXN0LT5v
d25lcigpKSk7CisgICAgdmlkZW9UcmFja0xpc3QtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNp
dG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXVkaW9Db250ZXh0OworICAgIGNsYXNzIEF1ZGlv
VHJhY2tMaXN0OwogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3Mg
RE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBAIC02Nyw2ICs2OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTb3VyY2VCdWZmZXJMaXN0OwogICAg
IGNsYXNzIFRleHRUcmFjazsKICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7CisgICAgY2xhc3MgVmlk
ZW9UcmFja0xpc3Q7CiAgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdlYktpdE5hbWVk
RmxvdzsKICAgICBjbGFzcyBXb3JrZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDE0ODQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiBuYW1l
c3BhY2U9IkV2ZW50VGFyZ2V0IgogCiBBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElP
CitBdWRpb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogQmF0dGVyeU1hbmFnZXIg
Y29uZGl0aW9uYWw9QkFUVEVSWV9TVEFUVVMKIERlZGljYXRlZFdvcmtlckNvbnRleHQgY29uZGl0
aW9uYWw9V09SS0VSUwogRE9NQXBwbGljYXRpb25DYWNoZQpAQCAtMzcsNiArMzgsNyBAQCBTVkdF
bGVtZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCiBUZXh0VHJhY2sgY29uZGl0aW9uYWw9VklE
RU9fVFJBQ0sKIFRleHRUcmFja0N1ZSBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNr
TGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSworVmlkZW9UcmFja0xpc3QgY29uZGl0aW9uYWw9
VklERU9fVFJBQ0sKIFdlYktpdE5hbWVkRmxvdwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdFQl9T
T0NLRVRTCiBXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDg0NTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5
OCw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRp
b1RyYWNrTGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAi
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2suaCIKQEAgLTEwNSw2ICsxMDcsOCBAQAogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0
LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0
LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFdFQl9BVURJTykKQEAgLTI5Niw3ICszMDAsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVk
aWFFbGVtZW50KGNvbnN0CiAgICAgLCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hhbmdlKGZhbHNl
KQogICAgICwgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZSgtMSkKICAgICAsIG1fY2FwdGlvbkRp
c3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYykKKyAgICAsIG1fYXVk
aW9UcmFja3MoMCkKICAgICAsIG1fdGV4dFRyYWNrcygwKQorICAgICwgbV92aWRlb1RyYWNrcygw
KQogICAgICwgbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUoMCkKICNlbmRpZgogI2lmIEVOQUJM
RShXRUJfQVVESU8pCkBAIC0zMzAsMTIgKzMzNiwyMiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRD
YWxsYmFja3ModGhpcyk7CisgICAgaWYgKG1fYXVkaW9UcmFja3MpIHsKKyAgICAgICAgbV9hdWRp
b1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fYXVkaW9UcmFja3Mt
Pml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogICAgIGlmIChtX3RleHRUcmFja3MpCiAg
ICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOwogICAgIGlmIChtX3RleHRUcmFja3Mp
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3Ro
KCk7ICsraSkKICAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQo
KTsKICAgICB9CisgICAgaWYgKG1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92aWRlb1RyYWNr
cy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92aWRl
b1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdmlkZW9UcmFja3MtPml0ZW0o
aSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAobV9tZWRpYUNvbnRy
b2xsZXIpCkBAIC0xMzQ5LDYgKzEzNjUsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0
VHJhY2tSZWFkeVN0YQogICAgIH0KIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1Ry
YWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopCit7CisgICAgLy8gV2Ugd2lsbCB3YW50IHRv
IGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMgaGVyZSBvbmNlIHRoZXkgZXhpc3QKK30KKwogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNr
KQogewogICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1l
bnQpIHsKQEAgLTEzODgsNiArMTQwOSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja01vZGVDaGFuCiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgp
KTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFuZ2UgdGhlIG1lZGlh
IGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAodHJh
Y2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5raW5k
KCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBU
ZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCkBAIC0yNzkyLDYgKzI4MTgsMTYgQEAgZG91Ymxl
IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKQogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFj
ayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IEF1ZGlvVHJhY2s6OmNy
ZWF0ZSh0aGlzLCBwcnBUcmFjayk7CisKKyAgICBhZGRBdWRpb1RyYWNrKHRyYWNrLmdldCgpKTsK
K30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQ
YXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQogewogICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAgLTI4
MjcsNiArMjg2MywzMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRk
CiAgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFj
a1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRy
PFZpZGVvVHJhY2s+IHRyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKTsK
KworICAgIGFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9hdWRpb1RyYWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBjYXN0IGlzIHNh
ZmUgYmVjYXVzZSB3ZSBjcmVhdGVkIHRoZSBBdWRpb1RyYWNrIHdpdGggdGhlIEF1ZGlvVHJhY2tQ
cml2YXRlCisgICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjay4KKyAg
ICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4ocHJw
VHJhY2stPmNsaWVudCgpKTsKKyAgICBpZiAoIXRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZW1vdmVBdWRpb1RyYWNrKHRyYWNrLmdldCgpKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAgLTI4NDQsNiArMjkwNywyMyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtCiAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRleHRUcmFjay5nZXQoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBycFRy
YWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNy
ZWF0ZWQgdGhlIFZpZGVvVHJhY2sgd2l0aCB0aGUgVmlkZW9UcmFja1ByaXZhdGUKKyAgICAvLyBw
YXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrLgorICAgIFJlZlB0cjxWaWRlb1Ry
YWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkp
OworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZVZpZGVvVHJh
Y2sodHJhY2suZ2V0KCkpOworfQorCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQ
bGF0Zm9ybVRleHRUcmFjaz4gcGxhdGZvcm1UcmFjaykKIHsKQEAgLTI5MjAsNiArMzAwMCwxMSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlQ2FwdGlvblRyYWNrCiAjZW5kaWYKIH0KIAor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQor
eworICAgIGF1ZGlvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6YWRkVGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgdGV4dFRyYWNr
cygpLT5hcHBlbmQodHJhY2spOwpAQCAtMjkyNyw2ICszMDEyLDE2IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6YWRkVGV4dFRyYWNrKFRleHQKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2Vk
KCk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayhWaWRlb1RyYWNr
KiB0cmFjaykKK3sKKyAgICB2aWRlb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOworfQorCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJhY2spCit7
CisgICAgbV9hdWRpb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBUcmFja0Rp
c3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKQEAgLTI5MzksMTggKzMwMzQsMzAgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVAogICAgIGNsb3NlQ2FwdGlvblRy
YWNrc0NoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1Ry
YWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFj
ayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkK
IHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2F1
ZGlvVHJhY2tzKQorICAgICAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gbV9hdWRpb1RyYWNr
cy0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZW1vdmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3Mt
Pml0ZW0obGVuZ3RoIC0gMSkpOwogCi0gICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUo
dGhpcyk7Ci0gICAgZm9yIChpbnQgaSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49
IDA7IC0taSkgewotICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVt
KGkpOworICAgIGlmIChtX3RleHRUcmFja3MpIHsKKyAgICAgICAgVHJhY2tEaXNwbGF5VXBkYXRl
U2NvcGUgc2NvcGUodGhpcyk7CisgICAgICAgIGZvciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxl
bmd0aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIFRleHRUcmFjayogdHJhY2sg
PSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CiAKLSAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUo
KSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKLSAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFj
ayk7CisgICAgICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6SW5C
YW5kKQorICAgICAgICAgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFjayk7CisgICAgICAgIH0K
ICAgICB9CisKKyAgICBpZiAobV92aWRlb1RyYWNrcykKKyAgICAgICAgd2hpbGUgKHVuc2lnbmVk
IGxlbmd0aCA9IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmVtb3ZlVmlk
ZW9UcmFjayhtX3ZpZGVvVHJhY2tzLT5pdGVtKGxlbmd0aCAtIDEpKTsKIH0KIAogUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMjk5MCw2ICszMDk3LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBIVE1MTWVkaWFFbGVtZW50OjoKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsKIH0K
IAorQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKK3sKKyAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV9hdWRpb1RyYWNr
cy5nZXQoKTsKK30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
cygpIAogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKQEAgLTMwMDEsNiArMzExOSwxNyBAQCBUZXh0VHJhY2tMaXN0KiBIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhCiAgICAgcmV0dXJuIG1fdGV4dFRyYWNrcy5nZXQoKTsKIH0KIAor
VmlkZW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKCkKK3sKKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICBtX3Zp
ZGVvVHJhY2tzID0gVmlkZW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV92aWRlb1RyYWNrcy5n
ZXQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRy
YWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhh
c1RhZ05hbWUodHJhY2tUYWcpKTsKQEAgLTQ5MTgsNyArNTA0Nyw5IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UKICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291
cmNlLCAibWVkaWFTb3VyY2UiKTsKICNlbmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAg
ICBpbmZvLmFkZE1lbWJlcihtX2F1ZGlvVHJhY2tzLCAiYXVkaW9UcmFja3MiKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX3RleHRUcmFja3MsICJ0ZXh0VHJhY2tzIik7CisgICAgaW5mby5hZGRNZW1i
ZXIobV92aWRlb1RyYWNrcywgInZpZGVvVHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90
ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4sICJ0ZXh0VHJhY2tzV2hlblJlc291
cmNlU2VsZWN0aW9uQmVnYW4iKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2N1ZVRyZWUsICJjdWVU
cmVlIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jdXJyZW50bHlBY3RpdmVDdWVzLCAiY3VycmVu
dGx5QWN0aXZlQ3VlcyIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHJldmlzaW9uIDE0ODQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKICNpbmNsdWRlICJD
YXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAj
aW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVk
ZSAiVmlkZW9UcmFjay5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDgg
KzcyLDEyIEBAIGNsYXNzIE1lZGlhS2V5czsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorY2xhc3MgQXVkaW9UcmFja0xpc3Q7CitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZTsKIGNs
YXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBUZXh0VHJhY2tMaXN0OworY2xhc3Mg
VmlkZW9UcmFja0xpc3Q7CitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogdHlwZWRlZiBQT0RJ
bnRlcnZhbFRyZWU8ZG91YmxlLCBUZXh0VHJhY2tDdWUqPiBDdWVJbnRlcnZhbFRyZWU7CiB0eXBl
ZGVmIEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxUeXBlIEN1ZUludGVydmFsOwpAQCAtODQsNyAr
OTAsOSBAQCB0eXBlZGVmIFZlY3RvcjxDdWVJbnRlcnZhbD4gQ3VlTGlzdDsKIAogY2xhc3MgSFRN
TE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xp
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFD
YW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICwgcHJpdmF0ZSBB
dWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAorICAgICwgcHJp
dmF0ZSBWaWRlb1RyYWNrQ2xpZW50CiAjZW5kaWYKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFD
S19NRU5VKQogICAgICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudApAQCAtMjI2
LDExICsyMzQsMTggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0
VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBFeGNlcHRpb25D
b2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBlbXB0eVN0cmluZygp
LCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0
cmluZyYga2luZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZFRleHRUcmFjayhraW5k
LCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBlYyk7IH0KIAorICAgIEF1ZGlvVHJhY2tM
aXN0KiBhdWRpb1RyYWNrcygpOwogICAgIFRleHRUcmFja0xpc3QqIHRleHRUcmFja3MoKTsKKyAg
ICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja3MoKTsKKwogICAgIEN1ZUxpc3QgY3VycmVudGx5
QWN0aXZlQ3VlcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudGx5QWN0aXZlQ3VlczsgfQogCisg
ICAgdm9pZCBhZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqKTsKICAgICB2b2lkIGFkZFRleHRUcmFj
ayhUZXh0VHJhY2sqKTsKKyAgICB2b2lkIGFkZFZpZGVvVHJhY2soVmlkZW9UcmFjayopOworICAg
IHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKik7CiAgICAgdm9pZCByZW1vdmVUZXh0
VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCByZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sq
KTsKICAgICB2b2lkIHJlbW92ZUFsbEluYmFuZFRyYWNrcygpOwogICAgIHZvaWQgY2xvc2VDYXB0
aW9uVHJhY2tzQ2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5TWVkaWFQbGF5ZXJPZlRleHRUcmFj
a0NoYW5nZXMoKTsKQEAgLTIzOCw4ICsyNTMsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogCisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRl
PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNr
KFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92
ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPElu
YmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBP
VkVSUklERTsKIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgdmlydHVh
bCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+
KSBPVkVSUklERTsKQEAgLTI3NSw2ICsyOTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1
cmVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7
CiAKKyAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tF
bmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKik7CisKICAgICAvLyBUZXh0VHJhY2tDbGllbnQKICAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CiAg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopOwpAQCAtMjg0
LDYgKzMwNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRl
eHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwog
CisgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2Vs
ZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKTsKKwogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNlbmRpZgpAQCAtNjk5LDcgKzcyNCw5IEBA
IHByaXZhdGU6CiAKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1v
ZGUgbV9jYXB0aW9uRGlzcGxheU1vZGU7CiAKKyAgICBSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IG1f
YXVkaW9UcmFja3M7CiAgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKKyAg
ICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0
cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW47CiAK
ICAgICBDdWVJbnRlcnZhbFRyZWUgbV9jdWVUcmVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2
LDkgQEAgdm9pZCB3ZWJraXRDYW5jZWxLZXlSZXF1ZXN0KGluIFtUcmVhdE51bAogI2lmIGRlZmlu
ZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKIFRleHRUcmFjayBh
ZGRUZXh0VHJhY2soaW4gRE9NU3RyaW5nIGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxh
YmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYW5ndWFnZSkKICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CityZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9UcmFja0xpc3QgYXVkaW9UcmFja3M7
CiByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrTGlzdCB0ZXh0VHJhY2tzOworcmVhZG9ubHkg
YXR0cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVvVHJhY2tzOwogI2VuZGlmCiAKIFtSZWZsZWN0
LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lZGlhR3JvdXA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCisj
aW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiVHJhY2tCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJu
YXRpdmU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25L
ZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
ZGVzY3JpcHRpb24sICgiZGVzY3JpcHRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIEF1ZGlvVHJhY2s6Om1haW5LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBtYWluOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbkRlc2M7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24s
ICgidHJhbnNsYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIHRyYW5zbGF0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJh
Y2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitBdWRp
b1RyYWNrOjpBdWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFz
ZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1
YWdlKCkpCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fZW5hYmxlZCh0
cmFja1ByaXZhdGUtPmVuYWJsZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1f
cHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7
CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBBdWRpb1RyYWNr
UHJpdmF0ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6YWx0ZXJu
YXRpdmVLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpEZXNjcmlwdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlv
bktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6
Ok1haW46CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW5EZXNjOgorICAgICAg
ICBzZXRLaW5kKEF1ZGlvVHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6VHJhbnNsYXRpb246CisgICAgICAgIHNldEtp
bmQoQXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKEF1
ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEF1ZGlvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitBdWRpb1RyYWNrOjp+QXVkaW9UcmFj
aygpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgQXVkaW9UcmFj
azo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBp
ZiAodmFsdWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICh2YWx1ZSA9PSBkZXNjcmlwdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKHZhbHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmICh2YWx1ZSA9PSBtYWluRGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKHZhbHVlID09IHRyYW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6
c2V0RW5hYmxlZChjb25zdCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBl
bmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFu
Z2VkKHRoaXMpOworfQorCitzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7
CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9UcmFj
a0luZGV4KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja19oCisjZGVm
aW5lIEF1ZGlvVHJhY2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
QXVkaW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisKK2NsYXNzIEF1ZGlvVHJhY2tD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSA9IDA7
Cit9OworCitjbGFzcyBBdWRpb1RyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEF1ZGlv
VHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b1RyYWNrPiBjcmVhdGUoQXVkaW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEF1ZGlv
VHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEF1ZGlvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+QXVkaW9UcmFjaygpOworCisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQorICAgIHZvaWQgc2V0SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgeyBtX2lk
ID0gaWQ7IH0KKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFsdGVybmF0aXZlS2V5
d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NyaXB0aW9uS2V5d29y
ZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5LZXl3b3JkKCk7CisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbkRlc2NLZXl3b3JkKCk7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgdHJhbnNsYXRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgZGVmYXVsdEtpbmRLZXl3b3JkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gZW1wdHlBdG9tOyB9CisKKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChjb25zdCBib29sKTsKKworICAg
IHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIE9WRVJSSURFIHsgbV9jbGllbnQgPSAwOyB9Cisg
ICAgQXVkaW9UcmFja0NsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0K
KworICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CisKK3Byb3RlY3RlZDoKKyAgICBBdWRp
b1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7
CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0
cmluZyYpIGNvbnN0IE9WRVJSSURFOworCisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgYm9v
bCBtX2VuYWJsZWQ7CisgICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQ
dHI8QXVkaW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBBdWRpb1RyYWNr
KiB0b0F1ZGlvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBBU1NFUlQodHJhY2stPnR5
cGUoKSA9PSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
dWRpb1RyYWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1
c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBBdWRpb1RyYWNrIHsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
a2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVh
biBlbmFibGVkOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K0F1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBvd25lciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uob3du
ZXIsIGNvbnRleHQpCit7Cit9CisKK0F1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFja0xpc3QoKQor
eworfQorCit2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNr
PiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsK
KworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIuCisgICAgc2l6
ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsKKyAgICBtX2luYmFuZFRyYWNr
cy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVu
dCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0cmFjay0+c2V0
TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNr
LnJlbGVhc2UoKSk7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIHRvQXVkaW9UcmFjayhtX2luYmFuZFRyYWNrc1tpbmRleF0uZ2V0
KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0Ojpn
ZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEF1
ZGlvVHJhY2sqIHRyYWNrID0gdG9BdWRpb1RyYWNrKG1faW5iYW5kVHJhY2tzW2ldLmdldCgpKTsK
KyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQorICAgICAgICAgICAgcmV0dXJuIHRyYWNr
OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1Ry
YWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrTGlzdF9o
CisjZGVmaW5lIEF1ZGlvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKwor
I2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBdWRpb1RyYWNrOworCitjbGFzcyBBdWRpb1RyYWNrTGlzdCA6IHB1YmxpYyBUcmFja0xpc3RC
YXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrTGlzdD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrTGlzdChv
d25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+QXVkaW9UcmFja0xpc3QoKTsKKworICAgIEF1
ZGlvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworICAg
IEF1ZGlvVHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIHZvaWQgYXBwZW5k
KFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOwor
Citwcml2YXRlOgorICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAg
RXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgSlNDdXN0b21Jc1Jl
YWNoYWJsZQorXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBBdWRpb1RyYWNrIGl0ZW0oaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CisgICAgQXVkaW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5n
IGlkKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25yZW1vdmV0cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVz
ZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVz
ZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAg
ICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAkocmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNlKikgT1ZF
UlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBUZXh0
VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCisjaW5j
bHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVv
VHJhY2tMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5n
JiBWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRp
dmU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3Jk
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlv
bnMsICgiY2FwdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIGNhcHRpb25zOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
Om1haW5LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgY2FwdGlvbnMsICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlk
ZW9UcmFjazo6c2lnbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgcmV0dXJuIHNpZ247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlk
ZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29t
bWVudGFyeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1
cm4gY29tbWVudGFyeTsKK30KKworVmlkZW9UcmFjazo6VmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkK
KyAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFi
ZWwoKSwgdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUt
PmlkKCkpCisgICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS0+c2VsZWN0ZWQoKSkKKyAgICAs
IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7CisgICAg
bV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2lu
ZCgpKSB7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAg
IHNldEtpbmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKKyAgICAgICAgc2V0S2lu
ZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6
bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZh
dGU6OlNpZ246CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1YnRpdGxlczoKKyAg
ICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBz
ZXRLaW5kKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5
U3RyaW5nKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitWaWRlb1RyYWNrOjp+
VmlkZW9UcmFjaygpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wg
VmlkZW9UcmFjazo6aXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QK
K3sKKyAgICBpZiAodmFsdWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBzaWduS2V5d29yZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29yZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6
c2V0U2VsZWN0ZWQoY29uc3QgYm9vbCBzZWxlY3RlZCkKK3sKKyAgICBpZiAobV9zZWxlY3RlZCA9
PSBzZWxlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dmlkZW9UcmFja1NlbGVj
dGVkQ2hhbmdlZCh0aGlzKTsKK30KKworc2l6ZV90IFZpZGVvVHJhY2s6OmluYmFuZFRyYWNrSW5k
ZXgoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnZp
ZGVvVHJhY2tJbmRleCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tf
aAorI2RlZmluZSBWaWRlb1RyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRl
ICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRl
b1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xpZW50KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJs
aWMgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlk
KSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJu
YXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2FwdGlvbnNL
ZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaWduS2V5d29yZCgpOworICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBlbXB0eUF0b207IH0KKworICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOworCisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0K
KyAgICBWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIFZp
ZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+
IHByaXZhdGVUcmFjayk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5k
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOworCisgICAgQXRvbWljU3RyaW5n
IG1faWQ7CisgICAgYm9vbCBtX3NlbGVjdGVkOworICAgIFZpZGVvVHJhY2tDbGllbnQqIG1fY2xp
ZW50OworCisgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9OworCitp
bmxpbmUgVmlkZW9UcmFjayogdG9WaWRlb1RyYWNrKFRyYWNrQmFzZSogdHJhY2spCit7CisgICAg
QVNTRVJUKHRyYWNrLT50eXBlKCkgPT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VmlkZW9UcmFjayo+KHRyYWNrKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAgSlNDdXN0b21NYXJrRnVu
Y3Rpb24sCisgICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorXSBpbnRlcmZhY2UgVmlkZW9UcmFjayB7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBs
YWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmd1YWdlOworCisgICAg
YXR0cmlidXRlIGJvb2xlYW4gc2VsZWN0ZWQ7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KEhUTUxNZWRp
YUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDog
VHJhY2tMaXN0QmFzZShvd25lciwgY29udGV4dCkKK3sKK30KKworVmlkZW9UcmFja0xpc3Q6On5W
aWRlb1RyYWNrTGlzdCgpCit7Cit9CisKK3ZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVuZChQYXNz
UmVmUHRyPFZpZGVvVHJhY2s+IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxWaWRlb1RyYWNrPiB0
cmFjayA9IHBycFRyYWNrOworCisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmls
ZSBvcmRlci4KKyAgICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOwor
ICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOworCisgICAgQVNTRVJUKCF0
cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkp
OworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQob3duZXIoKSk7CisKKyAgICBzY2hlZHVsZUFk
ZFRyYWNrRXZlbnQodHJhY2sucmVsZWFzZSgpKTsKK30KKworVmlkZW9UcmFjayogVmlkZW9UcmFj
a0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9p
bmJhbmRUcmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdG9WaWRlb1RyYWNrKG1faW5iYW5k
VHJhY2tzW2luZGV4XS5nZXQoKSk7CisKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9UcmFjayog
VmlkZW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICBWaWRlb1RyYWNrKiB0cmFjayA9IHRvVmlkZW9UcmFjayhtX2luYmFuZFRyYWNrc1tpXS5nZXQo
KSk7CisgICAgICAgIGlmICh0cmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiB0
cmFjazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2xvbmcgVmlkZW9UcmFja0xpc3Q6OnNl
bGVjdGVkSW5kZXgoKSBjb25zdAoreworICAgIC8vIDQuOC4xMC4xMC4xIEF1ZGlvVHJhY2tMaXN0
IGFuZCBWaWRlb1RyYWNrTGlzdCBvYmplY3RzCisgICAgLy8gVGhlIFZpZGVvVHJhY2tMaXN0LnNl
bGVjdGVkSW5kZXggYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUKKyAgICAv
LyBjdXJyZW50bHkgc2VsZWN0ZWQgdHJhY2ssIGlmIGFueS4gSWYgdGhlIFZpZGVvVHJhY2tMaXN0
IG9iamVjdCBkb2VzIG5vdAorICAgIC8vIGN1cnJlbnRseSByZXByZXNlbnQgYW55IHRyYWNrcywg
b3IgaWYgbm9uZSBvZiB0aGUgdHJhY2tzIGFyZSBzZWxlY3RlZCwKKyAgICAvLyBpdCBtdXN0IGlu
c3RlYWQgcmV0dXJuIOKIkjEuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsg
KytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRlb1RyYWNrKG1faW5iYW5k
VHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5zZWxlY3RlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBWaWRlb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JWaWRlb1RyYWNrTGlzdDsKK30KKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBW
aWRlb1RyYWNrTGlzdF9oCisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1RyYWNrTGlzdCA6IHB1
YmxpYyBUcmFja0xpc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRl
b1RyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBW
aWRlb1RyYWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VmlkZW9UcmFja0xp
c3QoKTsKKworICAgIFZpZGVvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKKyAgICBsb25nIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKworICAgIFZpZGVvVHJh
Y2sqIGl0ZW0odW5zaWduZWQpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8Vmlk
ZW9UcmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAg
IFZpZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0
aW9uYWw9VklERU9fVFJBQ0ssCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwK
KyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGlu
dGVyZmFjZSBWaWRlb1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoOworICAgIFZpZGVvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4
KTsKKyAgICBWaWRlb1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRy
YWNrOworCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2
ZW50RXhjZXB0aW9uKTsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrUHJpdmF0
ZV9oCisjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNrUHJp
dmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGVDbGll
bnQoKSB7IH0KK307CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIFJlZkNvdW50
ZWQ8QXVkaW9UcmFja1ByaXZhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Ry
YWNrUHJpdmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZSgpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+QXVkaW9UcmFja1ByaXZhdGUoKSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KEF1ZGlv
VHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAgICBB
dWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBl
bmFibGVkOyB9OworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVkOyB9CisKKyAgICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgRGVzY3JpcHRpb24sIE1h
aW4sIE1haW5EZXNjLCBUcmFuc2xhdGlvbiwgQ29tbWVudGFyeSwgTm9uZSB9OworICAgIHZpcnR1
YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gTm9uZTsgfQorCisgICAgdmlydHVhbCBBdG9t
aWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1
YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisK
KyAgICB2aXJ0dWFsIGludCBhdWRpb1RyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZSgpCisgICAgICAgIDogbV9lbmFibGVk
KGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja1ByaXZhdGVD
bGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9lbmFibGVkOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMTQ4NDU0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTAzLDYgKzExMDMsMjIgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlh
UGxheWVyOjpjYWNoZQogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQordm9pZCBNZWRpYVBs
YXllcjo6YWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFjaykK
K3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayh0cmFjayk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRp
ZFJlbW92ZUF1ZGlvVHJhY2sodHJhY2spOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjphZGRUZXh0
VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0cmFjaykKIHsKICAgICBp
ZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCkBAIC0xMTE5LDYgKzExMzUsMjIgQEAgdm9pZCBNZWRp
YVBsYXllcjo6cmVtb3ZlVGV4dFRyYWNrKFBhc3NSZQogICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQt
Pm1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKIH0KIAordm9pZCBNZWRpYVBs
YXllcjo6YWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0cmFjaykK
K3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayh0cmFjayk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRp
ZFJlbW92ZVZpZGVvVHJhY2sodHJhY2spOworfQorCiBib29sIE1lZGlhUGxheWVyOjpyZXF1aXJl
c1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRl
LT5yZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9uIDE0ODQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDExICszMiwxMyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJveHku
aCIKICNlbmRpZgogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0yMTgs
OCArMjIwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9hZGVyKiBt
ZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsgfQogCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNr
KFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRl
PikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHND
aGFuZ2VkKGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgeyB9CkBA
IC00NDksOCArNDU1LDEyIEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2b2lk
IGFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogICAgIHZvaWQg
YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOworICAgIHZv
aWQgYWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPik7CisgICAgdm9p
ZCByZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKICAgICB2
b2lkIHJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KTsK
KyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4p
OwogCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlv
biopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9W
aWRlb1RyYWNrUHJpdmF0ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgVmlk
ZW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKwor
Y2xhc3MgVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb1RyYWNrUHJp
dmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Vmlk
ZW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFZpZGVvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5WaWRlb1RyYWNr
UHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQoVmlkZW9UcmFja1ByaXZhdGVDbGll
bnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIFZpZGVvVHJhY2tQcml2YXRl
Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpIHsgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOyB9Owor
ICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0K
KworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBDYXB0aW9ucywgTWFpbiwgU2lnbiwgU3Vi
dGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25z
dCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0
IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkg
Y29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFu
Z3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IHZp
ZGVvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAgIFZp
ZGVvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX3NlbGVjdGVkKGZhbHNlKQorICAgIHsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50Owor
ICAgIGJvb2wgbV9zZWxlY3RlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisjZW5kaWYK
</data>
<flag name="commit-queue"
          id="220105"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198390</attachid>
            <date>2013-04-16 12:49:10 -0700</date>
            <delta_ts>2013-09-25 21:53:32 -0700</delta_ts>
            <desc>Export VideoTrackPrivate.h in private framework headers.</desc>
            <filename>patch_3.txt</filename>
            <type>text/plain</type>
            <size>121463</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTE2ICBCcmVuZGFu
IExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNlcyBh
bmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlJ3Mg
bm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJlc3Rp
bmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFjaywg
VmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUuCisg
ICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFt
OiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6IEFk
ZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5oOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9U
cmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRpb1RyYWNrTGlz
dCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisgICAgICAgICog
YmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmg6IFNhbWUuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IGV2ZW50
IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogU2FtZS4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1ZGlvVHJhY2tzIGFuZCBt
X3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdl
ZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFj
a1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1lZGlh
UGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKTogQWRkZWQs
IGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1l
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayk6IEFk
ZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJh
Y2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2sp
OiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1vdmUgYXVkaW8gYW5kIHZp
ZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlv
VHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKTog
QWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQgcmVsYXRlZCBmdW5jdGlv
bnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGQgYXVkaW9UcmFja3Mg
YW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDogQWRk
ZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNrLgorICAgICAgICAqIGh0
bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3Bw
OiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6IEFkZCBt
aXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAgICAqIGh0bWwvdHJhY2sv
VmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sgYW5kIEluYmFuZFRleHRU
cmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDogU2FtZS4KKyAgICAgICAg
KiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFja0xpc3QKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisgICAgICAgICogaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNl
ZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW1vdmVB
dWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFjaworICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gYWRkVGV4
dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjayk6
IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBtZWRpYVBsYXll
ckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1l
ZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2spOiBBZGRlZCwgYmFz
ZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2spOiBTYW1lCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDogQWRkZWQsIGJh
c2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0LTE1ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6
OnJlbW92ZVRleHRUcmFjayBzaG91bGQgY2xlYXIgdHJhY2sgY2xpZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2ODUsMTQgKzI2ODUsMjAgQEAgZW5kaWYgKCkKIAog
aWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0lETF9GSUxF
UworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisgICAgICAgIGh0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAogICAg
ICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVMaXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAg
ICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAogICAgICkK
IAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBodG1sL3RyYWNrL0F1
ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCiAgICAg
ICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAogICAgICAgICBodG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAg
LTI3MDYsNiArMjcxMiw4IEBAIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgICAgIGh0bWwv
dHJhY2svV2ViVlRURWxlbWVudC5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAorICAgICAgICBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3Qu
Y3BwCiAKICAgICAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKIApJbmRleDog
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsMTIgKzQ3Miwx
NiBAQAogI2luY2x1ZGUgIkpTVGV4dEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRNZXRyaWNz
LmNwcCIKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmNw
cCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0LmNwcCIKICNpbmNsdWRlICJKU0hUTUxUcmFj
a0VsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmNwcCIKICNpbmNsdWRlICJKU1Rl
eHRUcmFja0N1ZS5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCIKICNpbmNs
dWRlICJKU1RleHRUcmFja0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudC5jcHAiCisj
aW5jbHVkZSAiSlNWaWRlb1RyYWNrLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0LmNw
cCIKICNlbmRpZgogI2luY2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCiAjaW5jbHVkZSAiSlNUb3Vj
aC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE0ODQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTQzMSwxMSArNDMxLDE1IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFj
a0V2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
cHJpCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTY1MiwxMSArNjUyLDE1IEBAIGVuYWJsZT8oR0FNRVBBRCkg
ewogCiBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQ
V0QvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAg
ICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkJFBXRC9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFj
a0xpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKyAgICAk
JFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmlkbAogfQogCiBlbmFibGU/KE1FRElBX1NPVVJDRSkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMCBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9T
b3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNlTm9k
ZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFjay5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1RyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b1RyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmFySW5mby5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCYXJJbmZvLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNCZWZvcmVMb2FkRXZlbnQuY3BwIFwKQEAgLTc3Nyw2ICs3ODEsMTAgQEAgd2ViY29y
ZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmFsaWRpdHlT
dGF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZvaWRDYWxsYmFjay5oIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTVmlkZW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNW
aWRlb1RyYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrTGlzdC5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrTGlzdC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dhdmVUYWJsZS5jcHAgXApAQCAtMTU4NiwxMSArMTU5NCwxNSBAQCBkb21fYmluZGluZ19pZGxz
ICs9IFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRsIFwKKwkkKFdlYkNv
cmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9B
dWRpb1RyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2suaWRs
IFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBcCiAJJChXZWJDb3Jl
KS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50
LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKwkkKFdlYkNv
cmUpL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmlkbCBcCkBAIC0yMzIwLDYgKzIzMzIsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uaCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0yNDc0LDYgKzI0ODks
OSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3Vz
dG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9t
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBcCkBAIC0zNzY3LDYgKzM3ODUsMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lUmFuZ2VzLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFRleHRUcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwIFwKQEAgLTM3ODcsNiArMzgwOSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAg
XApAQCAtNTQ5Nyw2ICs1NTIzLDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Jbml0aWFsaXplTG9nZ2luZy5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9ORU9O
SGVscGVycy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2Zp
bHRlcnMvRkVCbGVuZE5FT04uaCBcCkBAIC01Nzc3LDYgKzU4MDQsNyBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1R5cGVzZXR0aW5nRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVW5pdEJlemllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aENhY2hlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoSXRlcmF0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDg0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zOTY2LDkgKzM5
NjYsMTMgQEAgZW5hYmxlPyhKQVZBU0NSSVBUX0RFQlVHR0VSKSB7CiAKIGVuYWJsZT8oVklERU9f
VFJBQ0spIHsKICAgICBIRUFERVJTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1Ry
YWNrQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5oIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKKyAgICAgICAgYmluZGluZ3Mv
anMvSlNWaWRlb1RyYWNrQ3VzdG9tLmggXAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQu
aCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
aCBcCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrLmggXApAQCAtMzk3OSwyMCArMzk4MywzMCBAQCBlbmFibGU/KFZJ
REVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogICAgICAgICBo
dG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFz
ZS5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorICAgICAgICBodG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5o
IFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIFwKICAgICAgICAgaHRtbC90cmFj
ay9XZWJWVFRUb2tlbml6ZXIuaCBcCiAgICAgICAgIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBc
CisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggXAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBcCiAKICAgICBTT1VSQ0VTICs9
IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBcCisgICAgICAg
IGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKyAgICAgICAgaHRtbC90
cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCiAg
ICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBcCkBAIC00MDAzLDYgKzQwMTcsOCBAQCBl
bmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBc
CiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBc
CisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIxOCwxMSArMjE4LDE1IEBAIGVuZGlmICgpCiAKIGlm
IChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKyAgICAgICAgYmluZGlu
Z3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdWVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3Vz
dG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNr
Q3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNw
cAogICAgICkKIGVuZGlmICgpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk5MDIsNiAr
Mjk5MDIsMTAgQEAKIAkJCQlOYW1lPSJncmFwaGljcyIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcQml0bWFwSW1hZ2UuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAt
MzAzNzgsNiArMzAzODIsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRlLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xXaW5kUnVsZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjU3
NDYsNiArNjU3NTQsMjIgQEAKIAkJCQlOYW1lPSJ0cmFjayIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2suY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xB
dWRpb1RyYWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9U
cmFja0xpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcSW5iYW5kVGV4dFRyYWNrLmNwcCIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KQEAgLTY1ODI2LDYgKzY1ODUwLDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2suY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFx0cmFja1xWaWRlb1RyYWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmNwcCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJh
Y2tcVmlkZW9UcmFja0xpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcV2ViVlRURWxlbWVudC5jcHAiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMTMs
OCArNTExMywzMiBAQAogCQlCQ0ZFMkYxMjBDMUI1ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZFMkYxMDBDMUI1
ODM3MDAyMDIzNUYgLyogSlNSZWN0LmggKi87IH07CiAJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0ZGNjQ5MjBFQUQxNUMy
MDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNGRjY0OTAwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCRTZERjcw
QjE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFNkRGNzA4MTcxQ0EyQzUwMERENTJC
OCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovOyB9OworCQlCRTZERjcwQzE3MUNBMkM1MDBE
RDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwOTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1Ry
YWNrQ3VzdG9tLmggKi87IH07CisJCUJFNkRGNzBEMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVv
VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJFNkRGNzBBMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3Vz
dG9tLmNwcCAqLzsgfTsKKwkJQkU2REY3MTExNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFj
a0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRTZERjcwRTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLzsg
fTsKKwkJQkU2REY3MTIxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU2REY3MEYxNzFD
QTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5oICovOyB9OworCQlCRTZERjcxMzE3
MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcxMDE3MUNBMkRBMDBERDUy
QjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCUJFODhFMEMxMTcxNUNF
MjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEJGMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xp
c3RCYXNlLmNwcCAqLzsgfTsKIAkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlz
dEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi87IH07CisJCUJFODhF
MEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBB
dWRpb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUwRDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMENEMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwREIxNzE1RDJBMjAwNjU4RDk4
IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5j
cHAgKi87IH07CisJCUJFODhFMERDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDAx
NzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi87IH07CisJCUJFODhFMERFMTcx
NUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrLmNwcCAqLzsgfTsKKwkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQz
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJFODhFMEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi87
IH07CisJCUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDYxNzE1RDJB
MjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJCUJFOEVGMDQyMTcxQzhGRjkw
MDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
ay5jcHAgKi87IH07CisJCUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDNG
MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLzsgfTsKKwkJQkU4RUYwNDQxNzFD
OEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpT
QXVkaW9UcmFja0xpc3QuY3BwICovOyB9OworCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU4RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCAq
LzsgfTsKKwkJQkU4RUYwNEExNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NjE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNEIxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFj
ay5oICovOyB9OworCQlCRThFRjA0QzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThF
RjA0ODE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJF
OEVGMDREMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0OTE3MUM5MDE0MDA5QjQ4
QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oICovOyB9OworCQlCRUYyOUVFQjE3MTVERDA5MDBDNEI0
QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRUExNzE1REQwOTAw
QzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzA0NkUxQUMxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2Fs
aXplZFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzA0NkUxQUIxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICov
OyB9OwogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBG
RTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5l
cmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE4NDIs
MTMgKzExODY2LDQxIEBACiAJCUJDRkUyRjEwMEMxQjU4MzcwMDIwMjM1RiAvKiBKU1JlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlbmd0aEJveC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZW5ndGhTaXplLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNWaWRlb1RyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU2
REY3MDkxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZpZGVvVHJhY2tDdXN0b20uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkU2REY3MEExNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFj
a0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNW
aWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJF
NkRGNzBFMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU2REY3MEYxNzFDQTJEQTAwREQ1MkI4IC8qIEpT
QXVkaW9UcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1
ZGlvVHJhY2tDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU2REY3MTAx
NzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFODU1RjdGMDcwMUU4MzUwMDIzOTc2OSAvKiBX
ZWJDb3JlVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb3JlVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8qIFdlYkNv
cmVWaWV3Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsg
cGF0aCA9IFdlYkNvcmVWaWV3Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTg4RTBCRjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tM
aXN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0xp
c3RCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4OEUwQzAxNzE1Q0Uy
NjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHJhY2tMaXN0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4
RTBDQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkU4OEUwQ0QxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCRTg4RTBDRTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5
OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMTE3
MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEF1ZGlvVHJhY2tMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4
OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJFODhFMEQzMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDQxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFja0xpc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENjE3MTVEMkEyMDA2NThE
OTggLyogVmlkZW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDcx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBWaWRlb1RyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJF
OEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkU4RUYwM0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvVHJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVk
aW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
dWRpb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQx
MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkU4RUYwNDYxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZpZGVvVHJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0NzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNW
aWRlb1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmlkZW9UcmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0ODE3MUM5MDE0MDA5QjQ4
QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1ZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkU4RUYwNDkxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9z
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCUJFOTFGQzhDMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3NpdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQlCRTk4M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVLZXlib2FyZFVJTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlv
VHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJh
Y2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFRjI5RUVBMTcxNURE
MDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZWRTdHJpbmdzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBERkM4NkYwREI2ODQxQTAwM0VBRTdDIC8q
IEpTQ29uc29sZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NvbnNvbGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEYy
QTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9
IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2ODksNiArMTY3NDEsMTAgQEAKIAkJCQk0OUVFQ0VG
MzEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVDRjE5MTA1
MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgKi8sCiAJCQkJNDlFRUNGMUEx
MDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8sCisJCQkJQkU4RUYwM0Ux
NzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4RUYwM0YxNzFD
OEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovLAorCQkJCUJFOEVGMDQwMTcxQzhGRjkw
MDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRThFRjA0MTE3MUM4RkY5
MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5oICovLAogCQkJCTY1REYzMjMzMDlEMURFNjUw
MDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk2NURGMzIzNDA5RDFERTY1
MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTY1REYzMjM1MDlEMURFNjUw
MDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uY3BwICovLApAQCAtMTY5MjMsNiArMTY5NzksMTAg
QEAKIAkJCQk5MTA4OUQzMDE0QzMzNUNEMDA1QUZDNDkgLyogSlNVaW50OENsYW1wZWRBcnJheS5o
ICovLAogCQkJCTE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3Bw
ICovLAogCQkJCTE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCAq
LywKKwkJCQlCRThFRjA0NjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCAqLywK
KwkJCQlCRThFRjA0NzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggKi8sCisJCQkJ
QkU4RUYwNDgxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3BwICovLAorCQkJ
CUJFOEVGMDQ5MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi8sCiAJCQkJ
OTdFOUVDOEIxNURDNDkyRjAwNEYyRTcxIC8qIEpTVm9pZENhbGxiYWNrLmNwcCAqLywKIAkJCQk5
N0U5RUM4QzE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suaCAqLywKIAkJCQlBN0Qy
MEY2MDEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3BwICovLApAQCAtMTc2
OTEsNiArMTc3NTEsMTggQEAKIAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCRTg4RTBDQzE3
MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4OEUwQ0QxNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBDRTE3MTVEMkEyMDA2NThE
OTggLyogQXVkaW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8q
IEF1ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyog
QXVkaW9UcmFja0xpc3QuaCAqLywKKwkJCQlCRTg4RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFja0xpc3QuaWRsICovLAorCQkJCUJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrLmNwcCAqLywKKwkJCQlCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFj
ay5oICovLAorCQkJCUJFODhFMEQ0MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmlkbCAq
LywKKwkJCQlCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwICov
LAorCQkJCUJFODhFMEQ2MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oICovLAor
CQkJCUJFODhFMEQ3MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5pZGwgKi8sCiAJ
CQkJQkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovLAogCQkJ
CUJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi8sCiAJCQkJMDc5
NDE3OEYxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi8sCkBAIC0xODM0
OCw2ICsxODQyMCw4IEBACiAJCQkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9y
bXMgKi8sCiAJCQkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdl
LmNwcCAqLywKIAkJCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlk
Z2UuaCAqLywKKwkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZh
dGUuaCAqLywKKwkJCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZh
dGUuaCAqLywKIAkJCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3Bw
ICovLAogCQkJCUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovLAog
CQkJCUIyNzUzNTM4MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgKi8sCkBAIC0xODgyOSw2
ICsxODkwMyw5IEBACiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3Rv
bS5jcHAgKi8sCiAJCQkJRkRFQUFBRUYxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9CdWZmZXJT
b3VyY2VOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGMDEyQjAyRUU0MDBEQ0YzM0IgLyog
SlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzBFMTcxQ0EyREEwMERENTJC
OCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzBGMTcxQ0EyREEwMERE
NTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uaCAqLywKKwkJCQlCRTZERjcxMDE3MUNBMkRBMDBE
RDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJRkQ4QUE2M0IxNjk1
MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkz
MURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQx
NEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNw
cCAqLywKQEAgLTE4OTM4LDYgKzE5MDE1LDkgQEAKIAkJCQkwNzg0NjM4NDE0NUIxQjhFMDBBNThE
RjEgLyogSlNUcmFja0N1c3RvbS5oICovLAogCQkJCTA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAv
KiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTUxNkJCNzkyMENFOTFFNjgwMDUxMkY3
OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzA4MTcxQ0EyQzUwMERE
NTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzA5MTcxQ0EyQzUw
MERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uaCAqLywKKwkJCQlCRTZERjcwQTE3MUNBMkM1
MDBERDUyQjggLyogSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMx
MDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywK
IAkJCQlFMUFEMTRDNDEyOTczNTQ5MDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVD
dXN0b20uY3BwICovLAogCQkJCUUxQUQxNEI0MTI5NzM0Q0EwMEFDQTk4OSAvKiBKU1dlYktpdENT
U0tleWZyYW1lc1J1bGVDdXN0b20uY3BwICovLApAQCAtMjEwMjUsNiArMjExMDUsNyBAQAogCQkJ
CUZEMzE2MDg5MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDYyRjUyRTE0NTg5OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92
aWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRCMDUyRTAxNTYxQTQyQzAwQjUwMEQ2
IC8qIEF1ZGlvU3VtbWluZ0p1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRUYyOUVFQjE3
MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MDhCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0VFNjg0NjAxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ0YuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFRTY4NDYxMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzg4OCw2ICsyMzk2OSw3IEBACiAJ
CQkJMTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MEFGMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlv
bkNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0QzkgLyog
VmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRjQxOENGMTE3OTY3OEMw
MDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGRkY5
QUUxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNDA3NCw2ICsyNDE1NiwxNiBAQAogCQkJCUUxNTI1NTE1MTZGRDIz
NTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQjUzMzQ5MTcxN0RFRTMwMEYyMDVGOSAvKiBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwQzIxNzE1Q0Uy
NjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMEQ5
MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRTg4
RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2su
aCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDQ1MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlv
VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCRThFRjA0QjE3MUM5MDE0MDA5QjQ4QzMg
LyogSlNWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRThFRjA0RDE3MUM5MDE0MDA5
QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU2REY3MEMx
NzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkU2REY3MTIxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0yNzAyMiw2ICsyNzExNCwxOCBAQAogCQkJCUUxNTI1NTE2MTZGRDIzNTAw
MDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUI1MzM0NzE3MTdEMEExMDBGMjA1RjkgLyogQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwQzExNzE1
Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4
OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkU4OEUwREIxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRThFRjA0MjE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDQ0MTcxQzhGRjkwMDlC
NDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDRB
MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkU4RUYwNEMxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQkU2REY3MEIxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcwRDE3MUNBMkM1MDBERDUyQjggLyogSlNW
aWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcxMTE3MUNB
MkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsMTggKzQz
MywyNCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlmIEVOQUJMRV9WSURF
Twogd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1aWxkZGlyKS9EZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwKKwkkKHRvcF9idWls
ZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0Lmgg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRN
TEF1ZGlvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJJCh0b3BfYnVpbGRk
aXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmggXAog
CSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRy
YWNrQ3VlLmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1aWxkZGlyKS9EZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwKKwkkKHRvcF9idWls
ZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suaCBcCisJ
JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1Ry
YWNrTGlzdC5oCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJpdmF0
ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXApAQCAt
NDUzLDYgKzQ1OSw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmggXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2YXRl
LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaAogZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNr
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9UcmFja0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNp
bmNsdWRlICJKU0F1ZGlvVHJhY2tDdXN0b20uaCIKKworI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5o
IgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wg
SlNBdWRpb1RyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNrKj4oaGFu
ZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGlj
X2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTtcCisKKyAgICAvLyBJZiB0
aGUgdHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgor
ICAgIGlmICghanNBdWRpb1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290
KGF1ZGlvVHJhY2spKTsKK30KKwordm9pZCBKU0F1ZGlvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2sqIGpz
QXVkaW9UcmFjayA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGpzQXVkaW9UcmFjaywgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNBdWRpb1RyYWNrLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrLCB2aXNpdG9yKTsKKworICAgIEF1ZGlvVHJh
Y2sqIGF1ZGlvVHJhY2sgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4oanNBdWRpb1RyYWNrLT5p
bXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2spKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTQXVkaW9UcmFja0N1
c3RvbV9oCisjZGVmaW5lIEpTQXVkaW9UcmFja0N1c3RvbV9oCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNBdWRp
b1RyYWNrLmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJvb3QoQXVkaW9UcmFj
ayogdHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50J3Mgcm9vdCBpZiBp
dCBoYXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVy
biByb290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBtZWRpYSBlbGVtZW50
LCByZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOworfQorCit9CisKKyNl
bmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJh
Y2tMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNBdWRp
b1RyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNBdWRpb1RyYWNr
TGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlv
VHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3QqPihqc0F1ZGlvVHJhY2tMaXN0
LT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVy
cywgaXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBp
cyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYg
KGF1ZGlvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQg
aGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICgh
YXVkaW9UcmFja0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzQXVkaW9UcmFja0xpc3Qt
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
SXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUu
CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xp
c3QtPm93bmVyKCkpKTsKK30KKwordm9pZCBKU0F1ZGlvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNr
TGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tMaXN0Kj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2tMaXN0LCAmc19pbmZv
KTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFT
U0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNBdWRpb1RyYWNrTGlz
dCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja0xpc3QgPSBzdGF0
aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAg
ICBhdWRpb1RyYWNrTGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxNDg0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmNw
cCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0F0dHJD
dXN0b20uY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0N1c3RvbS5jcHAiCisjaW5jbHVkZSAi
SlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNCbG9iQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NGb250
RmFjZVJ1bGVDdXN0b20uY3BwIgpAQCAtMTQ3LDYgKzE0OSw4IEBACiAjaW5jbHVkZSAiSlNUcmFj
a0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1RyZWVXYWxrZXJDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0N1c3RvbS5j
cHAiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5
ZnJhbWVzUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1
c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5j
bHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9tLmgiCisKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2suaCIK
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpT
VmlkZW9UcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpTVmlkZW9UcmFjayo+KGhhbmRs
ZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRpY19j
YXN0PFZpZGVvVHJhY2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUg
dHJhY2sgaGFzIG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAg
IGlmICghanNWaWRlb1RyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHZp
ZGVvVHJhY2spKTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlk
ZW9UcmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGpzVmlkZW9UcmFjaywgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1RyYWNrLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrLCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2sq
IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1RyYWNrLT5pbXBs
KCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2spKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTVmlkZW9UcmFja0N1c3Rv
bV9oCisjZGVmaW5lIEpTVmlkZW9UcmFja0N1c3RvbV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3Vz
dG9tLmgiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHZvaWQqIHJvb3QoVmlkZW9UcmFjayog
dHJhY2spCit7CisgICAgLy8gUmV0dXJuIHRoZSBtZWRpYSBlbGVtZW50J3Mgcm9vdCBpZiBpdCBo
YXMgb25lLgorICAgIGlmICh0cmFjay0+bWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBy
b290KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSk7CisKKyAgICAvLyBObyBtZWRpYSBlbGVtZW50LCBy
ZXR1cm4gdGhlIHRleHQgdHJhY2suCisgICAgcmV0dXJuIHRyYWNrOworfQorCit9CisKKyNlbmRp
ZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tM
aXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1Ry
YWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
VmlkZW9UcmFja0xpc3QqIGpzVmlkZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlz
dCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJh
Y2tMaXN0ID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5p
bXBsKCkpOworCisgICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywg
aXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyBy
ZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKHZp
ZGVvVHJhY2tMaXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFz
IG5vIGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghdmlk
ZW9UcmFja0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzVmlkZW9UcmFja0xpc3QtPmhh
c0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQg
aXMgcmVhY2hhYmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisg
ICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3Qt
Pm93bmVyKCkpKTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlz
dCoganNWaWRlb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2tMaXN0LCAmc19pbmZvKTsK
KyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VS
VChqc1ZpZGVvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrTGlzdCwg
dmlzaXRvcik7CisKKyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNf
Y2FzdDxWaWRlb1RyYWNrTGlzdCo+KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICB2
aWRlb1RyYWNrTGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgJKHJldmlzaW9uIDE0ODQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBBdWRpb0NvbnRleHQ7CisgICAgY2xhc3MgQXVkaW9UcmFja0xpc3Q7CiAgICAg
Y2xhc3MgRGVkaWNhdGVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNh
Y2hlOwogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTY3LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFNvdXJjZUJ1ZmZlckxpc3Q7CiAgICAgY2xhc3MgVGV4dFRyYWNr
OwogICAgIGNsYXNzIFRleHRUcmFja0N1ZTsKKyAgICBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKICAg
ICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogICAgIGNsYXNz
IFdvcmtlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgko
cmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIG5hbWVzcGFjZT0iRXZlbnRUYXJn
ZXQiCiAKIEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0F1ZGlvVHJhY2tMaXN0
IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBCYXR0ZXJ5TWFuYWdlciBjb25kaXRpb25hbD1CQVRU
RVJZX1NUQVRVUwogRGVkaWNhdGVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBE
T01BcHBsaWNhdGlvbkNhY2hlCkBAIC0zNyw2ICszOCw3IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSBj
b25kaXRpb25hbD1TVkcKIFRleHRUcmFjayBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRy
YWNrQ3VlIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFs
PVZJREVPX1RSQUNLCitWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogV2Vi
S2l0TmFtZWRGbG93CiBXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBj
b25kaXRpb25hbD1XT1JLRVJTCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0ODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDggQEAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisj
aW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZl
cmVuY2VzLmgiCiAjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFjay5oIgpAQCAtMTA1LDYgKzEwNyw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJU
ZXh0VHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrUHJpdmF0ZS5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAt
Mjk2LDcgKzMwMCw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QK
ICAgICAsIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UoZmFsc2UpCiAgICAgLCBtX2xhc3RU
ZXh0VHJhY2tVcGRhdGVUaW1lKC0xKQogICAgICwgbV9jYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6QXV0b21hdGljKQorICAgICwgbV9hdWRpb1RyYWNrcygwKQogICAg
ICwgbV90ZXh0VHJhY2tzKDApCisgICAgLCBtX3ZpZGVvVHJhY2tzKDApCiAgICAgLCBtX2lnbm9y
ZVRyYWNrRGlzcGxheVVwZGF0ZSgwKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAg
LTMzMCwxMiArMzM2LDIyIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkK
ICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
Q2FsbGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBkb2N1bWVudCgp
LT51bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsK
KyAgICBpZiAobV9hdWRpb1RyYWNrcykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzLT5jbGVhck93
bmVyKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLT5s
ZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJD
bGllbnQoKTsKKyAgICB9CiAgICAgaWYgKG1fdGV4dFRyYWNrcykKICAgICAgICAgbV90ZXh0VHJh
Y2tzLT5jbGVhck93bmVyKCk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKQogICAgICAg
ICAgICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwogICAgIH0KKyAgICBp
ZiAobV92aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhck93bmVyKCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgo
KTsgKytpKQorICAgICAgICAgICAgbV92aWRlb1RyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQo
KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKQEAgLTEzNDks
NiArMTM2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhCiAg
ICAgfQogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdl
ZChBdWRpb1RyYWNrKikKK3sKKyAgICAvLyBXZSB3aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRp
YSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlzdAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRy
YWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkgewpAQCAtMTM4OCw2
ICsxNDA5LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW4KICAg
ICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogfQogCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopCit7
CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEgY29udHJvbHMgaGVyZSBv
bmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5k
Q2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRl
eHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2lu
Z0tleXdvcmQoKSkKQEAgLTI3OTIsNiArMjgxOCwxNiBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVu
dDo6cGVyY2VudExvYWRlZCgpCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gQXVkaW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRy
YWNrKTsKKworICAgIGFkZEF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOworfQorCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjgyNyw2ICsyODYzLDMzIEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGQKICAgICBhZGRUZXh0VHJh
Y2sodGV4dFRyYWNrLmdldCgpKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJh
Y2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8VmlkZW9UcmFjaz4gdHJh
Y2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spOworCisgICAgYWRkVmlkZW9U
cmFjayh0cmFjay5nZXQoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRy
YWNrKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIGNhc3QgaXMgc2FmZSBiZWNhdXNlIHdlIGNy
ZWF0ZWQgdGhlIEF1ZGlvVHJhY2sgd2l0aCB0aGUgQXVkaW9UcmFja1ByaXZhdGUKKyAgICAvLyBw
YXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrLgorICAgIFJlZlB0cjxBdWRpb1Ry
YWNrPiB0cmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihwcnBUcmFjay0+Y2xpZW50KCkp
OworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUF1ZGlvVHJh
Y2sodHJhY2suZ2V0KCkpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJw
VHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQpAQCAtMjg0NCw2ICsyOTA3LDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRSZW0KICAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgp
KTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVv
VHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRlZCB0aGUgVmlkZW9U
cmFjayB3aXRoIHRoZSBWaWRlb1RyYWNrUHJpdmF0ZQorICAgIC8vIHBhc3NlZCB0byBtZWRpYVBs
YXllckRpZEFkZFZpZGVvVHJhY2suCisgICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gc3Rh
dGljX2Nhc3Q8VmlkZW9UcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7CisgICAgaWYgKCF0cmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7
Cit9CisKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRTZWxlY3RlZFRleHRUcmFjayhQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNr
PiBwbGF0Zm9ybVRyYWNrKQogewpAQCAtMjkyMCw2ICszMDAwLDExIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6Y2xvc2VDYXB0aW9uVHJhY2sKICNlbmRpZgogfQogCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJhY2spCit7CisgICAgYXVkaW9UcmFj
a3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0
VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0cmFj
ayk7CkBAIC0yOTI3LDYgKzMwMTIsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0
VHJhY2soVGV4dAogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKIH0KIAordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRyYWNrKQoreworICAg
IHZpZGVvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBtX2F1ZGlvVHJh
Y2tzLT5yZW1vdmUodHJhY2spOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRl
eHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3Bl
IHNjb3BlKHRoaXMpOwpAQCAtMjkzOSwxOCArMzAzNCwzMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnJlbW92ZVRleHRUcmFjayhUCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwog
fQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayog
dHJhY2spCit7CisgICAgbV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKK30KKwogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQogewotICAgIGlmICghbV90
ZXh0VHJhY2tzKQotICAgICAgICByZXR1cm47CisgICAgaWYgKG1fYXVkaW9UcmFja3MpCisgICAg
ICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKSkKKyAg
ICAgICAgICAgIHJlbW92ZUF1ZGlvVHJhY2sobV9hdWRpb1RyYWNrcy0+aXRlbShsZW5ndGggLSAx
KSk7CiAKLSAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKLSAgICBmb3Ig
KGludCBpID0gbV90ZXh0VHJhY2tzLT5sZW5ndGgoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAg
ICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CisgICAgaWYgKG1f
dGV4dFRyYWNrcykgeworICAgICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlz
KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49
IDA7IC0taSkgeworICAgICAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4dFRyYWNrcy0+
aXRlbShpKTsKIAotICAgICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6
SW5CYW5kKQotICAgICAgICAgICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKyAgICAgICAgICAg
IGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCisgICAgICAgICAg
ICAgICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIGlm
IChtX3ZpZGVvVHJhY2tzKQorICAgICAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gbV92aWRl
b1RyYWNrcy0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZW1vdmVWaWRlb1RyYWNrKG1fdmlkZW9U
cmFja3MtPml0ZW0obGVuZ3RoIC0gMSkpOwogfQogCiBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRN
TE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0yOTkwLDYgKzMwOTcsMTcgQEAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1l
bnQ6OgogICAgIHJldHVybiB0ZXh0VHJhY2sucmVsZWFzZSgpOwogfQogCitBdWRpb1RyYWNrTGlz
dCogSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja3MoKQoreworICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpCisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBB
dWRpb1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX2F1ZGlvVHJhY2tzLmdldCgpOworfQorCiBU
ZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkgCiB7CiAgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAt
MzAwMSw2ICszMTE5LDE3IEBAIFRleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmEKICAgICByZXR1cm4gbV90ZXh0VHJhY2tzLmdldCgpOwogfQogCitWaWRlb1RyYWNrTGlzdCog
SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MoKQoreworICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRl
b1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKworICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzLmdldCgpOworfQorCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFj
a0VsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1Rh
ZykpOwpAQCAtNDkxOCw3ICs1MDQ3LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXBvcnRN
ZW1vcnlVc2FnZQogICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFTb3VyY2UsICJtZWRpYVNvdXJj
ZSIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGluZm8uYWRkTWVtYmVy
KG1fYXVkaW9UcmFja3MsICJhdWRpb1RyYWNrcyIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdGV4
dFRyYWNrcywgInRleHRUcmFja3MiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3ZpZGVvVHJhY2tz
LCAidmlkZW9UcmFja3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3NXaGVuUmVz
b3VyY2VTZWxlY3Rpb25CZWdhbiwgInRleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdh
biIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VlVHJlZSwgImN1ZVRyZWUiKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX2N1cnJlbnRseUFjdGl2ZUN1ZXMsICJjdXJyZW50bHlBY3RpdmVDdWVzIik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTQ4
NDU0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDEwICszOSwxMiBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIKICNpbmNsdWRlICJUZXh0VHJh
Y2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgi
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsOCArNzIsMTIgQEAgY2xhc3Mg
TWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBBdWRp
b1RyYWNrTGlzdDsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTsKIGNsYXNzIFRleHRUcmFja0xpc3Q7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsK
K2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxkb3Vi
bGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVydmFsVHJlZTsKIHR5cGVkZWYgQ3VlSW50ZXJ2YWxU
cmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CkBAIC04NCw3ICs5MCw5IEBAIHR5cGVkZWYg
VmVjdG9yPEN1ZUludGVydmFsPiBDdWVMaXN0OwogCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDog
cHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRp
YVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQK
ICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2YXRlIFZpZGVvVHJhY2tD
bGllbnQKICNlbmRpZgogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgLCBw
dWJsaWMgUGxhdGZvcm1UZXh0VHJhY2tNZW51Q2xpZW50CkBAIC0yMjYsMTEgKzIzNCwxOCBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRleHRUcmFjayhjb25zdCBTdHJp
bmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVy
biBhZGRUZXh0VHJhY2soa2luZCwgbGFiZWwsIGVtcHR5U3RyaW5nKCksIGVjKTsgfQogICAgIFBh
c3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGVtcHR5U3RyaW5nKCks
IGVtcHR5U3RyaW5nKCksIGVjKTsgfQogCisgICAgQXVkaW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tz
KCk7CiAgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrcygpOworICAgIFZpZGVvVHJhY2tMaXN0
KiB2aWRlb1RyYWNrcygpOworCiAgICAgQ3VlTGlzdCBjdXJyZW50bHlBY3RpdmVDdWVzKCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50bHlBY3RpdmVDdWVzOyB9CiAKKyAgICB2b2lkIGFkZEF1ZGlv
VHJhY2soQXVkaW9UcmFjayopOwogICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRleHRUcmFjayopOwor
ICAgIHZvaWQgYWRkVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CisgICAgdm9pZCByZW1vdmVBdWRp
b1RyYWNrKEF1ZGlvVHJhY2sqKTsKICAgICB2b2lkIHJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sq
KTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayopOwogICAgIHZvaWQgcmVt
b3ZlQWxsSW5iYW5kVHJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2Vk
KCk7CiAgICAgdm9pZCBub3RpZnlNZWRpYVBsYXllck9mVGV4dFRyYWNrQ2hhbmdlcygpOwpAQCAt
MjM4LDggKzI1MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFRleHRUcmFj
ayhIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVRleHRUcmFj
ayhIVE1MVHJhY2tFbGVtZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRB
ZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFjayhQYXNz
UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVZp
ZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogCiAjaWYg
VVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0
ZWRUZXh0VHJhY2soUGFzc1JlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4pIE9WRVJSSURFOwpAQCAt
Mjc1LDYgKzI5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3Bs
YXkoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKIAorICAgIC8vIEF1ZGlv
VHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1
ZGlvVHJhY2sqKTsKKwogICAgIC8vIFRleHRUcmFja0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKICAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKik7CkBAIC0yODQsNiArMzA2LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1Jl
ZlB0cjxUZXh0VHJhY2tDdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3Vl
KFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKKyAgICAvLyBWaWRlb1Ry
YWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlk
ZW9UcmFjayopOworCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiopOwogI2VuZGlmCkBAIC02OTksNyArNzI0LDkgQEAgcHJpdmF0ZToKIAogICAg
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBtX2NhcHRpb25EaXNw
bGF5TW9kZTsKIAorICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRpb1RyYWNrczsKICAg
ICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOworICAgIFJlZlB0cjxWaWRlb1Ry
YWNrTGlzdD4gbV92aWRlb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBt
X3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbjsKIAogICAgIEN1ZUludGVydmFs
VHJlZSBtX2N1ZVRyZWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwJKHJldmlzaW9uIDE0ODQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsOSBAQCB2b2lkIHdlYmtp
dENhbmNlbEtleVJlcXVlc3QoaW4gW1RyZWF0TnVsCiAjaWYgZGVmaW5lZChFTkFCTEVfVklERU9f
VFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogVGV4dFRyYWNrIGFkZFRleHRUcmFjayhpbiBE
T01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25h
bF0gRE9NU3RyaW5nIGxhbmd1YWdlKQogICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKK3JlYWRv
bmx5IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRpb1RyYWNrczsKIHJlYWRvbmx5IGF0dHJp
YnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7CityZWFkb25seSBhdHRyaWJ1dGUgVmlkZW9U
cmFja0xpc3QgdmlkZW9UcmFja3M7CiAjZW5kaWYKIAogW1JlZmxlY3QsIFRyZWF0TnVsbEFzPU51
bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWFHcm91cDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCisKKyNpbmNsdWRlICJBdWRpb1Ry
YWNrTGlzdC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6
OmFsdGVybmF0aXZlS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJk
ZXNjcmlwdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gZGVzY3JpcHRpb247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6
bWFpbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBtYWluLCAoIm1haW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIG1haW47Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6
bWFpbkRlc2NLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgbWFpbkRlc2MsICgibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBtYWluRGVzYzsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFuc2xhdGlvbiwgKCJ0cmFuc2xhdGlvbiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gdHJhbnNs
YXRpb247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGFyeUtl
eXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBj
b21tZW50YXJ5LCAoImNvbW1lbnRhcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIGNvbW1lbnRhcnk7Cit9CisKK0F1ZGlvVHJhY2s6OkF1ZGlvVHJh
Y2soQXVkaW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRl
PiB0cmFja1ByaXZhdGUpCisgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpBdWRpb1RyYWNrLCB0
cmFja1ByaXZhdGUtPmxhYmVsKCksIHRyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAsIG1f
aWQodHJhY2tQcml2YXRlLT5pZCgpKQorICAgICwgbV9lbmFibGVkKHRyYWNrUHJpdmF0ZS0+ZW5h
YmxlZCgpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9wcml2YXRlKHRyYWNrUHJp
dmF0ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKKworICAgIHN3aXRjaCAo
bV9wcml2YXRlLT5raW5kKCkpIHsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpBbHRlcm5h
dGl2ZToKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9u
OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbjoKKyAgICAgICAg
c2V0S2luZChBdWRpb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6TWFpbkRlc2M6CisgICAgICAgIHNldEtpbmQoQXVkaW9U
cmFjazo6bWFpbkRlc2NLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlv
VHJhY2tQcml2YXRlOjpUcmFuc2xhdGlvbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjp0
cmFuc2xhdGlvbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFj
a1ByaXZhdGU6OkNvbW1lbnRhcnk6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZh
dGU6Ok5vbmU6CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK0F1ZGlvVHJhY2s6On5BdWRpb1RyYWNrKCkKK3sKKyAgICBtX3By
aXZhdGUtPnNldENsaWVudCgwKTsKK30KKworYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZChj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRl
cm5hdGl2ZUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09
IGRlc2NyaXB0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFs
dWUgPT0gbWFpbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVl
ID09IG1haW5EZXNjS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFs
dWUgPT0gdHJhbnNsYXRpb25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh2YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBdWRpb1RyYWNrOjpzZXRFbmFibGVkKGNvbnN0
IGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQodGhpcyk7Cit9CisK
K3NpemVfdCBBdWRpb1RyYWNrOjppbmJhbmRUcmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9w
cml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hdWRpb1RyYWNrSW5kZXgoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFjay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9BdWRpb1RyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19o
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0
ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBh
dWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1
ZGlvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShB
dWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRy
YWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFj
ayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNr
KCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAg
dm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBk
ZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eUF0b207IH0K
KworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVkKGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgc2l6ZV90IGlu
YmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFj
a0NsaWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZF
UlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAg
ICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZT4gbV9wcml2YXRlOworfTsKKworaW5saW5lIEF1ZGlvVHJhY2sqIHRvQXVkaW9UcmFjayhU
cmFja0Jhc2UqIHRyYWNrKQoreworICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRyYWNrQmFz
ZTo6QXVkaW9UcmFjayk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPih0cmFj
ayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RS
QUNLLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUK
K10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7Cit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1
ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQXVkaW9UcmFja0xpc3Q6
OkF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShvd25lciwgY29udGV4dCkKK3sK
K30KKworQXVkaW9UcmFja0xpc3Q6On5BdWRpb1RyYWNrTGlzdCgpCit7Cit9CisKK3ZvaWQgQXVk
aW9UcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IHBycFRyYWNrKQorewor
ICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0cmFjayA9IHBycFRyYWNrOworCisgICAgLy8gSW5zZXJ0
IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRlci4KKyAgICBzaXplX3QgaW5kZXggPSB0cmFj
ay0+aW5iYW5kVHJhY2tJbmRleCgpOworICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwg
dHJhY2spOworCisgICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1l
ZGlhRWxlbWVudCgpID09IG93bmVyKCkpOworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQob3du
ZXIoKSk7CisKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2sucmVsZWFzZSgpKTsKK30K
KworQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
Cit7CisgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1
cm4gdG9BdWRpb1RyYWNrKG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKSk7CisKKyAgICByZXR1
cm4gMDsKK30KKworQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9pbmJhbmRUcmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQXVkaW9UcmFjayogdHJhY2sg
PSB0b0F1ZGlvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAgICAgICBpZiAodHJh
Y2stPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gdHJhY2s7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckF1
ZGlvVHJhY2tMaXN0OworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2tMaXN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tMaXN0X2gKKyNkZWZpbmUgQXVkaW9U
cmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVHJhY2tM
aXN0QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2s7CisK
K2NsYXNzIEF1ZGlvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7
CisgICAgfQorICAgIH5BdWRpb1RyYWNrTGlzdCgpOworCisgICAgQXVkaW9UcmFjayogZ2V0VHJh
Y2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworCisgICAgQXVkaW9UcmFjayogaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRp
b1RyYWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAg
QXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9u
YWw9VklERU9fVFJBQ0ssCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwKKyAg
ICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCitdIGludGVy
ZmFjZSBBdWRpb1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOworICAgIEF1ZGlvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICBBdWRpb1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNr
OworCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAg
dm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAg
Ym9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50
RXhjZXB0aW9uKTsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5oCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UqKSBPVkVSUklERTsKIAogICAgIC8v
IEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIFRleHRUcmFja0xpc3QoSFRNTE1l
ZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFs
dGVybmF0aXZlS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3Qg
QXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY2FwdGlv
bnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywg
KCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVy
biBjYXB0aW9uczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWduS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNp
Z24sICgic2lnbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gc2lnbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRs
ZXNLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
Zywgc3VidGl0bGVzLCAoInN1YnRpdGxlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5Owor
fQorCitWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFz
c1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VmlkZW9UcmFjaywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZh
dGUtPmxhbmd1YWdlKCkpCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1f
c2VsZWN0ZWQodHJhY2tQcml2YXRlLT5zZWxlY3RlZCgpKQorICAgICwgbV9jbGllbnQoY2xpZW50
KQorICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENs
aWVudCh0aGlzKTsKKworICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKKyAgICBjYXNl
IFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKKyAgICAgICAgc2V0S2luZChWaWRlb1Ry
YWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlk
ZW9UcmFja1ByaXZhdGU6OkNhcHRpb25zOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNh
cHRpb25zS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJp
dmF0ZTo6TWFpbjoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjoKKyAgICAg
ICAgc2V0S2luZChWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgorICAgICAgICBzZXRLaW5kKFZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VmlkZW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFj
azo6Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9U
cmFja1ByaXZhdGU6Ok5vbmU6CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK1ZpZGVvVHJhY2s6On5WaWRlb1RyYWNrKCkKK3sK
KyAgICBtX3ByaXZhdGUtPnNldENsaWVudCgwKTsKK30KKworYm9vbCBWaWRlb1RyYWNrOjppc1Zh
bGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2YWx1
ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KHZhbHVlID09IGNhcHRpb25zS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodmFsdWUgPT0gbWFpbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KHZhbHVlID09IHNpZ25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2
YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh2YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChjb25z
dCBib29sIHNlbGVjdGVkKQoreworICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CisKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRoaXMp
OworfQorCitzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNT
RVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisjZGVmaW5lIFZpZGVv
VHJhY2tfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJhY2tDbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikgPSAwOworfTsKKwor
Y2xhc3MgVmlkZW9UcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBWaWRlb1RyYWNrUHJp
dmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4g
Y3JlYXRlKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBW
aWRlb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZp
ZGVvVHJhY2soKTsKKworICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9
CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRl
ZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQor
CisgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJDbGllbnQoKSBPVkVSUklERSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tD
bGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBzaXplX3Qg
aW5iYW5kVHJhY2tJbmRleCgpOworCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhWaWRlb1Ry
YWNrQ2xpZW50KiwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJpdmF0ZVRyYWNrKTsK
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29s
IG1fc2VsZWN0ZWQ7CisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBWaWRlb1RyYWNr
KiB0b1ZpZGVvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBBU1NFUlQodHJhY2stPnR5
cGUoKSA9PSBUcmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
aWRlb1RyYWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1WSURFT19UUkFDSywKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBKU0N1
c3RvbUlzUmVhY2hhYmxlCitdIGludGVyZmFjZSBWaWRlb1RyYWNrIHsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
a2luZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVh
biBzZWxlY3RlZDsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitWaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93
bmVyLCBjb250ZXh0KQoreworfQorCitWaWRlb1RyYWNrTGlzdDo6flZpZGVvVHJhY2tMaXN0KCkK
K3sKK30KKwordm9pZCBWaWRlb1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFj
az4gcHJwVHJhY2spCit7CisgICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7
CisKKyAgICAvLyBJbnNlcnQgdHJhY2tzIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNp
emVfdCBpbmRleCA9IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFj
a3MuaW5zZXJ0KGluZGV4LCB0cmFjayk7CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1l
bnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNl
dE1lZGlhRWxlbWVudChvd25lcigpKTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFj
ay5yZWxlYXNlKCkpOworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6aXRlbSh1bnNp
Z25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXpl
KCkpCisgICAgICAgIHJldHVybiB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdl
dCgpKTsKKworICAgIHJldHVybiAwOworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6
Z2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRy
YWNrID0gdG9WaWRlb1RyYWNrKG1faW5iYW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYg
KHRyYWNrLT5pZCgpID09IGlkKQorICAgICAgICAgICAgcmV0dXJuIHRyYWNrOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKworbG9uZyBWaWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRleCgpIGNv
bnN0Cit7CisgICAgLy8gNC44LjEwLjEwLjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tM
aXN0IG9iamVjdHMKKyAgICAvLyBUaGUgVmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRleCBhdHRy
aWJ1dGUgbXVzdCByZXR1cm4gdGhlIGluZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRseSBzZWxl
Y3RlZCB0cmFjaywgaWYgYW55LiBJZiB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRvZXMgbm90
CisgICAgLy8gY3VycmVudGx5IHJlcHJlc2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25lIG9mIHRo
ZSB0cmFja3MgYXJlIHNlbGVjdGVkLAorICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1cm4g4oiS
MS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAg
VmlkZW9UcmFjayogdHJhY2sgPSB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkp
OworICAgICAgICBpZiAodHJhY2stPnNlbGVjdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gaTsK
KyAgICB9CisgICAgcmV0dXJuIC0xOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJh
Y2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvclZpZGVvVHJhY2tMaXN0OworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFZpZGVvVHJhY2tMaXN0X2gK
KyNkZWZpbmUgVmlkZW9UcmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisj
aW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFZpZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJhY2tMaXN0IDogcHVibGljIFRyYWNrTGlzdEJh
c2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tMaXN0KG93
bmVyLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5WaWRlb1RyYWNrTGlzdCgpOworCisgICAgVmlk
ZW9UcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAgIGxv
bmcgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OworCisgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25l
ZCkgY29uc3Q7CisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxWaWRlb1RyYWNrPik7CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgVmlkZW9UcmFja0xpc3Qo
SFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFD
SywKKyAgICBJbmRleGVkR2V0dGVyLAorICAgIEV2ZW50VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAorICAgIEpTQ3VzdG9tSXNSZWFjaGFibGUKK10gaW50ZXJmYWNlIFZpZGVvVHJh
Y2tMaXN0IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Cisg
ICAgVmlkZW9UcmFjayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFZpZGVvVHJh
Y2sgZ2V0VHJhY2tCeUlkKGluIERPTVN0cmluZyBpZCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmNoYW5nZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNr
OworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3ZldHJhY2s7CisKKyAgICB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwor
fTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9B
dWRpb1RyYWNrUHJpdmF0ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVk
aW9UcmFja1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorfTsKKwor
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1RyYWNrUHJp
dmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEF1ZGlvVHJhY2tQcml2YXRlKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNr
UHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGllbnQoQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lk
IHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH07CisgICAg
dmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAg
IGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRy
YW5zbGF0aW9uLCBDb21tZW50YXJ5LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNv
bnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVs
KCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcg
bGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50
IGF1ZGlvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworcHJvdGVjdGVkOgorICAg
IEF1ZGlvVHJhY2tQcml2YXRlKCkKKyAgICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7
CisgICAgYm9vbCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxNDg0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDMs
NiArMTEwMywyMiBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciogTWVkaWFQbGF5ZXI6OmNhY2hlCiB9
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIE1lZGlhUGxheWVyOjphZGRBdWRpb1Ry
YWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrKQoreworICAgIGlmICghbV9t
ZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZWRpYVBsYXllckNs
aWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKHRyYWNrKTsKK30KKwordm9pZCBNZWRp
YVBsYXllcjo6cmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0
cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFj
ayh0cmFjayk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXI6OmFkZFRleHRUcmFjayhQYXNzUmVmUHRy
PEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHRyYWNrKQogewogICAgIGlmICghbV9tZWRpYVBsYXll
ckNsaWVudCkKQEAgLTExMTksNiArMTEzNSwyMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpyZW1vdmVU
ZXh0VHJhY2soUGFzc1JlCiAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRS
ZW1vdmVUZXh0VHJhY2sodHJhY2spOwogfQogCit2b2lkIE1lZGlhUGxheWVyOjphZGRWaWRlb1Ry
YWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrKQoreworICAgIGlmICghbV9t
ZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZWRpYVBsYXllckNs
aWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKHRyYWNrKTsKK30KKwordm9pZCBNZWRp
YVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0
cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFj
ayh0cmFjayk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXI6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnJlcXVpcmVzVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTQ4NDU0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTEgKzMyLDEzIEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcm94eS5oIgogI2VuZGlmCiAKKyNp
bmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1By
aXZhdGUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlZpZGVvVHJh
Y2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTIxOCw4ICsyMjAsMTIgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVk
UmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRy
PEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlk
QWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92
ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1v
dmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkJvdW5kc0NoYW5nZWQoY29uc3QgSW50
UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRUcmFja1JlcHJlc2VudGF0aW9u
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSB7IH0KQEAgLTQ0OSw4ICs0NTUsMTIg
QEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRl
cigpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZvaWQgYWRkQXVkaW9UcmFjayhQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7CiAgICAgdm9pZCBhZGRUZXh0VHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CisgICAgdm9pZCBhZGRWaWRlb1RyYWNr
KFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlvVHJh
Y2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogICAgIHZvaWQgcmVtb3ZlVGV4dFRy
YWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOworICAgIHZvaWQgcmVtb3Zl
VmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPik7CiAKICAgICBib29sIHJl
cXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldFRleHRU
cmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b1RyYWNrUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgVmlkZW9UcmFja1ByaXZhdGVfaAorI2RlZmluZSBWaWRlb1RyYWNrUHJpdmF0ZV9o
CisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgflZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvVHJhY2tQcml2YXRlPiB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4g
Y3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFja1By
aXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlKCkgeyB9CisK
KyAgICB2b2lkIHNldENsaWVudChWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1f
Y2xpZW50ID0gY2xpZW50OyB9CisgICAgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCgp
IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCBzZWxlY3RlZCkgeyBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7IH07CisgICAgdmlydHVhbCBib29s
IHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQorCisgICAgZW51bSBLaW5k
IHsgQWx0ZXJuYXRpdmUsIENhcHRpb25zLCBNYWluLCBTaWduLCBTdWJ0aXRsZXMsIENvbW1lbnRh
cnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIE5vbmU7
IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gZW1wdHlB
dG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBl
bXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsg
cmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBpbnQgdmlkZW9UcmFja0luZGV4KCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFja1ByaXZhdGUo
KQorICAgICAgICA6IG1fc2VsZWN0ZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToK
KyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX3NlbGVj
dGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198774</attachid>
            <date>2013-04-18 15:29:52 -0700</date>
            <delta_ts>2013-04-19 09:07:25 -0700</delta_ts>
            <desc>Updated based on review</desc>
            <filename>bug-113965-20130418162625.patch</filename>
            <type>text/plain</type>
            <size>132710</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTdmMmVjNTBkMmUx
ODIxMzgwM2VjMDA2MGMxNmFiMTdmNTAxOS4uZjYyNGZlYjRjZDc0ZDk0ZGUwOWI4MjUxZDc0ZTA4
NmIxZDc2NTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTA0LTE2ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRp
b1RyYWNrTGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVv
VHJhY2tMaXN0IGV2ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbjogU2FtZS4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1
ZGlvVHJhY2tzIGFuZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQs
IGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRp
b1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZp
ZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRk
QXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBv
biByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZVZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1v
dmUgYXVkaW8gYW5kIHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2Vk
IG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQg
cmVsYXRlZCBmdW5jdGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBB
ZGQgYXVkaW9UcmFja3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNr
LgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0
bWwvdHJhY2svQXVkaW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuY3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNr
L0F1ZGlvVHJhY2tMaXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0Lmg6IEFkZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAg
ICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sg
YW5kIEluYmFuZFRleHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDog
U2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRU
cmFja0xpc3QKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisg
ICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpyZW1vdmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFj
aworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gYWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVt
b3ZlVmlkZW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNl
ZCBvbiBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVv
VHJhY2spOiBTYW1lCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaDogQWRkZWQsIGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0
LTE4ICBYdWVmZWkgUmVuICA8eHJlbkBibGFja2JlcnJ5LmNvbT4KIAogICAgICAgICByZW1vdmUg
YnVpbGQgd2FybmluZyh1bnVzZWQgcGFyYW1ldGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAx
ZTMzYzFmNzEzOGMwMTViZGM4MzdiMTE0MTc5ODU5NjFlY2RhZGVkLi42Y2Y3NGViMmEzNzFmZjRl
M2ViYTFiNDUyNWNlZmU2YzRhMDdmOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjY4NSwx
NCArMjY4NSwyMCBAQCBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAgIGxp
c3QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFj
ay5pZGwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKICAgICAgICAgaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlk
bAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsCiAgICAgICAgIGh0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50Lmlk
bAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCisgICAgICAgIGh0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuaWRsCiAgICAgKQogCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKKyAgICAgICAgaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAKICAgICAgICAgaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
Y3BwCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCiAgICAgICAgIGh0
bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMjcwNiw2ICsyNzEyLDggQEAgaWYgKEVOQUJMRV9W
SURFT19UUkFDSykKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAogICAgICAg
ICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRU
b2tlbml6ZXIuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKyAgICAgICAg
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKIAogICAgICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNmI3Y2Qw
N2VjN2I0NTM5NDUxZTA1YzdmNTU3OGVmOTQ4ZTI0YTlkNy4uNGE0YmFkYTBjM2I1N2IxNzhiNTAy
NGUzMGQ0MWUxNjliYzllYjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtNDcy
LDEyICs0NzIsMTYgQEAKICNpbmNsdWRlICJKU1RleHRFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNU
ZXh0TWV0cmljcy5jcHAiCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTQXVk
aW9UcmFjay5jcHAiCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAi
SlNIVE1MVHJhY2tFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFjay5jcHAiCiAjaW5j
bHVkZSAiSlNUZXh0VHJhY2tDdWUuY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VlTGlzdC5j
cHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0LmNwcCIKICNpbmNsdWRlICJKU1RyYWNrRXZl
bnQuY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFjay5jcHAiCisjaW5jbHVkZSAiSlNWaWRlb1Ry
YWNrTGlzdC5jcHAiCiAjZW5kaWYKICNpbmNsdWRlICJKU1RpbWVSYW5nZXMuY3BwIgogI2luY2x1
ZGUgIkpTVG91Y2guY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMGQ3YTY1
ZDI3ZTkzYjY4ZDcwMGJlOGJlNjkzMGMxOTIyNjZiZDE0OC4uMTBkZWQ2MjhiZWY2NzBmYmJkYTk4
YmI3M2ZjOTY0MDAyMGNiODc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00
MzEsMTEgKzQzMSwxNSBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hh
ZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVHJhY2tFdmVu
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0
b3IvU2NyaXB0UHJvZmlsZS5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IGRi
ZWNhNDcxYTdjNjFjNzZjZjQyMDE1MTA4Njg1ODVmOTc3MjcyNGYuLjc5MDllMWFlNTFlM2E1Y2Jj
MTQ2OWNmNTcxNGE1YmY1NDUxOWIzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAg
LTY1MiwxMSArNjUyLDE1IEBAIGVuYWJsZT8oR0FNRVBBRCkgewogCiBlbmFibGU/KFZJREVPX1RS
QUNLKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAg
ICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
aWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKICAgICAkJFBX
RC9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAogfQog
CiBlbmFibGU/KE1FRElBX1NPVVJDRSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggZTc2ZTFkMGI0Yjg1NzM2NmFmZWU4NzhiNDgyYTFiZDU3ZDY4MDNiMi4uYmY4MWJkNDI3OGE0
ZWQzNTk2N2U0ZDk1ODVhMmI2MjM2NDk1MmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC02NSw2ICs2NSwxMCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9Tb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvU291cmNlTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9UcmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQmFySW5mby5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCYXJJbmZvLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCZWZvcmVMb2FkRXZlbnQuY3BwIFwKQEAgLTc3
Nyw2ICs3ODEsMTAgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTVmFsaWRpdHlTdGF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
Vm9pZENhbGxiYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZvaWRDYWxsYmFj
ay5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmlkZW9UcmFjay5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRlb1RyYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNWaWRlb1RyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWaWRl
b1RyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5vZGUu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5vZGUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVUYWJsZS5jcHAgXApAQCAtMTU4NiwxMSArMTU5NCwx
NSBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxD
b250ZW50RWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0Vs
ZW1lbnQuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorCSQo
V2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwK
IAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkv
aHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIFwK
IAkkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKIAkkKFdlYkNv
cmUpL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2lu
c3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCkBAIC0yMzIxLDYgKzIzMzMsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnRleHRDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJh
Y2tDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tM
aXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0
ZXJOb2RlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDREFUQVNlY3Rpb25DdXN0
b20uY3BwIFwKQEAgLTI0NjcsNyArMjQ4MSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVG91Y2hDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Rv
dWNoTGlzdEN1c3RvbS5jcHAgXApAQCAtMjQ3NSw2ICsyNDg4LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCBcCkBAIC0zNzY4LDYgKzM3ODMsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIFwKQEAgLTM3
ODgsNiArMzgwNywxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
TGlzdEJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
aCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgXApAQCAtNTQ5OCw2ICs1
NTIxLDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Jbml0aWFsaXplTG9nZ2luZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9ORU9OSGVscGVycy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5F
T04uaCBcCkBAIC01Nzc4LDYgKzU4MDIsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1R5cGVzZXR0aW5nRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVW5pdEJlemllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b1RyYWNrUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aENhY2hlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0
b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggMTNhMGZjMTkwNjhlNmQ4ZjIyNDI4NzZhMWYyMGVmM2VhNjMz
MzBlYS4uMTg2MzVhNmY0NmVlMTgwNWMxOTZlZjRkMWVhNTljODJjZDdhYTFlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0zOTY3LDkgKzM5NjcsMTAgQEAgZW5hYmxlPyhKQVZBU0NSSVBUX0RFQlVHR0VSKSB7
CiAKIGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgICBIRUFERVJTICs9IFwKLSAgICAgICAgYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJh
Y2tDdXN0b20uaCBcCiAgICAgICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oIFwKKyAgICAgICAg
aHRtbC90cmFjay9BdWRpb1RyYWNrLmggXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggXAogICAgICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKICAgICAgICAg
aHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIFwKICAgICAgICAgaHRtbC90cmFjay9UZXh0
VHJhY2suaCBcCkBAIC0zOTgwLDIwICszOTgxLDMwIEBAIGVuYWJsZT8oVklERU9fVFJBQ0spIHsK
ICAgICAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJh
Y2tFdmVudC5oIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorICAgICAg
ICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggXAogICAgICAgICBo
dG1sL3RyYWNrL1dlYlZUVFRva2VuLmggXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2Vu
aXplci5oIFwKICAgICAgICAgbG9hZGVyL1RleHRUcmFja0xvYWRlci5oIFwKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAorICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIFwKIAogICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMv
SlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRU
cmFja0N1ZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3Rv
bS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9q
cy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RD
dXN0b20uY3BwIFwKICAgICAgICAgaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBcCisgICAgICAg
IGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJh
Y2tMaXN0LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBcCiAg
ICAgICAgIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIFwKICAgICAgICAgaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwIFwKQEAgLTQwMDQsNiArNDAxNSw4IEBAIGVuYWJsZT8oVklERU9f
VFJBQ0spIHsKICAgICAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIFwKICAgICAgICAgaHRt
bC90cmFjay9UcmFja0V2ZW50LmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFz
ZS5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwIFwKKyAgICAgICAgaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVEVs
ZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwKICAgICAg
ICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCBk
NDUxNjJiMzY0ZTdmM2ZlNDZhZTk5MDY5OTYwYTZmYzRmYzRhMTA0Li5lOGQ0MzMzMDg0MmM0MmFk
ZTNmY2YwY2YwZTAxYTQwODYzNTU1MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0yMTksMTEgKzIx
OSwxNSBAQCBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0
b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAogICAgICAgICBiaW5k
aW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNw
cAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwCisgICAgICAgIGJp
bmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAKICAgICApCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDMxMmUwNjYzNzJhNTI2ZTY3
ZGYzMGNlZmVmM2QzMTk3MjFlMzM0MWYuLjMwZTMzYzQ3ZmNmZTY5ZmIwNWExZjY1MjdjNGJmY2Jk
YjhlZTVkZjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCkBAIC0yOTkwMiw2ICsyOTkwMiwxMCBAQAogCQkJCU5hbWU9ImdyYXBoaWNzIgogCQkJCT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEF1ZGlv
VHJhY2tQcml2YXRlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xCaXRtYXBJbWFnZS5jcHAiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CkBAIC0zMDM3OCw2ICszMDM4MiwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcVmlk
ZW9UcmFja1ByaXZhdGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFdpbmRSdWxlLmgiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CkBAIC02NTc0Niw2ICs2NTc1NCwyMiBAQAogCQkJCU5hbWU9InRyYWNrIgogCQkJ
CT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFj
ay5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2suaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFja0xpc3QuY3Bw
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFx0cmFja1xBdWRpb1RyYWNrTGlzdC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xJbmJhbmRUZXh0VHJhY2suY3Bw
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjU4MjYsNiArNjU4NTAsMjIgQEAKIAkJCQkJPgog
CQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tc
VmlkZW9UcmFjay5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2suaCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcVmlkZW9UcmFj
a0xpc3QuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFx0cmFja1xWaWRlb1RyYWNrTGlzdC5oIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xXZWJWVFRFbGVt
ZW50LmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMDAzN2RjNDhkNzFkOTJmZmNhYzYx
NDdlN2NmNGEzYmI5NDQ3ZWYwLi4xMjY3ZWRlMDkyNmMyODMyMTJhYmI3NWEzMDFjZWIyMjVhZTll
OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC01MTEyLDggKzUxMTIsMzAgQEAKIAkJQkNGRTJGMTIwQzFCNTgzODAwMjAyMzVG
IC8qIEpTUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNGRTJGMTAwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5oICovOyB9OwogCQlCQ0ZGNjQ5
MTBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3Ro
Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkNGRjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkY2NDkwMEVBRDE1QzIwMEMxRDZGNyAv
KiBMZW5ndGhTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkU2REY3MEIxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcw
ODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQkU2
REY3MEQxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU2REY3MEExNzFDQTJD
NTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwICovOyB9OworCQlCRTZERjcx
MTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFNkRGNzBFMTcxQ0EyREEwMERENTJC
OCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uY3BwICovOyB9OworCQlCRTZERjcxMzE3MUNBMkRBMDBE
RDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNB
dWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5
OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJFODhFMEJGMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNw
cCAqLzsgfTsKIAkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEMwMTcx
NUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi87IH07CisJCUJFODhFMEQ4MTcxNUQy
QTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
LmNwcCAqLzsgfTsKKwkJQkU4OEUwRDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENEMTcx
NUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwREIxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlv
VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgKi87IH07
CisJCUJFODhFMERDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDAxNzE1RDJBMjAw
NjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi87IH07CisJCUJFODhFMERFMTcxNUQyQTIwMDY1
OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCAq
LzsgfTsKKwkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQzMTcxNUQyQTIw
MDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
ODhFMEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJF
ODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4
IC8qIFZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJCUJFOEVGMDQyMTcxQzhGRjkwMDlCNDhDMyAv
KiBKU0F1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi87
IH07CisJCUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDNGMTcxQzhGRjkw
MDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLzsgfTsKKwkJQkU4RUYwNDQxNzFDOEZGOTAwOUI0
OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
a0xpc3QuY3BwICovOyB9OworCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1Ry
YWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkU4RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJ
QkU4RUYwNEExNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NjE3MUM5MDE0MDA5QjQ4
QzMgLyogSlNWaWRlb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNEIxNzFDOTAxNDAwOUI0OEMz
IC8qIEpTVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovOyB9
OworCQlCRThFRjA0QzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0ODE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFOEVGMDREMTcx
QzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0OTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNW
aWRlb1RyYWNrTGlzdC5oICovOyB9OworCQlCRUYyOUVFQjE3MTVERDA5MDBDNEI0QzkgLyogQXVk
aW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJFRjI5RUVD
MTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRUExNzE1REQwOTAwQzRCNEM5IC8q
IFZpZGVvVHJhY2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzA0NkUxQUMxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmlu
Z3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA0
NkUxQUIxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICovOyB9OwogCQlD
MEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFC
OCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5k
aW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjM0OCw3ICs2MzcwLDYg
QEAKIAkJMDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0
ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tD
dWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0
VHJhY2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UzOEEw
QjE0OEZDRjBDMDA2RTFFQ0MgLyogSlNUZXh0VHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5MjExMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRF
bmdpbmVCYXNlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdp
bmVCYXNlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE4MzQsMTMgKzEx
ODU1LDM5IEBACiAJCUJDRkUyRjEwMEMxQjU4MzcwMDIwMjM1RiAvKiBKU1JlY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlbmd0aEJveC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZW5ndGhTaXplLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJh
Y2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRl
b1RyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU2REY3MEEx
NzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzBFMTcxQ0EyREEwMERENTJCOCAvKiBK
U0F1ZGlvVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkU2REY3MTAxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrTGlzdEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFODU1RjdGMDcwMUU4MzUwMDIz
OTc2OSAvKiBXZWJDb3JlVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5
IC8qIFdlYkNvcmVWaWV3Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IFdlYkNvcmVWaWV3Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTg4RTBCRjE3MTVDRTI2MDA2NThEOTgg
LyogVHJhY2tMaXN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUcmFja0xpc3RCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4OEUw
QzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCRTg4RTBDQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0QxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9U
cmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9UcmFjay5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1Ry
YWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Ry
YWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQwMTcxNUQy
QTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
RTg4RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEF1ZGlvVHJhY2tMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQzMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDQxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVv
VHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvVHJhY2suaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9U
cmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9U
cmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENjE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkU4OEUwRDcxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwM0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVk
aW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvVHJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMz
IC8qIEpTQXVkaW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNBdWRpb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJFOEVGMDQxMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDYxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZpZGVvVHJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0NzE3MUM5MDE0MDA5QjQ4
QzMgLyogSlNWaWRlb1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VmlkZW9UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0ODE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1ZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkU4RUYwNDkxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAgLyog
UG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCUJFOTFGQzhDMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQb3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlCRTk4M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJv
YXJkVUlNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFRjI5
RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5n
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZWRTdHJp
bmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBERkM4NkYwREI2ODQxQTAw
M0VBRTdDIC8qIEpTQ29uc29sZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NvbnNvbGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVy
bDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBt
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2NjcsNiArMTY3MTQsMTAgQEAKIAkJ
CQk0OUVFQ0VGMzEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5
RUVDRjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgKi8sCiAJCQkJ
NDlFRUNGMUExMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8sCisJCQkJ
QkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4
RUYwM0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovLAorCQkJCUJFOEVGMDQw
MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRThFRjA0
MTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5oICovLAogCQkJCTY1REYzMjMz
MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk2NURGMzIz
NDA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTY1REYzMjM1
MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uY3BwICovLApAQCAtMTY5MDEsNiAr
MTY5NTIsMTAgQEAKIAkJCQk5MTA4OUQzMDE0QzMzNUNEMDA1QUZDNDkgLyogSlNVaW50OENsYW1w
ZWRBcnJheS5oICovLAogCQkJCTE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5
U3RhdGUuY3BwICovLAogCQkJCTE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5
U3RhdGUuaCAqLywKKwkJCQlCRThFRjA0NjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNr
LmNwcCAqLywKKwkJCQlCRThFRjA0NzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmgg
Ki8sCisJCQkJQkU4RUYwNDgxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3Bw
ICovLAorCQkJCUJFOEVGMDQ5MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0Lmgg
Ki8sCiAJCQkJOTdFOUVDOEIxNURDNDkyRjAwNEYyRTcxIC8qIEpTVm9pZENhbGxiYWNrLmNwcCAq
LywKIAkJCQk5N0U5RUM4QzE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suaCAqLywK
IAkJCQlBN0QyMEY2MDEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3BwICov
LApAQCAtMTc2NjksNiArMTc3MjQsMTggQEAKIAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8q
IHRyYWNrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlC
RTg4RTBDQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4OEUw
Q0QxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBDRTE3MTVE
MkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwQ0YxNzE1RDJBMjAw
NjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBEMDE3MTVEMkEyMDA2
NThEOTggLyogQXVkaW9UcmFja0xpc3QuaCAqLywKKwkJCQlCRTg4RTBEMTE3MTVEMkEyMDA2NThE
OTggLyogQXVkaW9UcmFja0xpc3QuaWRsICovLAorCQkJCUJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5
OCAvKiBWaWRlb1RyYWNrLmNwcCAqLywKKwkJCQlCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFjay5oICovLAorCQkJCUJFODhFMEQ0MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrLmlkbCAqLywKKwkJCQlCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xp
c3QuY3BwICovLAorCQkJCUJFODhFMEQ2MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlz
dC5oICovLAorCQkJCUJFODhFMEQ3MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5p
ZGwgKi8sCiAJCQkJQkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3Bw
ICovLAogCQkJCUJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi8s
CiAJCQkJMDc5NDE3OEYxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgKi8s
CkBAIC0xODMyNiw2ICsxODM5Myw4IEBACiAJCQkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8q
IHRyYW5zZm9ybXMgKi8sCiAJCQkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2Vi
S2l0QnJpZGdlLmNwcCAqLywKIAkJCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVX
ZWJLaXRCcmlkZ2UuaCAqLywKKwkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9U
cmFja1ByaXZhdGUuaCAqLywKKwkJCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9U
cmFja1ByaXZhdGUuaCAqLywKIAkJCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFw
SW1hZ2UuY3BwICovLAogCQkJCUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFn
ZS5oICovLAogCQkJCUIyNzUzNTM4MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5jcHAgKi8sCkBA
IC0xODgwOCw2ICsxODg3Nyw4IEBACiAJCQkJRkRFQUFBRUYxMkIwMkVFNDAwRENGMzNCIC8qIEpT
QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlDRERFNjkxRDE3MURGODkx
MDBBNDREODkgLyogSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIw
MkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKKwkJCQlCRTZERjcw
RTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCAqLywKKwkJCQlCRTZE
RjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgKi8sCiAJ
CQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5j
cHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAg
Ki8sCiAJCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcCAqLywKQEAgLTE4OTExLDEyICsxODk4MiwxMyBAQAogCQkJCTFBMkM0
MEFBMERFQjU1QUEwMDVBRjE5RSAvKiBKU1RleHRDdXN0b20uY3BwICovLAogCQkJCTA3RTExNzA2
MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdF
MTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLywKLQkJCQkw
N0UzOEEwQjE0OEZDRjBDMDA2RTFFQ0MgLyogSlNUZXh0VHJhY2tDdXN0b20uaCAqLywKIAkJCQkw
N0I1QTMwQzE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywK
IAkJCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgKi8sCiAJ
CQkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLywKIAkJCQkw
N0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJ
CQk1MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCAqLywK
KwkJCQlCRTZERjcwODE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAq
LywKKwkJCQlCRTZERjcwQTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrTGlzdEN1c3Rv
bS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTRDNDEyOTczNTQ5MDBBQ0E5ODkgLyog
SlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwICovLAogCQkJCUUxQUQxNEI0MTI5NzM0
Q0EwMEFDQTk4OSAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwICovLApAQCAt
MjA5OTEsNiArMjEwNjMsNyBAQAogCQkJCUZEMzE2MDg5MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDYyRjUyRTE0NTg5OEQ4MDA5
NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkRCMDUyRTAxNTYxQTQyQzAwQjUwMEQ2IC8qIEF1ZGlvU3VtbWluZ0p1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCRUYyOUVFQjE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NjAxMkQyNkUzODAwRTc5NDE1
IC8qIEF1dGhlbnRpY2F0aW9uQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDYxMTJEMjZF
MzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMzg1Myw2ICsyMzkyNiw3IEBACiAJCQkJMTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZh
bGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFGMTJCMDI2RjcwMEMxQTM1
OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEwMDA3
QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRUYy
OUVFQzE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFRjQxOENGMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJM0ZGRkY5QUUxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5
bGVSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgx
IC8qIFZpc2libGVQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDAzOSw2ICsyNDExMywx
NCBAQAogCQkJCUUxNTI1NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQjUzMzQ5
MTcxN0RFRTMwMEYyMDVGOSAvKiBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJFODhFMEQ5MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFj
a0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBW
aWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDQzMTcxQzhGRjkw
MDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDQ1MTcx
QzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlC
RThFRjA0QjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCRThFRjA0RDE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0yNjk4OCw2ICsyNzA3MCwxOCBAQAogCQkJCUUxNTI1NTE2MTZGRDIzNTAw
MDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUI1MzM0NzE3MTdEMEExMDBGMjA1RjkgLyogQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwQzExNzE1
Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4
OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkU4OEUwREIxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRThFRjA0MjE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDQ0MTcxQzhGRjkwMDlC
NDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDRB
MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkU4RUYwNEMxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQkU2REY3MEIxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcwRDE3MUNBMkM1MDBERDUyQjggLyogSlNW
aWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcxMTE3MUNB
MkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFr
ZWZpbGUuYW0KaW5kZXggZjMyMmQ2NGNjN2QxN2E3ZmI3NTQwM2VhYmQyMTliZmQzZWVkOTE5Ny4u
ZWVlZWViYTEwYTMyZTY1YTI5OWMyY2MwY2M3ODJmNDA4Y2UzMTYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC00MzMsMTggKzQzMywy
NCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlmIEVOQUJMRV9WSURFTwog
d2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwKKwkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmggXAog
CSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1
ZGlvRWxlbWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTUhUTUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmggXAogCSQo
dG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlLmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NVGV4dFRyYWNrQ3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVk
U291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwKKwkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suaCBcCisJJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNr
TGlzdC5oCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJpdmF0ZS5o
IFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suY3BwIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXApAQCAtNDUz
LDYgKzQ1OSw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmggXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2YXRlLmgg
XAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaAogZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiNjJmMWI1MjM5ZDkzNjRjNWEyY2IxNzljOTYyMDE5MmU4ZDU2YjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tD
dXN0b20uY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIK
KworI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayog
anNBdWRpb1RyYWNrID0ganNDYXN0PEpTQXVkaW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoanNBdWRpb1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FT
U0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2st
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2ssIHZpc2l0b3IpOworCisgICAgQXVkaW9U
cmFjayogYXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2st
PmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFjaykpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hYzYxNmIwZDRiOGFhOTI5NDIyZjA1YWQ3NTQ5MzI0MDlhYTE2YWQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5j
cHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0LmgiCisKKyNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU0F1
ZGlvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNBdWRpb1RyYWNrTGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJh
Y2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVk
aW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xp
c3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVu
ZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFwcGVy
IGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBp
ZiAoYXVkaW9UcmFja0xpc3QtPmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFu
ZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYg
KCFhdWRpb1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAhanNBdWRpb1RyYWNrTGlz
dC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVsZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJs
ZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNr
TGlzdC0+b3duZXIoKSkpOworfQorCit2b2lkIEpTQXVkaW9UcmFja0xpc3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJh
Y2tMaXN0KiBqc0F1ZGlvVHJhY2tMaXN0ID0ganNDYXN0PEpTQXVkaW9UcmFja0xpc3QqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzQXVkaW9UcmFja0xpc3QsICZzX2lu
Zm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAg
QVNTRVJUKGpzQXVkaW9UcmFja0xpc3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2tM
aXN0LCB2aXNpdG9yKTsKKworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0
YXRpY19jYXN0PEF1ZGlvVHJhY2tMaXN0Kj4oanNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKyAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrTGlzdC0+b3duZXIoKSkpOwor
ICAgIGF1ZGlvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCAyYmExMGY1NTZlOGI0ODAy
ZThiYTk2NmZkMWQzY2UxMjQzMTI0MDU2Li41MWFkZjM1ZTM0OWY4NGVkYTZmMDNhN2E0OTM5ZWMz
ZWRjNDRlZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIu
Y3BwIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQXR0
ckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRl
ICJKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Jsb2JDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NTU0Zv
bnRGYWNlUnVsZUN1c3RvbS5jcHAiCkBAIC0xNDcsNiArMTQ5LDggQEAKICNpbmNsdWRlICJKU1Ry
YWNrQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RyYWNrRXZlbnRDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTVHJlZVdhbGtlckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrQ3VzdG9t
LmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NL
ZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q3VzdG9tLmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3Vl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcAppbmRleCA1ZGQ5ZGNhNzYwYTgyNzZjNDRjZTEwYzVhOTg3NjBkNmRkNzkzYjE4Li5l
ZTk5N2FhMzdlYzI2NGVmMmI1MTVkOTg4ZDNmZmJhZjcwYmU4M2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCkBAIC0yOCw3
ICsyOCw4IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiSlNUZXh0VHJh
Y2tDdWUuaCIKLSNpbmNsdWRlICJKU1RleHRUcmFja0N1c3RvbS5oIgorI2luY2x1ZGUgIkpTVHJh
Y2tDdXN0b20uaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20u
Y3BwCmluZGV4IDVkNjQxMjQ2NjVhNzE4ZWQwZGNlZWYzNDQ1MDgzNGE5NGU2NWRjNWIuLmY5NTUy
OTNhNzg5MGUwZGQwOWVmYTY2MjdiNWFjOGNiOWRhZTEyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKQEAgLTI2LDEwICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaW5jbHVk
ZSAiSlNUZXh0VHJhY2tDdXN0b20uaCIKLQogI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmgiCiAjaW5j
bHVkZSAiSlNUZXh0VHJhY2tDdWVMaXN0LmgiCisjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5oIgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdXN0b20uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JmZGUy
ODkzMzg0NzI5YjQyMzI5Y2JmODY3NjQ3MTJjNzQwNzdkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0N1c3RvbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIEpTVGV4dFRyYWNrQ3VzdG9tX2gKLSNkZWZpbmUgSlNUZXh0VHJhY2tDdXN0b21f
aAotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmgiCi0K
LSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgotI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRy
YWNrLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
aW5saW5lIHZvaWQqIHJvb3QoVGV4dFRyYWNrKiB0cmFjaykKLXsKLSAgICAvLyBJZiB0aGlzIHRy
YWNrIGNvcnJlc3BvbmRzIHRvIGEgPHRyYWNrPiBlbGVtZW50LCByZXR1cm4gdGhhdCBlbGVtZW50
J3Mgcm9vdC4KLSAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tF
bGVtZW50KSB7Ci0gICAgICAgIGlmIChIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQgPSBz
dGF0aWNfY2FzdDxMb2FkYWJsZVRleHRUcmFjayo+KHRyYWNrKS0+dHJhY2tFbGVtZW50KCkpCi0g
ICAgICAgICAgICByZXR1cm4gcm9vdCh0cmFja0VsZW1lbnQpOwotICAgIH0KLQotICAgIC8vIE5v
LCByZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhhcyBvbmUuCi0gICAgaWYg
KHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHJvb3QodHJhY2stPm1lZGlh
RWxlbWVudCgpKTsKLQotICAgIC8vIE5vIHRyYWNrIGVsZW1lbnQgYW5kIG5vIG1lZGlhIGVsZW1l
bnQsIHJldHVybiB0aGUgdGV4dCB0cmFjay4KLSAgICByZXR1cm4gdHJhY2s7Ci19Ci0KLX0KLQot
I2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3Rv
bS5jcHAKaW5kZXggN2I5Nzk0NWNhMTBhNDFkZjBjZGZiNDdjMWY2YzE3NzZlMDE2MGJhYi4uNzlk
N2I5M2RjYmZhOGNjMWRiMTc4ZTkyODNkMjhhMGQ1NjBlMTBiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKIAogI2lu
Y2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKIAorI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5oIgogI2lu
Y2x1ZGUgIkpTVGV4dFRyYWNrLmgiCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKQEAgLTY2LDkgKzY4LDExIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUcmFj
a0JhCiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIFRyYWNrQmFzZTo6QXVkaW9U
cmFjazoKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmpl
Y3QsIEF1ZGlvVHJhY2ssIHRyYWNrKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFRyYWNr
QmFzZTo6VmlkZW9UcmFjazoKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bnRp
bCBWaWRlb1RyYWNrIGFuZCBBdWRpb1RyYWNrIGFyZSBpbXBsZW1lbnRlZC4KLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBWaWRlb1RyYWNrLCB0cmFjayk7CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBUcmFja0Jhc2U6OlRleHRUcmFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVHJhY2tDdXN0b20uaAppbmRleCAxNjUzNDBkYTBhN2VmZWNmNjRiYmUwODM0YzgzMGQzMWYw
ZDYxZTY5Li42ZTI0YTA5MTVkYzg5ZDI2YTZlZDA2Y2RhZjA0OTk5ZGJiOTI3NzkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCiAjaW5jbHVk
ZSAiVHJhY2tCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM4LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFRyYWNrQmFzZSogdG9UcmFjayhKU0M6OkpTVmFsdWUpOwog
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRy
YWNrQmFzZSopOwogCitpbmxpbmUgdm9pZCogcm9vdChUcmFja0Jhc2UqIHRyYWNrKQoreworICAg
IGlmICh0cmFjay0+ZWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+ZWxlbWVu
dCgpKTsKKyAgICByZXR1cm4gdHJhY2s7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ODE4NDkzMDZlMGQyZThiNWE4OTMwYzlkNjJkNGZmZmQ4YWJlN2E3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJK
U1RyYWNrQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCBKU1ZpZGVvVHJhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9UcmFjayA9
IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGpzVmlkZW9UcmFjaywgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1RyYWNrLT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4oanNWaWRlb1RyYWNrLCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2sqIHZpZGVvVHJh
Y2sgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4oanNWaWRlb1RyYWNrLT5pbXBsKCkpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHZpZGVvVHJhY2spKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJkOTY3MTBkNjA5
MzEwYzc4NzJhN2RmNDNiNmNkYjQzMzViMWQ1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisjaW5jbHVkZSAiSlNWaWRlb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNWaWRlb1RyYWNrTGlzdE93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFj
a0xpc3QqIGpzVmlkZW9UcmFja0xpc3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGhhbmRs
ZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0g
c3RhdGljX2Nhc3Q8VmlkZW9UcmFja0xpc3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOwor
CisgICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBw
ZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJs
ZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKHZpZGVvVHJhY2tM
aXN0LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgLy8gSWYgdGhlIGxpc3QgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5vIGN1c3Rv
bSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghdmlkZW9UcmFja0xp
c3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzVmlkZW9UcmFja0xpc3QtPmhhc0N1c3RvbVBy
b3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hh
YmxlIGlmIHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJu
IHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkp
KTsKK30KKwordm9pZCBKU1ZpZGVvVHJhY2tMaXN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRl
b1RyYWNrTGlzdCA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhqc1ZpZGVvVHJhY2tMaXN0LCAmc19pbmZvKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc1ZpZGVv
VHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrTGlzdCwgdmlzaXRvcik7
CisKKyAgICBWaWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRl
b1RyYWNrTGlzdCo+KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRP
cGFxdWVSb290KHJvb3QodmlkZW9UcmFja0xpc3QtPm93bmVyKCkpKTsKKyAgICB2aWRlb1RyYWNr
TGlzdC0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA4Mjc3N2E4
NmVlZmRmYmViZTY4OWM5YjkyMzM2ODgyOTU4MzkxYzNlLi5lYTA3OTliYjVkMGQ3MzRjMDFmNDY4
YTYzZTFkNWIyMjA1Y2ZiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNDEsNiAr
NDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXVkaW9Db250ZXh0Owor
ICAgIGNsYXNzIEF1ZGlvVHJhY2tMaXN0OwogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRl
eHQ7CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7
CkBAIC02Nyw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTb3VyY2VC
dWZmZXJMaXN0OwogICAgIGNsYXNzIFRleHRUcmFjazsKICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7
CisgICAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNs
YXNzIFdlYktpdE5hbWVkRmxvdzsKICAgICBjbGFzcyBXb3JrZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA0NzZkMWI1M2YxNDViYjI3MzQ5ODk5M2YzOWYx
ZDFjYmFhNjIzNTgzLi44ZWE1YjdiMDNhYmFjYTAyZjI1ZjQ4YTJlZDU1OTkyNjNlYTQ3MGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEsNiArMSw3IEBA
CiBuYW1lc3BhY2U9IkV2ZW50VGFyZ2V0IgogCiBBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VC
X0FVRElPCitBdWRpb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogQmF0dGVyeU1h
bmFnZXIgY29uZGl0aW9uYWw9QkFUVEVSWV9TVEFUVVMKIERlZGljYXRlZFdvcmtlckNvbnRleHQg
Y29uZGl0aW9uYWw9V09SS0VSUwogRE9NQXBwbGljYXRpb25DYWNoZQpAQCAtMzcsNiArMzgsNyBA
QCBTVkdFbGVtZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCiBUZXh0VHJhY2sgY29uZGl0aW9u
YWw9VklERU9fVFJBQ0sKIFRleHRUcmFja0N1ZSBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4
dFRyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSworVmlkZW9UcmFja0xpc3QgY29uZGl0
aW9uYWw9VklERU9fVFJBQ0sKIFdlYktpdE5hbWVkRmxvdwogV2ViU29ja2V0IGNvbmRpdGlvbmFs
PVdFQl9TT0NLRVRTCiBXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMTQ2MGY0YzQ5YTU4YzY0NGYyZDZjZjAxN2E1
NGRkMmI2NjhmN2Q5Mi4uZGVjNDgzYTNmNTRmM2FmZTdkZmQ3Y2M3MWFhMjYzNDRhYTRjNGJjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05OCw2ICs5OCw4
IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRpb1Ry
YWNrTGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2suaCIKQEAgLTEwNSw2ICsxMDcsOCBAQAogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0Lmgi
CiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0Lmgi
CisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdF
Ql9BVURJTykKQEAgLTI5Niw3ICszMDAsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAg
ICwgbV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZShmYWxzZSkKICAgICAsIG1fbGFzdFRleHRU
cmFja1VwZGF0ZVRpbWUoLTEpCiAgICAgLCBtX2NhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpBdXRvbWF0aWMpCisgICAgLCBtX2F1ZGlvVHJhY2tzKDApCiAgICAgLCBt
X3RleHRUcmFja3MoMCkKKyAgICAsIG1fdmlkZW9UcmFja3MoMCkKICAgICAsIG1faWdub3JlVHJh
Y2tEaXNwbGF5VXBkYXRlKDApCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMzMw
LDEyICszMzYsMjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAg
IGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxs
YmFja3ModGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGRvY3VtZW50KCktPnVu
cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAg
IGlmIChtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyT3duZXIo
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXVkaW9UcmFja3MtPmxlbmd0
aCgpOyArK2kpCisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVu
dCgpOworICAgIH0KICAgICBpZiAobV90ZXh0VHJhY2tzKQogICAgICAgICBtX3RleHRUcmFja3Mt
PmNsZWFyT3duZXIoKTsKICAgICBpZiAobV90ZXh0VHJhY2tzKSB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAg
ICBtX3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CiAgICAgfQorICAgIGlmICht
X3ZpZGVvVHJhY2tzKSB7CisgICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyT3duZXIoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpOyAr
K2kpCisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwor
ICAgIH0KICNlbmRpZgogCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQpAQCAtMTM1Myw2ICsx
MzY5LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5n
ZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwg
d2FudCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNr
KiB0cmFjaykKIHsKICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJh
Y2tFbGVtZW50KSB7CkBAIC0xMzkyLDYgKzE0MTMsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIHVwZGF0ZUFjdGl2
ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikKK3sKKyAgICAvLyBXZSB3
aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlz
dAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRU
cmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpjYXB0
aW9uc0tleXdvcmQoKSAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKQpA
QCAtMjc5Niw2ICsyODIyLDE0IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9h
ZGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhZGRBdWRp
b1RyYWNrKEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjaykpOworfQorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjgyOCwyNCArMjg2Miwz
MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIC8vIDkuIEZpcmUgYW4gZXZlbnQgd2l0
aCB0aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5j
ZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50CiAgICAgLy8gaW50ZXJmYWNlLCB3
aXRoIHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBU
ZXh0VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzCiAgICAgLy8gdGV4dFRyYWNr
cyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KLSAgICBhZGRUZXh0VHJhY2sodGV4
dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLnJlbGVhc2UoKSk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IGlmICghbV90ZXh0VHJhY2tzKQotICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUaGlzIGNhc3Qg
aXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEluYmFuZFRleHRUcmFjayB3aXRoIHRoZSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlCi0gICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRk
VGV4dFRyYWNrLgotICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2s+IHRleHRUcmFjayA9IHN0YXRp
Y19jYXN0PEluYmFuZFRleHRUcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7Ci0gICAgaWYgKCF0
ZXh0VHJhY2spCi0gICAgICAgIHJldHVybjsKKyAgICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6
OmNyZWF0ZSh0aGlzLCBwcnBUcmFjaykpOworfQogCi0gICAgcmVtb3ZlVGV4dFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3Zl
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAg
ICBwcnBUcmFjay0+d2lsbEJlUmVtb3ZlZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgcHJwVHJhY2stPndpbGxCZVJlbW92ZWQoKTsKK30K
Kwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2so
UGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgcHJwVHJhY2st
PndpbGxCZVJlbW92ZWQoKTsKIH0KIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUp
CkBAIC0yOTI0LDE1ICsyOTY0LDQ1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VDYXB0
aW9uVHJhY2tzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRk
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrKQoreworICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXVkaW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNr
KQogeworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJh
Y2spOwotICAgIAorCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrPiB0
cmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHZpZGVvVHJhY2tzKCktPmFwcGVu
ZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhB
dWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXVkaW9U
cmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3Zl
VGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKICAg
ICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKICAgICBUZXh0VHJhY2tDdWVM
aXN0KiBjdWVzID0gdHJhY2stPmN1ZXMoKTsKICAgICBpZiAoY3VlcykKQEAgLTI5NDMsMTggKzMw
MTMsMzEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNr
KiB0cmFjaykKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIW1f
dGV4dFRyYWNrcykKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRyYWNrRGlzcGxheVVwZGF0
ZVNjb3BlIHNjb3BlKHRoaXMpOwotICAgIGZvciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0
aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4
dFRyYWNrcy0+aXRlbShpKTsKKyAgICBtX3ZpZGVvVHJhY2tzLT5yZW1vdmUodHJhY2spOworfQog
Ci0gICAgICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0g
ICAgICAgICAgICByZW1vdmVUZXh0VHJhY2sodHJhY2spOwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQoreworICAgIHdoaWxlIChtX2F1ZGlvVHJhY2tzICYm
ICBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgcmVtb3ZlQXVkaW9UcmFjayhtX2F1
ZGlvVHJhY2tzLT5sYXN0SXRlbSgpKTsKKworICAgIGlmIChtX3RleHRUcmFja3MpIHsKKyAgICAg
ICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CisgICAgICAgIGZvciAoaW50
IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAg
ICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CisKKyAgICAgICAg
ICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCisgICAgICAg
ICAgICAgICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKyAgICAgICAgfQogICAgIH0KKworICAg
IHdoaWxlIChtX3ZpZGVvVHJhY2tzICYmICBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAg
ICAgcmVtb3ZlVmlkZW9UcmFjayhtX3ZpZGVvVHJhY2tzLT5sYXN0SXRlbSgpKTsKIH0KIAogUGFz
c1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBT
dHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk4Myw3ICszMDY2LDcgQEAgUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFMKICAgICAvLyBmaXJzdCBhcHBlbmQgdGhlIHRyYWNrIHRvIHRoZSB0ZXh0IHRyYWNr
IGxpc3QuCiAKICAgICAvLyA2LiBBZGQgdGhlIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBl
bGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcy4KLSAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNr
LmdldCgpKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrKTsKIAogICAgIC8vIC4uLiBpdHMg
dGV4dCB0cmFjayByZWFkaW5lc3Mgc3RhdGUgdG8gdGhlIHRleHQgdHJhY2sgbG9hZGVkIHN0YXRl
IC4uLgogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUoVGV4dFRyYWNrOjpMb2FkZWQp
OwpAQCAtMjk5NCw2ICszMDc3LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFF
bGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAgICAgcmV0
dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAKK0F1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFF
bGVtZW50OjphdWRpb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlm
ICghbV9hdWRpb1RyYWNrcykKKyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0
OjpjcmVhdGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworCisgICAgcmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKIFRleHRUcmFja0xpc3Qq
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0zMDA1LDYgKzMwOTks
MTcgQEAgVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpCiAgICAg
cmV0dXJuIG1fdGV4dFRyYWNrcy5nZXQoKTsKIH0KIAorVmlkZW9UcmFja0xpc3QqIEhUTUxNZWRp
YUVsZW1lbnQ6OnZpZGVvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9UcmFja0xp
c3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisKKyAgICByZXR1cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsKK30KKwogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50
KQogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKQEAg
LTMwMjAsNyArMzEyNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNr
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICBpZiAoIXRleHRUcmFjaykKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwor
ICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2sucmVsZWFzZSgpKTsKICAgICAKICAgICAvLyBEbyBu
b3Qgc2NoZWR1bGUgdGhlIHRyYWNrIGxvYWRpbmcgdW50aWwgcGFyc2luZyBmaW5pc2hlcyBzbyB3
ZSBkb24ndCBzdGFydCBiZWZvcmUgYWxsIHRyYWNrcwogICAgIC8vIGluIHRoZSBtYXJrdXAgaGF2
ZSBiZWVuIGFkZGVkLgpAQCAtNDkyMiw3ICs1MDI3LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b24KICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNlLCAibWVkaWFTb3VyY2UiKTsKICNl
bmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2F1ZGlv
VHJhY2tzLCAiYXVkaW9UcmFja3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3Ms
ICJ0ZXh0VHJhY2tzIik7CisgICAgaW5mby5hZGRNZW1iZXIobV92aWRlb1RyYWNrcywgInZpZGVv
VHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2Vs
ZWN0aW9uQmVnYW4sICJ0ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4iKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX2N1ZVRyZWUsICJjdWVUcmVlIik7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9jdXJyZW50bHlBY3RpdmVDdWVzLCAiY3VycmVudGx5QWN0aXZlQ3VlcyIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMDg1ZTlkZmI4ODYwNDA3ZWFkOTE5
MWVjMjdjYWI0ZDkyYjk3NjYzLi5jNzY5YWEwMmFjNTllZTdkNDA0ODNjY2Q0YWI1MGVhNTZiYjI1
MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzksMTAgKzM5
LDEyIEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRp
b1RyYWNrLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUg
IlBPREludGVydmFsVHJlZS5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRl
eHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03MCw4ICs3MiwxMiBAQCBjbGFzcyBNZWRpYUtleXM7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0OworY2xhc3Mg
QXVkaW9UcmFja1ByaXZhdGU7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOwogY2xhc3Mg
VGV4dFRyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OworY2xhc3MgVmlkZW9UcmFja1By
aXZhdGU7CiAKIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4g
Q3VlSW50ZXJ2YWxUcmVlOwogdHlwZWRlZiBDdWVJbnRlcnZhbFRyZWU6OkludGVydmFsVHlwZSBD
dWVJbnRlcnZhbDsKQEAgLTg0LDcgKzkwLDkgQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50ZXJ2YWw+
IEN1ZUxpc3Q7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQs
IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBl
Q2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyAgICAsIHByaXZhdGUgQXVkaW9UcmFja0NsaWVudAogICAgICwgcHJpdmF0ZSBUZXh0
VHJhY2tDbGllbnQKKyAgICAsIHByaXZhdGUgVmlkZW9UcmFja0NsaWVudAogI2VuZGlmCiAjaWYg
VVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAsIHB1YmxpYyBQbGF0Zm9ybVRleHRU
cmFja01lbnVDbGllbnQKQEAgLTIyNiwxMSArMjM0LDE4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZFRleHRUcmFjayhraW5k
LCBsYWJlbCwgZW1wdHlTdHJpbmcoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+
IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBhZGRUZXh0VHJhY2soa2luZCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgZWMp
OyB9CiAKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja3MoKTsKICAgICBUZXh0VHJhY2tM
aXN0KiB0ZXh0VHJhY2tzKCk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tzKCk7CisK
ICAgICBDdWVMaXN0IGN1cnJlbnRseUFjdGl2ZUN1ZXMoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRseUFjdGl2ZUN1ZXM7IH0KIAotICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRleHRUcmFjayopOwor
ICAgIHZvaWQgYWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+KTsKKyAgICB2b2lk
IGFkZFRleHRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4pOworICAgIHZvaWQgYWRkVmlkZW9U
cmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2s+KTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFjayopOwogICAgIHZvaWQgcmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayopOworICAg
IHZvaWQgcmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CiAgICAgdm9pZCByZW1vdmVBbGxJ
bmJhbmRUcmFja3MoKTsKICAgICB2b2lkIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKICAg
ICB2b2lkIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CkBAIC0yMzgsOCAr
MjUzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVGV4dFRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRB
ZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFj
ayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAKICNpZiBVU0UoUExB
VEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRU
cmFjayhQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPikgT1ZFUlJJREU7CkBAIC0yNzUsNiAr
Mjk0LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrRGlzcGxheSgpOwog
ICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCisgICAgLy8gQXVkaW9UcmFja0Ns
aWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayopOworCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tLaW5kQ2hhbmdlZChUZXh0VHJhY2sqKTsKQEAgLTI4NCw2ICszMDYsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRy
YWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKIAorICAgIC8vIFZpZGVvVHJhY2tDbGll
bnQKKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNr
Kik7CisKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsK
ICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKik7CiAjZW5kaWYKQEAgLTY5OSw3ICs3MjQsOSBAQCBwcml2YXRlOgogCiAgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIG1fY2FwdGlvbkRpc3BsYXlNb2Rl
OwogCisgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0
cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CisgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0
PiBtX3ZpZGVvVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRy
YWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwogCiAgICAgQ3VlSW50ZXJ2YWxUcmVlIG1f
Y3VlVHJlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IGNl
ZDQxNzQ1OWRhYmExMzVlZDAwNWVmNjU0ODZkMjVhZjZlMWNjZDUuLjA1YmMyZGQ4YzRmYjg4NGU3
YmViZDY3YjBjNzIzZTllNWQ1MThhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbApAQCAtMTE2LDcgKzExNiw5IEBAIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVz
dChpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyCiAj
aWYgZGVmaW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogVGV4
dFRyYWNrIGFkZFRleHRUcmFjayhpbiBET01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01T
dHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1YWdlKQogICAgIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRp
b1RyYWNrczsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7City
ZWFkb25seSBhdHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CiAjZW5kaWYKIAog
W1JlZmxlY3QsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVk
aWFHcm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI5MDZlMjJlNzQ2ZTkzNWYxODMyY2ZjNmZhYjA2MTQ5OGYwNDQ0OGMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAg
KzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9U
cmFja0xpc3QuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNr
OjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRpb24sICgi
ZGVzY3JpcHRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
cmV0dXJuIGRlc2NyaXB0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6
Om1haW5LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHJldHVybiBtYWluOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6
Om1haW5EZXNjS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbkRlc2M7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgQXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHRyYW5z
bGF0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlL
ZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
Y29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitBdWRpb1RyYWNrOjpBdWRpb1Ry
YWNrKEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6QXVkaW9UcmFjaywg
dHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBt
X2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUtPmVu
YWJsZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1By
aXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2gg
KG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJu
YXRpdmU6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpEZXNjcmlwdGlv
bjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAgICAg
IHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW5EZXNjOgorICAgICAgICBzZXRLaW5kKEF1ZGlv
VHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6VHJhbnNsYXRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
dHJhbnNsYXRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJh
Y2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1l
bnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCitBdWRpb1RyYWNrOjp+QXVkaW9UcmFjaygpCit7CisgICAgbV9w
cml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQo
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAodmFsdWUgPT0gYWx0
ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1
ZSA9PSBtYWluRGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IHRyYW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0RW5hYmxlZChjb25z
dCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRoaXMpOworfQor
CitzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1f
cHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9UcmFja0luZGV4KCk7Cit9CisK
K3ZvaWQgQXVkaW9UcmFjazo6d2lsbFJlbW92ZUF1ZGlvVHJhY2tQcml2YXRlKEF1ZGlvVHJhY2tQ
cml2YXRlKiB0cmFja1ByaXZhdGUpCit7CisgICAgQVNTRVJUKHRyYWNrUHJpdmF0ZSA9PSBtX3By
aXZhdGUpOworICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVBdWRpb1RyYWNrKHRoaXMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTNlY2I2ODg4MmI3OGQxYjAzZDUxZGZmZjNmYWJh
NDkwNzg1YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUgQXVkaW9UcmFja19oCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsK
KworY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9U
cmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQoQXVkaW9UcmFjayopID0gMDsKK307CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBwdWJsaWMgVHJh
Y2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0
ZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJp
bmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
bWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluRGVzY0tl
eXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2xhdGlvbktleXdv
cmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgp
OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBlbXB0eUF0b207IH0KKworICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVk
KGNvbnN0IGJvb2wpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUg
eyBtX2NsaWVudCA9IDA7IH0KKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKKwor
cHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+KTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHdpbGxSZW1vdmVBdWRpb1RyYWNrUHJpdmF0ZShBdWRpb1RyYWNrUHJpdmF0ZSopIE9WRVJS
SURFOworCisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAg
QXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZh
dGU+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBBdWRpb1RyYWNrKiB0b0F1ZGlvVHJhY2soVHJh
Y2tCYXNlKiB0cmFjaykKK3sKKyAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6
OkF1ZGlvVHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4odHJhY2sp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjhmOTY3MDFiZmNl
MGFhYWFjZmYwZjVjYjM4ZGI3NjdlMmY4NjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsRWxlbWVudFJvb3QsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KK10gaW50ZXJm
YWNlIEF1ZGlvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBs
YW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTM1NWI3
M2ZmZGI0ZDc4MjZhY2VlNmZmZTliMjcyY2Y1N2E1ZjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKQEAgLTAsMCArMSw4MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiQXVk
aW9UcmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK0F1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50
KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlz
dEJhc2Uob3duZXIsIGNvbnRleHQpCit7Cit9CisKK0F1ZGlvVHJhY2tMaXN0Ojp+QXVkaW9UcmFj
a0xpc3QoKQoreworfQorCit2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxB
dWRpb1RyYWNrPiBwcnBUcmFjaykKK3sKKyAgICBSZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2sgPSBw
cnBUcmFjazsKKworICAgIC8vIEluc2VydCB0cmFja3MgaW4gdGhlIG1lZGlhIGZpbGUgb3JkZXIu
CisgICAgc2l6ZV90IGluZGV4ID0gdHJhY2stPmluYmFuZFRyYWNrSW5kZXgoKTsKKyAgICBtX2lu
YmFuZFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrKTsKKworICAgIEFTU0VSVCghdHJhY2stPm1l
ZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25lcigpKTsKKyAgICB0
cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2
ZW50KHRyYWNrLnJlbGVhc2UoKSk7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0Ojpp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJh
Y2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHRvQXVkaW9UcmFjayhtX2luYmFuZFRyYWNrc1tp
bmRleF0uZ2V0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJh
Y2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIEF1ZGlvVHJhY2sqIHRyYWNrID0gdG9BdWRpb1RyYWNrKG1faW5iYW5kVHJhY2tzW2ld
LmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQorICAgICAgICAgICAgcmV0
dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBBdWRpb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg1OTNj
MzcyOGQyMTkzZTljMGRmOGU3ODhhNWQzODI0MzQ2ZDVjMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3RfaAorI2RlZmluZSBBdWRp
b1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUcmFj
a0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsK
KworY2xhc3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQp
KTsKKyAgICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICBBdWRpb1RyYWNrKiBnZXRU
cmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKKyAgICBBdWRpb1RyYWNrKiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBBdWRpb1RyYWNrKiBsYXN0SXRlbSgpIGNv
bnN0IHsgcmV0dXJuIGl0ZW0obGVuZ3RoKCkgLSAxKTsgfQorICAgIHZvaWQgYXBwZW5kKFBhc3NS
ZWZQdHI8QXVkaW9UcmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNkNmI3MzJkMmE1NWNjMTM4OTk5YTYzMGI5ODhlMmNhOWQ5Zjc4OTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFD
SywKKyAgICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAgICBJbmRleGVkR2V0dGVyLAorICAgIEV2ZW50
VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uCitdIGludGVyZmFjZSBBdWRpb1RyYWNr
TGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAg
IEF1ZGlvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBBdWRpb1RyYWNr
IGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0cmFjazsK
KyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOworCisgICAgdm9pZCBh
ZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBkaXNwYXRj
aEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKK307
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAppbmRl
eCA2ZDdlMzc5YWI3NDQ5ZjUzYzU4NTEzNTYzNjFmMWNlNTRhZmQ1Zjk5Li5lYTg2MjMyM2ZlMDYz
ZDQyNjM2ZTg4NjNhNWM0MmMzNDhjZDIxN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC0yNjMsNyArMjYzLDEzIEBAIHZvaWQgSW5iYW5k
VGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiBjdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgIG1fY3VlTWFwLnJlbW92ZShzdGF0aWNfY2FzdDxUZXh0VHJhY2tDdWVHZW5lcmljKj4o
Y3VlKSk7CiAgICAgVGV4dFRyYWNrOjpyZW1vdmVDdWUoY3VlLCBlYyk7CiB9Ci0gICAgCisKK3Zv
aWQgSW5iYW5kVGV4dFRyYWNrOjp3aWxsUmVtb3ZlVGV4dFRyYWNrUHJpdmF0ZShJbmJhbmRUZXh0
VHJhY2tQcml2YXRlKiB0cmFja1ByaXZhdGUpCit7CisgICAgQVNTRVJUKHRyYWNrUHJpdmF0ZSA9
PSBtX3ByaXZhdGUpOworICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVUZXh0VHJhY2sodGhpcyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCAzNjlhODU3YjAyNjUxOWI0ODJlYjUz
ZmYyNWI5MGIyZmZhY2FkMThkLi5mMDI5MjM3YzgxNjYzNmExNTZlMGQ5NmU0NWY2N2YyODA4NTNm
NmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKQEAg
LTgwLDYgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2VuZXJpY0N1ZURhdGEqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwg
R2VuZXJpY0N1ZURhdGEqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ3VlKFRl
eHRUcmFja0N1ZSosIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFJlbW92ZVRleHRUcmFja1ByaXZhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSopIE9WRVJS
SURFOwogCiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljPiBjcmVhdGVDdWUoUGFz
c1JlZlB0cjxHZW5lcmljQ3VlRGF0YT4pOwogICAgIHZvaWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEo
VGV4dFRyYWNrQ3VlR2VuZXJpYyosIEdlbmVyaWNDdWVEYXRhKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDNkZmI5Nzc4NGM1ODIx
YWM5OWQ5NzhlZTQzZTVkNzg1NGQ1MTc0YzUuLjI0MTliYjZjYzhmODVlMjAyMDUxNzAxNDczZDNi
ZTM5ZjJjY2M3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwCkBAIC03Miw2ICs3MiwxMSBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpz
Y2hlZHVsZUxvYWQoY29uc3QgS1VSTCYgdXJsKQogICAgICAgICBtX2xvYWRUaW1lci5zdGFydE9u
ZVNob3QoMCk7CiB9CiAKK0VsZW1lbnQqIExvYWRhYmxlVGV4dFRyYWNrOjplbGVtZW50KCkKK3sK
KyAgICByZXR1cm4gbV90cmFja0VsZW1lbnQ7Cit9CisKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6
OmxvYWRUaW1lckZpcmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopCiB7CiAgICAgaWYgKG1f
bG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRl
eHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5o
CmluZGV4IDMyNGViMzJkMDRiZGE5ZDQwMDlhYjU1YjhjOGEyYjM5ZDU5NGQyYzAuLjdkOTc4ZGY3
ZTEwNWRlOTM5OGFlMDg2MjFlNDBkMmYwMzM3NzkzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgc2l6ZV90IHRyYWNrRWxlbWVudEluZGV4KCk7CiAgICAgSFRNTFRyYWNrRWxlbWVudCog
dHJhY2tFbGVtZW50KCkgeyByZXR1cm4gbV90cmFja0VsZW1lbnQ7IH0KKyAgICB2aXJ0dWFsIEVs
ZW1lbnQqIGVsZW1lbnQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzRGVmYXVsdDsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJc0RlZmF1bHQoYm9vbCBpc0RlZmF1bHQpIE9WRVJSSURFICB7IG1faXNEZWZhdWx0ID0g
aXNEZWZhdWx0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmlu
ZGV4IDVkZDNiZWY4NDY2OTNiNWQ5ODdmZGZmZjY2YmQ4MDExNTgzNmI0YzEuLmJmM2ExODhjNzk5
YTU1ODY5ODY0ZTc5ZWU1NWY2NWVhMWVkZGM2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQK
LSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZF
UlJJREU7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50Kiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jh
c2UuY3BwCmluZGV4IGRlNGUzODU3NGNkODE4MDJhNmFlMDEwMWEzMDBjNmIyOTBiOTgyYWMuLmI5
MjhhNzNkN2Y4ZjZiZjY1YjQzODIzMzAxOGMyY2EzYzk0MjY2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDMsNiArNDUsMTEgQEAgVHJhY2tCYXNlOjp+VHJhY2tCYXNlKCkKIHsKIH0KIAorRWxlbWVu
dCogVHJhY2tCYXNlOjplbGVtZW50KCkKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7Cit9
CisKIHZvaWQgVHJhY2tCYXNlOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYga2luZCkKIHsK
ICAgICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
QmFzZS5oCmluZGV4IDU0NjI4OThjMGUwNTdlMjI3MGM5MTQxYTZhZDUyYjQzMmRhNzI0OGMuLmE4
MWNlMzE1YTVmYzExMjk0YmYwZDdjZDE1NGM3ZDdhMzg3MzVmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCiBjbGFzcyBU
cmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+IHsKQEAgLTQ0LDYgKzQ1LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCog
ZWxlbWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7IH0KICAgICBIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQorICAgIHZpcnR1
YWwgRWxlbWVudCogZWxlbWVudCgpOwogCiAgICAgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY0MDkzOWY4YjIyYTk2ZjNkNGRmM2QxYTU0YjQzNmZhN2Y1MzM2ZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC0wLDAg
KzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgorCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNr
OjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlvbnMsICgiY2FwdGlv
bnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNh
cHRpb25zOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6Om1haW5LZXl3b3Jk
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FwdGlv
bnMsICgibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6c2ln
bktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBzaWduLCAoInNpZ24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIHNpZ247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6c3Vi
dGl0bGVzS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIHN1YnRpdGxlcywgKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNvbW1lbnRhcnksICgiY29tbWVudGFyeSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY29tbWVudGFy
eTsKK30KKworVmlkZW9UcmFjazo6VmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50KiBjbGllbnQs
IFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRyYWNr
QmFzZShUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS0+bGFiZWwoKSwgdHJhY2tQ
cml2YXRlLT5sYW5ndWFnZSgpKQorICAgICwgbV9pZCh0cmFja1ByaXZhdGUtPmlkKCkpCisgICAg
LCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS0+c2VsZWN0ZWQoKSkKKyAgICAsIG1fY2xpZW50KGNs
aWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5z
ZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAg
Y2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6CisgICAgICAgIHNldEtpbmQoVmlk
ZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNr
OjpjYXB0aW9uc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFj
a1ByaXZhdGU6Ok1haW46CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktleXdvcmQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlNpZ246Cisg
ICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1YnRpdGxlczoKKyAgICAgICAgc2V0S2lu
ZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKFZpZGVv
VHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZp
ZGVvVHJhY2tQcml2YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitWaWRlb1RyYWNrOjp+VmlkZW9UcmFjaygp
Cit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgVmlkZW9UcmFjazo6
aXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAo
dmFsdWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh2YWx1ZSA9PSBjYXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHZhbHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh2YWx1ZSA9PSBzaWduS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodmFsdWUgPT0gc3VidGl0bGVzS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQo
Y29uc3QgYm9vbCBzZWxlY3RlZCkKK3sKKyAgICBpZiAobV9zZWxlY3RlZCA9PSBzZWxlY3RlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVkOworCisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0
aGlzKTsKK30KKworc2l6ZV90IFZpZGVvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgoKQoreworICAg
IEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvVHJhY2tJbmRl
eCgpOworfQorCit2b2lkIFZpZGVvVHJhY2s6OndpbGxSZW1vdmVWaWRlb1RyYWNrUHJpdmF0ZShW
aWRlb1RyYWNrUHJpdmF0ZSogdHJhY2tQcml2YXRlKQoreworICAgIEFTU0VSVCh0cmFja1ByaXZh
dGUgPT0gbV9wcml2YXRlKTsKKyAgICBtZWRpYUVsZW1lbnQoKS0+cmVtb3ZlVmlkZW9UcmFjayh0
aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA5MWUzYjZhNTk0MmYxNzMxOGUw
YTA5M2U4Mzg0MTQ0YmNjZjZjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVmlkZW9UcmFja19oCisjZGVmaW5lIFZpZGVvVHJhY2tfaAorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUg
IlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZp
ZGVvVHJhY2s7CisKK2NsYXNzIFZpZGVvVHJhY2tDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgflZpZGVvVHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1Nl
bGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikgPSAwOworfTsKKworY2xhc3MgVmlkZW9UcmFjayA6
IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gY3JlYXRlKFZpZGVvVHJhY2tD
bGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrKGNsaWVudCwg
dHJhY2tQcml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKKworICAg
IEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElk
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisKKyAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNp
Z25LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5
d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3Jk
KCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgYm9vbCBzZWxlY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vs
ZWN0ZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBPVkVS
UklERSB7IG1fY2xpZW50ID0gMDsgfQorICAgIFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgp
OworCitwcm90ZWN0ZWQ6CisgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50KiwgUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJpdmF0ZVRyYWNrKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrUHJpdmF0ZShWaWRlb1Ry
YWNrUHJpdmF0ZSopIE9WRVJSSURFOworCisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgYm9v
bCBtX3NlbGVjdGVkOworICAgIFZpZGVvVHJhY2tDbGllbnQqIG1fY2xpZW50OworCisgICAgUmVm
UHRyPFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7Cit9OworCitpbmxpbmUgVmlkZW9UcmFj
ayogdG9WaWRlb1RyYWNrKFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgQVNTRVJUKHRyYWNrLT50
eXBlKCkgPT0gVHJhY2tCYXNlOjpWaWRlb1RyYWNrKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VmlkZW9UcmFjayo+KHRyYWNrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGUzNzY4MTg0NDIzMzQ3ZDhjMzQxOGJiYTUwYjk4ZDE1ZjczNThmNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAor
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAorICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uCitdIGludGVyZmFjZSBWaWRlb1RyYWNrIHsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgbGFuZ3VhZ2U7CisKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzZWxl
Y3RlZDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhjMDdjOTVjNTc4MTY2ZjRlYmU1NmU3ZGNmZmU1ZTA1OWI0ZWU0OTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0
LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tM
aXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShvd25lciwgY29udGV4dCkKK3sKK30KKworVmlkZW9U
cmFja0xpc3Q6On5WaWRlb1RyYWNrTGlzdCgpCit7Cit9CisKK3ZvaWQgVmlkZW9UcmFja0xpc3Q6
OmFwcGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxW
aWRlb1RyYWNrPiB0cmFjayA9IHBycFRyYWNrOworCisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0
aGUgbWVkaWEgZmlsZSBvcmRlci4KKyAgICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJh
Y2tJbmRleCgpOworICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOworCisg
ICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgp
ID09IG93bmVyKCkpOworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQob3duZXIoKSk7CisKKyAg
ICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2sucmVsZWFzZSgpKTsKK30KKworVmlkZW9UcmFj
ayogVmlkZW9UcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYg
KGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdG9WaWRlb1Ry
YWNrKG1faW5iYW5kVHJhY2tzW2luZGV4XS5nZXQoKSk7CisKKyAgICByZXR1cm4gMDsKK30KKwor
VmlkZW9UcmFjayogVmlkZW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsr
aSkgeworICAgICAgICBWaWRlb1RyYWNrKiB0cmFjayA9IHRvVmlkZW9UcmFjayhtX2luYmFuZFRy
YWNrc1tpXS5nZXQoKSk7CisgICAgICAgIGlmICh0cmFjay0+aWQoKSA9PSBpZCkKKyAgICAgICAg
ICAgIHJldHVybiB0cmFjazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2xvbmcgVmlkZW9U
cmFja0xpc3Q6OnNlbGVjdGVkSW5kZXgoKSBjb25zdAoreworICAgIC8vIDQuOC4xMC4xMC4xIEF1
ZGlvVHJhY2tMaXN0IGFuZCBWaWRlb1RyYWNrTGlzdCBvYmplY3RzCisgICAgLy8gVGhlIFZpZGVv
VHJhY2tMaXN0LnNlbGVjdGVkSW5kZXggYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBpbmRleCBv
ZiB0aGUKKyAgICAvLyBjdXJyZW50bHkgc2VsZWN0ZWQgdHJhY2ssIGlmIGFueS4gSWYgdGhlIFZp
ZGVvVHJhY2tMaXN0IG9iamVjdCBkb2VzIG5vdAorICAgIC8vIGN1cnJlbnRseSByZXByZXNlbnQg
YW55IHRyYWNrcywgb3IgaWYgbm9uZSBvZiB0aGUgdHJhY2tzIGFyZSBzZWxlY3RlZCwKKyAgICAv
LyBpdCBtdXN0IGluc3RlYWQgcmV0dXJuIOKIkjEuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRlb1Ry
YWNrKG1faW5iYW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5zZWxlY3Rl
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKwor
Y29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JWaWRlb1RyYWNrTGlzdDsK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTk3MjlmNmU2YzQ0ZjdhNTZmNTFmNmRkYmU1MjI5MDc4MzlkYzM2MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3Qu
aApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja0xp
c3RfaAorI2RlZmluZSBWaWRlb1RyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisKKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgVmlkZW9UcmFjazsKKworY2xhc3MgVmlkZW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tM
aXN0QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9UcmFja0xpc3Q+
IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFja0xp
c3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICB9CisgICAgflZpZGVvVHJhY2tMaXN0KCk7CisKKyAg
ICBWaWRlb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Cisg
ICAgbG9uZyBzZWxlY3RlZEluZGV4KCkgY29uc3Q7CisKKyAgICBWaWRlb1RyYWNrKiBpdGVtKHVu
c2lnbmVkKSBjb25zdDsKKyAgICBWaWRlb1RyYWNrKiBsYXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJu
IGl0ZW0obGVuZ3RoKCkgLSAxKTsgfQorICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9U
cmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFZp
ZGVvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkw
MmRhYzFkNTY2MzgwNzJiY2U2ZjdjYWQ1OWQxMDdlMTQ1ZGVmYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEN1
c3RvbUlzUmVhY2hhYmxlLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgRXZlbnRUYXJnZXQsCisg
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KK10gaW50ZXJmYWNlIFZpZGVvVHJhY2tMaXN0IHsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgVmlkZW9UcmFj
ayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFZpZGVvVHJhY2sgZ2V0VHJhY2tC
eUlkKGluIERPTVN0cmluZyBpZCk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNo
YW5nZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNrOworICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3ZldHJhY2s7CisKKyAgICB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
aW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50
TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4g
RXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWZkOTE3YTM3YmYwOGIyN2MyZWVlNGEwMjdjNDk0NTI5YmMyNjI3OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJh
Y2tQcml2YXRlLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNr
UHJpdmF0ZV9oCisjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1Ry
YWNrUHJpdmF0ZTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHdpbGxSZW1vdmVBdWRpb1RyYWNrUHJpdmF0ZShBdWRpb1RyYWNrUHJpdmF0ZSopID0gMDsK
K307CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8QXVkaW9U
cmFja1ByaXZhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0
ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZSgpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QXVk
aW9UcmFja1ByaXZhdGUoKSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KEF1ZGlvVHJhY2tQcml2
YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAgICBBdWRpb1RyYWNr
UHJpdmF0ZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9
OworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9
CisKKyAgICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgRGVzY3JpcHRpb24sIE1haW4sIE1haW5E
ZXNjLCBUcmFuc2xhdGlvbiwgQ29tbWVudGFyeSwgTm9uZSB9OworICAgIHZpcnR1YWwgS2luZCBr
aW5kKCkgY29uc3QgeyByZXR1cm4gTm9uZTsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcg
aWQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisKKyAgICB2aXJ0
dWFsIGludCBhdWRpb1RyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAgICB2b2lk
IHdpbGxCZVJlbW92ZWQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAg
ICAgbV9jbGllbnQtPndpbGxSZW1vdmVBdWRpb1RyYWNrUHJpdmF0ZSh0aGlzKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZSgpCisgICAgICAgIDogbV9lbmFibGVk
KGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja1ByaXZhdGVD
bGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9lbmFibGVkOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCmluZGV4IDNlZWNj
ZmE0NGQ0NGE2ZDg2NDFjYWI0MjgwMGI1MGNkZjZkOTYwN2QuLjRkNDE2MjlmMWVmYWVlNDVmNGY5
ZWQ4OGRmMzg1NjZmNGZiZmM5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKQEAgLTI2LDE3ICsyNiwx
NiBAQAogI2lmbmRlZiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlX2gKICNkZWZpbmUgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZV9oCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCi0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluYmFuZFRleHRUcmFja1By
aXZhdGVDbGllbnQ7Ci0KIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtNzgsNiArNzcsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQgdGV4dFRy
YWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKKyAgICB2b2lkIHdpbGxCZVJlbW92ZWQo
KQorICAgIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPndp
bGxSZW1vdmVUZXh0VHJhY2tQcml2YXRlKHRoaXMpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAg
IEluYmFuZFRleHRUcmFja1ByaXZhdGUoKQogICAgICAgICA6IG1fY2xpZW50KDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50LmgKaW5kZXggNGM4NGFhY2E0YWViZTk5MmYzNWNhMDg1Y2I3YjM0
OGRmZjljNTQwYS4uMGQ0MGFkM2FhZWU4NzFmZTQzNzcxY2ZjODBjNmNhMjdlZTUwNzRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaApAQCAtMTI4LDEwICsxMjgsMTIgQEAgcHJpdmF0
ZToKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQoKSB7IH0KLSAgICAKKwogICAgIHZp
cnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBQYXNzUmVm
UHRyPEdlbmVyaWNDdWVEYXRhPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW5lcmlj
Q3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSopID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2Vu
ZXJpY0N1ZURhdGEqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVRleHRUcmFj
a1ByaXZhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSopID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAppbmRleCA4N2U5NDI1NDQ5Y2NkMDBmZTg4Y2VjZDY3YmY5ZWM1NzU1NDA4NDYz
Li5jNTIzODU4MGI5MTlmZGJhOTVkNTUyNGNlYWViNWIxNzQ2YjdkOGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMTAzLDYg
KzExMDMsMjIgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIE1lZGlhUGxheWVyOjpjYWNoZWRSZXNv
dXJjZUxvYWRlcigpCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIE1lZGlhUGxh
eWVyOjphZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrKQor
eworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKHRyYWNrKTsK
K30KKwordm9pZCBNZWRpYVBsYXllcjo6cmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlv
VHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlk
UmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXI6OmFkZFRleHRU
cmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHRyYWNrKQogewogICAgIGlm
ICghbV9tZWRpYVBsYXllckNsaWVudCkKQEAgLTExMTksNiArMTEzNSwyMiBAQCB2b2lkIE1lZGlh
UGxheWVyOjpyZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
PiB0cmFjaykKICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRpZFJlbW92ZVRl
eHRUcmFjayh0cmFjayk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2soUGFz
c1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxh
eWVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5t
ZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2sodHJhY2spOworfQorCit2b2lkIE1lZGlhUGxheWVy
OjpyZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHRyYWNrKQor
eworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKHRyYWNr
KTsKK30KKwogYm9vbCBNZWRpYVBsYXllcjo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVxdWlyZXNUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKaW5kZXggZTAwNjdhNTA4NTg5YmUwYTVmYjg4NDJjNTdjZDQ3YmQ4OWY5M2RjMi4u
NzE1YWExMWU2Njg1MDhhMDU0YjBmOTRlOWFiZjExNmNmMjFkZDZkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMiwxMSArMzIsMTMg
QEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByb3h5LmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0
UmVjdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMjE4LDggKzIyMCwxMiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxv
YWRlcigpIHsgcmV0dXJuIDA7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJh
Y2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgeyB9CisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlQXVkaW9UcmFj
ayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJh
Y2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hhbmdlZChjb25zdCBJbnRSZWN0JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYpIHsgfQpAQCAtNDUwLDggKzQ1NiwxMiBAQCBwdWJsaWM6
CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdm9pZCBhZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+KTsKICAgICB2b2lkIGFkZFRleHRUcmFjayhQYXNzUmVmUHRyPElu
YmFuZFRleHRUcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIGFkZFZpZGVvVHJhY2soUGFzc1JlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4pOworICAgIHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhQYXNzUmVm
UHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7CiAgICAgdm9pZCByZW1vdmVUZXh0VHJhY2soUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CisgICAgdm9pZCByZW1vdmVWaWRlb1RyYWNr
KFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KTsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIx
NTE2ODQzODYwMWJjNDQ1YWI0MTZjZDI2YTRlNjQwODViOWRiNDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9UcmFja1ByaXZhdGVfaAorI2Rl
ZmluZSBWaWRlb1RyYWNrUHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CisK
K2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5W
aWRlb1RyYWNrUHJpdmF0ZUNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3Zl
VmlkZW9UcmFja1ByaXZhdGUoVmlkZW9UcmFja1ByaXZhdGUqKSA9IDA7Cit9OworCitjbGFzcyBW
aWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvVHJhY2tQcml2YXRlPiB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGUpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlk
ZW9UcmFja1ByaXZhdGUoKSk7CisgICAgfQorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRl
KCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xp
ZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQq
IGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vs
ZWN0ZWQoYm9vbCBzZWxlY3RlZCkgeyBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7IH07CisgICAgdmly
dHVhbCBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQorCisgICAg
ZW51bSBLaW5kIHsgQWx0ZXJuYXRpdmUsIENhcHRpb25zLCBNYWluLCBTaWduLCBTdWJ0aXRsZXMs
IENvbW1lbnRhcnksIE5vbmUgfTsKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0
dXJuIE5vbmU7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7
IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgp
IGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgdmlydHVhbCBpbnQgdmlkZW9UcmFj
a0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCisgICAgdm9pZCB3aWxsQmVSZW1vdmVkKCkK
KyAgICB7CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT53aWxs
UmVtb3ZlVmlkZW9UcmFja1ByaXZhdGUodGhpcyk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAg
VmlkZW9UcmFja1ByaXZhdGUoKQorICAgICAgICA6IG1fc2VsZWN0ZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7
CisgICAgYm9vbCBtX3NlbGVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198891</attachid>
            <date>2013-04-19 09:07:36 -0700</date>
            <delta_ts>2013-04-19 13:39:15 -0700</delta_ts>
            <desc>Add UNUSED_PARAM to willRemove*TrackPrivate</desc>
            <filename>bug-113965-20130419100706.patch</filename>
            <type>text/plain</type>
            <size>132841</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3NTAyNmQxM2NiMzRk
YWNkMjVmMDUyOTc3YjJiZjc5Zjc5MzcxOC4uNWQ0OWU3MjU1MGEwNzQ4OTU2OWZhOWU1YWIwMWI2
YTRhMTFkZGIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTA0LTE2ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRp
b1RyYWNrTGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVv
VHJhY2tMaXN0IGV2ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbjogU2FtZS4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1
ZGlvVHJhY2tzIGFuZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQs
IGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRp
b1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZp
ZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRk
QXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBv
biByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZVZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1v
dmUgYXVkaW8gYW5kIHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2Vk
IG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQg
cmVsYXRlZCBmdW5jdGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBB
ZGQgYXVkaW9UcmFja3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNr
LgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0
bWwvdHJhY2svQXVkaW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuY3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNr
L0F1ZGlvVHJhY2tMaXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0Lmg6IEFkZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAg
ICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sg
YW5kIEluYmFuZFRleHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDog
U2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRU
cmFja0xpc3QKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisg
ICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpyZW1vdmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFj
aworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gYWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVt
b3ZlVmlkZW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNl
ZCBvbiBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVv
VHJhY2spOiBTYW1lCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaDogQWRkZWQsIGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0
LTE5ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAg
ICBbR1RLXVtBQ10gTWFuYWdlIGFjdG9yJ3MgY2hpbGRyZW4gYnkgdXNpbmcgY2x1dHRlcidzIG93
biB3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFlMzNjMWY3MTM4YzAxNWJkYzgzN2IxMTQx
Nzk4NTk2MWVjZGFkZWQuLjZjZjc0ZWIyYTM3MWZmNGUzZWJhMWI0NTI1Y2VmZTZjNGEwN2Y5MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNjg1LDE0ICsyNjg1LDIwIEBAIGVuZGlmICgpCiAK
IGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9JRExfRklM
RVMKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNr
L0F1ZGlvVHJhY2tMaXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5pZGwKICAg
ICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlTGlzdC5pZGwKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbAog
ICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCisgICAgICAgIGh0bWwvdHJhY2svVmlk
ZW9UcmFjay5pZGwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKICAgICAp
CiAKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgaHRtbC90cmFjay9B
dWRpb1RyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcAogICAg
ICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKICAgICAgICAgaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5jcHAKICAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBA
IC0yNzA2LDYgKzI3MTIsOCBAQCBpZiAoRU5BQkxFX1ZJREVPX1RSQUNLKQogICAgICAgICBodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKKyAgICAgICAgaHRt
bC90cmFjay9WaWRlb1RyYWNrLmNwcAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcAogCiAgICAgICAgIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA2YjdjZDA3ZWM3YjQ1Mzk0NTFlMDVjN2Y1NTc4ZWY5
NDhlMjRhOWQ3Li40YTRiYWRhMGMzYjU3YjE3OGI1MDI0ZTMwZDQxZTE2OWJjOWViNzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC00NzIsMTIgKzQ3MiwxNiBAQAogI2luY2x1ZGUg
IkpTVGV4dEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRNZXRyaWNzLmNwcCIKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmNwcCIKKyNpbmNsdWRlICJK
U0F1ZGlvVHJhY2tMaXN0LmNwcCIKICNpbmNsdWRlICJKU0hUTUxUcmFja0VsZW1lbnQuY3BwIgog
I2luY2x1ZGUgIkpTVGV4dFRyYWNrLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZS5jcHAi
CiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFj
a0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudC5jcHAiCisjaW5jbHVkZSAiSlNWaWRl
b1RyYWNrLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0LmNwcCIKICNlbmRpZgogI2lu
Y2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCiAjaW5jbHVkZSAiSlNUb3VjaC5jcHAiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwZDdhNjVkMjdlOTNiNjhkNzAwYmU4YmU2OTMwYzE5
MjI2NmJkMTQ4Li4xMGRlZDYyOGJlZjY3MGZiYmRhOThiYjczZmM5NjQwMDIwY2I4NzllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQzMSwxMSArNDMxLDE1IEBAIEJJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVu
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorICAgICQoV2Vi
Q29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlk
ZW9UcmFja0xpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggZGJlY2E0NzFhN2M2MWM3NmNmNDIwMTUxMDg2
ODU4NWY5NzcyNzI0Zi4uNzkwOWUxYWU1MWUzYTVjYmMxNDY5Y2Y1NzE0YTViZjU0NTE5YjMwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNjUyLDExICs2NTIsMTUgQEAgZW5hYmxl
PyhHQU1FUEFEKSB7CiAKIGVuYWJsZT8oVklERU9fVFJBQ0spIHsKICAgSURMX0JJTkRJTkdTICs9
IFwKKyAgICAkJFBXRC9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKyAgICAkJFBXRC9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJh
Y2suaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAogICAgICQk
UFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVHJhY2tFdmVudC5p
ZGwgXAorICAgICQkUFdEL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAgICQkUFdEL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCiB9CiAKIGVuYWJsZT8oTUVESUFfU09VUkNFKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA4MmQyZGQ0ODg5M2UxOGRhNTNiOTIw
OWFkMGNmZDQ3MGQ0MWVmNWY0Li44NjBmNjA1Mjg5MTg0Nzg0ODY3YWFiYjk1N2Y4ZGUyNmNmYjMx
Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTY1LDYgKzY1LDEwIEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlv
UHJvY2Vzc2luZ0V2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1NvdXJj
ZU5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Tb3VyY2VOb2RlLmgg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1RyYWNrLmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvVHJhY2suaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0F1ZGlvVHJhY2tMaXN0LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvVHJh
Y2tMaXN0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCYXJJbmZvLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0JhckluZm8uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0JlZm9yZUxvYWRFdmVudC5jcHAgXApAQCAtNzc3LDYgKzc4MSwxMCBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWYWxpZGl0eVN0YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJhY2suY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNWaWRlb1RyYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZpZGVv
VHJhY2suaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZpZGVvVHJhY2tMaXN0LmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZpZGVvVHJhY2tMaXN0LmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXYXZlU2hhcGVyTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXYXZlU2hhcGVyTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2F2
ZVRhYmxlLmNwcCBcCkBAIC0xNTg2LDExICsxNTk0LDE1IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0g
XAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwg
XAogCSQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5pZGwgXAorCSQoV2ViQ29yZSkv
aHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCisJJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRs
IFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkv
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5pZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5pZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJh
bWUuaWRsIFwKQEAgLTIzMjEsNiArMjMzMyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgXApAQCAtMjQ2Nyw3ICsyNDgx
LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RleHRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0
b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcCBcCkBAIC0y
NDc1LDYgKzI0ODgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
cmVlV2Fsa2VyQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1Ry
YWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIFwKQEAgLTM3NjcsNiAr
Mzc4MiwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZUlucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9BdWRpb1RyYWNrLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgXApAQCAtMzc4Nyw2ICszODA2LDEwIEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZpZGVvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcCBcCkBAIC01NDk3LDYgKzU1MjAsNyBAQCB3ZWJjb3JlX3BsYXRmb3Jt
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0luaXRpYWxpemVMb2dnaW5n
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZh
dGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9HcmFwaGlj
c0NvbnRleHQzRE5FT04uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL05FT05IZWxwZXJzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oIFwKQEAgLTU3NzcsNiArNTgwMSw3
IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHlwZXNldHRpbmdGZWF0dXJlcy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Vbml0QmV6aWVyLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAxM2Ew
ZmMxOTA2OGU2ZDhmMjI0Mjg3NmExZjIwZWYzZWE2MzMzMGVhLi4xODYzNWE2ZjQ2ZWUxODA1YzE5
NmVmNGQxZWE1OWM4MmNkN2FhMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM5NjcsOSArMzk2NywxMCBA
QCBlbmFibGU/KEpBVkFTQ1JJUFRfREVCVUdHRVIpIHsKIAogZW5hYmxlPyhWSURFT19UUkFDSykg
ewogICAgIEhFQURFUlMgKz0gXAotICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3Rv
bS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKICAgICAgICAgaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmggXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBc
CisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAgICAgICAgIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmggXAogICAgICAgICBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmggXAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5oIFwKQEAgLTM5ODAsMjAgKzM5
ODEsMzAgQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBodG1sL3RyYWNrL1RyYWNr
QmFzZS5oIFwKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmggXAogICAgICAgICBodG1s
L3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFjay5o
IFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwKICAgICAgICAgaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuaCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBc
CiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmggXAogICAgICAgICBsb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNr
UHJpdmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudC5oCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgg
XAogCiAgICAgU09VUkNFUyArPSBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50
Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5j
cHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKyAgICAg
ICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBodG1s
L0hUTUxUcmFja0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrLmNw
cCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIFwKICAgICAgICAgaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFjay5jcHAgXApAQCAt
NDAwNCw2ICs0MDE1LDggQEAgZW5hYmxlPyhWSURFT19UUkFDSykgewogICAgICAgICBodG1sL3Ry
YWNrL1RyYWNrQmFzZS5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwK
ICAgICAgICAgaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCisgICAgICAgIGh0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNw
cCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgXAogICAgICAgICBodG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2Vu
aXplci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IGQ0NTE2MmIzNjRlN2YzZmU0NmFlOTkwNjk5
NjBhNmZjNGZjNGExMDQuLmU4ZDQzMzMwODQyYzQyYWRlM2ZjZjBjZjBlMDFhNDA4NjM1NTUwOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Vc2VKU0MuY21ha2UKQEAgLTIxOSwxMSArMjE5LDE1IEBAIGVuZGlmICgpCiAKIGlmIChF
TkFCTEVfVklERU9fVFJBQ0spCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAg
ICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3Mv
anMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tDdWVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9t
LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
VHJhY2tFdmVudEN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3Vz
dG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcAog
ICAgICkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggMzEyZTA2NjM3MmE1MjZlNjdkZjMwY2VmZWYzZDMxOTcyMWUzMzQxZi4u
MzBlMzNjNDdmY2ZlNjlmYjA1YTFmNjUyN2M0YmZjYmRiOGVlNWRmMiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5OTAyLDYgKzI5OTAyLDEw
IEBACiAJCQkJTmFtZT0iZ3JhcGhpY3MiCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQXVkaW9UcmFja1ByaXZhdGUuaCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEJpdG1hcEltYWdlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTMwMzc4LDYg
KzMwMzgyLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xWaWRlb1RyYWNrUHJpdmF0ZS5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcV2luZFJ1bGUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1NzQ2LDYgKzY1
NzU0LDIyIEBACiAJCQkJTmFtZT0idHJhY2siCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFx0cmFja1xBdWRpb1RyYWNrLmNwcCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9UcmFj
ay5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFx0cmFja1xBdWRpb1RyYWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXHRyYWNrXEluYmFuZFRleHRUcmFjay5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBA
IC02NTgyNiw2ICs2NTg1MCwyMiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xWaWRlb1RyYWNrLmNwcCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tc
VmlkZW9UcmFjay5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFx0cmFja1xWaWRlb1RyYWNrTGlzdC5jcHAiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVv
VHJhY2tMaXN0LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXFdlYlZUVEVsZW1lbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGY2NzYzZTA4NGIyOTNmMTQ0MWIxMDU3ZGE4NGQ3Nzc5NjU2NzMzYjguLmNjMDA3
MGFlYmM1ZTk2MDBiNjEyN2FmODliOGZlMmVmYjA3MDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMTMsOCArNTExMywz
MCBAQAogCQlCQ0ZFMkYxMjBDMUI1ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZFMkYxMDBDMUI1ODM3MDAyMDIz
NUYgLyogSlNSZWN0LmggKi87IH07CiAJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5n
dGhCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RkY2NDhGMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0ZGNjQ5MjBFQUQxNUMyMDBDMUQ2Rjcg
LyogTGVuZ3RoU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGRjY0OTAwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCRTZERjcwQjE3MUNBMkM1
MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwICovOyB9OworCQlCRTZERjcwRDE3MUNBMkM1MDBERDUyQjggLyog
SlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwQTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNr
TGlzdEN1c3RvbS5jcHAgKi87IH07CisJCUJFNkRGNzExMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1
ZGlvVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkU2REY3MEUxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5j
cHAgKi87IH07CisJCUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJFNkRGNzEwMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAq
LzsgfTsKIAkJQkU4OEUwQzExNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQkYxNzE1
Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovOyB9OwogCQlCRTg4RTBDMjE3MTVD
RTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlz
dEJhc2UuaCAqLzsgfTsKKwkJQkU4OEUwRDgxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUw
Q0MxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwICovOyB9OworCQlCRTg4RTBEOTE3
MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQ0QxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJh
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlC
RTg4RTBEQjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwQ0YxNzE1RDJBMjAwNjU4
RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJQkU4OEUwREMxNzE1RDJBMjAwNjU4
RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3Qu
aCAqLzsgfTsKKwkJQkU4OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDIxNzE1
RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovOyB9OworCQlCRTg4RTBERjE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkU4OEUwRDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCRTg4RTBF
MTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBENjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLzsg
fTsKKwkJQkU4RUYwNDIxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjAzRTE3MUM4RkY5
MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNDMxNzFDOEZGOTAw
OUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkU4RUYwM0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5o
ICovOyB9OworCQlCRThFRjA0NDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0
MDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFOEVG
MDQ1MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0MTE3MUM4RkY5MDA5QjQ4QzMg
LyogSlNBdWRpb1RyYWNrTGlzdC5oICovOyB9OworCQlCRThFRjA0QTE3MUM5MDE0MDA5QjQ4QzMg
LyogSlNWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJFOEVGMDQ2MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwICov
OyB9OworCQlCRThFRjA0QjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NzE3MUM5MDE0
MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggKi87IH07CisJCUJFOEVGMDRDMTcxQzkwMTQwMDlC
NDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDQ4MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJh
Y2tMaXN0LmNwcCAqLzsgfTsKKwkJQkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9U
cmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJFOEVGMDQ5MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJ
CUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRTkxNzE1REQwOTAw
QzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVv
VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMDQ2RTFBQzEy
MDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyog
TG9jYWxpemVkU3RyaW5ncy5jcHAgKi87IH07CiAJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAv
KiBDb2RlR2VuZXJhdG9yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0gKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBDMDU0Q0Mx
MTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8q
IGdlbmVyYXRlLWJpbmRpbmdzLnBsICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC02MzQ5LDcgKzYzNzEsNiBAQAogCQkwN0NFNzdENDE2NzEyQTZBMDBD
NTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTExNkIwMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Rl
eHRUcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTExNzA2
MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3RTM4QTBCMTQ4RkNGMEMwMDZFMUVDQyAvKiBKU1Rl
eHRUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRU
cmFja0N1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODA2RTU3OTEyODkz
MDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODBFNDkyMTEy
NTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGlu
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIyMTI1NUYzQkQwMEVG
Q0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMTgzNiwxMyArMTE4NTcsMzkgQEAKIAkJQkNGRTJGMTAwQzFC
NTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRkY2NDhGMEVBRDE1
QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTGVuZ3RoQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRkY2NDkwMEVB
RDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExlbmd0aFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU2REY3
MDgxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCRTZERjcwQTE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkU2REY3MEUxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvVHJhY2tDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjgg
LyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkU4NTVGN0YwNzAxRTgzNTAwMjM5NzY5IC8qIFdlYkNvcmVWaWV3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVW
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQlCRTg1NjA1MTA3MDFGOTExMDAyMzk3NjkgLyogV2ViQ29yZVZpZXcubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViQ29yZVZp
ZXcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCUJFODhFMEJGMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYWNrTGlzdEJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTg4RTBDMDE3MTVDRTI2MDA2NThEOTggLyogVHJh
Y2tMaXN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFja0xpc3RC
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENDMTcxNUQyQTIwMDY1
OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1ZGlvVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBD
RDE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBdWRpb1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJF
ODhFMENFMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdWRpb1RyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4
OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDAxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQxMTcxNUQyQTIwMDY1OEQ5OCAv
KiBBdWRpb1RyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9UcmFja0xp
c3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBEMjE3MTVEMkEyMDA2
NThEOTggLyogVmlkZW9UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWaWRlb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUw
RDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlkZW9UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
RTg4RTBENDE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gVmlkZW9UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJF
ODhFMEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQ2MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENzE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFja0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvVHJhY2tM
aXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwM0UxNzFDOEZGOTAw
OUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0F1ZGlvVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
RThFRjAzRjE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCRThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvVHJhY2tMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDExNzFDOEZGOTAwOUI0OEMz
IC8qIEpTQXVkaW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNBdWRpb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0
NjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmlkZW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJFOEVGMDQ3MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWaWRlb1RyYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJFOEVGMDQ4MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJh
Y2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmlkZW9U
cmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0OTE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1ZpZGVvVHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJFOTFGQzhCMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU5MUZD
OEMwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvc2l0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUJFOTgzRDk1
MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUtleWJvYXJkVUlN
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OworCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkVGMjlFRUExNzE1REQwOTAwQzRCNEM5IC8qIFZp
ZGVvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVv
VHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwNDZFMUFCMTIw
OEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsaXplZFN0cmluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMERGQzg2RjBEQjY4NDFBMDAzRUFFN0MgLyogSlNDb25zb2xlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29uc29sZUN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwRjJBNDNGMTM4NjlBMjgwMDY2
QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gcHJlcHJvY2Vzc29yLnBt
OyBwYXRoID0gc2NyaXB0cy9wcmVwcm9jZXNzb3IucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjY3MCw2ICsxNjcxNywxMCBAQAogCQkJCTQ5RUVDRUYzMTA1MDcwQzQwMDA5OUZB
QiAvKiBKU0FycmF5QnVmZmVyLmggKi8sCiAJCQkJNDlFRUNGMTkxMDUwNzJGMzAwMDk5RkFCIC8q
IEpTQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKIAkJCQk0OUVFQ0YxQTEwNTA3MkYzMDAwOTlGQUIg
LyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLywKKwkJCQlCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMg
LyogSlNBdWRpb1RyYWNrLmNwcCAqLywKKwkJCQlCRThFRjAzRjE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrLmggKi8sCisJCQkJQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVk
aW9UcmFja0xpc3QuY3BwICovLAorCQkJCUJFOEVGMDQxMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1
ZGlvVHJhY2tMaXN0LmggKi8sCiAJCQkJNjVERjMyMzMwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2Fu
dmFzR3JhZGllbnQuY3BwICovLAogCQkJCTY1REYzMjM0MDlEMURFNjUwMDBCRTMyNSAvKiBKU0Nh
bnZhc0dyYWRpZW50LmggKi8sCiAJCQkJNjVERjMyMzUwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2Fu
dmFzUGF0dGVybi5jcHAgKi8sCkBAIC0xNjkwNCw2ICsxNjk1NSwxMCBAQAogCQkJCTkxMDg5RDMw
MTRDMzM1Q0QwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJMTVDNzcw
OTIxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgKi8sCiAJCQkJMTVDNzcw
OTExMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oICovLAorCQkJCUJFOEVGMDQ2
MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwICovLAorCQkJCUJFOEVGMDQ3MTcx
QzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suaCAqLywKKwkJCQlCRThFRjA0ODE3MUM5MDE0
MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi8sCisJCQkJQkU4RUYwNDkxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCAqLywKIAkJCQk5N0U5RUM4QjE1REM0OTJG
MDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3BwICovLAogCQkJCTk3RTlFQzhDMTVEQzQ5MkYw
MDRGMkU3MSAvKiBKU1ZvaWRDYWxsYmFjay5oICovLAogCQkJCUE3RDIwRjYwMTA3RjQwNjkwMEE4
MDM5MiAvKiBKU1dlYkdMQWN0aXZlSW5mby5jcHAgKi8sCkBAIC0xNzY3Miw2ICsxNzcyNywxOCBA
QAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAv
KiBBdWRpb1RyYWNrLmNwcCAqLywKKwkJCQlCRTg4RTBDRDE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFjay5oICovLAorCQkJCUJFODhFMENFMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
LmlkbCAqLywKKwkJCQlCRTg4RTBDRjE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3Qu
Y3BwICovLAorCQkJCUJFODhFMEQwMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5o
ICovLAorCQkJCUJFODhFMEQxMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5pZGwg
Ki8sCisJCQkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovLAor
CQkJCUJFODhFMEQzMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi8sCisJCQkJQkU4
OEUwRDQxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaWRsICovLAorCQkJCUJFODhFMEQ1
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi8sCisJCQkJQkU4OEUwRDYx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi8sCisJCQkJQkU4OEUwRDcxNzE1
RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLywKIAkJCQlCRTg4RTBCRjE3MTVD
RTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi8sCiAJCQkJQkU4OEUwQzAxNzE1Q0Uy
NjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLywKIAkJCQkwNzk0MTc4RjE2NkU4NTVGMDA5
NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmNwcCAqLywKQEAgLTE4MzI5LDYgKzE4Mzk2LDggQEAK
IAkJCQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKIAkJCQk0OTA3
MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovLAogCQkJCTQ5
MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovLAorCQkJCUJF
RjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovLAorCQkJCUJF
RjI5RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovLAogCQkJCUE4
OTk0MzI3MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8sCiAJCQkJQTg5OTQz
MjYwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmggKi8sCiAJCQkJQjI3NTM1MzgwQjA1
MzgxNDAwMkNFNjRGIC8qIENvbG9yLmNwcCAqLywKQEAgLTE4ODExLDYgKzE4ODgwLDggQEAKIAkJ
CQlGREVBQUFFRjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0
b20uY3BwICovLAogCQkJCUNEREU2OTFEMTcxREY4OTEwMEE0NEQ4OSAvKiBKU0F1ZGlvQnVmZmVy
Q3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGMDEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0Nv
bnRleHRDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzBFMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1
ZGlvVHJhY2tDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzEwMTcxQ0EyREEwMERENTJCOCAvKiBK
U0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQlGRDhBQTYzQjE2OTUxNDhFMDBEMkVB
NjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk4OTMxREU1QTE0QzQ0
QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QjEwNTE5NzE5
MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLApAQCAt
MTg5MTQsMTIgKzE4OTg1LDEzIEBACiAJCQkJMUEyQzQwQUEwREVCNTVBQTAwNUFGMTlFIC8qIEpT
VGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJMDdFMTE3MDYxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4
dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLywKIAkJCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyog
SlNUZXh0VHJhY2tDdXN0b20uY3BwICovLAotCQkJCTA3RTM4QTBCMTQ4RkNGMEMwMDZFMUVDQyAv
KiBKU1RleHRUcmFja0N1c3RvbS5oICovLAogCQkJCTA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAv
KiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovLAogCQkJCTA3MDMzNEU4MTQ1QTFGMzUwMDhE
OEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQkwNzg0NjM4NDE0NUIxQjhFMDBBNThE
RjEgLyogSlNUcmFja0N1c3RvbS5oICovLAogCQkJCTA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAv
KiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTUxNkJCNzkyMENFOTFFNjgwMDUxMkY3
OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzA4MTcxQ0EyQzUwMERE
NTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzBBMTcxQ0EyQzUw
MERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QzEw
NTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAog
CQkJCUUxQUQxNEM0MTI5NzM1NDkwMEFDQTk4OSAvKiBKU1dlYktpdENTU0tleWZyYW1lUnVsZUN1
c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0QjQxMjk3MzRDQTAwQUNBOTg5IC8qIEpTV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZUN1c3RvbS5jcHAgKi8sCkBAIC0yMDk5NCw2ICsyMTA2Niw3IEBACiAJCQkJ
RkQzMTYwODkxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZENjJGNTJFMTQ1ODk4RDgwMDk0QjBFRCAvKiBBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREIwNTJFMDE1NjFBNDJDMDBCNTAwRDYg
LyogQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUJFRjI5RUVCMTcx
NUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwOEIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3RUU2ODQ2MDEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DRi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzODU2LDYgKzIzOTI5LDcgQEAKIAkJ
CQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwQUYxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9u
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBW
aWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAw
OUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZGRjlB
RTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzMwOUUyMDA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJsZVBvc2l0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTI0MDQyLDYgKzI0MTE2LDE0IEBACiAJCQkJRTE1MjU1MTUxNkZEMjM1
MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5IC8qIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBDMjE3MTVDRTI2
MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwRDkx
NzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhF
MERDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICov
LAorCQkJCUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkU4RUYwNDUxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9U
cmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDRCMTcxQzkwMTQwMDlCNDhDMyAv
KiBKU1ZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDREMTcxQzkwMTQwMDlC
NDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2OTkyLDYgKzI3
MDc0LDE4IEBACiAJCQkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUx
QjUzMzQ3MTcxN0QwQTEwMEYyMDVGOSAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBEODE3MTVEMkEyMDA2NThEOTggLyog
QXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTg4RTBEQjE3MTVEMkEyMDA2NThE
OTggLyogQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4OEUwREUxNzE1
RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4OEUw
RTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUJFOEVGMDQyMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQkU4RUYwNDQxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4RUYwNEExNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlk
ZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRThFRjA0QzE3MUM5MDE0MDA5QjQ4QzMg
LyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcwQjE3MUNB
MkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUJFNkRGNzBEMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJFNkRGNzExMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJh
Y2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU2REY3MTMxNzFDQTJEQTAwREQ1MkI4
IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCBmMzIyZDY0Y2M3
ZDE3YTdmYjc1NDAzZWFiZDIxOWJmZDNlZWQ5MTk3Li5lZWVlZWJhMTBhMzJlNjVhMjk5YzJjYzBj
Yzc4MmY0MDhjZTMxNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KQEAgLTQzMywxOCArNDMzLDI0IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0
X2hfYXBpICs9IFwKIAogaWYgRU5BQkxFX1ZJREVPCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2Fw
aSArPSBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01BdWRpb1RyYWNrLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NQXVkaW9UcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50LmggXAogCSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVu
dC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERP
TVRleHRUcmFjay5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVRleHRUcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWUuaCBcCiAJJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmggXAot
CSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tF
dmVudC5oCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRE
T01UcmFja0V2ZW50LmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NVmlkZW9UcmFjay5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmgKIHdlYmtpdGd0a19nZG9tX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1M
QXVkaW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUhU
TUxBdWRpb0VsZW1lbnRQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01IVE1MVmlkZW9FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTUhUTUxWaWRlb0VsZW1lbnRQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01BdWRpb1RyYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9t
L1dlYktpdERPTVRleHRUcmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01UZXh0VHJhY2tQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01UZXh0VHJhY2tMaXN0LmNwcCBcCkBAIC00NTMsNiArNDU5LDggQEAgd2Via2l0Z3RrX2dk
b21fYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERP
TVRleHRUcmFja0N1ZVByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktp
dERPTVRleHRUcmFja0N1ZUxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVmlkZW9UcmFja0xpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NVHJhY2tFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01UcmFja0V2ZW50UHJpdmF0ZS5oCiBlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI2MmYxYjUyMzlk
OTM2NGM1YTJjYjE3OWM5NjIwMTkyZThkNTZiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5oIgorCisjaW5jbHVkZSAiSlNUcmFja0N1c3Rv
bS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Zv
aWQgSlNBdWRpb1RyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNBdWRpb1RyYWNrKiBqc0F1ZGlvVHJhY2sgPSBqc0Nhc3Q8SlNB
dWRpb1RyYWNrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlv
VHJhY2ssICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5n
RmxhZyk7CisgICAgQVNTRVJUKGpzQXVkaW9UcmFjay0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzQXVk
aW9UcmFjaywgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrKiBhdWRpb1RyYWNrID0gc3RhdGlj
X2Nhc3Q8QXVkaW9UcmFjayo+KGpzQXVkaW9UcmFjay0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3Qocm9vdChhdWRpb1RyYWNrKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1
ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9UcmFja0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNjE2YjBkNGI4YWE5Mjk0MjJmMDVh
ZDc1NDkzMjQwOWFhMTZhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lu
Y2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTQXVkaW9UcmFja0xpc3RPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0F1ZGlvVHJhY2tMaXN0KiBqc0F1
ZGlvVHJhY2tMaXN0ID0ganNDYXN0PEpTQXVkaW9UcmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXND
ZWxsKCkpOworICAgIEF1ZGlvVHJhY2tMaXN0KiBhdWRpb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0
PEF1ZGlvVHJhY2tMaXN0Kj4oanNBdWRpb1RyYWNrTGlzdC0+aW1wbCgpKTsKKworICAgIC8vIElm
IHRoZSBsaXN0IGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlzIHJlYWNo
YWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtp
bmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmIChhdWRpb1RyYWNrTGlzdC0+aXNGaXJp
bmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRo
ZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGll
cywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIWF1ZGlvVHJhY2tMaXN0LT5oYXNFdmVu
dExpc3RlbmVycygpICYmICFqc0F1ZGlvVHJhY2tMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUg
bWVkaWEgZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNv
bnRhaW5zT3BhcXVlUm9vdChyb290KGF1ZGlvVHJhY2tMaXN0LT5vd25lcigpKSk7Cit9CisKK3Zv
aWQgSlNBdWRpb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFja0xpc3QqIGpzQXVkaW9UcmFja0xpc3Qg
PSBqc0Nhc3Q8SlNBdWRpb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoanNBdWRpb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQo
U3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNBdWRpb1RyYWNrTGlzdC0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKGpzQXVkaW9UcmFja0xpc3QsIHZpc2l0b3IpOworCisgICAgQXVk
aW9UcmFja0xpc3QqIGF1ZGlvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja0xpc3Qq
Pihqc0F1ZGlvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChy
b290KGF1ZGlvVHJhY2tMaXN0LT5vd25lcigpKSk7CisgICAgYXVkaW9UcmFja0xpc3QtPnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCmluZGV4IDJiYTEwZjU1NmU4YjQ4MDJlOGJhOTY2ZmQxZDNjZTEyNDMxMjQwNTYu
LjUxYWRmMzVlMzQ5Zjg0ZWRhNmYwM2E3YTQ5MzllYzNlZGM0NGVkNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMzQsNiAr
MzQsOCBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNBdHRyQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJK
U0F1ZGlvVHJhY2tDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTQXVkaW9UcmFja0xpc3RDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTQmxvYkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDREFUQVNlY3Rp
b25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ1NTRm9udEZhY2VSdWxlQ3VzdG9tLmNwcCIKQEAg
LTE0Nyw2ICsxNDksOCBAQAogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTVHJhY2tFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUcmVlV2Fsa2VyQ3VzdG9tLmNw
cCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9U
cmFja0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDVkZDlkY2E3NjBh
ODI3NmM0NGNlMTBjNWE5ODc2MGQ2ZGQ3OTNiMTguLmVlOTk3YWEzN2VjMjY0ZWYyYjUxNWQ5ODhk
M2ZmYmFmNzBiZTgzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKQEAgLTI4LDcgKzI4LDggQEAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZS5oIgotI2luY2x1ZGUgIkpTVGV4
dFRyYWNrQ3VzdG9tLmgiCisjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5oIgorI2luY2x1ZGUgIlRl
eHRUcmFjay5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggNWQ2NDEyNDY2NWE3MThl
ZDBkY2VlZjM0NDUwODM0YTk0ZTY1ZGM1Yi4uZjk1NTI5M2E3ODkwZTBkZDA5ZWZhNjYyN2I1YWM4
Y2I5ZGFlMTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrQ3VzdG9tLmNwcApAQCAtMjYsMTAgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLSNpbmNsdWRlICJKU1RleHRUcmFja0N1c3RvbS5oIgot
CiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suaCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3Qu
aCIKKyNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9t
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmZkZTI4OTMzODQ3MjliNDIzMjljYmY4Njc2NDcx
MmM3NDA3N2RiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSlNUZXh0VHJhY2tDdXN0
b21faAotI2RlZmluZSBKU1RleHRUcmFja0N1c3RvbV9oCi0KLSNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0jaW5jbHVkZSAiSlNUZXh0VHJhY2suaCIKLQotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKLSNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNOb2RlQ3Vz
dG9tLmgiCi0jaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKLQotdXNpbmcgbmFtZXNwYWNl
IEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1pbmxpbmUgdm9pZCogcm9vdChUZXh0VHJh
Y2sqIHRyYWNrKQotewotICAgIC8vIElmIHRoaXMgdHJhY2sgY29ycmVzcG9uZHMgdG8gYSA8dHJh
Y2s+IGVsZW1lbnQsIHJldHVybiB0aGF0IGVsZW1lbnQncyByb290LgotICAgIGlmICh0cmFjay0+
dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsKLSAgICAgICAgaWYgKEhU
TUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCA9IHN0YXRpY19jYXN0PExvYWRhYmxlVGV4dFRy
YWNrKj4odHJhY2spLT50cmFja0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiByb290KHRy
YWNrRWxlbWVudCk7Ci0gICAgfQotCi0gICAgLy8gTm8sIHJldHVybiB0aGUgbWVkaWEgZWxlbWVu
dCdzIHJvb3QgaWYgaXQgaGFzIG9uZS4KLSAgICBpZiAodHJhY2stPm1lZGlhRWxlbWVudCgpKQot
ICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+bWVkaWFFbGVtZW50KCkpOwotCi0gICAgLy8gTm8g
dHJhY2sgZWxlbWVudCBhbmQgbm8gbWVkaWEgZWxlbWVudCwgcmV0dXJuIHRoZSB0ZXh0IHRyYWNr
LgotICAgIHJldHVybiB0cmFjazsKLX0KLQotfQotCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcAppbmRleCA3Yjk3OTQ1Y2ExMGE0
MWRmMGNkZmI0N2MxZjZjMTc3NmUwMTYwYmFiLi43OWQ3YjkzZGNiZmE4Y2MxZGIxNzhlOTI4M2Qy
OGEwZDU2MGUxMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Ry
YWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3Vz
dG9tLmNwcApAQCAtMjksNyArMjksOSBAQAogCiAjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5oIgog
CisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrLmgiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suaCIKKyNp
bmNsdWRlICJKU1ZpZGVvVHJhY2suaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNjYs
OSArNjgsMTEgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRyYWNrQmEKICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIAogICAgIGNhc2UgVHJhY2tCYXNlOjpBdWRpb1RyYWNrOgorICAgICAgICByZXR1cm4gQ1JF
QVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgQXVkaW9UcmFjaywgdHJhY2spOwor
ICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHJhY2tCYXNlOjpWaWRlb1RyYWNrOgotICAgICAg
ICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuIHVudGlsIFZpZGVvVHJhY2sgYW5kIEF1ZGlvVHJh
Y2sgYXJlIGltcGxlbWVudGVkLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFZpZGVvVHJh
Y2ssIHRyYWNrKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRyYWNrQmFzZTo6VGV4dFRy
YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3Rv
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCmluZGV4IDE2
NTM0MGRhMGE3ZWZlY2Y2NGJiZTA4MzRjODMwZDMxZjBkNjFlNjkuLjZlMjRhMDkxNWRjODlkMjZh
NmVkMDZjZGFmMDQ5OTlkYmI5Mjc3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVHJhY2tDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKIAorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlICJKU05vZGVDdXN0b20uaCIKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzYsNiArMzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogVHJh
Y2tCYXNlKiB0b1RyYWNrKEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVHJhY2tCYXNlKik7CiAKK2lubGluZSB2b2lk
KiByb290KFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgaWYgKHRyYWNrLT5lbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiByb290KHRyYWNrLT5lbGVtZW50KCkpOworICAgIHJldHVybiB0cmFjazsK
K30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVmlkZW9UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zp
ZGVvVHJhY2tDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4MTg0OTMwNmUwZDJlOGI1YTg5MzBjOWQ2
MmQ0ZmZmZDhhYmU3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJKU1ZpZGVvVHJhY2suaCIKKworI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTVmlkZW9UcmFj
azo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTVmlkZW9UcmFjayoganNWaWRlb1RyYWNrID0ganNDYXN0PEpTVmlkZW9UcmFjayo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrLCAmc19pbmZv
KTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFT
U0VSVChqc1ZpZGVvVHJhY2stPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihqc1ZpZGVvVHJhY2ssIHZpc2l0
b3IpOworCisgICAgVmlkZW9UcmFjayogdmlkZW9UcmFjayA9IHN0YXRpY19jYXN0PFZpZGVvVHJh
Y2sqPihqc1ZpZGVvVHJhY2stPmltcGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJv
b3QodmlkZW9UcmFjaykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3Vz
dG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYmQ5NjcxMGQ2MDkzMTBjNzg3MmE3ZGY0M2I2Y2RiNDMzNWIx
ZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRl
b1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1ZpZGVv
VHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
SlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBKU1ZpZGVvVHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNWaWRlb1RyYWNrTGlzdCoganNWaWRlb1RyYWNrTGlzdCA9
IGpzQ2FzdDxKU1ZpZGVvVHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBW
aWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrTGlz
dCo+KGpzVmlkZW9UcmFja0xpc3QtPmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBpcyBm
aXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQor
ICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50
IGxpc3RlbmVycy4KKyAgICBpZiAodmlkZW9UcmFja0xpc3QtPmlzRmlyaW5nRXZlbnRMaXN0ZW5l
cnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiB0aGUgbGlzdCBoYXMgbm8g
ZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCBy
ZWFjaGFibGUuCisgICAgaWYgKCF2aWRlb1RyYWNrTGlzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoKSAm
JiAhanNWaWRlb1RyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVsZW1lbnQg
cGFyZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJv
b3Qocm9vdCh2aWRlb1RyYWNrTGlzdC0+b3duZXIoKSkpOworfQorCit2b2lkIEpTVmlkZW9UcmFj
a0xpc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBKU1ZpZGVvVHJhY2tMaXN0KiBqc1ZpZGVvVHJhY2tMaXN0ID0ganNDYXN0PEpTVmlk
ZW9UcmFja0xpc3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlk
ZW9UcmFja0xpc3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRT
ZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKGpzVmlkZW9UcmFja0xpc3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbihqc1ZpZGVvVHJhY2tMaXN0LCB2aXNpdG9yKTsKKworICAgIFZpZGVvVHJhY2tMaXN0KiB2
aWRlb1RyYWNrTGlzdCA9IHN0YXRpY19jYXN0PFZpZGVvVHJhY2tMaXN0Kj4oanNWaWRlb1RyYWNr
TGlzdC0+aW1wbCgpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh2aWRlb1RyYWNr
TGlzdC0+b3duZXIoKSkpOworICAgIHZpZGVvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRMaXN0ZW5l
cnModmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDgyNzc3YTg2ZWVmZGZiZWJlNjg5YzliOTIzMzY4ODI5
NTgzOTFjM2UuLmVhMDc5OWJiNWQwZDczNGMwMWY0NjhhNjNlMWQ1YjIyMDVjZmI0YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBBdWRpb0NvbnRleHQ7CisgICAgY2xhc3MgQXVkaW9UcmFja0xpc3Q7
CiAgICAgY2xhc3MgRGVkaWNhdGVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogICAgIGNsYXNzIERPTVdpbmRvdzsKQEAgLTY3LDYgKzY4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNvdXJjZUJ1ZmZlckxpc3Q7CiAgICAgY2xhc3MgVGV4
dFRyYWNrOwogICAgIGNsYXNzIFRleHRUcmFja0N1ZTsKKyAgICBjbGFzcyBWaWRlb1RyYWNrTGlz
dDsKICAgICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogICAg
IGNsYXNzIFdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmlu
ZGV4IDQ3NmQxYjUzZjE0NWJiMjczNDk4OTkzZjM5ZjFkMWNiYWE2MjM1ODMuLjhlYTViN2IwM2Fi
YWNhMDJmMjVmNDhhMmVkNTU5OTI2M2VhNDcwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMSw2ICsxLDcgQEAKIG5hbWVzcGFjZT0iRXZlbnRUYXJnZXQi
CiAKIEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0F1ZGlvVHJhY2tMaXN0IGNv
bmRpdGlvbmFsPVZJREVPX1RSQUNLCiBCYXR0ZXJ5TWFuYWdlciBjb25kaXRpb25hbD1CQVRURVJZ
X1NUQVRVUwogRGVkaWNhdGVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBET01B
cHBsaWNhdGlvbkNhY2hlCkBAIC0zNyw2ICszOCw3IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25k
aXRpb25hbD1TVkcKIFRleHRUcmFjayBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNr
Q3VlIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLCitWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogV2ViS2l0
TmFtZWRGbG93CiBXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBjb25k
aXRpb25hbD1XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCAxNDYwZjRjNDlhNThjNjQ0ZjJkNmNmMDE3YTU0ZGQyYjY2OGY3ZDkyLi5kZWM0ODNhM2Y1
NGYzYWZlN2RmZDdjYzcxYWEyNjM0NGFhNGM0YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTk4LDYgKzk4LDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiQXVk
aW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCiAj
aW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFjay5o
IgpAQCAtMTA1LDYgKzEwNyw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0
LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrUHJp
dmF0ZS5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMjk2LDcgKzMwMCw5
IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX3Byb2Nlc3NpbmdQcmVmZXJlbmNl
Q2hhbmdlKGZhbHNlKQogICAgICwgbV9sYXN0VGV4dFRyYWNrVXBkYXRlVGltZSgtMSkKICAgICAs
IG1fY2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYykK
KyAgICAsIG1fYXVkaW9UcmFja3MoMCkKICAgICAsIG1fdGV4dFRyYWNrcygwKQorICAgICwgbV92
aWRlb1RyYWNrcygwKQogICAgICwgbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUoMCkKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJfQVVESU8pCkBAIC0zMzAsMTIgKzMzNiwyMiBAQCBIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZv
clByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgaWYgKG1fYXVkaW9UcmFja3MpIHsKKyAg
ICAgICAgbV9hdWRpb1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1f
YXVkaW9UcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogICAgIGlmIChtX3Rl
eHRUcmFja3MpCiAgICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOwogICAgIGlmICht
X3RleHRUcmFja3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRy
YWNrcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+
Y2xlYXJDbGllbnQoKTsKICAgICB9CisgICAgaWYgKG1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAg
bV92aWRlb1RyYWNrcy0+Y2xlYXJPd25lcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV92aWRlb1RyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdmlkZW9U
cmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXIpCkBAIC0xMzUzLDYgKzEzNjksMTEgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAg
IH0KIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQo
QXVkaW9UcmFjayopCit7CisgICAgLy8gV2Ugd2lsbCB3YW50IHRvIGNoYW5nZSB0aGUgbWVkaWEg
Y29udHJvbHMgaGVyZSBvbmNlIHRoZXkgZXhpc3QKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIGlmICh0cmFj
ay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1lbnQpIHsKQEAgLTEzOTIsNiAr
MTQxMywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRl
eHRUcmFjayogdHJhY2spCiAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGlt
ZSgpKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFu
Z2VkKFZpZGVvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwgd2FudCB0byBjaGFuZ2UgdGhlIG1l
ZGlhIGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKICAgICBpZiAo
dHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIHRyYWNrLT5r
aW5kKCkgIT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9
PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCkBAIC0yNzk2LDYgKzI4MjIsMTQgQEAgZG91
YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRk
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjazo6Y3JlYXRl
KHRoaXMsIHBycFRyYWNrKSk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBU
cmFjaykKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCkBAIC0yODI4LDI0ICsyODYyLDMwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2CiAgICAgLy8gOS4gRmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFkZHRyYWNrLCB0aGF0
IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhl
IFRyYWNrRXZlbnQKICAgICAvLyBpbnRlcmZhY2UsIHdpdGggdGhlIHRyYWNrIGF0dHJpYnV0ZSBp
bml0aWFsaXplZCB0byB0aGUgdGV4dCB0cmFjaydzIFRleHRUcmFjayBvYmplY3QsIGF0IHRoZSBt
ZWRpYSBlbGVtZW50J3MKICAgICAvLyB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSdzIFRleHRUcmFja0xp
c3Qgb2JqZWN0LgotICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIGFkZFRl
eHRUcmFjayh0ZXh0VHJhY2sucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGU+IHBycFRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7
CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAg
ICAgIHJldHVybjsKIAotICAgIC8vIFRoaXMgY2FzdCBpcyBzYWZlIGJlY2F1c2Ugd2UgY3JlYXRl
ZCB0aGUgSW5iYW5kVGV4dFRyYWNrIHdpdGggdGhlIEluYmFuZFRleHRUcmFja1ByaXZhdGUKLSAg
ICAvLyBwYXNzZWQgdG8gbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2suCi0gICAgUmVmUHRyPElu
YmFuZFRleHRUcmFjaz4gdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8SW5iYW5kVGV4dFRyYWNrKj4o
cHJwVHJhY2stPmNsaWVudCgpKTsKLSAgICBpZiAoIXRleHRUcmFjaykKLSAgICAgICAgcmV0dXJu
OworICAgIGFkZFZpZGVvVHJhY2soVmlkZW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKSk7
Cit9CiAKLSAgICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQoreworICAgIHBycFRyYWNrLT53aWxsQmVSZW1vdmVk
KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0
VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAg
ICBwcnBUcmFjay0+d2lsbEJlUmVtb3ZlZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPiBwcnBUcmFjaykKK3sKKyAgICBwcnBUcmFjay0+d2lsbEJlUmVtb3ZlZCgpOwogfQogCiAj
aWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKQEAgLTI5MjQsMTUgKzI5NjQsNDUgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCkKICNlbmRp
ZgogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhUZXh0VHJhY2sqIHRy
YWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVk
aW9UcmFjaz4gdHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdWRpb1RyYWNr
cygpLT5hcHBlbmQodHJhY2spOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRU
cmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCiB7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKICAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0cmFjayk7Ci0gICAgCisKICAgICBjbG9zZUNh
cHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVmlk
ZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrKQoreworICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgdmlkZW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQoreworICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdWRpb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKK30K
Kwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFj
aykKIHsKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3Bl
IHNjb3BlKHRoaXMpOwogICAgIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMgPSB0cmFjay0+Y3Vlcygp
OwogICAgIGlmIChjdWVzKQpAQCAtMjk0MywxOCArMzAxMywzMSBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogICAgIGNsb3NlQ2FwdGlv
blRyYWNrc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJ
bmJhbmRUcmFja3MoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZp
ZGVvVHJhY2sqIHRyYWNrKQogewotICAgIGlmICghbV90ZXh0VHJhY2tzKQorICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7Ci0gICAg
Zm9yIChpbnQgaSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgewot
ICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOworICAgIG1f
dmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CiAKLSAgICAgICAgaWYgKHRyYWNrLT50cmFj
a1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKLSAgICAgICAgICAgIHJlbW92ZVRleHRUcmFj
ayh0cmFjayk7Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFuZFRyYWNrcygp
Cit7CisgICAgd2hpbGUgKG1fYXVkaW9UcmFja3MgJiYgIG1fYXVkaW9UcmFja3MtPmxlbmd0aCgp
KQorICAgICAgICByZW1vdmVBdWRpb1RyYWNrKG1fYXVkaW9UcmFja3MtPmxhc3RJdGVtKCkpOwor
CisgICAgaWYgKG1fdGV4dFRyYWNrcykgeworICAgICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29w
ZSBzY29wZSh0aGlzKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IG1fdGV4dFRyYWNrcy0+bGVuZ3Ro
KCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IG1f
dGV4dFRyYWNrcy0+aXRlbShpKTsKKworICAgICAgICAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUo
KSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgICAgICAgICByZW1vdmVUZXh0VHJhY2so
dHJhY2spOworICAgICAgICB9CiAgICAgfQorCisgICAgd2hpbGUgKG1fdmlkZW9UcmFja3MgJiYg
IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpKQorICAgICAgICByZW1vdmVWaWRlb1RyYWNrKG1fdmlk
ZW9UcmFja3MtPmxhc3RJdGVtKCkpOwogfQogCiBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0y
OTgzLDcgKzMwNjYsNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6
YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIC8vIGZpcnN0IGFw
cGVuZCB0aGUgdHJhY2sgdG8gdGhlIHRleHQgdHJhY2sgbGlzdC4KIAogICAgIC8vIDYuIEFkZCB0
aGUgbmV3IHRleHQgdHJhY2sgdG8gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJh
Y2tzLgotICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOworICAgIGFkZFRleHRUcmFj
ayh0ZXh0VHJhY2spOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIHJlYWRpbmVzcyBzdGF0
ZSB0byB0aGUgdGV4dCB0cmFjayBsb2FkZWQgc3RhdGUgLi4uCiAgICAgdGV4dFRyYWNrLT5zZXRS
ZWFkaW5lc3NTdGF0ZShUZXh0VHJhY2s6OkxvYWRlZCk7CkBAIC0yOTk0LDYgKzMwNzcsMTcgQEAg
UGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFMKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsK
IH0KIAorQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKK3sK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQorICAgICAg
ICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICByZXR1cm4gbV9hdWRpb1Ry
YWNrcy5nZXQoKTsKK30KKwogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcygpIAogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKQEAgLTMwMDUsNiArMzA5OSwxNyBAQCBUZXh0VHJhY2tMaXN0KiBIVE1M
TWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkKICAgICByZXR1cm4gbV90ZXh0VHJhY2tzLmdldCgp
OwogfQogCitWaWRlb1RyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MoKQor
eworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpCisgICAg
ICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIHJldHVybiBtX3ZpZGVv
VHJhY2tzLmdldCgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFj
ayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxl
bWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpOwpAQCAtMzAyMCw3ICszMTI1LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tF
bGVtZW50KQogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
YWRkVGV4dFRyYWNrKHRleHRUcmFjay5nZXQoKSk7CisgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFj
ay5yZWxlYXNlKCkpOwogICAgIAogICAgIC8vIERvIG5vdCBzY2hlZHVsZSB0aGUgdHJhY2sgbG9h
ZGluZyB1bnRpbCBwYXJzaW5nIGZpbmlzaGVzIHNvIHdlIGRvbid0IHN0YXJ0IGJlZm9yZSBhbGwg
dHJhY2tzCiAgICAgLy8gaW4gdGhlIG1hcmt1cCBoYXZlIGJlZW4gYWRkZWQuCkBAIC00OTIyLDcg
KzUwMjcsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAgIGluZm8uYWRkTWVtYmVyKG1f
bWVkaWFTb3VyY2UsICJtZWRpYVNvdXJjZSIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorICAgIGluZm8uYWRkTWVtYmVyKG1fYXVkaW9UcmFja3MsICJhdWRpb1RyYWNrcyIpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fdGV4dFRyYWNrcywgInRleHRUcmFja3MiKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX3ZpZGVvVHJhY2tzLCAidmlkZW9UcmFja3MiKTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbiwgInRleHRUcmFja3NX
aGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbiIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY3VlVHJl
ZSwgImN1ZVRyZWUiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2N1cnJlbnRseUFjdGl2ZUN1ZXMs
ICJjdXJyZW50bHlBY3RpdmVDdWVzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGQwODVlOWRmYjg4NjA0MDdlYWQ5MTkxZWMyN2NhYjRkOTJiOTc2NjMuLmM3Njlh
YTAyYWM1OWVlN2Q0MDQ4M2NjZDRhYjUwZWE1NmJiMjUwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zOSwxMCArMzksMTIgQEAKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKICNpbmNsdWRlICJDYXB0
aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAjaW5j
bHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVkZSAi
VmlkZW9UcmFjay5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDggKzcy
LDEyIEBAIGNsYXNzIE1lZGlhS2V5czsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorY2xhc3MgQXVkaW9UcmFja0xpc3Q7CitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZTsKIGNsYXNz
IEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBUZXh0VHJhY2tMaXN0OworY2xhc3MgVmlk
ZW9UcmFja0xpc3Q7CitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogdHlwZWRlZiBQT0RJbnRl
cnZhbFRyZWU8ZG91YmxlLCBUZXh0VHJhY2tDdWUqPiBDdWVJbnRlcnZhbFRyZWU7CiB0eXBlZGVm
IEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxUeXBlIEN1ZUludGVydmFsOwpAQCAtODQsNyArOTAs
OSBAQCB0eXBlZGVmIFZlY3RvcjxDdWVJbnRlcnZhbD4gQ3VlTGlzdDsKIAogY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50
LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5T
dGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250cm9s
bGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICwgcHJpdmF0ZSBBdWRp
b1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAorICAgICwgcHJpdmF0
ZSBWaWRlb1RyYWNrQ2xpZW50CiAjZW5kaWYKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19N
RU5VKQogICAgICwgcHVibGljIFBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudApAQCAtMjI2LDEx
ICsyMzQsMTggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBhZGRUZXh0VHJh
Y2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gYWRkVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBlbXB0eVN0cmluZygpLCBl
Yyk7IH0KICAgICBQYXNzUmVmUHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmlu
ZyYga2luZCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZFRleHRUcmFjayhraW5kLCBl
bXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBlYyk7IH0KIAorICAgIEF1ZGlvVHJhY2tMaXN0
KiBhdWRpb1RyYWNrcygpOwogICAgIFRleHRUcmFja0xpc3QqIHRleHRUcmFja3MoKTsKKyAgICBW
aWRlb1RyYWNrTGlzdCogdmlkZW9UcmFja3MoKTsKKwogICAgIEN1ZUxpc3QgY3VycmVudGx5QWN0
aXZlQ3VlcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudGx5QWN0aXZlQ3VlczsgfQogCi0gICAg
dm9pZCBhZGRUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCBhZGRBdWRpb1RyYWNrKFBh
c3NSZWZQdHI8QXVkaW9UcmFjaz4pOworICAgIHZvaWQgYWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8
VGV4dFRyYWNrPik7CisgICAgdm9pZCBhZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFj
az4pOworICAgIHZvaWQgcmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKik7CiAgICAgdm9pZCBy
ZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCByZW1vdmVWaWRlb1RyYWNrKFZp
ZGVvVHJhY2sqKTsKICAgICB2b2lkIHJlbW92ZUFsbEluYmFuZFRyYWNrcygpOwogICAgIHZvaWQg
Y2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5TWVkaWFQbGF5ZXJP
ZlRleHRUcmFja0NoYW5nZXMoKTsKQEAgLTIzOCw4ICsyNTMsMTIgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZW1vdmVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwogCisgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRk
VGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
ckRpZFJlbW92ZUF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZFJlbW92ZVRleHRUcmFjayhQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGU+KSBPVkVSUklERTsKIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAg
ICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFRyYWNrKFBhc3NSZWZQdHI8UGxhdGZvcm1U
ZXh0VHJhY2s+KSBPVkVSUklERTsKQEAgLTI3NSw2ICsyOTQsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tE
aXNwbGF5KCk7CiAKKyAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGF1
ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKik7CisKICAgICAvLyBUZXh0VHJhY2tD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRy
YWNrKik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayop
OwpAQCAtMjg0LDYgKzMwNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4pOwogCisgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWRl
b1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKTsKKwogICAgIGJvb2wgcmVxdWlyZXNU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVw
cmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKTsKICNlbmRpZgpAQCAtNjk5LDcg
KzcyNCw5IEBAIHByaXZhdGU6CiAKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9u
RGlzcGxheU1vZGUgbV9jYXB0aW9uRGlzcGxheU1vZGU7CiAKKyAgICBSZWZQdHI8QXVkaW9UcmFj
a0xpc3Q+IG1fYXVkaW9UcmFja3M7CiAgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRy
YWNrczsKKyAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CiAgICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9u
QmVnYW47CiAKICAgICBDdWVJbnRlcnZhbFRyZWUgbV9jdWVUcmVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggY2VkNDE3NDU5ZGFiYTEzNWVkMDA1ZWY2NTQ4
NmQyNWFmNmUxY2NkNS4uMDViYzJkZDhjNGZiODg0ZTdiZWJkNjdiMGM3MjNlOWU1ZDUxOGFkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC0xMTYsNyArMTE2
LDkgQEAgdm9pZCB3ZWJraXRDYW5jZWxLZXlSZXF1ZXN0KGluIFtUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHIKICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19U
UkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiBUZXh0VHJhY2sgYWRkVGV4dFRyYWNrKGluIERP
TVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFs
XSBET01TdHJpbmcgbGFuZ3VhZ2UpCiAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworcmVhZG9u
bHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0IGF1ZGlvVHJhY2tzOwogcmVhZG9ubHkgYXR0cmli
dXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBWaWRlb1Ry
YWNrTGlzdCB2aWRlb1RyYWNrczsKICNlbmRpZgogCiBbUmVmbGVjdCwgVHJlYXROdWxsQXM9TnVs
bFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYUdyb3VwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI1MWRkOGVkMDUxNDE1YThlY2Nm
NDk5MGNhZjdkN2FkYzg0NTIyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJB
dWRpb1RyYWNrLmgiCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgorI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFja0Jhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZl
LCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1Ry
YWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBkZXNjcmlwdGlvbiwgKCJkZXNjcmlwdGlvbiIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb247Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBtYWluLCAoIm1haW4iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1haW47Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbWFpbkRlc2MsICgibWFp
bi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVy
biBtYWluRGVzYzsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjp0cmFuc2xh
dGlvbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCB0cmFuc2xhdGlvbiwgKCJ0cmFuc2xhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gdHJhbnNsYXRpb247Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjb21tZW50YXJ5LCAoImNvbW1lbnRhcnki
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGNvbW1l
bnRhcnk7Cit9CisKK0F1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCogY2xp
ZW50LCBQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAgOiBU
cmFja0Jhc2UoVHJhY2tCYXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZhdGUtPmxhYmVsKCksIHRy
YWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKSkKKyAgICAsIG1faWQodHJhY2tQcml2YXRlLT5pZCgpKQor
ICAgICwgbV9lbmFibGVkKHRyYWNrUHJpdmF0ZS0+ZW5hYmxlZCgpKQorICAgICwgbV9jbGllbnQo
Y2xpZW50KQorICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBtX3ByaXZhdGUt
PnNldENsaWVudCh0aGlzKTsKKworICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKKyAg
ICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKKyAgICAgICAgc2V0S2luZChB
dWRpb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOgorICAgICAgICBzZXRLaW5kKEF1ZGlv
VHJhY2s6OmRlc2NyaXB0aW9uS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
dWRpb1RyYWNrUHJpdmF0ZTo6TWFpbjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjptYWlu
S2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6
TWFpbkRlc2M6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbkRlc2NLZXl3b3JkKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpUcmFuc2xhdGlv
bjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjp0cmFuc2xhdGlvbktleXdvcmQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Cisg
ICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok5vbmU6CisgICAgICAgIHNldEtp
bmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0F1ZGlv
VHJhY2s6On5BdWRpb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCgwKTsKK30K
KworYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KSBjb25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uS2V5d29yZCgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbktleXdvcmQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IG1haW5EZXNjS2V5d29yZCgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gdHJhbnNsYXRpb25LZXl3b3Jk
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBjb21tZW50YXJ5S2V5
d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBBdWRpb1RyYWNrOjpzZXRFbmFibGVkKGNvbnN0IGJvb2wgZW5hYmxlZCkKK3sKKyAgICBp
ZiAobV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW5hYmxl
ZCA9IGVuYWJsZWQ7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5hdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQodGhpcyk7Cit9CisKK3NpemVfdCBBdWRpb1RyYWNrOjppbmJh
bmRUcmFja0luZGV4KCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5hdWRpb1RyYWNrSW5kZXgoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrOjp3aWxsUmVt
b3ZlQXVkaW9UcmFja1ByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUqIHRyYWNrUHJpdmF0ZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0odHJhY2tQcml2YXRlKTsKKyAgICBBU1NFUlQodHJhY2tQcml2YXRl
ID09IG1fcHJpdmF0ZSk7CisgICAgbWVkaWFFbGVtZW50KCktPnJlbW92ZUF1ZGlvVHJhY2sodGhp
cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1M2VjYjY4ODgyYjc4ZDFiMDNkNTFk
ZmZmM2ZhYmE0OTA3ODVjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEF1ZGlvVHJhY2tfaAorI2RlZmluZSBBdWRpb1RyYWNrX2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b1RyYWNrOworCitjbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BdWRpb1RyYWNrQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrKikgPSAwOworfTsKKworY2xhc3MgQXVkaW9UcmFjayA6IHB1
YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gY3JlYXRlKEF1ZGlvVHJhY2tDbGll
bnQqIGNsaWVudCwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrKGNsaWVudCwgdHJh
Y2tQcml2YXRlKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKKworICAgIEF0
b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIHNldElkKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBkZXNjcmlwdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYWluS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1h
aW5EZXNjS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zbGF0
aW9uS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlL
ZXl3b3JkKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRLaW5kS2V5
d29yZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorCisgICAgYm9vbCBl
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dEVuYWJsZWQoY29uc3QgYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBP
VkVSUklERSB7IG1fY2xpZW50ID0gMDsgfQorICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRl
eCgpOworCitwcm90ZWN0ZWQ6CisgICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiwgUGFz
c1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZUF1ZGlvVHJhY2tQcml2YXRlKEF1ZGlvVHJhY2tQcml2YXRl
KikgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fZW5hYmxl
ZDsKKyAgICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKworICAgIFJlZlB0cjxBdWRpb1Ry
YWNrUHJpdmF0ZT4gbV9wcml2YXRlOworfTsKKworaW5saW5lIEF1ZGlvVHJhY2sqIHRvQXVkaW9U
cmFjayhUcmFja0Jhc2UqIHRyYWNrKQoreworICAgIEFTU0VSVCh0cmFjay0+dHlwZSgpID09IFRy
YWNrQmFzZTo6QXVkaW9UcmFjayk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sq
Pih0cmFjayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2OGY5
NjcwMWJmY2UwYWFhYWNmZjBmNWNiMzhkYjc2N2UyZjg2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0wLDAgKzEsMzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICBHZW5lcmF0
ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgor
XSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBpZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGxhbmd1YWdlOworCisgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVlMzU1YjczZmZkYjRkNzgyNmFjZWU2ZmZlOWIyNzJjZjU3YTVmMGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApAQCAtMCww
ICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNs
dWRlICJBdWRpb1RyYWNrLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRp
YUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDog
VHJhY2tMaXN0QmFzZShvd25lciwgY29udGV4dCkKK3sKK30KKworQXVkaW9UcmFja0xpc3Q6On5B
dWRpb1RyYWNrTGlzdCgpCit7Cit9CisKK3ZvaWQgQXVkaW9UcmFja0xpc3Q6OmFwcGVuZChQYXNz
UmVmUHRyPEF1ZGlvVHJhY2s+IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxBdWRpb1RyYWNrPiB0
cmFjayA9IHBycFRyYWNrOworCisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUgbWVkaWEgZmls
ZSBvcmRlci4KKyAgICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJbmRleCgpOwor
ICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOworCisgICAgQVNTRVJUKCF0
cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVyKCkp
OworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQob3duZXIoKSk7CisKKyAgICBzY2hlZHVsZUFk
ZFRyYWNrRXZlbnQodHJhY2sucmVsZWFzZSgpKTsKK30KKworQXVkaW9UcmFjayogQXVkaW9UcmFj
a0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9p
bmJhbmRUcmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdG9BdWRpb1RyYWNrKG1faW5iYW5k
VHJhY2tzW2luZGV4XS5nZXQoKSk7CisKKyAgICByZXR1cm4gMDsKK30KKworQXVkaW9UcmFjayog
QXVkaW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgQXVkaW9UcmFjayogdHJhY2sgPSB0b0F1ZGlvVHJhY2sobV9pbmJhbmRU
cmFja3NbaV0uZ2V0KCkpOworICAgICAgICBpZiAodHJhY2stPmlkKCkgPT0gaWQpCisgICAgICAg
ICAgICByZXR1cm4gdHJhY2s7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIEF1ZGlvVHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckF1ZGlvVHJhY2tMaXN0OworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODU5M2MzNzI4ZDIxOTNlOWMwZGY4ZTc4OGE1ZDM4MjQzNDZkNWMyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrTGlzdF9oCisjZGVm
aW5lIEF1ZGlvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1
ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b1RyYWNrOworCitjbGFzcyBBdWRpb1RyYWNrTGlzdCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1RyYWNrTGlzdD4gY3JlYXRlKEhU
TUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrTGlzdChvd25lciwg
Y29udGV4dCkpOworICAgIH0KKyAgICB+QXVkaW9UcmFja0xpc3QoKTsKKworICAgIEF1ZGlvVHJh
Y2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworICAgIEF1ZGlv
VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIEF1ZGlvVHJhY2sqIGxhc3RJ
dGVtKCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEpOyB9CisgICAgdm9pZCBhcHBl
bmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7
CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2Q2YjczMmQyYTU1Y2MxMzg5OTlhNjMwYjk4OGUyY2E5ZDlmNzg5MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xp
c3QuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLLAorICAgIEN1c3RvbUlzUmVhY2hhYmxlLAorICAgIEluZGV4ZWRHZXR0ZXIsCisg
ICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KK10gaW50ZXJmYWNlIEF1
ZGlvVHJhY2tMaXN0IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisgICAgQXVkaW9UcmFjayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIEF1
ZGlvVHJhY2sgZ2V0VHJhY2tCeUlkKGluIERPTVN0cmluZyBpZCk7CisKKyAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFk
ZHRyYWNrOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3ZldHJhY2s7CisKKyAg
ICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFu
IGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRp
b24pOworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
Y3BwCmluZGV4IDZkN2UzNzlhYjc0NDlmNTNjNTg1MTM1NjM2MWYxY2U1NGFmZDVmOTkuLmM3OWMz
ODJhYzFiZjYyNDExODQ1MzRlMzRlMDk3NzMyMmI1OTgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKQEAgLTI2Myw3ICsyNjMsMTQgQEAgdm9p
ZCBJbmJhbmRUZXh0VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqIGN1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgbV9jdWVNYXAucmVtb3ZlKHN0YXRpY19jYXN0PFRleHRUcmFja0N1ZUdl
bmVyaWMqPihjdWUpKTsKICAgICBUZXh0VHJhY2s6OnJlbW92ZUN1ZShjdWUsIGVjKTsKIH0KLSAg
ICAKKwordm9pZCBJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmVUZXh0VHJhY2tQcml2YXRlKElu
YmFuZFRleHRUcmFja1ByaXZhdGUqIHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dHJhY2tQcml2YXRlKTsKKyAgICBBU1NFUlQodHJhY2tQcml2YXRlID09IG1fcHJpdmF0ZSk7Cisg
ICAgbWVkaWFFbGVtZW50KCktPnJlbW92ZVRleHRUcmFjayh0aGlzKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFRleHRUcmFjay5oCmluZGV4IDM2OWE4NTdiMDI2NTE5YjQ4MmViNTNmZjI1YjkwYjJmZmFjYWQx
OGQuLmYwMjkyMzdjODE2NjM2YTE1NmUwZDk2ZTQ1ZjY3ZjI4MDg1M2Y2ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaApAQCAtODAsNiArODAsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZFRleHRUcmFj
a1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVHZW5lcmljQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiwgRXhj
ZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlVGV4dFRy
YWNrUHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKikgT1ZFUlJJREU7CiAKICAgICBQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZUdlbmVyaWM+IGNyZWF0ZUN1ZShQYXNzUmVmUHRyPEdlbmVyaWND
dWVEYXRhPik7CiAgICAgdm9pZCB1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJhY2tDdWVHZW5l
cmljKiwgR2VuZXJpY0N1ZURhdGEqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXggM2RmYjk3Nzg0YzU4MjFhYzk5ZDk3OGVlNDNlNWQ3
ODU0ZDUxNzRjNS4uMjQxOWJiNmNjOGY4NWUyMDIwNTE3MDE0NzNkM2JlMzlmMmNjYzcyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAg
LTcyLDYgKzcyLDExIEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9hZChjb25z
dCBLVVJMJiB1cmwpCiAgICAgICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAor
RWxlbWVudCogTG9hZGFibGVUZXh0VHJhY2s6OmVsZW1lbnQoKQoreworICAgIHJldHVybiBtX3Ry
YWNrRWxlbWVudDsKK30KKwogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQo
VGltZXI8TG9hZGFibGVUZXh0VHJhY2s+KikKIHsKICAgICBpZiAobV9sb2FkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKaW5kZXggMzI0ZWIzMmQw
NGJkYTlkNDAwOWFiNTViOGM4YTJiMzlkNTk0ZDJjMC4uN2Q5NzhkZjdlMTA1ZGU5Mzk4YWUwODYy
MWU0MGQyZjAzMzc3OTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suaApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgdHJh
Y2tFbGVtZW50SW5kZXgoKTsKICAgICBIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQoKSB7
IHJldHVybiBtX3RyYWNrRWxlbWVudDsgfQorICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1faXNEZWZhdWx0OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzRGVmYXVsdChi
b29sIGlzRGVmYXVsdCkgT1ZFUlJJREUgIHsgbV9pc0RlZmF1bHQgPSBpc0RlZmF1bHQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggNWRkM2JlZjg0NjY5
M2I1ZDk4N2ZkZmZmNjZiZDgwMTE1ODM2YjRjMS4uYmYzYTE4OGM3OTlhNTU4Njk4NjRlNzllZTU1
ZjY1ZWExZWRkYzYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVHJh
Y2tCYXNlKikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0
ZToKICAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKaW5kZXggZGU0
ZTM4NTc0Y2Q4MTgwMmE2YWUwMTAxYTMwMGM2YjI5MGI5ODJhYy4uYjkyOGE3M2Q3ZjhmNmJmNjVi
NDM4MjMzMDE4YzJjYTNjOTQyNjYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tC
YXNlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlRyYWNrQmFzZS5oIgogCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw2ICs0NSwxMSBA
QCBUcmFja0Jhc2U6On5UcmFja0Jhc2UoKQogewogfQogCitFbGVtZW50KiBUcmFja0Jhc2U6OmVs
ZW1lbnQoKQoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudDsKK30KKwogdm9pZCBUcmFja0Jh
c2U6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQogewogICAgIFN0cmluZyBvbGRL
aW5kID0gbV9raW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKaW5kZXggNTQ2
Mjg5OGMwZTA1N2UyMjcwYzkxNDFhNmFkNTJiNDMyZGE3MjQ4Yy4uYTgxY2UzMTVhNWZjMTEyOTRi
ZjBkN2NkMTU0YzdkN2EzODczNWY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAKIGNsYXNzIFRyYWNrQmFzZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFRyYWNrQmFzZT4gewpAQCAtNDQsNiArNDUsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7IG1fbWVk
aWFFbGVtZW50ID0gZWxlbWVudDsgfQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CisgICAgdmlydHVhbCBFbGVtZW50KiBlbGVt
ZW50KCk7CiAKICAgICBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZhMDgyNjJhMTk4
NWVjMGJiYjhlNjRiMzU4NzlhNmUyZmRhMDhiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKQEAgLTAsMCArMSwxNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJWaWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
VHJhY2tCYXNlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFs
dGVybmF0aXZlLCAoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNpZ24sICgic2lnbiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc2lnbjsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVz
LCAoInN1YnRpdGxlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6
OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgY29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitWaWRlb1Ry
YWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6
VmlkZW9UcmFjaywgdHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdl
KCkpCisgICAgLCBtX2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fc2VsZWN0ZWQodHJh
Y2tQcml2YXRlLT5zZWxlY3RlZCgpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9w
cml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsK
KworICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKKyAgICBjYXNlIFZpZGVvVHJhY2tQ
cml2YXRlOjpBbHRlcm5hdGl2ZToKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZh
dGU6OkNhcHRpb25zOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29y
ZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoK
KyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjoKKyAgICAgICAgc2V0S2luZChW
aWRlb1RyYWNrOjpzaWduS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRl
b1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1
YnRpdGxlc0tleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1By
aXZhdGU6OkNvbW1lbnRhcnk6CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFy
eUtleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6
Ok5vbmU6CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK1ZpZGVvVHJhY2s6On5WaWRlb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZh
dGUtPnNldENsaWVudCgwKTsKK30KKworYm9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRlcm5h
dGl2ZUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNh
cHRpb25zS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0g
bWFpbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHNp
Z25LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBzdWJ0
aXRsZXNLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBj
b21tZW50YXJ5S2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChjb25zdCBib29sIHNlbGVj
dGVkKQoreworICAgIGlmIChtX3NlbGVjdGVkID09IHNlbGVjdGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKHRoaXMpOworfQorCitzaXpl
X3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0
ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9UcmFja0luZGV4KCk7Cit9CisKK3ZvaWQg
VmlkZW9UcmFjazo6d2lsbFJlbW92ZVZpZGVvVHJhY2tQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRl
KiB0cmFja1ByaXZhdGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRyYWNrUHJpdmF0ZSk7CisgICAg
QVNTRVJUKHRyYWNrUHJpdmF0ZSA9PSBtX3ByaXZhdGUpOworICAgIG1lZGlhRWxlbWVudCgpLT5y
ZW1vdmVWaWRlb1RyYWNrKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDkx
ZTNiNmE1OTQyZjE3MzE4ZTBhMDkzZTgzODQxNDRiY2NmNmMyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKQEAgLTAsMCArMSw5OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWRlb1RyYWNrX2gKKyNkZWZpbmUgVmlkZW9U
cmFja19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgVmlkZW9UcmFjazsKKworY2xhc3MgVmlkZW9UcmFja0NsaWVudCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+VmlkZW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKSA9IDA7Cit9OworCitj
bGFzcyBWaWRlb1RyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIFZpZGVvVHJhY2tQcml2
YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrPiBj
cmVhdGUoVmlkZW9UcmFja0NsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPiB0cmFja1ByaXZhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZp
ZGVvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICB9CisgICAgdmlydHVhbCB+Vmlk
ZW9UcmFjaygpOworCisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQorICAgIHZvaWQgc2V0SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0K
KworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFsdGVybmF0aXZlS2V5d29yZCgpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNhcHRpb25zS2V5d29yZCgpOworICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1haW5LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgc2lnbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
Y29tbWVudGFyeUtleXdvcmQoKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZGVm
YXVsdEtpbmRLZXl3b3JkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisK
KyAgICBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZChjb25zdCBib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBj
bGVhckNsaWVudCgpIE9WRVJSSURFIHsgbV9jbGllbnQgPSAwOyB9CisgICAgVmlkZW9UcmFja0Ns
aWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHNpemVfdCBp
bmJhbmRUcmFja0luZGV4KCk7CisKK3Byb3RlY3RlZDoKKyAgICBWaWRlb1RyYWNrKFZpZGVvVHJh
Y2tDbGllbnQqLCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcml2YXRlVHJhY2spOwor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVZpZGVvVHJh
Y2tQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRlKikgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJp
bmcgbV9pZDsKKyAgICBib29sIG1fc2VsZWN0ZWQ7CisgICAgVmlkZW9UcmFja0NsaWVudCogbV9j
bGllbnQ7CisKKyAgICBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisK
K2lubGluZSBWaWRlb1RyYWNrKiB0b1ZpZGVvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAg
ICBBU1NFUlQodHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWaWRlb1RyYWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTM3NjgxODQ0MjMzNDdkOGMzNDE4YmJhNTBiOThkMTVm
NzM1OGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9u
YWw9VklERU9fVFJBQ0ssCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3Qs
CisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KK10gaW50ZXJmYWNlIFZpZGVvVHJhY2sgeworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBraW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJp
YnV0ZSBib29sZWFuIHNlbGVjdGVkOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMwN2M5NWM1NzgxNjZmNGViZTU2ZTdkY2Zm
ZTVlMDU5YjRlZTQ5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFja0xpc3QuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiVmlkZW9UcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRl
ICJWaWRlb1RyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitWaWRlb1RyYWNr
TGlzdDo6VmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKG93bmVyLCBjb250ZXh0
KQoreworfQorCitWaWRlb1RyYWNrTGlzdDo6flZpZGVvVHJhY2tMaXN0KCkKK3sKK30KKwordm9p
ZCBWaWRlb1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gcHJwVHJhY2sp
Cit7CisgICAgUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJ
bnNlcnQgdHJhY2tzIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9
IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGlu
ZGV4LCB0cmFjayk7CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFj
ay0+bWVkaWFFbGVtZW50KCkgPT0gb3duZXIoKSk7CisgICAgdHJhY2stPnNldE1lZGlhRWxlbWVu
dChvd25lcigpKTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkp
OworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAgICAg
IHJldHVybiB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKworICAg
IHJldHVybiAwOworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0VHJhY2tCeUlk
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRl
b1RyYWNrKG1faW5iYW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgp
ID09IGlkKQorICAgICAgICAgICAgcmV0dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKworbG9uZyBWaWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0Cit7CisgICAg
Ly8gNC44LjEwLjEwLjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IG9iamVjdHMK
KyAgICAvLyBUaGUgVmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRleCBhdHRyaWJ1dGUgbXVzdCBy
ZXR1cm4gdGhlIGluZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRseSBzZWxlY3RlZCB0cmFjaywg
aWYgYW55LiBJZiB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRvZXMgbm90CisgICAgLy8gY3Vy
cmVudGx5IHJlcHJlc2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25lIG9mIHRoZSB0cmFja3MgYXJl
IHNlbGVjdGVkLAorICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1cm4g4oiSMS4KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVmlkZW9UcmFjayog
dHJhY2sgPSB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAgICAgICBp
ZiAodHJhY2stPnNlbGVjdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAg
cmV0dXJuIC0xOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2tMaXN0OjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZv
clZpZGVvVHJhY2tMaXN0OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTcyOWY2ZTZjNDRmN2E1NmY1MWY2ZGRiZTUy
MjkwNzgzOWRjMzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBWaWRlb1RyYWNrTGlzdF9oCisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1RyYWNrTGlz
dCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxWaWRlb1RyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBWaWRlb1RyYWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VmlkZW9U
cmFja0xpc3QoKTsKKworICAgIFZpZGVvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdDsKKyAgICBsb25nIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKworICAgIFZp
ZGVvVHJhY2sqIGl0ZW0odW5zaWduZWQpIGNvbnN0OworICAgIFZpZGVvVHJhY2sqIGxhc3RJdGVt
KCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEpOyB9CisgICAgdm9pZCBhcHBlbmQo
UGFzc1JlZlB0cjxWaWRlb1RyYWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisK
K3ByaXZhdGU6CisgICAgVmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOTAyZGFjMWQ1NjYzODA3MmJjZTZmN2NhZDU5ZDEwN2UxNDVkZWZhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlz
dC5pZGwKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklE
RU9fVFJBQ0ssCisgICAgQ3VzdG9tSXNSZWFjaGFibGUsCisgICAgSW5kZXhlZEdldHRlciwKKyAg
ICBFdmVudFRhcmdldCwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgorXSBpbnRlcmZhY2UgVmlk
ZW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKKyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVmlk
ZW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRk
dHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKKworICAg
IHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4g
ZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlv
bik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9B
dWRpb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmQ5MTdhMzdiZjA4YjI3YzJlZWU0YTAyN2M0
OTQ1MjliYzI2Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVfaAor
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZhdGVDbGllbnQoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZUF1ZGlvVHJhY2tQcml2YXRlKEF1ZGlvVHJh
Y2tQcml2YXRlKikgPSAwOworfTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRlKCkpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAgdm9pZCBzZXRDbGll
bnQoQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsg
fQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVu
dDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5h
YmxlZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlw
dGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21tZW50YXJ5LCBOb25lIH07Cisg
ICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CisKKyAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZp
cnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9Cisg
ICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0
b207IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKworICAgIHZvaWQgd2lsbEJlUmVtb3ZlZCgpCisgICAgeworICAgICAgICBpZiAobV9j
bGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+d2lsbFJlbW92ZUF1ZGlvVHJhY2tQcml2YXRl
KHRoaXMpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkKKyAg
ICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
dWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlLmgKaW5kZXggM2VlY2NmYTQ0ZDQ0YTZkODY0MWNhYjQyODAwYjUwY2RmNmQ5NjA3ZC4uNGQ0
MTYyOWYxZWZhZWU0NWY0ZjllZDg4ZGYzODU2NmY0ZmJmYzlmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUu
aApAQCAtMjYsMTcgKzI2LDE2IEBACiAjaWZuZGVmIEluYmFuZFRleHRUcmFja1ByaXZhdGVfaAog
I2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlX2gKIAorI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAK
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudDsKLQogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03OCw2ICs3NywxMiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGludCB0ZXh0VHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAorICAgIHZv
aWQgd2lsbEJlUmVtb3ZlZCgpCisgICAgeworICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAg
ICAgICBtX2NsaWVudC0+d2lsbFJlbW92ZVRleHRUcmFja1ByaXZhdGUodGhpcyk7CisgICAgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSgpCiAgICAgICAgIDogbV9j
bGllbnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCA0Yzg0YWFjYTRhZWJl
OTkyZjM1Y2EwODVjYjdiMzQ4ZGZmOWM1NDBhLi4wZDQwYWQzYWFlZTg3MWZlNDM3NzFjZmM4MGM2
Y2EyN2VlNTA3NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC0xMjgsMTAg
KzEyOCwxMiBAQCBwcml2YXRlOgogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCgpIHsg
fQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSosIFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIEdlbmVyaWNDdWVE
YXRhKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZFRleHRU
cmFja1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlVGV4dFRyYWNrUHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKikgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDg3ZTk0MjU0NDljY2QwMGZlODhjZWNk
NjdiZjllYzU3NTU0MDg0NjMuLmM1MjM4NTgwYjkxOWZkYmE5NWQ1NTI0Y2VhZWI1YjE3NDZiN2Q4
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTExMDMsNiArMTEwMywyMiBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciogTWVkaWFQ
bGF5ZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKK3ZvaWQgTWVkaWFQbGF5ZXI6OmFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRpZEFkZEF1
ZGlvVHJhY2sodHJhY2spOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpyZW1vdmVBdWRpb1RyYWNr
KFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrKQoreworICAgIGlmICghbV9tZWRp
YVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZWRpYVBsYXllckNsaWVu
dC0+bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKHRyYWNrKTsKK30KKwogdm9pZCBNZWRp
YVBsYXllcjo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4g
dHJhY2spCiB7CiAgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQpAQCAtMTExOSw2ICsxMTM1
LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGU+IHRyYWNrKQogICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlh
UGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKIH0KIAordm9pZCBNZWRpYVBsYXllcjo6
YWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0cmFjaykKK3sKKyAg
ICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWVk
aWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayh0cmFjayk7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckRpZFJlbW92
ZVZpZGVvVHJhY2sodHJhY2spOworfQorCiBib29sIE1lZGlhUGxheWVyOjpyZXF1aXJlc1RleHRU
cmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5yZXF1
aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBlMDA2N2E1MDg1ODliZTBhNWZiODg0MmM1
N2NkNDdiZDg5ZjkzZGMyLi43MTVhYTExZTY2ODUwOGEwNTRiMGY5NGU5YWJmMTE2Y2YyMWRkNmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
QEAgLTMyLDExICszMiwxMyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJveHkuaCIKICNlbmRp
ZgogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0yMTgsOCArMjIwLDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBsYXll
ckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsgfQogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFz
c1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJE
aWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
RGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNv
bnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgeyB9CkBAIC00NTAsOCAr
NDU2LDEyIEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2b2lkIGFkZEF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogICAgIHZvaWQgYWRkVGV4dFRy
YWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOworICAgIHZvaWQgYWRkVmlk
ZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPik7CisgICAgdm9pZCByZW1vdmVB
dWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKICAgICB2b2lkIHJlbW92
ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KTsKKyAgICB2b2lk
IHJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pOwogCiAgICAg
Ym9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjE1MTY4NDM4NjAxYmM0NDVhYjQxNmNkMjZhNGU2NDA4NWI5ZGI0OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
VHJhY2tQcml2YXRlLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWRlb1Ry
YWNrUHJpdmF0ZV9oCisjZGVmaW5lIFZpZGVvVHJhY2tQcml2YXRlX2gKKworI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRl
b1RyYWNrUHJpdmF0ZTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrUHJpdmF0ZShWaWRlb1RyYWNrUHJpdmF0ZSopID0g
MDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8Vmlk
ZW9UcmFja1ByaXZhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1RyYWNrUHJp
dmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZSgpKTsKKyAgICB9CisgICAgdmlydHVhbCB+
VmlkZW9UcmFja1ByaXZhdGUoKSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KFZpZGVvVHJhY2tQ
cml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAgICBWaWRlb1Ry
YWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKSB7IG1fc2VsZWN0ZWQgPSBzZWxl
Y3RlZDsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGVkOyB9CisKKyAgICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgQ2FwdGlvbnMsIE1haW4s
IFNpZ24sIFN1YnRpdGxlcywgQ29tbWVudGFyeSwgTm9uZSB9OworICAgIHZpcnR1YWwgS2luZCBr
aW5kKCkgY29uc3QgeyByZXR1cm4gTm9uZTsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcg
aWQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisKKyAgICB2aXJ0
dWFsIGludCB2aWRlb1RyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAgICB2b2lk
IHdpbGxCZVJlbW92ZWQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAg
ICAgbV9jbGllbnQtPndpbGxSZW1vdmVWaWRlb1RyYWNrUHJpdmF0ZSh0aGlzKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpCisgICAgICAgIDogbV9zZWxlY3Rl
ZChmYWxzZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFZpZGVvVHJhY2tQcml2YXRl
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1fc2VsZWN0ZWQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198913</attachid>
            <date>2013-04-19 13:39:27 -0700</date>
            <delta_ts>2013-04-19 18:02:00 -0700</delta_ts>
            <desc>Generate isReachableFromOpaqueRoots() and fix mac build again</desc>
            <filename>bug-113965-20130419143855.patch</filename>
            <type>text/plain</type>
            <size>139237</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI3OWQ1MmY1MGFjODc3
OWU0MDgwMWM3ZmRmMTBmMmU5ZjllNGNkYi4uNTA2YThmYTkyZDE4MzA2MTc2ZTE1ZDdhZTRlYTE3
YWEzNDliN2Q5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTA0LTE2ICBCcmVu
ZGFuIExvbmcgIDxiLmxvbmdAY2FibGVsYWJzLmNvbT4KKworICAgICAgICBBZGQgaW50ZXJmYWNl
cyBhbmQgc3R1YnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
J3Mgbm8gaW1wbGVtZW50YXRpb25zLCBzbyB0aGVyZSdzIG5vdGhpbmcKKyAgICAgICAgaW50ZXJl
c3RpbmcgdG8gdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgQXVkaW9UcmFj
aywgVmlkZW9UcmFjaywgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0LgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDogU2FtZS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBTYW1lLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaTogU2FtZS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBTYW1lLgorICAgICAgICAqIFRhcmdldC5wcmk6IFNhbWUu
CisgICAgICAgICogVXNlSlNDLmNtYWtlOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiBTYW1lLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogU2FtZS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxl
LmFtOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHA6
IEFkZGVkLCBiYXNlZCBvbiBKU1Rlc3RUcmFja0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwOiBTYW1lLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IEFkZCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBBdWRp
b1RyYWNrTGlzdCBhbmQgVmlkZW9UcmFja0xpc3QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmNwcDogQWRkZWQsIGJhc2VkIG9uIEpTVGVzdFRyYWNrQ3VzdG9tCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA6IFNhbWUuCisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6IE1ha2UgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVv
VHJhY2tMaXN0IGV2ZW50IHRhcmdldHMuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbjogU2FtZS4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEFkZCBtX2F1
ZGlvVHJhY2tzIGFuZCBtX3ZpZGVvVHJhY2tzCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6IENsZWFyIGNsaWVudHMgZm9yIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKTogQWRkZWQs
IGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRp
b1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZp
ZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRk
QXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOiBTYW1lLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNlZCBv
biByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZVZpZGVvVHJhY2spOiBBZGRlZCwgYmFzZWQgb24gcmVtb3ZlVGV4dFRyYWNrCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MpOiBSZW1v
dmUgYXVkaW8gYW5kIHZpZGVvIHRyYWNrcyB0b28KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKTogQWRkZWQsIGJhc2VkIG9uIHRleHRUcmFja3MKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKTogQWRkZWQsIGJhc2Vk
IG9uIHRleHRUcmFja3MKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKTogQWRkIGF1ZGlvIGFuZCB2aWRlbyB0cmFja3MKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDogQWRkIGF1ZGlvVHJhY2tzIGFuZCB2aWRlb1RyYWNrcyBhbmQg
cmVsYXRlZCBmdW5jdGlvbnMKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBB
ZGQgYXVkaW9UcmFja3MgYW5kIHZpZGVvVHJhY2tzCisgICAgICAgICogaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRUcmFjayBhbmQgSW5iYW5kVGV4dFRyYWNr
LgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOiBTYW1lLgorICAgICAgICAqIGh0
bWwvdHJhY2svQXVkaW9UcmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuY3BwOiBBZGRlZCwgYmFzZWQgb24gVGV4dFRyYWNrTGlzdAorICAgICAgICAq
IGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDogU2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNr
L0F1ZGlvVHJhY2tMaXN0LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0Lmg6IEFkZCBtaXNzaW5nIE9WRVJSSURFIG9uIGludGVyZmFjZU5hbWUoKQorICAgICAg
ICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6IEFkZGVkLCBiYXNlZCBvbiBUZXh0VHJhY2sg
YW5kIEluYmFuZFRleHRUcmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDog
U2FtZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDogQWRkZWQsIGJhc2VkIG9uIFRleHRU
cmFja0xpc3QKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmg6IFNhbWUuCisg
ICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6IEFkZGVkLCBiYXNlZCBvbiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YWRkQXVkaW9UcmFj
ayk6IEFkZGVkLCBiYXNlZCBvbiBhZGRUZXh0VHJhY2sKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpyZW1vdmVBdWRpb1RyYWNrKTogQWRkZWQsIGJhc2VkIG9uIHJlbW92ZVRleHRUcmFj
aworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmFkZFZpZGVvVHJhY2spOiBBZGRlZCwg
YmFzZWQgb24gYWRkVGV4dFRyYWNrCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVt
b3ZlVmlkZW9UcmFjayk6IEFkZGVkLCBiYXNlZCBvbiByZW1vdmVUZXh0VHJhY2sKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6IEFkZGVkLCBiYXNl
ZCBvbiBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjaworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6IFNhbWUKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJh
Y2spOiBBZGRlZCwgYmFzZWQgb24gbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2sKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVv
VHJhY2spOiBTYW1lCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaDogQWRkZWQsIGJhc2VkIG9uIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaAorCiAyMDEzLTA0
LTE5ICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgogCiAgICAgICAgIENvbnRhaW5l
ck5vZGU6OnJlbW92ZUNoaWxkcmVuIHNob3VsZCBmaXJzdCBkZXRhY2ggdGhlIGNoaWxkcmVuIHRo
ZW4gcmVtb3ZlIHRoZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTdjZjY1Mjg0MGJkNGQyMjc3
NzM0ZjE0MjFhYzRjOTcyYjI2YzRhYy4uN2IzODlmODc5NjVjNmQwMjlkYTg0YjU2MDAwYjE5ZWY5
MDBkOGE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI2ODYsMTQgKzI2ODYsMjAgQEAgZW5k
aWYgKCkKIAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBsaXN0KEFQUEVORCBXZWJDb3Jl
X0lETF9GSUxFUworICAgICAgICBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCisgICAgICAgIGh0
bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNr
LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKICAgICAgICAgaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuaWRsCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKKyAgICAgICAgaHRtbC90
cmFjay9WaWRlb1RyYWNrLmlkbAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmlk
bAogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBodG1s
L3RyYWNrL0F1ZGlvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwCiAgICAgICAgIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAogICAgICAgICBodG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAogICAgICAgICBodG1sL3RyYWNrL1RleHRUcmFj
ay5jcHAKQEAgLTI3MDcsNiArMjcxMyw4IEBAIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAg
ICAgIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAorICAg
ICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuY3BwCiAKICAgICAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDZiN2NkMDdlYzdiNDUzOTQ1MWUwNWM3
ZjU1NzhlZjk0OGUyNGE5ZDcuLjRhNGJhZGEwYzNiNTdiMTc4YjUwMjRlMzBkNDFlMTY5YmM5ZWI3
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTQ3MiwxMiArNDcyLDE2IEBACiAj
aW5jbHVkZSAiSlNUZXh0RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTVGV4dE1ldHJpY3MuY3BwIgog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suY3BwIgorI2lu
Y2x1ZGUgIkpTQXVkaW9UcmFja0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTSFRNTFRyYWNrRWxlbWVu
dC5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNr
Q3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3QuY3BwIgogI2luY2x1ZGUgIkpT
VGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50LmNwcCIKKyNpbmNsdWRl
ICJKU1ZpZGVvVHJhY2suY3BwIgorI2luY2x1ZGUgIkpTVmlkZW9UcmFja0xpc3QuY3BwIgogI2Vu
ZGlmCiAjaW5jbHVkZSAiSlNUaW1lUmFuZ2VzLmNwcCIKICNpbmNsdWRlICJKU1RvdWNoLmNwcCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBkN2E2NWQyN2U5M2I2OGQ3MDBiZThi
ZTY5MzBjMTkyMjY2YmQxNDguLjEwZGVkNjI4YmVmNjcwZmJiZGE5OGJiNzNmYzk2NDAwMjBjYjg3
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDMxLDExICs0MzEsMTUgQEAg
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxl
bWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUu
aWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBkYmVjYTQ3MWE3YzYxYzc2Y2Y0
MjAxNTEwODY4NTg1Zjk3NzI3MjRmLi43OTA5ZTFhZTUxZTNhNWNiYzE0NjljZjU3MTRhNWJmNTQ1
MTliMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC02NTIsMTEgKzY1MiwxNSBA
QCBlbmFibGU/KEdBTUVQQUQpIHsKIAogZW5hYmxlPyhWSURFT19UUkFDSykgewogICBJRExfQklO
RElOR1MgKz0gXAorICAgICQkUFdEL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwgXAorICAgICQk
UFdEL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIFwKICAgICAkJFBXRC9odG1sL3RyYWNr
L1RleHRUcmFjay5pZGwgXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbCBc
CiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAgICAgJCRQV0Qv
aHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UcmFj
a0V2ZW50LmlkbCBcCisgICAgJCRQV0QvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCisgICAg
JCRQV0QvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKIH0KIAogZW5hYmxlPyhNRURJQV9T
T1VSQ0UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU5OWNlYzM4ODRhMGE2
NDQyYWEzYjlmNzNjMWYyNTM2MWFiZjkzYWQuLjBlNzRhYzNkNjRjZjQzOGY3ZmNmN2ZkOTk0ZTdl
YjVlYTc5ODgzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjUsNiArNjUs
MTAgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvU291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1NvdXJj
ZU5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvVHJhY2suY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9UcmFjay5oIFwKKwlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQXVkaW9UcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QXVkaW9UcmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0JhckluZm8uY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmFySW5mby5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQmVmb3JlTG9hZEV2ZW50LmNwcCBcCkBAIC03NzcsNiArNzgxLDEwIEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZhbGlk
aXR5U3RhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1ZvaWRDYWxsYmFjay5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJhY2suaCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1ZpZGVvVHJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTVmlkZW9UcmFjay5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmlkZW9UcmFja0xp
c3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmlkZW9UcmFja0xpc3QuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXYXZlVGFibGUuY3BwIFwKQEAgLTE1ODYsMTEgKzE1OTQsMTUgQEAgZG9tX2JpbmRpbmdf
aWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaWRs
IFwKIAkkKFdlYkNvcmUpL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmlkbCBcCisJJChX
ZWJDb3JlKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAogCSQoV2Vi
Q29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvdHJhY2svVHJhY2tF
dmVudC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCisJJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvSmF2YVNjcmlw
dENhbGxGcmFtZS5pZGwgXApAQCAtMjMyMSw2ICsyMzMzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCBcCkBAIC0yNDY3
LDcgKzI0ODEsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdXN0b20uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRU
cmFja0N1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xp
c3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoQ3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20uY3Bw
IFwKQEAgLTI0NzUsNiArMjQ4OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgXApAQCAt
Mzc2OSw2ICszNzg0LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCkBAIC0zNzg5LDYgKzM4MDgsMTAgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggXAorCVNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tM
aXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIFwKQEAgLTU0OTksNiArNTUyMiw3IEBAIHdlYmNvcmVf
cGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW5pdGlhbGl6
ZUxvZ2dpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdl
YktpdEJyaWRnZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1Ry
YWNrUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJt
L0dyYXBoaWNzQ29udGV4dDNETkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jcHUvYXJtL2ZpbHRlcnMvTkVPTkhlbHBlcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggXApAQCAtNTc3OSw2
ICs1ODAzLDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UeXBlc2V0dGluZ0ZlYXR1
cmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1VuaXRCZXppZXIuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IDZhZjExMGY5Y2JlNmJmNjczMzAyYjEzMWMwY2RhM2QzOThkY2M2M2EuLjljODc1ZjQ0N2Mx
N2U1NjMxNTEwZTA5NTYwYmUxMjViMTMyZTU1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzk2OSw5ICsz
OTY5LDEwIEBAIGVuYWJsZT8oSkFWQVNDUklQVF9ERUJVR0dFUikgewogCiBlbmFibGU/KFZJREVP
X1RSQUNLKSB7CiAgICAgSEVBREVSUyArPSBcCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogICAg
ICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuaCBcCisgICAgICAgIGh0bWwvdHJhY2svQXVkaW9U
cmFjay5oIFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIFwKICAgICAgICAg
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suaCBcCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmggXApAQCAtMzk4
MiwyMCArMzk4MywzMCBAQCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAgIGh0bWwvdHJh
Y2svVHJhY2tCYXNlLmggXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIFwKKyAgICAgICAgaHRtbC90cmFjay9WaWRl
b1RyYWNrLmggXAorICAgICAgICBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggXAogICAgICAg
ICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRU
b2tlbi5oIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBcCiAgICAgICAg
IGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1
ZGlvVHJhY2tQcml2YXRlLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQ2xpZW50LmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1By
aXZhdGUuaCBcCiAKICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRp
b1RyYWNrQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0xpc3RD
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1Ry
YWNrRXZlbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0
Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAg
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBcCiAgICAg
ICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgXAorICAgICAgICBodG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwIFwKKyAgICAgICAgaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgXAogICAg
ICAgICBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgXAogICAgICAgICBodG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cCBcCkBAIC00MDA2LDYgKzQwMTcsOCBAQCBlbmFibGU/KFZJREVPX1RSQUNLKSB7CiAgICAgICAg
IGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVu
dC5jcHAgXAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIFwKKyAgICAgICAg
aHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBcCisgICAgICAgIGh0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuY3BwIFwKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBcCiAgICAg
ICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBcCiAgICAgICAgIGh0bWwvdHJhY2svV2Vi
VlRUVG9rZW5pemVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggZDQ1MTYyYjM2NGU3ZjNmZTQ2
YWU5OTA2OTk2MGE2ZmM0ZmM0YTEwNC4uZThkNDMzMzA4NDJjNDJhZGUzZmNmMGNmMGUwMWE0MDg2
MzU1NTA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjE5LDExICsyMTksMTUgQEAgZW5kaWYgKCkK
IAogaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKKyAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9q
cy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJh
Y2tDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5j
cHAKICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1ZpZGVv
VHJhY2tDdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RDdXN0
b20uY3BwCiAgICAgKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCAyYTk0ZmU1Y2Y4ZDE1NGM0OTljZDc0NDBjZGZjOGQ5MGE0
OTVkZGQ4Li40ODAzOTI5YzU4ZDdkYzgyOTgwZGE0YzY0ZGM0ZGRlN2JhODc0NmRjIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk5MDIsNiAr
Mjk5MDIsMTAgQEAKIAkJCQlOYW1lPSJncmFwaGljcyIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBdWRpb1RyYWNrUHJpdmF0ZS5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcQml0bWFwSW1hZ2UuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAt
MzAzNzgsNiArMzAzODIsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRlLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xXaW5kUnVsZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjU3
NTQsNiArNjU3NjIsMjIgQEAKIAkJCQlOYW1lPSJ0cmFjayIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2suY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFx0cmFja1xB
dWRpb1RyYWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHRyYWNrXEF1ZGlvVHJhY2tMaXN0LmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcQXVkaW9U
cmFja0xpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcSW5iYW5kVGV4dFRyYWNrLmNwcCIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KQEAgLTY1ODM0LDYgKzY1ODU4LDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2suY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFx0cmFja1xWaWRlb1RyYWNrLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2tMaXN0LmNwcCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJh
Y2tcVmlkZW9UcmFja0xpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcdHJhY2tcV2ViVlRURWxlbWVudC5jcHAiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNDlmNzdiNWY4ZDE3MmM2NzhlMjAzN2FjZjYwYWE3Nzg3NTg3NjMw
MS4uMDRkOWI0MDdkOGQxZjAwOWY4OTIyNTAwMmQ3MDNhOWFhYjJhNGRhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyLDcg
KzEzMiw3IEBACiAJCTA3QjVBMkRDMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkRB
MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDdCNUEzMEQx
NDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTMwQzE0Njg3RDcxMDBBODFF
Q0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdCREQ2RUMxNDY5QjRD
MjAwOUM5Rjg1IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNU
cmFja0V2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKLQkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1QTQ3IC8q
IEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi87IH07CisJCTA3Q0U3N0Q1MTY3MTJBNkEwMEM1NUE0
NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRU
cmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICov
OyB9OwogCQkwN0UxMTcwNzE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE3
MDYxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
MDgwNkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8q
IFNWR01hdHJpeC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01MTEzLDggKzUxMTMsMzAgQEAKIAkJQkNGRTJGMTIwQzFCNTgzODAwMjAyMzVGIC8q
IEpTUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNGRTJGMTAwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5oICovOyB9OwogCQlCQ0ZGNjQ5MTBF
QUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNG
RjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkY2NDkwMEVBRDE1QzIwMEMxRDZGNyAvKiBM
ZW5ndGhTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQkU2REY3MEIxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcwODE3
MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQkU2REY3
MEQxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU2REY3MEExNzFDQTJDNTAw
REQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwICovOyB9OworCQlCRTZERjcxMTE3
MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFNkRGNzBFMTcxQ0EyREEwMERENTJCOCAv
KiBKU0F1ZGlvVHJhY2tDdXN0b20uY3BwICovOyB9OworCQlCRTZERjcxMzE3MUNBMkRBMDBERDUy
QjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRp
b1RyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAv
KiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJFODhFMEJGMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCAq
LzsgfTsKIAkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEMwMTcxNUNF
MjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggKi87IH07CisJCUJFODhFMEQ4MTcxNUQyQTIw
MDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNw
cCAqLzsgfTsKKwkJQkU4OEUwRDkxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMENEMTcxNUQy
QTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkU4OEUwREIxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJh
Y2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5jcHAgKi87IH07CisJ
CUJFODhFMERDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDAxNzE1RDJBMjAwNjU4
RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmggKi87IH07CisJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5
OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJFODhFMEQyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCAqLzsg
fTsKKwkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQzMTcxNUQyQTIwMDY1
OEQ5OCAvKiBWaWRlb1RyYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkU4OEUwRTExNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhF
MEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFODhF
MEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2tMaXN0LmggKi87IH07CisJCUJFOEVGMDQyMTcxQzhGRjkwMDlCNDhDMyAvKiBK
U0F1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi87IH07
CisJCUJFOEVGMDQzMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDNGMTcxQzhGRjkwMDlC
NDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLzsgfTsKKwkJQkU4RUYwNDQxNzFDOEZGOTAwOUI0OEMz
IC8qIEpTQXVkaW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xp
c3QuY3BwICovOyB9OworCQlCRThFRjA0NTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNr
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4
RUYwNDExNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCAqLzsgfTsKKwkJQkU4
RUYwNEExNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0NjE3MUM5MDE0MDA5QjQ4QzMg
LyogSlNWaWRlb1RyYWNrLmNwcCAqLzsgfTsKKwkJQkU4RUYwNEIxNzFDOTAxNDAwOUI0OEMzIC8q
IEpTVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkU4RUYwNDcxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oICovOyB9Owor
CQlCRThFRjA0QzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0ODE3MUM5MDE0
MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi87IH07CisJCUJFOEVGMDREMTcxQzkw
MTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0OTE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRl
b1RyYWNrTGlzdC5oICovOyB9OworCQlCRUYyOUVFQjE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9U
cmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJFRjI5RUVDMTcx
NUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRUExNzE1REQwOTAwQzRCNEM5IC8qIFZp
ZGVvVHJhY2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzA0NkUxQUMxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA0NkUx
QUIxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwICovOyB9OwogCQlDMEMw
NTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAv
KiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5n
cy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhC
MzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjM1MSw3ICs2MzczLDYgQEAK
IAkJMDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlD
OUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJh
Y2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UzOEEwQjE0
OEZDRjBDMDA2RTFFQ0MgLyogSlNUZXh0VHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDgwRTQ5MjExMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdp
bmVCYXNlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE4MzgsMTMgKzExODU5
LDM5IEBACiAJCUJDRkUyRjEwMEMxQjU4MzcwMDIwMjM1RiAvKiBKU1JlY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0ZGNjQ4RjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlbmd0aEJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZW5ndGhTaXplLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRlb1Ry
YWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU2REY3MEExNzFD
QTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNkRGNzBFMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1
ZGlvVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBdWRpb1RyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU2
REY3MTAxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFODU1RjdGMDcwMUU4MzUwMDIzOTc2
OSAvKiBXZWJDb3JlVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkU4NTYwNTEwNzAxRjkxMTAwMjM5NzY5IC8q
IFdlYkNvcmVWaWV3Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgcGF0aCA9IFdlYkNvcmVWaWV3Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCRTg4RTBCRjE3MTVDRTI2MDA2NThEOTggLyog
VHJhY2tMaXN0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
cmFja0xpc3RCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4OEUwQzAx
NzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHJhY2tMaXN0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCRTg4RTBDQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkU4OEUwQ0QxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBDRTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFj
ay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9UcmFjay5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJFODhFMENGMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNr
TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNr
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFODhFMEQwMTcxNUQyQTIw
MDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb1RyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4
RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xpc3QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEF1ZGlvVHJhY2tMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJFODhFMEQzMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4OEUwRDQxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJh
Y2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZGVvVHJhY2suaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFj
a0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFj
a0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRTg4RTBENjE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlkZW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4
OEUwRDcxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwM0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9U
cmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvVHJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8q
IEpTQXVkaW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNBdWRpb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJF
OEVGMDQxMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkU4RUYwNDYxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZpZGVvVHJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0NzE3MUM5MDE0MDA5QjQ4QzMg
LyogSlNWaWRlb1RyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmlk
ZW9UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThFRjA0ODE3MUM5MDE0
MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1ZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkU4RUYwNDkxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWaWRlb1RyYWNrTGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAgLyogUG9z
aXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUJFOTFGQzhDMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
b3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlCRTk4M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJk
VUlNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8q
IEF1ZGlvVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFRjI5RUVB
MTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZWRTdHJpbmdz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBERkM4NkYwREI2ODQxQTAwM0VB
RTdDIC8qIEpTQ29uc29sZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NvbnNvbGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2NzQsNiArMTY3MjEsMTAgQEAKIAkJCQk0
OUVFQ0VGMzEwNTA3MEM0MDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTQ5RUVD
RjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgKi8sCiAJCQkJNDlF
RUNGMUExMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8sCisJCQkJQkU4
RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4RUYw
M0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovLAorCQkJCUJFOEVGMDQwMTcx
QzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRThFRjA0MTE3
MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5oICovLAogCQkJCTY1REYzMjMzMDlE
MURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk2NURGMzIzNDA5
RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTY1REYzMjM1MDlE
MURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uY3BwICovLApAQCAtMTY5MDgsNiArMTY5
NTksMTAgQEAKIAkJCQk5MTA4OUQzMDE0QzMzNUNEMDA1QUZDNDkgLyogSlNVaW50OENsYW1wZWRB
cnJheS5oICovLAogCQkJCTE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3Rh
dGUuY3BwICovLAogCQkJCTE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3Rh
dGUuaCAqLywKKwkJCQlCRThFRjA0NjE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmNw
cCAqLywKKwkJCQlCRThFRjA0NzE3MUM5MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggKi8s
CisJCQkJQkU4RUYwNDgxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3BwICov
LAorCQkJCUJFOEVGMDQ5MTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmggKi8s
CiAJCQkJOTdFOUVDOEIxNURDNDkyRjAwNEYyRTcxIC8qIEpTVm9pZENhbGxiYWNrLmNwcCAqLywK
IAkJCQk5N0U5RUM4QzE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suaCAqLywKIAkJ
CQlBN0QyMEY2MDEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3BwICovLApA
QCAtMTc2NzYsOCArMTc3MzEsMTIgQEAKIAkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRy
YWNrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCRTg4
RTBCRjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgKi8sCi0JCQkJQkU4OEUw
QzAxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCAqLywKKwkJCQlCRTg4RTBDQzE3
MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFjay5jcHAgKi8sCisJCQkJQkU4OEUwQ0QxNzE1RDJB
MjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suaCAqLywKKwkJCQlCRTg4RTBDRTE3MTVEMkEyMDA2NThE
OTggLyogQXVkaW9UcmFjay5pZGwgKi8sCisJCQkJQkU4OEUwQ0YxNzE1RDJBMjAwNjU4RDk4IC8q
IEF1ZGlvVHJhY2tMaXN0LmNwcCAqLywKKwkJCQlCRTg4RTBEMDE3MTVEMkEyMDA2NThEOTggLyog
QXVkaW9UcmFja0xpc3QuaCAqLywKKwkJCQlCRTg4RTBEMTE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFja0xpc3QuaWRsICovLAogCQkJCTA3OTQxNzhGMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJh
bmRUZXh0VHJhY2suY3BwICovLAogCQkJCTA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJh
bmRUZXh0VHJhY2suaCAqLywKIAkJCQk5NzU5RTkzNDE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFi
bGVUZXh0VHJhY2suY3BwICovLApAQCAtMTc3MDEsNiArMTc3NjAsMTQgQEAKIAkJCQkwNzAzMzRE
MDE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5jcHAgKi8sCiAJCQkJMDcwMzM0RDExNDU5
RkZBQzAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQuaCAqLywKIAkJCQkwNzAzMzREMjE0NTlGRkFDMDA4
RDhENDUgLyogVHJhY2tFdmVudC5pZGwgKi8sCisJCQkJQkU4OEUwQkYxNzE1Q0UyNjAwNjU4RDk4
IC8qIFRyYWNrTGlzdEJhc2UuY3BwICovLAorCQkJCUJFODhFMEMwMTcxNUNFMjYwMDY1OEQ5OCAv
KiBUcmFja0xpc3RCYXNlLmggKi8sCisJCQkJQkU4OEUwRDIxNzE1RDJBMjAwNjU4RDk4IC8qIFZp
ZGVvVHJhY2suY3BwICovLAorCQkJCUJFODhFMEQzMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrLmggKi8sCisJCQkJQkU4OEUwRDQxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaWRs
ICovLAorCQkJCUJFODhFMEQ1MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAg
Ki8sCisJCQkJQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggKi8s
CisJCQkJQkU4OEUwRDcxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLywK
IAkJCQlGMTIxNzFGMzE2QThCQzYzMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgKi8sCiAJ
CQkJRjEyMTcxRjQxNkE4QkM2MzAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCAqLywKIAkJCQk1
RDIxQTgwMDEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmNwcCAqLywKQEAgLTE4MzMz
LDYgKzE4NDAwLDggQEAKIAkJCQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3Jt
cyAqLywKIAkJCQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2Uu
Y3BwICovLAogCQkJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRn
ZS5oICovLAorCQkJCUJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0
ZS5oICovLAorCQkJCUJFRjI5RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0
ZS5oICovLAogCQkJCUE4OTk0MzI3MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAg
Ki8sCiAJCQkJQTg5OTQzMjYwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmggKi8sCiAJ
CQkJQjI3NTM1MzgwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmNwcCAqLywKQEAgLTE4ODE1LDYg
KzE4ODg0LDggQEAKIAkJCQlGREVBQUFFRjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZl
clNvdXJjZU5vZGVDdXN0b20uY3BwICovLAogCQkJCUNEREU2OTFEMTcxREY4OTEwMEE0NEQ4OSAv
KiBKU0F1ZGlvQnVmZmVyQ3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGMDEyQjAyRUU0MDBEQ0Yz
M0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzBFMTcxQ0EyREEw
MERENTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uY3BwICovLAorCQkJCUJFNkRGNzEwMTcxQ0Ey
REEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQlGRDhBQTYz
QjE2OTUxNDhFMDBEMkVBNjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJ
CQk4OTMxREU1QTE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAqLywKIAkJCQk0
OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwICovLApAQCAtMTg5MTgsMTIgKzE4OTg5LDEzIEBACiAJCQkJMUEyQzQwQUEwREVCNTVB
QTAwNUFGMTlFIC8qIEpTVGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJMDdFMTE3MDYxNDg5RUJFQjAw
RUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLywKIAkJCQkwN0UxMTZCMDE0ODlD
OUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovLAotCQkJCTA3RTM4QTBCMTQ4
RkNGMEMwMDZFMUVDQyAvKiBKU1RleHRUcmFja0N1c3RvbS5oICovLAogCQkJCTA3QjVBMzBDMTQ2
ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovLAogCQkJCTA3MDMz
NEU4MTQ1QTFGMzUwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQkwNzg0NjM4
NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovLAogCQkJCTA3QjVBMzBBMTQ2
ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTUxNkJCNzky
MENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwICovLAorCQkJCUJFNkRG
NzA4MTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovLAorCQkJCUJF
NkRGNzBBMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywK
IAkJCQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwICovLAogCQkJCUUxQUQxNEM0MTI5NzM1NDkwMEFDQTk4OSAvKiBKU1dlYktpdENT
U0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0QjQxMjk3MzRDQTAwQUNBOTg5
IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5jcHAgKi8sCkBAIC0yMTAwMCw2ICsy
MTA3Miw3IEBACiAJCQkJRkQzMTYwODkxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENjJGNTJFMTQ1ODk4RDgwMDk0QjBFRCAvKiBB
dWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREIwNTJFMDE1
NjFBNDJDMDBCNTAwRDYgLyogQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwOEIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2MDEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVu
dGljYXRpb25DRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzODYyLDYg
KzIzOTM1LDcgQEAKIAkJCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUYxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rv
ck1hdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0MwMTAwMDdBMjYzRCAvKiBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJFRjI5RUVDMTcxNURE
MDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VG
NDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzRkZGRjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyMDA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJs
ZVBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MDQ5LDYgKzI0MTIzLDE0IEBACiAJCQkJ
RTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5z
Zm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwRDkxNzE1RDJBMjAwNjU4
RDk4IC8qIEF1ZGlvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhFMERDMTcxNUQyQTIw
MDY1OEQ5OCAvKiBBdWRpb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkU4OEUwREYx
NzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFODhF
MEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkU4RUYwNDUxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUJFOEVGMDRCMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJh
Y2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJFOEVGMDREMTcxQzkwMTQwMDlCNDhDMyAvKiBKU1Zp
ZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MDAwLDYgKzI3MDgyLDE4IEBACiAJ
CQkJRTFCNTMzNDcxNzE3RDBBMTAwRjIwNUY5IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFj
a0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCNDg0RjRDMTcxRjgyMUUwMDA0MDc1
NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4OEUwRDgx
NzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4
OEUwREIxNzE1RDJBMjAwNjU4RDk4IC8qIEF1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCRThFRjA0MjE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRp
b1RyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDQ0MTcxQzhGRjkwMDlCNDhDMyAv
KiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFOEVGMDRBMTcxQzkw
MTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkU4RUYw
NEMxNzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQkU2REY3MEIxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcwRDE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1Ry
YWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCRTZERjcxMTE3MUNBMkRBMDBE
RDUyQjggLyogSlNBdWRpb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJFNkRG
NzEzMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUu
YW0KaW5kZXggZjMyMmQ2NGNjN2QxN2E3ZmI3NTQwM2VhYmQyMTliZmQzZWVkOTE5Ny4uZWVlZWVi
YTEwYTMyZTY1YTI5OWMyY2MwY2M3ODJmNDA4Y2UzMTYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC00MzMsMTggKzQzMywyNCBAQCB3
ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBcCiAKIGlmIEVOQUJMRV9WSURFTwogd2Via2l0
Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUF1ZGlvVHJhY2tMaXN0LmggXAogCSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxl
bWVudC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktp
dERPTUhUTUxWaWRlb0VsZW1lbnQuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmggXAogCSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmgg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4
dFRyYWNrQ3VlTGlzdC5oIFwKLQkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuaAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudC5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2suaCBcCisJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrTGlzdC5o
CiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NSFRNTEF1ZGlvRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdGRvbS9XZWJLaXRET01IVE1MQXVkaW9FbGVtZW50UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NSFRNTFZpZGVvRWxlbWVudC5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01IVE1MVmlkZW9FbGVtZW50UHJpdmF0ZS5oIFwKKwlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NQXVkaW9UcmFjay5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01BdWRpb1RyYWNrTGlzdC5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2suY3BwIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXApAQCAtNDUzLDYgKzQ1
OSw4IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdGRvbS9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3RQcml2YXRlLmggXAorCURl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01WaWRlb1RyYWNrLmNwcCBcCisJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVZpZGVvVHJhY2tMaXN0LmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTVRyYWNrRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaAogZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFiNjJmMWI1MjM5ZDkzNjRjNWEyY2IxNzljOTYyMDE5MmU4ZDU2YjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20u
Y3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2suaCIKKworI2lu
Y2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIEpTQXVkaW9UcmFjazo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQXVkaW9UcmFjayoganNBdWRp
b1RyYWNrID0ganNDYXN0PEpTQXVkaW9UcmFjayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoanNBdWRpb1RyYWNrLCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChT
dHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2stPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbihqc0F1ZGlvVHJhY2ssIHZpc2l0b3IpOworCisgICAgQXVkaW9UcmFjayog
YXVkaW9UcmFjayA9IHN0YXRpY19jYXN0PEF1ZGlvVHJhY2sqPihqc0F1ZGlvVHJhY2stPmltcGwo
KSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFjaykpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDMx
ZGRhNGFmM2RlNWM5ZGM3MzU3MmVjMmY2Y2E3ODk4ZWU0MTM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0LmgiCisKKyNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU0F1ZGlvVHJhY2tMaXN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNBdWRpb1RyYWNrTGlzdCoganNBdWRpb1RyYWNrTGlzdCA9IGpzQ2FzdDxKU0F1ZGlvVHJhY2tM
aXN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhqc0F1ZGlvVHJhY2tM
aXN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0Zs
YWcpOworICAgIEFTU0VSVChqc0F1ZGlvVHJhY2tMaXN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNB
dWRpb1RyYWNrTGlzdCwgdmlzaXRvcik7CisKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFj
a0xpc3QgPSBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrTGlzdCo+KGpzQXVkaW9UcmFja0xpc3QtPmlt
cGwoKSk7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoYXVkaW9UcmFja0xpc3QtPmVs
ZW1lbnQoKSkpOworICAgIGF1ZGlvVHJhY2tMaXN0LT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlz
aXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCAyYmEx
MGY1NTZlOGI0ODAyZThiYTk2NmZkMWQzY2UxMjQzMTI0MDU2Li41MWFkZjM1ZTM0OWY4NGVkYTZm
MDNhN2E0OTM5ZWMzZWRjNDRlZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJH
Q0NvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTQXR0ckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNBdWRpb1RyYWNrQ3VzdG9tLmNw
cCIKKyNpbmNsdWRlICJKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Js
b2JDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0NTU0ZvbnRGYWNlUnVsZUN1c3RvbS5jcHAiCkBAIC0xNDcsNiArMTQ5LDggQEAKICNp
bmNsdWRlICJKU1RyYWNrQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RyYWNrRXZlbnRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTVHJlZVdhbGtlckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNWaWRl
b1RyYWNrQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBv
aW50Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA1ZGQ5ZGNhNzYwYTgyNzZjNDRjZTEwYzVhOTg3NjBk
NmRkNzkzYjE4Li5lZTk5N2FhMzdlYzI2NGVmMmI1MTVkOTg4ZDNmZmJhZjcwYmU4M2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20u
Y3BwCkBAIC0yOCw3ICsyOCw4IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVk
ZSAiSlNUZXh0VHJhY2tDdWUuaCIKLSNpbmNsdWRlICJKU1RleHRUcmFja0N1c3RvbS5oIgorI2lu
Y2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tDdXN0b20uY3BwCmluZGV4IDVkNjQxMjQ2NjVhNzE4ZWQwZGNlZWYzNDQ1MDgzNGE5NGU2
NWRjNWIuLjkzZjM0N2IxNzMzNzhjMDM5ZWNiNjY3MWI4OTQ2NGJkNTUxMWEwMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKQEAgLTI2
LDMyICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQotI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VzdG9tLmgiCi0KICNpbmNsdWRlICJKU1RleHRU
cmFjay5oIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VlTGlzdC5oIgorI2luY2x1ZGUgIkpTVHJh
Y2tDdXN0b20uaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1ib29sIEpTVGV4dFRyYWNrT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCi17Ci0gICAgSlNUZXh0VHJhY2sqIGpzVGV4dFRyYWNrID0ganNDYXN0PEpTVGV4dFRyYWNr
Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBUZXh0VHJhY2sqIHRleHRUcmFjayA9IHN0
YXRpY19jYXN0PFRleHRUcmFjayo+KGpzVGV4dFRyYWNrLT5pbXBsKCkpOwotCi0gICAgLy8gSWYg
dGhlIGN1ZSBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFi
bGUgYmVjYXVzZQotICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5n
IHRob3NlIGV2ZW50IGxpc3RlbmVycy4KLSAgICBpZiAodGV4dFRyYWNrLT5pc0ZpcmluZ0V2ZW50
TGlzdGVuZXJzKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgdGhlIGN1ZSBo
YXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlz
IG5vdCByZWFjaGFibGUuCi0gICAgaWYgKCF0ZXh0VHJhY2stPmhhc0V2ZW50TGlzdGVuZXJzKCkg
JiYgIWpzVGV4dFRyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHRleHRU
cmFjaykpOwotfQotCiB2b2lkIEpTVGV4dFRyYWNrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNUZXh0VHJhY2sqIGpzVGV4dFRyYWNr
ID0ganNDYXN0PEpTVGV4dFRyYWNrKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdXN0b20uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2JmZGUyODkzMzg0NzI5YjQyMzI5Y2JmODY3NjQ3MTJjNzQwNzdkYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RleHRUcmFja0N1c3RvbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaWZuZGVmIEpTVGV4dFRyYWNrQ3VzdG9tX2gKLSNkZWZpbmUgSlNUZXh0VHJhY2tD
dXN0b21faAotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotI2luY2x1ZGUgIkpTVGV4dFRyYWNr
LmgiCi0KLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFRyYWNr
RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgotI2luY2x1ZGUgIkxvYWRhYmxl
VGV4dFRyYWNrLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotaW5saW5lIHZvaWQqIHJvb3QoVGV4dFRyYWNrKiB0cmFjaykKLXsKLSAgICAvLyBJZiB0
aGlzIHRyYWNrIGNvcnJlc3BvbmRzIHRvIGEgPHRyYWNrPiBlbGVtZW50LCByZXR1cm4gdGhhdCBl
bGVtZW50J3Mgcm9vdC4KLSAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6
VHJhY2tFbGVtZW50KSB7Ci0gICAgICAgIGlmIChIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1l
bnQgPSBzdGF0aWNfY2FzdDxMb2FkYWJsZVRleHRUcmFjayo+KHRyYWNrKS0+dHJhY2tFbGVtZW50
KCkpCi0gICAgICAgICAgICByZXR1cm4gcm9vdCh0cmFja0VsZW1lbnQpOwotICAgIH0KLQotICAg
IC8vIE5vLCByZXR1cm4gdGhlIG1lZGlhIGVsZW1lbnQncyByb290IGlmIGl0IGhhcyBvbmUuCi0g
ICAgaWYgKHRyYWNrLT5tZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHJvb3QodHJhY2st
Pm1lZGlhRWxlbWVudCgpKTsKLQotICAgIC8vIE5vIHRyYWNrIGVsZW1lbnQgYW5kIG5vIG1lZGlh
IGVsZW1lbnQsIHJldHVybiB0aGUgdGV4dCB0cmFjay4KLSAgICByZXR1cm4gdHJhY2s7Ci19Ci0K
LX0KLQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCmluZGV4IDIzYTgzZTg5MTNlOTAwMjdjMjY1OWQx
ZmMwNzJhZGEzNTFlZmJkNDUuLmFmMGVjMTE2MTljMmMxMzFjZjJmNmM2MWRjZjFlMWQwOWM3MDEz
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tM
aXN0Q3VzdG9tLmNwcApAQCAtMjgsMzEgKzI4LDEzIEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogI2luY2x1ZGUgIkpTVGV4dFRyYWNrTGlzdC5oIgogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGVDdXN0b20uaCIK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpT
VGV4dFRyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewot
ICAgIEpTVGV4dFRyYWNrTGlzdCoganNUZXh0VHJhY2tMaXN0ID0ganNDYXN0PEpTVGV4dFRyYWNr
TGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgVGV4dFRyYWNrTGlzdCogdGV4dFRy
YWNrTGlzdCA9IHN0YXRpY19jYXN0PFRleHRUcmFja0xpc3QqPihqc1RleHRUcmFja0xpc3QtPmlt
cGwoKSk7Ci0KLSAgICAvLyBJZiB0aGUgbGlzdCBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBp
dHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQotICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJl
c3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KLSAgICBpZiAodGV4
dFRyYWNrTGlzdC0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIC8vIElmIHRoZSBsaXN0IGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBu
byBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KLSAgICBpZiAoIXRleHRU
cmFja0xpc3QtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzVGV4dFRyYWNrTGlzdC0+aGFzQ3Vz
dG9tUHJvcGVydGllcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJdCBpcyBy
ZWFjaGFibGUgaWYgdGhlIG1lZGlhIGVsZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJsZS4KLSAgICBy
ZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCh0ZXh0VHJhY2tMaXN0LT5lbGVt
ZW50KCkpKTsKLX0KLQogdm9pZCBKU1RleHRUcmFja0xpc3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU1RleHRUcmFja0xpc3QqIGpz
VGV4dFRyYWNrTGlzdCA9IGpzQ2FzdDxKU1RleHRUcmFja0xpc3QqPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKaW5kZXggN2I5Nzk0NWNhMTBh
NDFkZjBjZGZiNDdjMWY2YzE3NzZlMDE2MGJhYi4uNzlkN2I5M2RjYmZhOGNjMWRiMTc4ZTkyODNk
MjhhMGQ1NjBlMTBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
cmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1
c3RvbS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uaCIK
IAorI2luY2x1ZGUgIkpTQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmgiCisj
aW5jbHVkZSAiSlNWaWRlb1RyYWNrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTY2
LDkgKzY4LDExIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUcmFja0JhCiAgICAgICAgIGJyZWFrOwogICAg
ICAgICAKICAgICBjYXNlIFRyYWNrQmFzZTo6QXVkaW9UcmFjazoKKyAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEF1ZGlvVHJhY2ssIHRyYWNrKTsK
KyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFRyYWNrQmFzZTo6VmlkZW9UcmFjazoKLSAgICAg
ICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bnRpbCBWaWRlb1RyYWNrIGFuZCBBdWRpb1Ry
YWNrIGFyZSBpbXBsZW1lbnRlZC4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBWaWRlb1Ry
YWNrLCB0cmFjayk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUcmFja0Jhc2U6OlRleHRU
cmFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0
b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaAppbmRleCAx
NjUzNDBkYTBhN2VmZWNmNjRiYmUwODM0YzgzMGQzMWYwZDYxZTY5Li42ZTI0YTA5MTVkYzg5ZDI2
YTZlZDA2Y2RhZjA0OTk5ZGJiOTI3NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNUcmFja0N1c3RvbS5oCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisj
aW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFRy
YWNrQmFzZSogdG9UcmFjayhKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRyYWNrQmFzZSopOwogCitpbmxpbmUgdm9p
ZCogcm9vdChUcmFja0Jhc2UqIHRyYWNrKQoreworICAgIGlmICh0cmFjay0+ZWxlbWVudCgpKQor
ICAgICAgICByZXR1cm4gcm9vdCh0cmFjay0+ZWxlbWVudCgpKTsKKyAgICByZXR1cm4gdHJhY2s7
Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNW
aWRlb1RyYWNrQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODE4NDkzMDZlMGQyZThiNWE4OTMwYzlk
NjJkNGZmZmQ4YWJlN2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiSlNWaWRlb1RyYWNrLmgiCisKKyNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU1ZpZGVvVHJh
Y2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1ZpZGVvVHJhY2sqIGpzVmlkZW9UcmFjayA9IGpzQ2FzdDxKU1ZpZGVvVHJhY2sqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGpzVmlkZW9UcmFjaywgJnNfaW5m
byk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENo
aWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBB
U1NFUlQoanNWaWRlb1RyYWNrLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNp
dENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oanNWaWRlb1RyYWNrLCB2aXNp
dG9yKTsKKworICAgIFZpZGVvVHJhY2sqIHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDxWaWRlb1Ry
YWNrKj4oanNWaWRlb1RyYWNrLT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChy
b290KHZpZGVvVHJhY2spKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlkZW9UcmFja0xpc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1
c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFiNDkzYTVmYTYxMDg2MjBiY2Q4ZTY5NzVmNDJhZGI5NDkz
OWU1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmlk
ZW9UcmFja0xpc3RDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNWaWRl
b1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUN1
c3RvbS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgSlNWaWRlb1RyYWNrTGlzdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVmlkZW9UcmFja0xpc3QqIGpzVmlkZW9UcmFja0xp
c3QgPSBqc0Nhc3Q8SlNWaWRlb1RyYWNrTGlzdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoanNWaWRlb1RyYWNrTGlzdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NF
UlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNp
dENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQoanNWaWRlb1RyYWNrTGlz
dC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKGpzVmlkZW9UcmFja0xpc3QsIHZpc2l0b3IpOworCisgICAg
VmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8VmlkZW9UcmFja0xp
c3QqPihqc1ZpZGVvVHJhY2tMaXN0LT5pbXBsKCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KHZpZGVvVHJhY2tMaXN0LT5lbGVtZW50KCkpKTsKKyAgICB2aWRlb1RyYWNrTGlzdC0+
dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA4Mjc3N2E4NmVlZmRm
YmViZTY4OWM5YjkyMzM2ODgyOTU4MzkxYzNlLi5lYTA3OTliYjVkMGQ3MzRjMDFmNDY4YTYzZTFk
NWIyMjA1Y2ZiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNDEsNiArNDEsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXVkaW9Db250ZXh0OworICAgIGNs
YXNzIEF1ZGlvVHJhY2tMaXN0OwogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQ7CiAg
ICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01XaW5kb3c7CkBAIC02
Nyw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTb3VyY2VCdWZmZXJM
aXN0OwogICAgIGNsYXNzIFRleHRUcmFjazsKICAgICBjbGFzcyBUZXh0VHJhY2tDdWU7CisgICAg
Y2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdl
YktpdE5hbWVkRmxvdzsKICAgICBjbGFzcyBXb3JrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA0NzZkMWI1M2YxNDViYjI3MzQ5ODk5M2YzOWYxZDFjYmFh
NjIzNTgzLi44ZWE1YjdiMDNhYmFjYTAyZjI1ZjQ4YTJlZDU1OTkyNjNlYTQ3MGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEsNiArMSw3IEBACiBuYW1l
c3BhY2U9IkV2ZW50VGFyZ2V0IgogCiBBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElP
CitBdWRpb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogQmF0dGVyeU1hbmFnZXIg
Y29uZGl0aW9uYWw9QkFUVEVSWV9TVEFUVVMKIERlZGljYXRlZFdvcmtlckNvbnRleHQgY29uZGl0
aW9uYWw9V09SS0VSUwogRE9NQXBwbGljYXRpb25DYWNoZQpAQCAtMzcsNiArMzgsNyBAQCBTVkdF
bGVtZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCiBUZXh0VHJhY2sgY29uZGl0aW9uYWw9VklE
RU9fVFJBQ0sKIFRleHRUcmFja0N1ZSBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNr
TGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSworVmlkZW9UcmFja0xpc3QgY29uZGl0aW9uYWw9
VklERU9fVFJBQ0sKIFdlYktpdE5hbWVkRmxvdwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdFQl9T
T0NLRVRTCiBXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmZiOTk3NzYwY2RhZjlmYzQyZGM4OGUzZTA0YmU2Mzdi
MWY4OWMwOC4uNTA1NGFmMTVjZTdiOTQ0Y2EyZjA2ZDRlNTVlZjA0N2E4YTQ2MWJkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05OCw2ICs5OCw4IEBACiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlz
dC5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2suaCIKQEAgLTEwNSw2ICsxMDcsOCBAQAogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5j
bHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCisjaW5j
bHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKQEAgLTI5Niw3ICszMDAsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAgICwgbV9w
cm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZShmYWxzZSkKICAgICAsIG1fbGFzdFRleHRUcmFja1Vw
ZGF0ZVRpbWUoLTEpCiAgICAgLCBtX2NhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpBdXRvbWF0aWMpCisgICAgLCBtX2F1ZGlvVHJhY2tzKDApCiAgICAgLCBtX3RleHRU
cmFja3MoMCkKKyAgICAsIG1fdmlkZW9UcmFja3MoMCkKICAgICAsIG1faWdub3JlVHJhY2tEaXNw
bGF5VXBkYXRlKDApCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMzMwLDEyICsz
MzYsMjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGRvY3Vt
ZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3Mo
dGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0
ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAgIGlmICht
X2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hdWRpb1RyYWNrcy0+bGVuZ3RoKCk7
ICsraSkKKyAgICAgICAgICAgIG1fYXVkaW9UcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7
CisgICAgfQogICAgIGlmIChtX3RleHRUcmFja3MpCiAgICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xl
YXJFbGVtZW50KCk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAg
bV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwogICAgIH0KKyAgICBpZiAobV92
aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhckVsZW1lbnQoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpOyAr
K2kpCisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLT5pdGVtKGkpLT5jbGVhckNsaWVudCgpOwor
ICAgIH0KICNlbmRpZgogCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQpAQCAtMTM1Myw2ICsx
MzY5LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5n
ZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKQoreworICAgIC8vIFdlIHdpbGwg
d2FudCB0byBjaGFuZ2UgdGhlIG1lZGlhIGNvbnRyb2xzIGhlcmUgb25jZSB0aGV5IGV4aXN0Cit9
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNr
KiB0cmFjaykKIHsKICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJh
Y2tFbGVtZW50KSB7CkBAIC0xMzkyLDYgKzE0MTMsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIHVwZGF0ZUFjdGl2
ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikKK3sKKyAgICAvLyBXZSB3
aWxsIHdhbnQgdG8gY2hhbmdlIHRoZSBtZWRpYSBjb250cm9scyBoZXJlIG9uY2UgdGhleSBleGlz
dAorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRU
cmFjayogdHJhY2spCiB7CiAgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpjYXB0
aW9uc0tleXdvcmQoKSAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKQpA
QCAtMjc5Niw2ICsyODIyLDE0IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9h
ZGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhZGRBdWRp
b1RyYWNrKEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjaykpOworfQorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjgyOCwyNCArMjg2Miwz
MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKFBh
c3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIC8vIDkuIEZpcmUgYW4gZXZlbnQgd2l0
aCB0aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzIG5vdCBjYW5j
ZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50CiAgICAgLy8gaW50ZXJmYWNlLCB3
aXRoIHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBU
ZXh0VHJhY2sgb2JqZWN0LCBhdCB0aGUgbWVkaWEgZWxlbWVudCdzCiAgICAgLy8gdGV4dFRyYWNr
cyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KLSAgICBhZGRUZXh0VHJhY2sodGV4
dFRyYWNrLmdldCgpKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrLnJlbGVhc2UoKSk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGU+IHBycFRyYWNrKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IGlmICghbV90ZXh0VHJhY2tzKQotICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUaGlzIGNhc3Qg
aXMgc2FmZSBiZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIEluYmFuZFRleHRUcmFjayB3aXRoIHRoZSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlCi0gICAgLy8gcGFzc2VkIHRvIG1lZGlhUGxheWVyRGlkQWRk
VGV4dFRyYWNrLgotICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2s+IHRleHRUcmFjayA9IHN0YXRp
Y19jYXN0PEluYmFuZFRleHRUcmFjayo+KHBycFRyYWNrLT5jbGllbnQoKSk7Ci0gICAgaWYgKCF0
ZXh0VHJhY2spCi0gICAgICAgIHJldHVybjsKKyAgICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6
OmNyZWF0ZSh0aGlzLCBwcnBUcmFjaykpOworfQogCi0gICAgcmVtb3ZlVGV4dFRyYWNrKHRleHRU
cmFjay5nZXQoKSk7Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkUmVtb3Zl
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKK3sKKyAg
ICBwcnBUcmFjay0+d2lsbEJlUmVtb3ZlZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgcHJwVHJhY2stPndpbGxCZVJlbW92ZWQoKTsKK30K
Kwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZVZpZGVvVHJhY2so
UGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit7CisgICAgcHJwVHJhY2st
PndpbGxCZVJlbW92ZWQoKTsKIH0KIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUp
CkBAIC0yOTI0LDE1ICsyOTY0LDQ1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VDYXB0
aW9uVHJhY2tzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRk
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrKQoreworICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXVkaW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKK30KKwordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNr
KQogeworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJh
Y2spOwotICAgIAorCiAgICAgY2xvc2VDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrPiB0
cmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHZpZGVvVHJhY2tzKCktPmFwcGVu
ZCh0cmFjayk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhB
dWRpb1RyYWNrKiB0cmFjaykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXVkaW9U
cmFja3MtPnJlbW92ZSh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3Zl
VGV4dFRyYWNrKFRleHRUcmFjayogdHJhY2spCiB7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKICAg
ICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKICAgICBUZXh0VHJhY2tDdWVM
aXN0KiBjdWVzID0gdHJhY2stPmN1ZXMoKTsKICAgICBpZiAoY3VlcykKQEAgLTI5NDMsMTggKzMw
MTMsMzEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNr
KiB0cmFjaykKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tzKCkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIW1f
dGV4dFRyYWNrcykKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRyYWNrRGlzcGxheVVwZGF0
ZVNjb3BlIHNjb3BlKHRoaXMpOwotICAgIGZvciAoaW50IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0
aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4
dFRyYWNrcy0+aXRlbShpKTsKKyAgICBtX3ZpZGVvVHJhY2tzLT5yZW1vdmUodHJhY2spOworfQog
Ci0gICAgICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0g
ICAgICAgICAgICByZW1vdmVUZXh0VHJhY2sodHJhY2spOwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVBbGxJbmJhbmRUcmFja3MoKQoreworICAgIHdoaWxlIChtX2F1ZGlvVHJhY2tzICYm
ICBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAgICAgcmVtb3ZlQXVkaW9UcmFjayhtX2F1
ZGlvVHJhY2tzLT5sYXN0SXRlbSgpKTsKKworICAgIGlmIChtX3RleHRUcmFja3MpIHsKKyAgICAg
ICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CisgICAgICAgIGZvciAoaW50
IGkgPSBtX3RleHRUcmFja3MtPmxlbmd0aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAg
ICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CisKKyAgICAgICAg
ICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCisgICAgICAg
ICAgICAgICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKyAgICAgICAgfQogICAgIH0KKworICAg
IHdoaWxlIChtX3ZpZGVvVHJhY2tzICYmICBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKSkKKyAgICAg
ICAgcmVtb3ZlVmlkZW9UcmFjayhtX3ZpZGVvVHJhY2tzLT5sYXN0SXRlbSgpKTsKIH0KIAogUGFz
c1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBT
dHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjk4Myw3ICszMDY2LDcgQEAgUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFMKICAgICAvLyBmaXJzdCBhcHBlbmQgdGhlIHRyYWNrIHRvIHRoZSB0ZXh0IHRyYWNr
IGxpc3QuCiAKICAgICAvLyA2LiBBZGQgdGhlIG5ldyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBl
bGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcy4KLSAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNr
LmdldCgpKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrKTsKIAogICAgIC8vIC4uLiBpdHMg
dGV4dCB0cmFjayByZWFkaW5lc3Mgc3RhdGUgdG8gdGhlIHRleHQgdHJhY2sgbG9hZGVkIHN0YXRl
IC4uLgogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUoVGV4dFRyYWNrOjpMb2FkZWQp
OwpAQCAtMjk5NCw2ICszMDc3LDE3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFF
bGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAgICAgcmV0
dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAKK0F1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFF
bGVtZW50OjphdWRpb1RyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlm
ICghbV9hdWRpb1RyYWNrcykKKyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0
OjpjcmVhdGUodGhpcywgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworCisgICAgcmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0KCk7Cit9CisKIFRleHRUcmFja0xpc3Qq
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCkBAIC0zMDA1LDYgKzMwOTks
MTcgQEAgVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpCiAgICAg
cmV0dXJuIG1fdGV4dFRyYWNrcy5nZXQoKTsKIH0KIAorVmlkZW9UcmFja0xpc3QqIEhUTUxNZWRp
YUVsZW1lbnQ6OnZpZGVvVHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aWYgKCFtX3ZpZGVvVHJhY2tzKQorICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9UcmFja0xp
c3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisKKyAgICByZXR1cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsKK30KKwogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50
KQogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKQEAg
LTMwMjAsNyArMzEyNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNr
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICBpZiAoIXRleHRUcmFjaykKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2suZ2V0KCkpOwor
ICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2sucmVsZWFzZSgpKTsKICAgICAKICAgICAvLyBEbyBu
b3Qgc2NoZWR1bGUgdGhlIHRyYWNrIGxvYWRpbmcgdW50aWwgcGFyc2luZyBmaW5pc2hlcyBzbyB3
ZSBkb24ndCBzdGFydCBiZWZvcmUgYWxsIHRyYWNrcwogICAgIC8vIGluIHRoZSBtYXJrdXAgaGF2
ZSBiZWVuIGFkZGVkLgpAQCAtNDkyMiw3ICs1MDI3LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b24KICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhU291cmNlLCAibWVkaWFTb3VyY2UiKTsKICNl
bmRpZgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2F1ZGlv
VHJhY2tzLCAiYXVkaW9UcmFja3MiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRUcmFja3Ms
ICJ0ZXh0VHJhY2tzIik7CisgICAgaW5mby5hZGRNZW1iZXIobV92aWRlb1RyYWNrcywgInZpZGVv
VHJhY2tzIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2Vs
ZWN0aW9uQmVnYW4sICJ0ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4iKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX2N1ZVRyZWUsICJjdWVUcmVlIik7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9jdXJyZW50bHlBY3RpdmVDdWVzLCAiY3VycmVudGx5QWN0aXZlQ3VlcyIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMDg1ZTlkZmI4ODYwNDA3ZWFkOTE5
MWVjMjdjYWI0ZDkyYjk3NjYzLi5jNzY5YWEwMmFjNTllZTdkNDA0ODNjY2Q0YWI1MGVhNTZiYjI1
MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzksMTAgKzM5
LDEyIEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJBdWRp
b1RyYWNrLmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUg
IlBPREludGVydmFsVHJlZS5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRl
eHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03MCw4ICs3MiwxMiBAQCBjbGFzcyBNZWRpYUtleXM7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0OworY2xhc3Mg
QXVkaW9UcmFja1ByaXZhdGU7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOwogY2xhc3Mg
VGV4dFRyYWNrTGlzdDsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OworY2xhc3MgVmlkZW9UcmFja1By
aXZhdGU7CiAKIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4g
Q3VlSW50ZXJ2YWxUcmVlOwogdHlwZWRlZiBDdWVJbnRlcnZhbFRyZWU6OkludGVydmFsVHlwZSBD
dWVJbnRlcnZhbDsKQEAgLTg0LDcgKzkwLDkgQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50ZXJ2YWw+
IEN1ZUxpc3Q7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQs
IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBl
Q2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyAgICAsIHByaXZhdGUgQXVkaW9UcmFja0NsaWVudAogICAgICwgcHJpdmF0ZSBUZXh0
VHJhY2tDbGllbnQKKyAgICAsIHByaXZhdGUgVmlkZW9UcmFja0NsaWVudAogI2VuZGlmCiAjaWYg
VVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAsIHB1YmxpYyBQbGF0Zm9ybVRleHRU
cmFja01lbnVDbGllbnQKQEAgLTIyNiwxMSArMjM0LDE4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPFRleHRUcmFjaz4gYWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZFRleHRUcmFjayhraW5k
LCBsYWJlbCwgZW1wdHlTdHJpbmcoKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+
IGFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBhZGRUZXh0VHJhY2soa2luZCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgZWMp
OyB9CiAKKyAgICBBdWRpb1RyYWNrTGlzdCogYXVkaW9UcmFja3MoKTsKICAgICBUZXh0VHJhY2tM
aXN0KiB0ZXh0VHJhY2tzKCk7CisgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tzKCk7CisK
ICAgICBDdWVMaXN0IGN1cnJlbnRseUFjdGl2ZUN1ZXMoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRseUFjdGl2ZUN1ZXM7IH0KIAotICAgIHZvaWQgYWRkVGV4dFRyYWNrKFRleHRUcmFjayopOwor
ICAgIHZvaWQgYWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+KTsKKyAgICB2b2lk
IGFkZFRleHRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4pOworICAgIHZvaWQgYWRkVmlkZW9U
cmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2s+KTsKKyAgICB2b2lkIHJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFjayopOwogICAgIHZvaWQgcmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayopOworICAg
IHZvaWQgcmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKik7CiAgICAgdm9pZCByZW1vdmVBbGxJ
bmJhbmRUcmFja3MoKTsKICAgICB2b2lkIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKICAg
ICB2b2lkIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CkBAIC0yMzgsOCAr
MjUzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVGV4dFRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRB
ZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFj
ayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgT1ZFUlJJREU7CiAKICNpZiBVU0UoUExB
VEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRU
cmFjayhQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPikgT1ZFUlJJREU7CkBAIC0yNzUsNiAr
Mjk0LDkgQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrRGlzcGxheSgpOwog
ICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCisgICAgLy8gQXVkaW9UcmFja0Ns
aWVudAorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayopOworCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tLaW5kQ2hhbmdlZChUZXh0VHJhY2sqKTsKQEAgLTI4NCw2ICszMDYsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRy
YWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKIAorICAgIC8vIFZpZGVvVHJhY2tDbGll
bnQKKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNr
Kik7CisKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsK
ICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKik7CiAjZW5kaWYKQEAgLTY5OSw3ICs3MjQsOSBAQCBwcml2YXRlOgogCiAgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIG1fY2FwdGlvbkRpc3BsYXlNb2Rl
OwogCisgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0
cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CisgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0
PiBtX3ZpZGVvVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRy
YWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwogCiAgICAgQ3VlSW50ZXJ2YWxUcmVlIG1f
Y3VlVHJlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IGNl
ZDQxNzQ1OWRhYmExMzVlZDAwNWVmNjU0ODZkMjVhZjZlMWNjZDUuLjA1YmMyZGQ4YzRmYjg4NGU3
YmViZDY3YjBjNzIzZTllNWQ1MThhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbApAQCAtMTE2LDcgKzExNiw5IEBAIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVz
dChpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyCiAj
aWYgZGVmaW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogVGV4
dFRyYWNrIGFkZFRleHRUcmFjayhpbiBET01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01T
dHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1YWdlKQogICAgIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKK3JlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRp
b1RyYWNrczsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7City
ZWFkb25seSBhdHRyaWJ1dGUgVmlkZW9UcmFja0xpc3QgdmlkZW9UcmFja3M7CiAjZW5kaWYKIAog
W1JlZmxlY3QsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVk
aWFHcm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiNTFkZDhlZDA1MTQxNWE4ZWNjZjQ5OTBjYWY3ZDdhZGM4NDUyMjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0wLDAg
KzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorCisjaW5jbHVkZSAiQXVkaW9U
cmFja0xpc3QuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1RyYWNr
OjphbHRlcm5hdGl2ZUtleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCBhbHRlcm5hdGl2ZSwgKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gYWx0ZXJuYXRpdmU7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6ZGVzY3JpcHRpb25LZXl3b3JkKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVzY3JpcHRpb24sICgi
ZGVzY3JpcHRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
cmV0dXJuIGRlc2NyaXB0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6
Om1haW5LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgbWFpbiwgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHJldHVybiBtYWluOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6
Om1haW5EZXNjS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIG1haW5EZXNjLCAoIm1haW4tZGVzYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbWFpbkRlc2M7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgQXVkaW9UcmFjazo6dHJhbnNsYXRpb25LZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhbnNsYXRpb24sICgidHJhbnNsYXRpb24i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHRyYW5z
bGF0aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlL
ZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
Y29tbWVudGFyeSwgKCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHJldHVybiBjb21tZW50YXJ5OworfQorCitBdWRpb1RyYWNrOjpBdWRpb1Ry
YWNrKEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZT4gdHJhY2tQcml2YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6QXVkaW9UcmFjaywg
dHJhY2tQcml2YXRlLT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBt
X2lkKHRyYWNrUHJpdmF0ZS0+aWQoKSkKKyAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUtPmVu
YWJsZWQoKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcHJpdmF0ZSh0cmFja1By
aXZhdGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisKKyAgICBzd2l0Y2gg
KG1fcHJpdmF0ZS0+a2luZCgpKSB7CisgICAgY2FzZSBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJu
YXRpdmU6CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2YXRlOjpEZXNjcmlwdGlv
bjoKKyAgICAgICAgc2V0S2luZChBdWRpb1RyYWNrOjpkZXNjcmlwdGlvbktleXdvcmQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW46CisgICAgICAg
IHNldEtpbmQoQXVkaW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQXVkaW9UcmFja1ByaXZhdGU6Ok1haW5EZXNjOgorICAgICAgICBzZXRLaW5kKEF1ZGlv
VHJhY2s6Om1haW5EZXNjS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRp
b1RyYWNrUHJpdmF0ZTo6VHJhbnNsYXRpb246CisgICAgICAgIHNldEtpbmQoQXVkaW9UcmFjazo6
dHJhbnNsYXRpb25LZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJh
Y2tQcml2YXRlOjpDb21tZW50YXJ5OgorICAgICAgICBzZXRLaW5kKEF1ZGlvVHJhY2s6OmNvbW1l
bnRhcnlLZXl3b3JkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvVHJhY2tQcml2
YXRlOjpOb25lOgorICAgICAgICBzZXRLaW5kKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCitBdWRpb1RyYWNrOjp+QXVkaW9UcmFjaygpCit7CisgICAgbV9w
cml2YXRlLT5zZXRDbGllbnQoMCk7Cit9CisKK2Jvb2wgQXVkaW9UcmFjazo6aXNWYWxpZEtpbmQo
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAodmFsdWUgPT0gYWx0
ZXJuYXRpdmVLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9
PSBkZXNjcmlwdGlvbktleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IG1haW5LZXl3b3JkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1
ZSA9PSBtYWluRGVzY0tleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09IHRyYW5zbGF0aW9uS2V5d29yZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAodmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6c2V0RW5hYmxlZChjb25z
dCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRoaXMpOworfQor
CitzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1f
cHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9UcmFja0luZGV4KCk7Cit9CisK
K3ZvaWQgQXVkaW9UcmFjazo6d2lsbFJlbW92ZUF1ZGlvVHJhY2tQcml2YXRlKEF1ZGlvVHJhY2tQ
cml2YXRlKiB0cmFja1ByaXZhdGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRyYWNrUHJpdmF0ZSk7
CisgICAgQVNTRVJUKHRyYWNrUHJpdmF0ZSA9PSBtX3ByaXZhdGUpOworICAgIG1lZGlhRWxlbWVu
dCgpLT5yZW1vdmVBdWRpb1RyYWNrKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTNlY2I2ODg4MmI3OGQxYjAzZDUxZGZmZjNmYWJhNDkwNzg1YzQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKQEAgLTAsMCArMSw5
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrX2gKKyNkZWZpbmUg
QXVkaW9UcmFja19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRp
b1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJU
cmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsKKworY2xhc3MgQXVkaW9UcmFja0NsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopID0gMDsKK307
CisKK2NsYXNzIEF1ZGlvVHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgQXVkaW9UcmFj
a1ByaXZhdGVDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvVHJh
Y2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+IHRyYWNrUHJpdmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQXVkaW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5BdWRpb1RyYWNrKCk7CisKKyAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSB7IG1faWQgPSBp
ZDsgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3Jk
KCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluRGVzY0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBl
bXB0eUF0b207IH0KKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxl
ZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGNvbnN0IGJvb2wpOworCisgICAgdmly
dHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgT1ZFUlJJREUgeyBtX2NsaWVudCA9IDA7IH0KKyAgICBB
dWRpb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisg
ICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJh
Y2soQXVkaW9UcmFja0NsaWVudCosIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKKwor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVBdWRpb1RyYWNr
UHJpdmF0ZShBdWRpb1RyYWNrUHJpdmF0ZSopIE9WRVJSSURFOworCisgICAgQXRvbWljU3RyaW5n
IG1faWQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGll
bnQ7CisKKyAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK2lu
bGluZSBBdWRpb1RyYWNrKiB0b0F1ZGlvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBB
U1NFUlQodHJhY2stPnR5cGUoKSA9PSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2spOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNjhmOTY3MDFiZmNlMGFhYWFjZmYwZjVjYjM4ZGI3NjdlMmY4
NjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9
VklERU9fVFJBQ0ssCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCisg
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KK10gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgeworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBraW5kOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0
ZSBib29sZWFuIGVuYWJsZWQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2tMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODJmZjhlZGI0MjFmZWFjYmQ5ZjEwZmRhZjg2NmIy
MGZlN2EzMDNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9B
dWRpb1RyYWNrTGlzdC5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJB
dWRpb1RyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0F1ZGlvVHJhY2tMaXN0
OjpBdWRpb1RyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShlbGVtZW50LCBjb250ZXh0
KQoreworfQorCitBdWRpb1RyYWNrTGlzdDo6fkF1ZGlvVHJhY2tMaXN0KCkKK3sKK30KKwordm9p
ZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJhY2sp
Cit7CisgICAgUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICAvLyBJ
bnNlcnQgdHJhY2tzIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgorICAgIHNpemVfdCBpbmRleCA9
IHRyYWNrLT5pbmJhbmRUcmFja0luZGV4KCk7CisgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGlu
ZGV4LCB0cmFjayk7CisKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFj
ay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOworICAgIHRyYWNrLT5zZXRNZWRp
YUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworCisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRy
YWNrLnJlbGVhc2UoKSk7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjppdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIHRvQXVkaW9UcmFjayhtX2luYmFuZFRyYWNrc1tpbmRleF0u
Z2V0KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0
OjpnZXRUcmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1faW5iYW5kVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IEF1ZGlvVHJhY2sqIHRyYWNrID0gdG9BdWRpb1RyYWNrKG1faW5iYW5kVHJhY2tzW2ldLmdldCgp
KTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQorICAgICAgICAgICAgcmV0dXJuIHRy
YWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRp
b1RyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5pbnRlcmZhY2VGb3JBdWRpb1RyYWNrTGlzdDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg1OTNjMzcyOGQy
MTkzZTljMGRmOGU3ODhhNWQzODI0MzQ2ZDVjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja0xpc3RfaAorI2RlZmluZSBBdWRpb1RyYWNr
TGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUcmFja0xpc3RC
YXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFjazsKKworY2xh
c3MgQXVkaW9UcmFja0xpc3QgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAg
ICB9CisgICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisKKyAgICBBdWRpb1RyYWNrKiBnZXRUcmFja0J5
SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKKyAgICBBdWRpb1RyYWNrKiBpdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBBdWRpb1RyYWNrKiBsYXN0SXRlbSgpIGNvbnN0IHsg
cmV0dXJuIGl0ZW0obGVuZ3RoKCkgLSAxKTsgfQorICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8
QXVkaW9UcmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIEF1ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE1N2I4ZjNlZTE0YzljNWZiYmU3OTY4NzhhZjllODhjMzMxOWVkMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKKyAgICBJbmRleGVkR2V0dGVy
LAorICAgIEV2ZW50VGFyZ2V0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uCitdIGludGVyZmFj
ZSBBdWRpb1RyYWNrTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoOworICAgIEF1ZGlvVHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICBBdWRpb1RyYWNrIGdldFRyYWNrQnlJZChpbiBET01TdHJpbmcgaWQpOworCisgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOwor
CisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9p
ZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9v
bGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhj
ZXB0aW9uKTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcAppbmRleCA2ZDdlMzc5YWI3NDQ5ZjUzYzU4NTEzNTYzNjFmMWNlNTRhZmQ1Zjk5Li5j
NzljMzgyYWMxYmY2MjQxMTg0NTM0ZTM0ZTA5NzczMjJiNTk4MzY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC0yNjMsNyArMjYzLDE0IEBA
IHZvaWQgSW5iYW5kVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiBjdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIG1fY3VlTWFwLnJlbW92ZShzdGF0aWNfY2FzdDxUZXh0VHJhY2tD
dWVHZW5lcmljKj4oY3VlKSk7CiAgICAgVGV4dFRyYWNrOjpyZW1vdmVDdWUoY3VlLCBlYyk7CiB9
Ci0gICAgCisKK3ZvaWQgSW5iYW5kVGV4dFRyYWNrOjp3aWxsUmVtb3ZlVGV4dFRyYWNrUHJpdmF0
ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiB0cmFja1ByaXZhdGUpCit7CisgICAgVU5VU0VEX1BB
UkFNKHRyYWNrUHJpdmF0ZSk7CisgICAgQVNTRVJUKHRyYWNrUHJpdmF0ZSA9PSBtX3ByaXZhdGUp
OworICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVUZXh0VHJhY2sodGhpcyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRUZXh0VHJhY2suaAppbmRleCAzNjlhODU3YjAyNjUxOWI0ODJlYjUzZmYyNWI5MGIyZmZh
Y2FkMThkLi5mMDI5MjM3YzgxNjYzNmExNTZlMGQ5NmU0NWY2N2YyODA4NTNmNmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKQEAgLTgwLDYgKzgwLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRUZXh0
VHJhY2tQcml2YXRlKiwgR2VuZXJpY0N1ZURhdGEqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2VuZXJpY0N1ZURh
dGEqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSos
IEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVRl
eHRUcmFja1ByaXZhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSopIE9WRVJSSURFOwogCiAgICAg
UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljPiBjcmVhdGVDdWUoUGFzc1JlZlB0cjxHZW5l
cmljQ3VlRGF0YT4pOwogICAgIHZvaWQgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3Vl
R2VuZXJpYyosIEdlbmVyaWNDdWVEYXRhKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDNkZmI5Nzc4NGM1ODIxYWM5OWQ5NzhlZTQz
ZTVkNzg1NGQ1MTc0YzUuLjI0MTliYjZjYzhmODVlMjAyMDUxNzAxNDczZDNiZTM5ZjJjY2M3Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3Bw
CkBAIC03Miw2ICs3MiwxMSBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQo
Y29uc3QgS1VSTCYgdXJsKQogICAgICAgICBtX2xvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9
CiAKK0VsZW1lbnQqIExvYWRhYmxlVGV4dFRyYWNrOjplbGVtZW50KCkKK3sKKyAgICByZXR1cm4g
bV90cmFja0VsZW1lbnQ7Cit9CisKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZp
cmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopCiB7CiAgICAgaWYgKG1fbG9hZGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCmluZGV4IDMyNGVi
MzJkMDRiZGE5ZDQwMDlhYjU1YjhjOGEyYjM5ZDU5NGQyYzAuLjdkOTc4ZGY3ZTEwNWRlOTM5OGFl
MDg2MjFlNDBkMmYwMzM3NzkzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svTG9hZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiAgICAgc2l6ZV90
IHRyYWNrRWxlbWVudEluZGV4KCk7CiAgICAgSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50
KCkgeyByZXR1cm4gbV90cmFja0VsZW1lbnQ7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1l
bnQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2lzRGVmYXVsdDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0RlZmF1
bHQoYm9vbCBpc0RlZmF1bHQpIE9WRVJSSURFICB7IG1faXNEZWZhdWx0ID0gaXNEZWZhdWx0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXggNjcxN2ZlNmYyM2U3
MjMwMzlmOTdhOTE1NzdiZWIwMjkxMDM4YjViMy4uOTBkMDI2ODUyMzdjNzhmMTk2MTk4ODkzYTMy
NGY2Zjk4YTQ0ODE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbApA
QCAtMjYsOCArMjYsOCBAQAogWwogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAogICAgIEV2
ZW50VGFyZ2V0LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAogICAg
IEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgIEN1c3RvbUlzUmVhY2hhYmxlLAogICAgIFNraXBW
VGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBUZXh0VHJhY2sgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcga2luZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwCmluZGV4IDVjMzVkZGE5MGUwYmZhNDM1MWQ5ZGQwMDI3NDkzNGRmODJhMTc1
MmEuLjJlOWQ5MDlhODI2MWRiZjkxYjk3MTkzNmM4ODI3YWM0OGQ1OWQ1ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgi
CiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvYWRhYmxl
VGV4dFRyYWNrLmgiCkBAIC0zNyw4ICszOCw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1UZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogVHJhY2tMaXN0QmFzZShv
d25lciwgY29udGV4dCkKK1RleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QoSFRNTE1lZGlhRWxl
bWVudCogZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRy
YWNrTGlzdEJhc2UoZWxlbWVudCwgY29udGV4dCkKIHsKIH0KIApAQCAtMTczLDggKzE3NCw4IEBA
IHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBwcnBUcmFj
aykKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRyYWNrLmdldCgpKTsK
IAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1l
bnQoKSA9PSBlbGVtZW50KCkpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoZWxlbWVudCgp
KTsKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVt
ZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVk
aWFFbGVtZW50KCkpOwogCiAgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrLnJlbGVhc2Uo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmluZGV4IGUz
NmRmNjY1YTRlY2MzMGNjMGViYWY1YzhkNGVjZWJlMDRjZjhhMWEuLjNjMDFkMjYxNDczMzY4MTdm
NThlNTE2ZTc4MTczODVmZWFkZjNjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlKFRyYWNrQmFzZSopIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7
CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGwKaW5kZXggZDc0ZDk0OWM4NmYwMzJmNGVjNGVkNGM2ZjI5MmViNjk0NWI4ZDVlYi4u
OTAzODQ1NDg4NWI0ZWRiNGE5ZjIxMDM1YWM5YTI3ZjFiMmRlNTljZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCkBAIC0yNSwxMCArMjUsMTAgQEAKIAog
WwogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9
SW1wbEVsZW1lbnRSb290LAogICAgIEluZGV4ZWRHZXR0ZXIsCiAgICAgRXZlbnRUYXJnZXQsCi0g
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgQ3VzdG9tSXNSZWFjaGFibGUKKyAgICBKU0N1
c3RvbU1hcmtGdW5jdGlvbgogXSBpbnRlcmZhY2UgVGV4dFRyYWNrTGlzdCB7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIFRleHRUcmFjayBpdGVtKGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwCmluZGV4IGRlNGUzODU3NGNkODE4MDJhNmFlMDEwMWEzMDBjNmIyOTBiOTgyYWMuLmI5Mjhh
NzNkN2Y4ZjZiZjY1YjQzODIzMzAxOGMyY2EzYzk0MjY2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDMsNiArNDUsMTEgQEAgVHJhY2tCYXNlOjp+VHJhY2tCYXNlKCkKIHsKIH0KIAorRWxlbWVudCog
VHJhY2tCYXNlOjplbGVtZW50KCkKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7Cit9CisK
IHZvaWQgVHJhY2tCYXNlOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYga2luZCkKIHsKICAg
ICBTdHJpbmcgb2xkS2luZCA9IG1fa2luZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5oCmluZGV4IDU0NjI4OThjMGUwNTdlMjI3MGM5MTQxYTZhZDUyYjQzMmRhNzI0OGMuLmE4MWNl
MzE1YTVmYzExMjk0YmYwZDdjZDE1NGM3ZDdhMzg3MzVmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0Jhc2UuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCiBjbGFzcyBUcmFj
a0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+IHsKQEAgLTQ0LDYgKzQ1LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7IH0KICAgICBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQorICAgIHZpcnR1YWwg
RWxlbWVudCogZWxlbWVudCgpOwogCiAgICAgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7IHJl
dHVybiBtX2tpbmQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJp
bmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCmluZGV4
IDJhNzEwNGU2OTdhMjQ3ZTQxMzM5NGRmZGNiOGE3YzQ1NzkwY2ZjOTUuLjIyOTA5N2YxOTgwNmNm
ZWMyMzMyYzlhNjc3N2QxNzE1NDFkYTQ2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0xpc3RCYXNlLmNwcApAQCAtNTAsNiArNTAsMTEgQEAgVHJhY2tMaXN0QmFzZTo6flRy
YWNrTGlzdEJhc2UoKQogewogfQogCitFbGVtZW50KiBUcmFja0xpc3RCYXNlOjplbGVtZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9lbGVtZW50OworfQorCiB1bnNpZ25lZCBUcmFja0xpc3RC
YXNlOjpsZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5zaXplKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCmluZGV4IGE0NmRlMDFi
MjY1NWQyNDA1ZGY1MzM4YWViZmY0NTYxNWQwNjYxOTguLjliNTFiNjVmZDQxNDZjM2FiOTVlM2I1
YzU2NTcyMDY0NTg0OWQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0
QmFzZS5oCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBFbGVtZW50OwogY2xhc3MgVHJhY2tCYXNlOwogCiBjbGFz
cyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldCB7CkBAIC01OSw3ICs2MCw4IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXRyYWNrKTsKIAogICAgIHZvaWQgY2xlYXJFbGVt
ZW50KCkgeyBtX2VsZW1lbnQgPSAwOyB9Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25z
dDsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnQ7IH0KIAogICAgIGJvb2wgaXNGaXJpbmdFdmVudExpc3RlbmVycygpIHsgcmV0dXJu
IG1fZGlzcGF0Y2hpbmdFdmVudHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZhMDgyNjJhMTk4NWVjMGJiYjhlNjRiMzU4NzlhNmUyZmRh
MDhiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCisK
KyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSAi
VmlkZW9UcmFja0xpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBBdG9taWNT
dHJpbmcmIFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsdGVybmF0aXZlLCAoImFsdGVybmF0aXZl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBhbHRl
cm5hdGl2ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tl
eXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBj
YXB0aW9ucywgKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICByZXR1cm4gY2FwdGlvbnM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9U
cmFjazo6bWFpbktleXdvcmQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBjYXB0aW9ucywgKCJtYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBjYXB0aW9uczsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHNpZ24sICgic2lnbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc2lnbjsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoInN1YnRpdGxlcyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29tbWVudGFyeSwg
KCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiBjb21tZW50YXJ5OworfQorCitWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJh
Y2tDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2tQcml2
YXRlKQorICAgIDogVHJhY2tCYXNlKFRyYWNrQmFzZTo6VmlkZW9UcmFjaywgdHJhY2tQcml2YXRl
LT5sYWJlbCgpLCB0cmFja1ByaXZhdGUtPmxhbmd1YWdlKCkpCisgICAgLCBtX2lkKHRyYWNrUHJp
dmF0ZS0+aWQoKSkKKyAgICAsIG1fc2VsZWN0ZWQodHJhY2tQcml2YXRlLT5zZWxlY3RlZCgpKQor
ICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKK3sK
KyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKKworICAgIHN3aXRjaCAobV9wcml2YXRl
LT5raW5kKCkpIHsKKyAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKKyAg
ICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRpb25zOgorICAgICAgICBz
ZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoKKyAgICAgICAgc2V0S2luZChWaWRlb1Ry
YWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNr
UHJpdmF0ZTo6U2lnbjoKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U3VidGl0bGVz
OgorICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6CisgICAg
ICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU6CisgICAgICAgIHNldEtpbmQo
ZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK1ZpZGVvVHJh
Y2s6On5WaWRlb1RyYWNrKCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCgwKTsKK30KKwor
Ym9vbCBWaWRlb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBj
b25zdAoreworICAgIGlmICh2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IGNhcHRpb25zS2V5d29yZCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodmFsdWUgPT0gbWFpbktleXdvcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHZhbHVlID09IHNpZ25LZXl3b3JkKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBWaWRlb1Ry
YWNrOjpzZXRTZWxlY3RlZChjb25zdCBib29sIHNlbGVjdGVkKQoreworICAgIGlmIChtX3NlbGVj
dGVkID09IHNlbGVjdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NlbGVjdGVkID0gc2Vs
ZWN0ZWQ7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT52aWRlb1RyYWNr
U2VsZWN0ZWRDaGFuZ2VkKHRoaXMpOworfQorCitzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJh
Y2tJbmRleCgpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+dmlkZW9UcmFja0luZGV4KCk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6d2lsbFJlbW92ZVZp
ZGVvVHJhY2tQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRlKiB0cmFja1ByaXZhdGUpCit7CisgICAg
VU5VU0VEX1BBUkFNKHRyYWNrUHJpdmF0ZSk7CisgICAgQVNTRVJUKHRyYWNrUHJpdmF0ZSA9PSBt
X3ByaXZhdGUpOworICAgIG1lZGlhRWxlbWVudCgpLT5yZW1vdmVWaWRlb1RyYWNrKHRoaXMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDkxZTNiNmE1OTQyZjE3MzE4ZTBhMDkzZTgz
ODQxNDRiY2NmNmMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBWaWRlb1RyYWNrX2gKKyNkZWZpbmUgVmlkZW9UcmFja19oCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVHJhY2tC
YXNlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9UcmFj
azsKKworY2xhc3MgVmlkZW9UcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Vmlk
ZW9UcmFja0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2sqKSA9IDA7Cit9OworCitjbGFzcyBWaWRlb1RyYWNrIDogcHVibGlj
IFRyYWNrQmFzZSwgcHVibGljIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1RyYWNrPiBjcmVhdGUoVmlkZW9UcmFja0NsaWVudCog
Y2xpZW50LCBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2soY2xpZW50LCB0cmFja1By
aXZhdGUpKTsKKyAgICB9CisgICAgdmlydHVhbCB+VmlkZW9UcmFjaygpOworCisgICAgQXRvbWlj
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgc2V0SWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKworICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGFsdGVybmF0aXZlS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGNhcHRpb25zS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IG1haW5LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2lnbktleXdv
cmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVsdEtpbmRLZXl3b3JkKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisKKyAgICBib29sIHNlbGVjdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChj
b25zdCBib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIE9WRVJSSURFIHsg
bV9jbGllbnQgPSAwOyB9CisgICAgVmlkZW9UcmFja0NsaWVudCogY2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KKworICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CisKK3By
b3RlY3RlZDoKKyAgICBWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPFZp
ZGVvVHJhY2tQcml2YXRlPiBwcml2YXRlVHJhY2spOworCitwcml2YXRlOgorICAgIHZpcnR1YWwg
Ym9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVZpZGVvVHJhY2tQcml2YXRlKFZpZGVvVHJhY2tQcml2
YXRlKikgT1ZFUlJJREU7CisKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBib29sIG1fc2Vs
ZWN0ZWQ7CisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQ7CisKKyAgICBSZWZQdHI8Vmlk
ZW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKK307CisKK2lubGluZSBWaWRlb1RyYWNrKiB0b1Zp
ZGVvVHJhY2soVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICBBU1NFUlQodHJhY2stPnR5cGUoKSA9
PSBUcmFja0Jhc2U6OlZpZGVvVHJhY2spOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb1Ry
YWNrKj4odHJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZTM3NjgxODQ0MjMzNDdkOGMzNDE4YmJhNTBiOThkMTVmNzM1OGY0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMCwwICsxLDM3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCisgICAgR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rp
b24KK10gaW50ZXJmYWNlIFZpZGVvVHJhY2sgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBsYW5ndWFnZTsKKworICAgIGF0dHJpYnV0ZSBib29sZWFuIHNlbGVjdGVkOwor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjNiNDNiNTVhZmJhNGFiMWZkNjBiYzZmMzQ1ZDMwZjAxNzVlYWQwNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitWaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoSFRN
TE1lZGlhRWxlbWVudCogZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
KyAgICA6IFRyYWNrTGlzdEJhc2UoZWxlbWVudCwgY29udGV4dCkKK3sKK30KKworVmlkZW9UcmFj
a0xpc3Q6On5WaWRlb1RyYWNrTGlzdCgpCit7Cit9CisKK3ZvaWQgVmlkZW9UcmFja0xpc3Q6OmFw
cGVuZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IHBycFRyYWNrKQoreworICAgIFJlZlB0cjxWaWRl
b1RyYWNrPiB0cmFjayA9IHBycFRyYWNrOworCisgICAgLy8gSW5zZXJ0IHRyYWNrcyBpbiB0aGUg
bWVkaWEgZmlsZSBvcmRlci4KKyAgICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5iYW5kVHJhY2tJ
bmRleCgpOworICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOworCisgICAg
QVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09
IG1lZGlhRWxlbWVudCgpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG1lZGlhRWxlbWVu
dCgpKTsKKworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFjay5yZWxlYXNlKCkpOworfQor
CitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QK
K3sKKyAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCisgICAgICAgIHJldHVy
biB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaW5kZXhdLmdldCgpKTsKKworICAgIHJldHVy
biAwOworfQorCitWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6Z2V0VHJhY2tCeUlkKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFZpZGVvVHJhY2sqIHRyYWNrID0gdG9WaWRlb1RyYWNr
KG1faW5iYW5kVHJhY2tzW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlk
KQorICAgICAgICAgICAgcmV0dXJuIHRyYWNrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
bG9uZyBWaWRlb1RyYWNrTGlzdDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0Cit7CisgICAgLy8gNC44
LjEwLjEwLjEgQXVkaW9UcmFja0xpc3QgYW5kIFZpZGVvVHJhY2tMaXN0IG9iamVjdHMKKyAgICAv
LyBUaGUgVmlkZW9UcmFja0xpc3Quc2VsZWN0ZWRJbmRleCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4g
dGhlIGluZGV4IG9mIHRoZQorICAgIC8vIGN1cnJlbnRseSBzZWxlY3RlZCB0cmFjaywgaWYgYW55
LiBJZiB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IGRvZXMgbm90CisgICAgLy8gY3VycmVudGx5
IHJlcHJlc2VudCBhbnkgdHJhY2tzLCBvciBpZiBub25lIG9mIHRoZSB0cmFja3MgYXJlIHNlbGVj
dGVkLAorICAgIC8vIGl0IG11c3QgaW5zdGVhZCByZXR1cm4g4oiSMS4KKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVmlkZW9UcmFjayogdHJhY2sg
PSB0b1ZpZGVvVHJhY2sobV9pbmJhbmRUcmFja3NbaV0uZ2V0KCkpOworICAgICAgICBpZiAodHJh
Y2stPnNlbGVjdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJu
IC0xOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJhY2tMaXN0OjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclZpZGVv
VHJhY2tMaXN0OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTcyOWY2ZTZjNDRmN2E1NmY1MWY2ZGRiZTUyMjkwNzgz
OWRjMzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBW
aWRlb1RyYWNrTGlzdF9oCisjZGVmaW5lIFZpZGVvVHJhY2tMaXN0X2gKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBWaWRlb1RyYWNrOworCitjbGFzcyBWaWRlb1RyYWNrTGlzdCA6IHB1
YmxpYyBUcmFja0xpc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRl
b1RyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBW
aWRlb1RyYWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VmlkZW9UcmFja0xp
c3QoKTsKKworICAgIFZpZGVvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKKyAgICBsb25nIHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKworICAgIFZpZGVvVHJh
Y2sqIGl0ZW0odW5zaWduZWQpIGNvbnN0OworICAgIFZpZGVvVHJhY2sqIGxhc3RJdGVtKCkgY29u
c3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEpOyB9CisgICAgdm9pZCBhcHBlbmQoUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgVmlkZW9UcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlz
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZWZiOTVlN2EzMmQxMjgzNzIxMmI2MmJlNmEwNWNmYmZmZGRhODBjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJB
Q0ssCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCisgICAgSW5kZXhl
ZEdldHRlciwKKyAgICBFdmVudFRhcmdldCwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgorXSBp
bnRlcmZhY2UgVmlkZW9UcmFja0xpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKKyAgICBWaWRlb1RyYWNrIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCk7CisgICAgVmlkZW9UcmFjayBnZXRUcmFja0J5SWQoaW4gRE9NU3RyaW5nIGlkKTsKKworICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uYWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0
cmFjazsKKworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIHJhaXNlcyhF
dmVudEV4Y2VwdGlvbik7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmQ5MTdhMzdiZjA4YjI3
YzJlZWU0YTAyN2M0OTQ1MjliYzI2Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEF1ZGlvVHJhY2tQcml2YXRlX2gKKyNkZWZpbmUgQXVkaW9UcmFj
a1ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOworCitjbGFzcyBBdWRpb1Ry
YWNrUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9UcmFja1ByaXZh
dGVDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZUF1ZGlvVHJhY2tQcml2
YXRlKEF1ZGlvVHJhY2tQcml2YXRlKikgPSAwOworfTsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZh
dGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1RyYWNrUHJpdmF0ZT4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRl
KCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrUHJpdmF0ZSgpIHsgfQorCisgICAg
dm9pZCBzZXRDbGllbnQoQXVkaW9UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH07CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIGVudW0gS2luZCB7IEFsdGVybmF0
aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21tZW50YXJ5
LCBOb25lIH07CisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9
CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRv
bTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1w
dHlBdG9tOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJl
dHVybiBlbXB0eUF0b207IH0KKworICAgIHZpcnR1YWwgaW50IGF1ZGlvVHJhY2tJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKworICAgIHZvaWQgd2lsbEJlUmVtb3ZlZCgpCisgICAgeworICAg
ICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+d2lsbFJlbW92ZUF1ZGlv
VHJhY2tQcml2YXRlKHRoaXMpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEF1ZGlvVHJhY2tQ
cml2YXRlKCkKKyAgICAgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJp
dmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisgICAgYm9vbCBt
X2VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlLmgKaW5kZXggM2VlY2NmYTQ0ZDQ0YTZkODY0MWNhYjQyODAwYjUwY2Rm
NmQ5NjA3ZC4uNGQ0MTYyOWYxZWZhZWU0NWY0ZjllZDg4ZGYzODU2NmY0ZmJmYzlmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRU
cmFja1ByaXZhdGUuaApAQCAtMjYsMTcgKzI2LDE2IEBACiAjaWZuZGVmIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVfaAogI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlX2gKIAorI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudDsKLQogY2xhc3MgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluYmFuZFRleHRUcmFja1ByaXZh
dGU+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03OCw2ICs3NywxMiBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGludCB0ZXh0VHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KIAorICAgIHZvaWQgd2lsbEJlUmVtb3ZlZCgpCisgICAgeworICAgICAgICBpZiAobV9jbGll
bnQpCisgICAgICAgICAgICBtX2NsaWVudC0+d2lsbFJlbW92ZVRleHRUcmFja1ByaXZhdGUodGhp
cyk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSgpCiAg
ICAgICAgIDogbV9jbGllbnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCA0
Yzg0YWFjYTRhZWJlOTkyZjM1Y2EwODVjYjdiMzQ4ZGZmOWM1NDBhLi4wZDQwYWQzYWFlZTg3MWZl
NDM3NzFjZmM4MGM2Y2EyN2VlNTA3NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5o
CkBAIC0xMjgsMTAgKzEyOCwxMiBAQCBwcml2YXRlOgogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudCgpIHsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSosIFBhc3NSZWZQdHI8R2VuZXJpY0N1ZURhdGE+KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSos
IEdlbmVyaWNDdWVEYXRhKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3Vl
KEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSopID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrUHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2
YXRlKikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDg3ZTk0MjU0NDlj
Y2QwMGZlODhjZWNkNjdiZjllYzU3NTU0MDg0NjMuLmM1MjM4NTgwYjkxOWZkYmE5NWQ1NTI0Y2Vh
ZWI1YjE3NDZiN2Q4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKQEAgLTExMDMsNiArMTEwMywyMiBAQCBDYWNoZWRSZXNvdXJjZUxv
YWRlciogTWVkaWFQbGF5ZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKIH0KIAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKK3ZvaWQgTWVkaWFQbGF5ZXI6OmFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0
cjxBdWRpb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllckRpZEFkZEF1ZGlvVHJhY2sodHJhY2spOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpyZW1v
dmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHRyYWNrKQoreworICAg
IGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZWRp
YVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKHRyYWNrKTsKK30K
Kwogdm9pZCBNZWRpYVBsYXllcjo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZT4gdHJhY2spCiB7CiAgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQpAQCAt
MTExOSw2ICsxMTM1LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZVRleHRUcmFjayhQYXNz
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHRyYWNrKQogICAgIG1fbWVkaWFQbGF5ZXJD
bGllbnQtPm1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKIH0KIAordm9pZCBN
ZWRpYVBsYXllcjo6YWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiB0
cmFjaykKK3sKKyAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayh0
cmFjayk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZT4gdHJhY2spCit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllckRpZFJlbW92ZVZpZGVvVHJhY2sodHJhY2spOworfQorCiBib29sIE1lZGlhUGxheWVyOjpy
ZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5yZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBlMDA2N2E1MDg1ODli
ZTBhNWZiODg0MmM1N2NkNDdiZDg5ZjkzZGMyLi43MTVhYTExZTY2ODUwOGEwNTRiMGY5NGU5YWJm
MTE2Y2YyMWRkNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKQEAgLTMyLDExICszMiwxMyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJv
eHkuaCIKICNlbmRpZgogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0y
MTgsOCArMjIwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlTG9hZGVy
KiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gMDsgfQogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1
ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1Ry
YWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZh
dGU+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVUZXh0VHJhY2so
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3Vu
ZHNDaGFuZ2VkKGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgeyB9
CkBAIC00NTAsOCArNDU2LDEyIEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2
b2lkIGFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogICAgIHZv
aWQgYWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOworICAg
IHZvaWQgYWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPik7CisgICAg
dm9pZCByZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+KTsKICAg
ICB2b2lkIHJlbW92ZVRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
KTsKKyAgICB2b2lkIHJlbW92ZVZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0
ZT4pOwogCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
VHJhY2tQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE1MTY4NDM4NjAxYmM0NDVhYjQxNmNkMjZhNGU2
NDA4NWI5ZGI0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBWaWRlb1RyYWNrUHJpdmF0ZV9oCisjZGVmaW5lIFZpZGVvVHJhY2tQcml2YXRlX2gKKwor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKKworY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrUHJpdmF0ZShWaWRlb1RyYWNr
UHJpdmF0ZSopID0gMDsKK307CisKK2NsYXNzIFZpZGVvVHJhY2tQcml2YXRlIDogcHVibGljIFJl
ZkNvdW50ZWQ8VmlkZW9UcmFja1ByaXZhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShW
aWRlb1RyYWNrUHJpdmF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZSgpKTsKKyAgICB9Cisg
ICAgdmlydHVhbCB+VmlkZW9UcmFja1ByaXZhdGUoKSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50
KFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0K
KyAgICBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKSB7IG1fc2Vs
ZWN0ZWQgPSBzZWxlY3RlZDsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdGVkOyB9CisKKyAgICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgQ2Fw
dGlvbnMsIE1haW4sIFNpZ24sIFN1YnRpdGxlcywgQ29tbWVudGFyeSwgTm9uZSB9OworICAgIHZp
cnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gTm9uZTsgfQorCisgICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIHZp
cnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9
CisKKyAgICB2aXJ0dWFsIGludCB2aWRlb1RyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9
CisKKyAgICB2b2lkIHdpbGxCZVJlbW92ZWQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICAgICAgbV9jbGllbnQtPndpbGxSZW1vdmVWaWRlb1RyYWNrUHJpdmF0ZSh0aGlz
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpCisgICAgICAg
IDogbV9zZWxlY3RlZChmYWxzZSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFZpZGVv
VHJhY2tQcml2YXRlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1fc2VsZWN0ZWQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>