<?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>106760</bug_id>
          
          <creation_ts>2013-01-14 00:29:57 -0800</creation_ts>
          <short_desc>[GStreamer] USE(NATIVE_FULLSCREEN_VIDEO) support</short_desc>
          <delta_ts>2013-01-31 03:47:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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>
          
          <blocked>107398</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>kadam</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>s.choi</cc>
    
    <cc>slomo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>806129</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-14 00:29:57 -0800</bug_when>
    <thetext>Until we have proper video AC support we could port the GStreamerGWorld module to 1.0 and reuse it under the above-mentioned guards. This code path would also be useful for devices that have no GL support but good autovideosink support, like the OLPC.

I started a patch for this issue, will try to clean it up and upload this week for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811614</commentid>
    <comment_count>1</comment_count>
      <attachid>183668</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 05:53:35 -0800</bug_when>
    <thetext>Created attachment 183668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811618</commentid>
    <comment_count>2</comment_count>
      <attachid>183671</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 07:10:57 -0800</bug_when>
    <thetext>Created attachment 183671
Patch

Only WebCore changes. GTK changes will be part of another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811630</commentid>
    <comment_count>3</comment_count>
      <attachid>183671</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-20 09:41:14 -0800</bug_when>
    <thetext>Comment on attachment 183671
Patch

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

LGTM in general, I&apos;ll r- just because I&apos;m worried about the checks in PlatformVideoWindowGtk might be hiding a bug, might be better to figure it out

&gt; Source/WebCore/ChangeLog:20
&gt; +        * platform/graphics/gstreamer/FullscreenVideoControllerGStreamer.cpp: Added.

Are you going to move the FullscreenVideoController from WebKit/gtk/WebCoreSupport into WebCore to reuse it for WebKit2 and so on?

&gt; Source/WebCore/platform/graphics/gstreamer/FullscreenVideoControllerGStreamer.cpp:29
&gt; +

No newline

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp:237
&gt; +    // Unlink and release request pad.
&gt; +    gst_pad_unlink(srcPad.get(), sinkPad.get());
&gt; +    gst_element_release_request_pad(tee.get(), srcPad.get());
&gt; +
&gt; +    // Unlink, remove and cleanup queue, ffmpegcolorspace, videoScale and sink.

I know they were there before, but these comments do not seem to add anything, what do you think of removing them?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1760
&gt; +#if USE(NATIVE_FULLSCREEN_VIDEO)
&gt; +void MediaPlayerPrivateGStreamer::enterFullscreen()
&gt; +{
&gt; +    // TODO.
&gt; +}
&gt; +
&gt; +void MediaPlayerPrivateGStreamer::exitFullscreen()
&gt; +{
&gt; +    // TODO.
&gt; +}

We should use notImplemented() here

&gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowGtk.cpp:54
&gt;          gtk_container_remove(GTK_CONTAINER(m_window), m_videoWindow);
&gt; -        gtk_widget_destroy(m_videoWindow);
&gt; +        if (GTK_IS_WIDGET(m_videoWindow))
&gt; +            gtk_widget_destroy(m_videoWindow);

Is this protecting against m_videoWindow having been destroyed by being removed from the container? It looks a bit hacky

&gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowGtk.cpp:58
&gt; -    if (m_window) {
&gt; +    if (GTK_IS_WIDGET(m_window)) {

Same here, the way I understand it m_window has to be a GtkWidget, am I misunderstanding?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811633</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 10:01:25 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 183671 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183671&amp;action=review
&gt; 
&gt; LGTM in general, I&apos;ll r- just because I&apos;m worried about the checks in PlatformVideoWindowGtk might be hiding a bug, might be better to figure it out
&gt; 

Thanks for the review :)

&gt; &gt; Source/WebCore/ChangeLog:20
&gt; &gt; +        * platform/graphics/gstreamer/FullscreenVideoControllerGStreamer.cpp: Added.
&gt; 
&gt; Are you going to move the FullscreenVideoController from WebKit/gtk/WebCoreSupport into WebCore to reuse it for WebKit2 and so on?
&gt; 

Yes! See also bug 107398. I haven&apos;t yet updated the WK2 code but it should be easy.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1760
&gt; &gt; +#if USE(NATIVE_FULLSCREEN_VIDEO)
&gt; &gt; +void MediaPlayerPrivateGStreamer::enterFullscreen()
&gt; &gt; +{
&gt; &gt; +    // TODO.
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void MediaPlayerPrivateGStreamer::exitFullscreen()
&gt; &gt; +{
&gt; &gt; +    // TODO.
&gt; &gt; +}
&gt; 
&gt; We should use notImplemented() here
&gt; 

Well the bug above fixes those already.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowGtk.cpp:54
&gt; &gt;          gtk_container_remove(GTK_CONTAINER(m_window), m_videoWindow);
&gt; &gt; -        gtk_widget_destroy(m_videoWindow);
&gt; &gt; +        if (GTK_IS_WIDGET(m_videoWindow))
&gt; &gt; +            gtk_widget_destroy(m_videoWindow);
&gt; 
&gt; Is this protecting against m_videoWindow having been destroyed by being removed from the container? It looks a bit hacky
&gt; 

Hacky indeed, I was getting some warnings when destroying a non-GtkWidget IIRC. I&apos;ll check those again.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowGtk.cpp:58
&gt; &gt; -    if (m_window) {
&gt; &gt; +    if (GTK_IS_WIDGET(m_window)) {
&gt; 
&gt; Same here, the way I understand it m_window has to be a GtkWidget, am I misunderstanding?

No, something bad is going on indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811637</commentid>
    <comment_count>5</comment_count>
      <attachid>183676</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 10:54:29 -0800</bug_when>
    <thetext>Created attachment 183676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811638</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 10:56:50 -0800</bug_when>
    <thetext>The PlatformVideoWindowGtk changes are indeed not needed. I think it was the result of early erroneous prototyping :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817182</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-26 07:11:50 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; The PlatformVideoWindowGtk changes are indeed not needed. I think it was the result of early erroneous prototyping :)

Well actually... the doc of gtk_container_remove mentions that it will unref the removed widget and thus destroy it as well. That doc also suggests that it&apos;s more simple and efficient to directly gtk_widget_destroy the widget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817184</commentid>
    <comment_count>8</comment_count>
      <attachid>184863</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-26 07:14:28 -0800</bug_when>
    <thetext>Created attachment 184863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817189</commentid>
    <comment_count>9</comment_count>
      <attachid>184863</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 07:24:59 -0800</bug_when>
    <thetext>Comment on attachment 184863
Patch

Attachment 184863 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16113918</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817190</commentid>
    <comment_count>10</comment_count>
      <attachid>184863</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 07:26:31 -0800</bug_when>
    <thetext>Comment on attachment 184863
Patch

Attachment 184863 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16116850</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817192</commentid>
    <comment_count>11</comment_count>
      <attachid>184866</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-26 07:37:35 -0800</bug_when>
    <thetext>Created attachment 184866
Patch

Qt build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817194</commentid>
    <comment_count>12</comment_count>
      <attachid>184866</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 07:47:25 -0800</bug_when>
    <thetext>Comment on attachment 184866
Patch

Attachment 184866 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16118846</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817195</commentid>
    <comment_count>13</comment_count>
      <attachid>184866</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 07:47:47 -0800</bug_when>
    <thetext>Comment on attachment 184866
Patch

Attachment 184866 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16112947</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817196</commentid>
    <comment_count>14</comment_count>
      <attachid>184868</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-26 08:05:13 -0800</bug_when>
    <thetext>Created attachment 184868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817200</commentid>
    <comment_count>15</comment_count>
      <attachid>184868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 08:13:18 -0800</bug_when>
    <thetext>Comment on attachment 184868
Patch

Attachment 184868 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16112954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817201</commentid>
    <comment_count>16</comment_count>
      <attachid>184868</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 08:13:40 -0800</bug_when>
    <thetext>Comment on attachment 184868
Patch

Attachment 184868 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16119816</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817206</commentid>
    <comment_count>17</comment_count>
      <attachid>184869</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-26 08:36:51 -0800</bug_when>
    <thetext>Created attachment 184869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817207</commentid>
    <comment_count>18</comment_count>
      <attachid>184869</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 08:42:35 -0800</bug_when>
    <thetext>Comment on attachment 184869
Patch

Attachment 184869 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16123812</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817208</commentid>
    <comment_count>19</comment_count>
      <attachid>184869</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-26 08:42:54 -0800</bug_when>
    <thetext>Comment on attachment 184869
Patch

Attachment 184869 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16119830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817209</commentid>
    <comment_count>20</comment_count>
      <attachid>184870</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-26 08:48:39 -0800</bug_when>
    <thetext>Created attachment 184870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817699</commentid>
    <comment_count>21</comment_count>
      <attachid>184870</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-28 05:04:23 -0800</bug_when>
    <thetext>Comment on attachment 184870
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/FullscreenVideoControllerGStreamer.cpp:125
&gt; +{
&gt; +    if (volume &lt; 0.0 || volume &gt; 1.0)
&gt; +        return;
&gt; +
&gt; +    m_player-&gt;setVolume(volume);
&gt; +}

Looks like volume will always be set using 0.05 increments, is that right? Wondering if it wouldn&apos;t make sense to volume = 1.0 if volume &gt; 1.0, and set it, so that if the volume was at 0.98, say, and it got increaseVolume, it would go to 1.0. And for volume &lt; 0 as well.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1764
&gt; +    // TODO.

I know you said this is fixed in another bug already, but I&apos;d prefer if this had notImplemented() while that patch doesn&apos;t land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817704</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-28 05:22:49 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 184870 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184870&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/FullscreenVideoControllerGStreamer.cpp:125
&gt; &gt; +{
&gt; &gt; +    if (volume &lt; 0.0 || volume &gt; 1.0)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_player-&gt;setVolume(volume);
&gt; &gt; +}
&gt; 
&gt; Looks like volume will always be set using 0.05 increments, is that right? Wondering if it wouldn&apos;t make sense to volume = 1.0 if volume &gt; 1.0, and set it, so that if the volume was at 0.98, say, and it got increaseVolume, it would go to 1.0. And for volume &lt; 0 as well.
&gt; 

So basically you&apos;d like to have the volume really clamped between 0 and 1? I think that&apos;s doable :)

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1764
&gt; &gt; +    // TODO.
&gt; 
&gt; I know you said this is fixed in another bug already, but I&apos;d prefer if this had notImplemented() while that patch doesn&apos;t land.

Alright :) Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818872</commentid>
    <comment_count>23</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-29 05:54:10 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 184870 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184870&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/FullscreenVideoControllerGStreamer.cpp:125
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (volume &lt; 0.0 || volume &gt; 1.0)
&gt; &gt; &gt; +        return;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    m_player-&gt;setVolume(volume);
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; Looks like volume will always be set using 0.05 increments, is that right? Wondering if it wouldn&apos;t make sense to volume = 1.0 if volume &gt; 1.0, and set it, so that if the volume was at 0.98, say, and it got increaseVolume, it would go to 1.0. And for volume &lt; 0 as well.
&gt; &gt; 
&gt; 
&gt; So basically you&apos;d like to have the volume really clamped between 0 and 1? I think that&apos;s doable :)
 
It already is clamped, what I&apos;m wondering about is, given volume is increased and decreased in 0.05 increments/decrements, if you for some reason have the volume at 0.98, increasing the volume would take it to 1.03, and that if check would fail, so the volume would be kept at 0.98, but what you wanted was that it went to 1.0, makes sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818880</commentid>
    <comment_count>24</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-29 06:03:27 -0800</bug_when>
    <thetext>This is what I understood yes,

if (volume &gt; 1)
  volume = 1
else if (volume &lt; 0)
  volume = 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820173</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-30 06:58:19 -0800</bug_when>
    <thetext>Committed r141265: &lt;http://trac.webkit.org/changeset/141265&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821274</commentid>
    <comment_count>26</comment_count>
    <who name="Ádám Kallai">kadam</who>
    <bug_when>2013-01-31 02:17:43 -0800</bug_when>
    <thetext>The Qt build is broken.
http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release/builds/47558/steps/compile-webkit/logs/stdio

Could you check it please?
If NATIVE_FULLSCREEN_VIDEO is disabled than a uninitialized variable will be returned. It only fails on this very bot - it passes on all of the other bots for some misterious reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821289</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-31 02:36:35 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; The Qt build is broken.
&gt; http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release/builds/47558/steps/compile-webkit/logs/stdio
&gt; 
&gt; Could you check it please?
&gt; If NATIVE_FULLSCREEN_VIDEO is disabled than a uninitialized variable will be returned. It only fails on this very bot - it passes on all of the other bots for some misterious reason.

Right you need to add

#else
UNUSED_PARAM(p)

in ::platformMedia(). And make sure to include &lt;wtf/UnusedParam.h&gt;.

rs=me for that build fix :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821292</commentid>
    <comment_count>28</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-31 02:43:06 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; The Qt build is broken.
&gt; &gt; http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release/builds/47558/steps/compile-webkit/logs/stdio
&gt; &gt; 
&gt; &gt; Could you check it please?
&gt; &gt; If NATIVE_FULLSCREEN_VIDEO is disabled than a uninitialized variable will be returned. It only fails on this very bot - it passes on all of the other bots for some misterious reason.
&gt; 
&gt; Right you need to add
&gt; 
&gt; #else
&gt; UNUSED_PARAM(p)
&gt; 
&gt; in ::platformMedia(). And make sure to include &lt;wtf/UnusedParam.h&gt;.
&gt; 
&gt; rs=me for that build fix :)

Hum sorry this might not be the right fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821303</commentid>
    <comment_count>29</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-31 02:50:20 -0800</bug_when>
    <thetext> p.type = PlatformMedia::None;

would be better I think. I&apos;ll test that fix here and land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821342</commentid>
    <comment_count>30</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-31 03:47:44 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/141398</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183668</attachid>
            <date>2013-01-20 05:53:35 -0800</date>
            <delta_ts>2013-01-20 07:10:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>78612</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmMzkxNGU5YTJiYzkzN2QxY2UxZjMzNDM4MmNkYmY0MmY4NjEzOWQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE0OjQ2OjE4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDk4ICsrKysrKwogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gICAgICAgICAgICAgICAgIHwgICAgNCArCiAuLi4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lci5jcHAgICAgICAgICB8ICAxNDcgKysrKysrKysrCiAuLi4vZ3N0cmVhbWVyL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCB8ICAgNzMgKysrKysKIC4uLi9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCAgICAgICAgIHwgIDExNSArKysrKy0t
CiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oICB8ICAg
IDUgKy0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAg
IHwgICA4NCArKystLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aCAgICAgICAgfCAgIDI1ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9X
aW5kb3cuaCAgICAgICB8ICAgIDQgKy0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvd0d0ay5jcHAgIHwgICAgOSArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1NpbmtHU3RyZWFtZXIuY3BwICAgICAgfCAgICA2ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5oICAgICAgICB8ICAgIDQgKy0KIC4uLi9ncmFwaGljcy9ndGsv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHB9IHwgIDMzNSArKysrKystLS0tLS0tLS0t
LS0tLQogLi4uL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmh9ICAg
fCAgIDY4ICsrLS0KIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAyNyArKwogU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgfCAgICAyIC0KIC4uLi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAgIHwgICA1MyArKystCiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuaCB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgIHwgICAyOCAtLQogU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmggICAgfCAgICA4IC0KIDIxIGZpbGVzIGNoYW5n
ZWQsIDcyMCBpbnNlcnRpb25zKCspLCAzNzggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXIuaAogcmVuYW1lIFNvdXJjZS97V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCA9PiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcH0gKDU0JSkKIHJlbmFtZSBTb3Vy
Y2Uve1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5o
ID0+IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHdGsuaH0gKDUzJSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MxMWM2MS4uZWY4Yjk0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMS0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gVVNFKE5BVElWRV9GVUxMU0NS
RUVOX1ZJREVPKSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDY3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbml0aWFsIHN1cHBvcnQgZm9yIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIGlu
IHRoZSBHU3RyZWFtZXIgbWVkaWEKKyAgICAgICAgcGxheWVyLiBBIG5ldyBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyIGNsYXNzIGlzCisgICAgICAgIGludHJvZHVjZWQsIHBvcnRz
IGludGVyZXN0ZWQgdG8gaW1wbGVtZW50IG5hdGl2ZSBmdWxsc2NyZWVuIHZpZGVvCisgICAgICAg
IHN1cHBvcnQgc2hvdWxkIGluaGVyaXQgZnJvbSBpdCAoc2VlIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGspCisgICAgICAgIGFuZCBob29rIGl0IGluIHRoZSBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIgYmFja2VuZC4KKworICAgICAgICBUaGUgR1N0cmVhbWVyR1dvcmxkIHBvcnQgdG8g
R1N0cmVhbWVyIDEueCBpcyBwYXJ0bHkgYmFzZWQgb24gYQorICAgICAgICBwYXRjaCBieSBTZWJh
c3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZ2VAY29sbGFib3JhLmNvbT4uCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbTogRW5hYmxlIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQu
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogTmV3CisgICAgICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJ7R1N0cmVhbWVyLEd0a30gbW9kdWxlcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF5ZXJW
b2x1bWVDaGFuZ2VkQ2FsbGJhY2spOiBQbGF5YmluIG5vdGlmeTo6dm9sdW1lCisgICAgICAgIHNp
Z25hbCBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXllck11dGVDaGFuZ2VkQ2FsbGJh
Y2spOiBQbGF5YmluIG5vdGlmeTo6bXV0ZSBzaWduYWwgY2FsbGJhY2suCisgICAgICAgIChXZWJD
b3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIFN3aXRjaCBHU3RyZWFtZXJHV29ybGQgdG8gZnVsbCBz
Y3JlZW4sIGhvb2sgaW4gdG8gcGxheWJpbidzCisgICAgICAgIG5vdGlmeTo6dm9sdW1lIGFuZCBt
dXRlIHNpZ25hbHMgYW5kIGluaXRpYWxpemUgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdy4KKyAgICAg
ICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRGdWxs
c2NyZWVuKToKKyAgICAgICAgRGVzdHJveSB0aGUgZnVsbCBzY3JlZW4gd2luZG93LCBkaXNjb25u
ZWN0IGZyb20gcGxheWJpbiBzaWduYWxzCisgICAgICAgIGFuZCBzd2l0Y2ggR1N0cmVhbWVyR1dv
cmxkIG91dCBvZiBmdWxsIHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRPblVzZXJSZXF1ZXN0KToKKyAgICAgICAgVHJpZ2dl
ciBleGl0IGZyb20gZnVsbCBzY3JlZW4gbW9kZS4gVGhpcyBtZXRob2QgaXMgbWVhbnQgdG8gYmUK
KyAgICAgICAgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZXhwbGljaXRlbHkgcmVxdWVzdHMgdG8gZXhp
dCBmcm9tIGZ1bGwgc2NyZWVuCisgICAgICAgIGJ5IHByZXNzaW5nIGEga2V5IG9yIHNvbWV0aGlu
ZyBzaW1pbGFyLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdT
dHJlYW1lcjo6dG9nZ2xlUGxheSk6IFN3aXRjaAorICAgICAgICBiZXR3ZWVuIHBsYXkgYW5kIHBh
dXNlIHN0YXRlcy4gVXNlZnVsIGZvciBjaGlsZCBjbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6aW5jcmVhc2VWb2x1bWUpOgorICAg
ICAgICBVc2VmdWwgZm9yIGNoaWxkIGNsYXNzZXMgYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6
OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmRlY3JlYXNlVm9sdW1lKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
OjpzZXRWb2x1bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXI6OnRpbWVUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXI6OnBsYXlTdGF0ZUNoYW5nZWQpOgorICAgICAgICBUbyBiZSBpbXBs
ZW1lbnRlZCBieSBjaGlsZCBjbGFzcyB0byByZWZsZWN0IHRoZSBwbGF5ZXIncyBzdGF0ZSBjaGFu
Z2VkLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1l
cjo6dm9sdW1lQ2hhbmdlZCk6IFRvCisgICAgICAgIGJlIGltcGxlbWVudGVkIGJ5IGNoaWxkIGNs
YXNzIGFzIHdlbGwuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyOjptdXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6aW5pdGlhbGl6ZVdpbmRvdyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZGVz
dHJveVdpbmRvdyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJHV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z3N0R1dvcmxkU3luY01l
c3NhZ2VDYWxsYmFjayk6IEFkYXB0IGZvciBHU3RyZWFtZXIgdmlkZW8KKyAgICAgICAgb3Zlcmxh
eSBBUEkgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6R1N0cmVh
bWVyR1dvcmxkKToKKyAgICAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyIHRha2VzIG9uZSBt
b3JlIGFyZ3VtZW50IGluIEdTdHJlYW1lciAxLnguCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbik6IGZmbXBlZ2NvbG9yc3BhY2Ugd2FzCisgICAgICAg
IHJlbmFtZWQgdG8gdmlkZW9jb252ZXJ0IGluIEdTdHJlYW1lciAxLnggYW5kIHRoZSB0ZWUgc3Jj
IHBhZAorICAgICAgICB0ZW1wbGF0ZSB3YXMgcmVuYW1lZCB0byBzcmNfJXUuIFRoZXJlIGlzIG5v
IG5lZWQgdG8gc2VuZCBhIG5ldworICAgICAgICBzZWdtZW50IHF1ZXJ5IGVpdGhlci4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Z3N0R1dvcmxkUGFkUHJvYmVDYWxsYmFj
ayk6IFJlbW92ZSB0aGUgcGxhdGZvcm0gdmlkZW8KKyAgICAgICAgc2luayBicmFuY2ggb25jZSB0
aGUgdGVlIHNvdXJjZSBwYWQgc3RhcnRpbmcgaXQgaGFzIGJlZW4gYmxvY2tlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOiBSZWZhY3RvciB0byB1
c2UgYW4KKyAgICAgICAgYXN5bmNocm9ub3VzIHBhZCBwcm9iZS4KKyAgICAgICAgKFdlYkNvcmU6
OkdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmspOiBSZWZhY3RvcmVkCisg
ICAgICAgIGZyb20gZXhpdEZ1bGxzY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJH
V29ybGQ6OnNldFdpbmRvd092ZXJsYXkpOiBBZGFwdCBmb3IgR1N0cmVhbWVyIHZpZGVvCisgICAg
ICAgIG92ZXJsYXkgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oOgorICAgICAgICAoR1N0cmVhbWVyR1dvcmxkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIEhvb2sgTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8gc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6dm9sdW1lKTogUGxheWJpbiB2b2x1bWUKKyAgICAgICAgcXVlcnkgdXNl
ZCBieSB0aGUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKTogdm9sdW1lKCksIG11dGVkKCkgYW5kIE1lZGlhUGxheWVyCisgICAgICAg
IGFjY2Vzc29yIG1ldGhvZHMgYWRkZWQuIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIG1ldGhvZHMg
YWRkZWQgYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y2FuRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93Lmg6IFJlLWVuYWJsZQorICAgICAgICBt
b2R1bGUgaWYgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gaXMgdHVybmVkIG9uLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcDog
RGl0dG8uCisgICAgICAgIChQbGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dpbmRv
dyk6IFByZXZlbnQgZGVzdHJ1Y3Rpb24KKyAgICAgICAgb2Ygbm9uLUd0a1dpZGdldHMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6
IFJlLWVuYWJsZQorICAgICAgICBHU3RyZWFtZXJHV29ybGQgc3VwcG9ydC4KKyAgICAgICAgKF9X
ZWJLaXRWaWRlb1NpbmtQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1JlbmRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1l
ci5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckd0ay5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5oLgorCiAyMDEzLTAxLTE5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IGNjODRkZTQuLmU1N2ZhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNjEs
NiArMTYxLDcgQEAgaWYgVVNFX0dTVFJFQU1FUgogaWYgRU5BQkxFX0RFQlVHCiB3ZWJjb3JlX2Nw
cGZsYWdzICs9IC1ER1NUX0RJU0FCTEVfREVQUkVDQVRFRAogZW5kaWYgIyBFTkQgRU5BQkxFX0RF
QlVHCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1EV1RGX1VTRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURF
Tz0xCiBlbmRpZiAjIEVORCBVU0VfR1NUUkVBTUVSCiBlbHNlCiBmZWF0dXJlX2RlZmluZXNfb3Zl
cnJpZGVzICs9IEVOQUJMRV9WSURFTz0wIEVOQUJMRV9WSURFT19UUkFDSz0wCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA3NTY1N2ViLi5lZDJkMjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTYwNTksNiArNjA1OSw4IEBAIHdlYmNvcmVndGtfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyR1dvcmxkLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcCBcCkBAIC02MDcyLDYgKzYwNzQsOCBAQCB3ZWJjb3Jl
Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9D
b2xvckd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtD
YWlyb1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9HZGtDYWlyb1V0aWxpdGllcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIyZTgxMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKworI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgorI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgiCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorCisjZGVmaW5lIFZPTFVNRV9VUF9PRkZTRVQgMC4wNSAvLyA1JQorI2RlZmluZSBWT0xVTUVf
RE9XTl9PRkZTRVQgMC4wNSAvLyA1JQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgcGxh
eWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNwZWMgKnBz
cGVjLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKiBjb250cm9sbGVyKQorewor
ICAgIGNvbnRyb2xsZXItPnZvbHVtZUNoYW5nZWQoKTsKK30KKwordm9pZCBwbGF5ZXJNdXRlQ2hh
bmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNwZWMgKnBzcGVjLCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKiBjb250cm9sbGVyKQoreworICAgIGNvbnRyb2xs
ZXItPm11dGVDaGFuZ2VkKCk7Cit9CisKKworRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJl
YW1lcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcihNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fY2xp
ZW50KHBsYXllci0+bWVkaWFQbGF5ZXIoKS0+bWVkaWFQbGF5ZXJDbGllbnQoKSkKKyAgICAsIG1f
Z3N0cmVhbWVyR1dvcmxkKHBsYXllci0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdX
b3JsZCkKKyAgICAsIG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9wbGF5
ZXJNdXRlU2lnbmFsSGFuZGxlcigwKQoreworfQorCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcigpCit7CisgICAg
ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjplbnRlckZ1bGxzY3JlZW4oKQoreworICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQtPmVudGVyRnVs
bHNjcmVlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9
IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIG1fcGxheWVyVm9sdW1lU2lnbmFs
SGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6OnZvbHVtZSIsIEdf
Q0FMTEJBQ0socGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9wbGF5
ZXJNdXRlU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6
Om11dGUiLCBHX0NBTExCQUNLKHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKwor
ICAgIGluaXRpYWxpemVXaW5kb3coKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgZGVzdHJveVdpbmRvdygpOwor
CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX2dzdHJlYW1lckdXb3JsZC0+cGlwZWxpbmUo
KTsKKyAgICBpZiAobV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyKSB7CisgICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJfZGlzY29ubmVjdChwaXBlbGluZSwgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5k
bGVyKTsKKyAgICAgICAgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyID0gMDsKKyAgICB9CisK
KyAgICBpZiAobV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlcikgeworICAgICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QocGlwZWxpbmUsIG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIpOwor
ICAgICAgICBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyID0gMDsKKyAgICB9CisKKyAgICBtX2dz
dHJlYW1lckdXb3JsZC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCit7CisgICAgbV9jbGll
bnQtPm1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0b2dnbGVQbGF5KCkKK3sKKyAgICBpZiAobV9jbGllbnQt
Pm1lZGlhUGxheWVySXNQYXVzZWQoKSkKKyAgICAgICAgbV9jbGllbnQtPm1lZGlhUGxheWVyUGxh
eSgpOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQtPm1lZGlhUGxheWVyUGF1c2UoKTsKKyAg
ICBwbGF5U3RhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lcjo6aW5jcmVhc2VWb2x1bWUoKQoreworICAgIHNldFZvbHVtZShtX3BsYXllci0+
dm9sdW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VUKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyOjpkZWNyZWFzZVZvbHVtZSgpCit7CisgICAgc2V0Vm9sdW1lKG1f
cGxheWVyLT52b2x1bWUoKSAtIFZPTFVNRV9ET1dOX09GRlNFVCk7Cit9CisKK3ZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3sK
KyAgICBpZiAodm9sdW1lIDwgMC4wIHx8IHZvbHVtZSA+IDEuMCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wbGF5ZXItPnNldFZvbHVtZSh2b2x1bWUpOworfQorCitTdHJpbmcgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6dGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpCit7Cisg
ICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKKyAgICAgICAgdGltZSA9IDA7CisgICAgaW50IHNlY29u
ZHMgPSBmYWJzZih0aW1lKTsKKyAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOwor
ICAgIGludCBtaW51dGVzID0gKHNlY29uZHMgLyA2MCkgJSA2MDsKKyAgICBzZWNvbmRzICU9IDYw
OworCisgICAgaWYgKGhvdXJzKSB7CisgICAgICAgIGlmIChob3VycyA+IDkpCisgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAyZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAi
LSIgOiAiIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIlcyUwMWQ6JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3Vy
cywgbWludXRlcywgc2Vjb25kcyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCIlcyUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgbWludXRlcywgc2Vjb25kcyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjMWM3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTMgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXJfaAorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
X2gKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdTdHJlYW1lckdXb3JsZDsKK2NsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjsKK2NsYXNzIE1lZGlhUGxheWVyQ2xpZW50OworCitjbGFzcyBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKTsKK3B1YmxpYzoKKyAgICBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ciopOworICAgIHZpcnR1YWwgfkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoKTsK
KworICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBleGl0RnVsbHNjcmVlbigp
OworICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKKworICAgIHZvaWQgdG9nZ2xlUGxheSgp
OworICAgIHZpcnR1YWwgdm9pZCBwbGF5U3RhdGVDaGFuZ2VkKCkgeyB9CisKKyAgICB2b2lkIGlu
Y3JlYXNlVm9sdW1lKCk7CisgICAgdm9pZCBkZWNyZWFzZVZvbHVtZSgpOworICAgIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KTsKKworICAgIHZpcnR1YWwgdm9pZCB2b2x1bWVDaGFuZ2VkKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIG11dGVDaGFuZ2VkKCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBTdHJp
bmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpOworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKiBtX3BsYXllcjsKKyAgICBNZWRpYVBsYXllckNsaWVudCogbV9jbGllbnQ7CisgICAg
R1N0cmVhbWVyR1dvcmxkKiBtX2dzdHJlYW1lckdXb3JsZDsKKworcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZVdpbmRvdygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95
V2luZG93KCkgeyB9CisKKyAgICB1bnNpZ25lZCBsb25nIG1fcGxheWVyVm9sdW1lU2lnbmFsSGFu
ZGxlcjsKKyAgICB1bnNpZ25lZCBsb25nIG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXI7Cit9Owor
Cit9CisjZW5kaWYKKworI2VuZGlmIC8vIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFt
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAppbmRleCAyMTJkZWZiLi45YWQ5OGM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcApAQCAtMTgsMTQgKzE4LDIyIEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgog
I2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KIAorI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvb3ZlcmxheS5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgorI2VuZGlmCisKKwogI2lmIFBMQVRGT1JNKEdU
SykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKQEAgLTMz
LDYgKzQxLDEyIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CitzdGF0aWMgY29uc3QgY2hhciogZ1ZpZGVvQ29udmVydE5hbWUgPSAiZmZtcGVnY29sb3JzcGFj
ZSI7CisjZWxzZQorc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnROYW1lID0gInZpZGVv
Y29udmVydCI7CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDIsMTEgKzU2LDE2IEBAIGdib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdl
Q2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0CiAgICAg
QVNTRVJUKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0VfRUxFTUVOVCk7
CiAKICAgICBHU3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCA9IHN0YXRpY19jYXN0PEdTdHJlYW1l
ckdXb3JsZCo+KGRhdGEpOworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGNvbnN0IEdz
dFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdl
KTsKIAogICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgInByZXBhcmUt
eHdpbmRvdy1pZCIpCiAgICAgICAgIHx8IGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJl
LCAiaGF2ZS1ucy12aWV3IikpCiAgICAgICAgIGdzdEdXb3JsZC0+c2V0V2luZG93T3ZlcmxheSht
ZXNzYWdlKTsKKyNlbHNlCisgICAgaWYgKGdzdF9pc192aWRlb19vdmVybGF5X3ByZXBhcmVfd2lu
ZG93X2hhbmRsZV9tZXNzYWdlKG1lc3NhZ2UpKQorICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRv
d092ZXJsYXkobWVzc2FnZSk7CisjZW5kaWYKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtNjAs
NyArNzksMTEgQEAgR1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQoR3N0RWxlbWVudCog
cGlwZWxpbmUpCiB7CiAgICAgLy8gWE92ZXJsYXkgbWVzc2FnZXMgbmVlZCB0byBiZSBoYW5kbGVk
IHN5bmNocm9ub3VzbHkuCiAgICAgR3N0QnVzKiBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1cyhH
U1RfUElQRUxJTkUobV9waXBlbGluZSkpOworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAg
IGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihidXMsIGdzdF9idXNfc3luY19zaWduYWxfaGFuZGxl
ciwgdGhpcyk7CisjZWxzZQorICAgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihidXMsIGdzdF9i
dXNfc3luY19zaWduYWxfaGFuZGxlciwgdGhpcywgMCk7CisjZW5kaWYKICAgICBnX3NpZ25hbF9j
b25uZWN0KGJ1cywgInN5bmMtbWVzc2FnZTo6ZWxlbWVudCIsIEdfQ0FMTEJBQ0soZ3N0R1dvcmxk
U3luY01lc3NhZ2VDYWxsYmFjayksIHRoaXMpOwogICAgIGdzdF9vYmplY3RfdW5yZWYoYnVzKTsK
IH0KQEAgLTgxLDcgKzEwNCw3IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3Jl
ZW4oKQogICAgICAgICBtX3ZpZGVvV2luZG93ID0gUGxhdGZvcm1WaWRlb1dpbmRvdzo6Y3JlYXRl
V2luZG93KCk7CiAKICAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwbGF0Zm9ybVZpZGVvU2luayIpOwot
ICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImZm
bXBlZ2NvbG9yc3BhY2UiLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQqIGNvbG9yc3Bh
Y2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoZ1ZpZGVvQ29udmVydE5hbWUsICJjb2xvcnNw
YWNlIik7CiAgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2Uo
InF1ZXVlIiwgInF1ZXVlIik7CiAgICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSgidmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxlIik7CiAKQEAgLTEwMyw3
ICsxMjYsMTEgQEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAg
Z3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwodmlkZW9TY2FsZSwgInNyYyIsIHBsYXRmb3JtVmlk
ZW9TaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKIAogICAgIC8vIExp
bmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyNpZm5kZWYgR1NUX0FQSV9WRVJT
SU9OXzEKICAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksICJzcmMlZCIpKTsKKyNlbHNlCisgICAgR1JlZlB0
cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQo
dGVlLmdldCgpLCAic3JjXyV1IikpOworI2VuZGlmCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQ
YWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIikp
OwogICAgIGdzdF9wYWRfbGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOwogCkBAIC0x
MjEsOSArMTQ4LDkgQEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNvbG9yc3BhY2UsIHN0YXRlKTsKICAgICBnc3RfZWxl
bWVudF9zZXRfc3RhdGUocXVldWUsIHN0YXRlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQogICAgIC8vIFF1ZXJ5IHRoZSBjdXJyZW50IG1lZGlhIHNlZ21lbnQgaW5mb3JtYXRpb25zIGFu
ZCBzZW5kIHRoZW0gdG93YXJkcwogICAgIC8vIHRoZSBuZXcgdGVlIGJyYW5jaCBkb3duc3RyZWFt
LgotCiAgICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWdtZW50KEdTVF9GT1JN
QVRfVElNRSk7CiAgICAgZ2Jvb2xlYW4gcXVlcnlSZXN1bHQgPSBnc3RfZWxlbWVudF9xdWVyeSht
X3BpcGVsaW5lLCBxdWVyeSk7CiAKQEAgLTEzMiw4ICsxNTksOCBAQCBib29sIEdTdHJlYW1lckdX
b3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgR3N0Rm9ybWF0IGZvcm1hdDsKICAgICBnaW50NjQgcG9zaXRpb247CisgICAgR3N0Rm9ybWF0
IGZvcm1hdDsKICAgICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKG1fcGlwZWxpbmUs
ICZmb3JtYXQsICZwb3NpdGlvbikpCiAgICAgICAgIHBvc2l0aW9uID0gMDsKIApAQCAtMTQ1LDIw
ICsxNzIsNTMgQEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAg
Z3N0X3BhZF9wdXNoX2V2ZW50KHNyY1BhZC5nZXQoKSwgZXZlbnQpOwogCiAgICAgZ3N0X3F1ZXJ5
X3VucmVmKHF1ZXJ5KTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCisjaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBnc3RHV29ybGRQYWRQcm9i
ZUNhbGxiYWNrKEdzdFBhZCogcGFkLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIEdTdHJlYW1lckdX
b3JsZCogZ3N0R1dvcmxkKQoreworICAgIGdzdEdXb3JsZC0+cmVtb3ZlUGxhdGZvcm1WaWRlb1Np
bmsoKTsKKyAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9SRU1PVkU7Cit9CisjZW5kaWYKKwogdm9p
ZCBHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoIW1fZHluYW1p
Y1BhZE5hbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEdldCB2aWRlbyBzaW5rIGJpbiBh
bmQgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZS4KLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVv
U2luazsKICAgICBHc3RFbGVtZW50KiBzaW5rUHRyID0gMDsKKyAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZSwgInZpZGVvLXNpbmsiLCAmc2lua1B0ciwgTlVMTCk7CisgICAgR1JlZlB0cjxHc3RF
bGVtZW50PiB2aWRlb1NpbmsgPSBhZG9wdEdSZWYoc2lua1B0cik7CiAKKyAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHRlZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlk
ZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIikpOworICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQg
PSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFt
aWNQYWROYW1lLmdldCgpKSk7CisKKyAgICAvLyBCbG9jayBkYXRhIGZsb3cgdG93YXJkcyB0aGUg
cGlwZWxpbmUgYnJhbmNoIHRvIHJlbW92ZS4gTm8gbmVlZAorICAgIC8vIGZvciBwYWQgYmxvY2tp
bmcgaWYgdGhlIHBpcGVsaW5lIGlzIHBhdXNlZC4KKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBn
c3RfZWxlbWVudF9nZXRfc3RhdGUobV9waXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKKyNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorICAgIGlmIChzdGF0ZSA+PSBHU1RfU1RBVEVfUExBWUlORykKKyAg
ICAgICAgZ3N0X3BhZF9hZGRfcHJvYmUoc3JjUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVf
SURMRSwgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxiYWNrPihnc3RHV29ybGRQYWRQ
cm9iZUNhbGxiYWNrKSwgdGhpcywgMCk7CisgICAgZWxzZQorI2Vsc2UKKyAgICBpZiAoc3RhdGUg
PCBHU1RfU1RBVEVfUExBWUlORyB8fCBnc3RfcGFkX3NldF9ibG9ja2VkKHNyY1BhZC5nZXQoKSwg
dHJ1ZSkpCisjZW5kaWYKKyAgICAgICAgcmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKK30KKwor
dm9pZCBHU3RyZWFtZXJHV29ybGQ6OnJlbW92ZVBsYXRmb3JtVmlkZW9TaW5rKCkKK3sKKyAgICBp
ZiAoIW1fZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEdldCB2aWRl
byBzaW5rIGJpbiBhbmQgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZS4KKyAgICBHc3RFbGVtZW50KiBz
aW5rUHRyID0gMDsKICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZSwgInZpZGVvLXNpbmsiLCAm
c2lua1B0ciwgTlVMTCk7Ci0gICAgdmlkZW9TaW5rID0gYWRvcHRHUmVmKHNpbmtQdHIpOworICAg
IEdSZWZQdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rID0gYWRvcHRHUmVmKHNpbmtQdHIpOwogCiAg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFt
ZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKICAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHBsYXRmb3JtVmlkZW9TaW5rID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25h
bWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAicGxhdGZvcm1WaWRlb1NpbmsiKSk7CkBAIC0x
NzAsMjQgKzIzMCwxNyBAQCB2b2lkIEdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4oKQog
ICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0
YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFtaWNQYWROYW1lLmdldCgpKSk7CiAgICAgR1JlZlB0
cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQo
cXVldWUuZ2V0KCksICJzaW5rIikpOwogCi0gICAgLy8gQmxvY2sgZGF0YSBmbG93IHRvd2FyZHMg
dGhlIHBpcGVsaW5lIGJyYW5jaCB0byByZW1vdmUuIE5vIG5lZWQKLSAgICAvLyBmb3IgcGFkIGJs
b2NraW5nIGlmIHRoZSBwaXBlbGluZSBpcyBwYXVzZWQuCi0gICAgR3N0U3RhdGUgc3RhdGU7Ci0g
ICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUsICZzdGF0ZSwgMCwgMCk7Ci0gICAg
aWYgKHN0YXRlIDwgR1NUX1NUQVRFX1BMQVlJTkcgfHwgZ3N0X3BhZF9zZXRfYmxvY2tlZChzcmNQ
YWQuZ2V0KCksIHRydWUpKSB7Ci0KLSAgICAgICAgLy8gVW5saW5rIGFuZCByZWxlYXNlIHJlcXVl
c3QgcGFkLgotICAgICAgICBnc3RfcGFkX3VubGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0
KCkpOwotICAgICAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKHRlZS5nZXQoKSwg
c3JjUGFkLmdldCgpKTsKLQotICAgICAgICAvLyBVbmxpbmssIHJlbW92ZSBhbmQgY2xlYW51cCBx
dWV1ZSwgZmZtcGVnY29sb3JzcGFjZSwgdmlkZW9TY2FsZSBhbmQgc2luay4KLSAgICAgICAgZ3N0
X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUuZ2V0KCksIGNvbG9yc3BhY2UuZ2V0KCksIHZpZGVv
U2NhbGUuZ2V0KCksIHBsYXRmb3JtVmlkZW9TaW5rLmdldCgpLCBOVUxMKTsKLSAgICAgICAgZ3N0
X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksIHF1ZXVlLmdldCgpLCBj
b2xvcnNwYWNlLmdldCgpLCB2aWRlb1NjYWxlLmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQo
KSwgTlVMTCk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVvU2lu
ay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
dmlkZW9TY2FsZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUoY29sb3JzcGFjZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBnc3Rf
ZWxlbWVudF9zZXRfc3RhdGUocXVldWUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICB9Cisg
ICAgLy8gVW5saW5rIGFuZCByZWxlYXNlIHJlcXVlc3QgcGFkLgorICAgIGdzdF9wYWRfdW5saW5r
KHNyY1BhZC5nZXQoKSwgc2lua1BhZC5nZXQoKSk7CisgICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9y
ZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksIHNyY1BhZC5nZXQoKSk7CisKKyAgICAvLyBVbmxpbmssIHJl
bW92ZSBhbmQgY2xlYW51cCBxdWV1ZSwgZmZtcGVnY29sb3JzcGFjZSwgdmlkZW9TY2FsZSBhbmQg
c2luay4KKyAgICBnc3RfZWxlbWVudF91bmxpbmtfbWFueShxdWV1ZS5nZXQoKSwgY29sb3JzcGFj
ZS5nZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIE5VTEwp
OworICAgIGdzdF9iaW5fcmVtb3ZlX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1
ZS5nZXQoKSwgY29sb3JzcGFjZS5nZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRl
b1NpbmsuZ2V0KCksIE5VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZp
ZGVvU2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZSh2aWRlb1NjYWxlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKGNvbG9yc3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUocXVldWUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKIAogICAgIG1fZHluYW1p
Y1BhZE5hbWUuY2xlYXIoKTsKIH0KQEAgLTE5Niw3ICsyNDksMTEgQEAgdm9pZCBHU3RyZWFtZXJH
V29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBHc3RP
YmplY3QqIHNpbmsgPSBHU1RfTUVTU0FHRV9TUkMobWVzc2FnZSk7CiAKKyNpZm5kZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKICAgICBpZiAoIUdTVF9JU19YX09WRVJMQVkoc2luaykpCisjZWxzZQorICAg
IGlmICghR1NUX0lTX1ZJREVPX09WRVJMQVkoc2luaykpCisjZW5kaWYKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NM
QVNTKHNpbmspLCAiZm9yY2UtYXNwZWN0LXJhdGlvIikpCkBAIC0yMDUsNiArMjYyLDcgQEAgdm9p
ZCBHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSkK
ICAgICBpZiAobV92aWRlb1dpbmRvdykgewogICAgICAgICBtX3ZpZGVvV2luZG93LT5wcmVwYXJl
Rm9yT3ZlcmxheShtZXNzYWdlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogLy8gZ3N0
X3hfb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZSB3YXMgaW50cm9kdWNlZCBpbiAtcGx1Z2lucy1i
YXNlCiAvLyAwLjEwLjMxLCBqdXN0IGxpa2UgdGhlIG1hY3JvIGZvciBjaGVja2luZyB0aGUgdmVy
c2lvbi4KICNpZmRlZiBHU1RfQ0hFQ0tfUExVR0lOU19CQVNFX1ZFUlNJT04KQEAgLTIxMiw4ICsy
NzAsMTEgQEAgdm9pZCBHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2Fn
ZSogbWVzc2FnZSkKICNlbHNlCiAgICAgICAgIGdzdF94X292ZXJsYXlfc2V0X3h3aW5kb3dfaWQo
R1NUX1hfT1ZFUkxBWShzaW5rKSwgbV92aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKICNl
bmRpZgorI2Vsc2UKKyAgICAgICAgZ3N0X3ZpZGVvX292ZXJsYXlfc2V0X3dpbmRvd19oYW5kbGUo
R1NUX1ZJREVPX09WRVJMQVkoc2luayksIG1fdmlkZW9XaW5kb3ctPnZpZGVvV2luZG93SWQoKSk7
CisjZW5kaWYKICAgICB9CiB9CiAKIH0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJM
RShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckdXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCmluZGV4IGRmZjQ3YjAuLjIyODA2YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJH
V29ybGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyR1dvcmxkLmgKQEAgLTIwLDcgKzIwLDcgQEAKIAogI2lmbmRlZiBHU3RyZWFtZXJH
V29ybGRfaAogI2RlZmluZSBHU3RyZWFtZXJHV29ybGRfaAotI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8p
CiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIH5HU3RyZWFtZXJHV29ybGQoKTsKIAogICAg
IEdzdEVsZW1lbnQqIHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9waXBlbGluZTsgfQorICAg
IHZvaWQgcmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGZ1
bGwtc2NyZWVuIHdpbmRvdyBjcmVhdGVkCiAgICAgYm9vbCBlbnRlckZ1bGxzY3JlZW4oKTsKQEAg
LTY3LDUgKzY4LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NS
RUVOX1ZJREVPKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCmluZGV4IDc0ZTUwNjIuLmI5MWQwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC02MCw2ICs2MCwxMiBAQAogI2lu
Y2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3N0cmVhbXZvbHVtZS5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgIkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIKKyNlbmRpZgorI2VuZGlmCisKIC8vIEdzdFBs
YXlGbGFncyBmbGFncyBmcm9tIHBsYXliaW4yLiBJdCBpcyB0aGUgcG9saWN5IG9mIEdTdHJlYW1l
ciB0bwogLy8gbm90IHB1YmxpY2x5IGV4cG9zZSBlbGVtZW50LXNwZWNpZmljIGVudW1zLiBUaGF0
J3Mgd2h5IHRoaXMKIC8vIEdzdFBsYXlGbGFncyBlbnVtIGhhcyBiZWVuIGNvcGllZCBoZXJlLgpA
QCAtMjY4LDcgKzI3NCwxMCBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBtX21lZGlhTG9jYXRpb25zID0gMDsKICAg
ICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pCisgICAgaWYgKG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcikKKyAgICAgICAg
ZXhpdEZ1bGxzY3JlZW4oKTsKKwogICAgIGlmIChtX3ZpZGVvU2lua0JpbikgewogICAgICAgICBn
c3Rfb2JqZWN0X3VucmVmKG1fdmlkZW9TaW5rQmluKTsKICAgICAgICAgbV92aWRlb1NpbmtCaW4g
PSAwOwpAQCAtNjU2LDYgKzY2NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGRvdWJsZT4odm9sdW1lKSk7CiB9CiAKK2Zsb2F0IE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGxheUJpbikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZ3N0X3N0cmVhbV92b2x1bWVfZ2V0X3Zv
bHVtZShHU1RfU1RSRUFNX1ZPTFVNRShtX3BsYXlCaW4pLCBHU1RfU1RSRUFNX1ZPTFVNRV9GT1JN
QVRfQ1VCSUMpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5
UGxheWVyT2ZWb2x1bWVDaGFuZ2UoKQogewogICAgIG1fdm9sdW1lVGltZXJIYW5kbGVyID0gMDsK
QEAgLTE1MzMsNiArMTU1MCwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c2V0TXV0ZWQoYm9vbCBtdXRlZCkKICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLCAibXV0ZSIs
IG11dGVkLCBOVUxMKTsKIH0KIAorYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om11
dGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGxheUJpbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYm9vbCBtdXRlZDsKKyAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLCAibXV0ZSIs
ICZtdXRlZCwgTlVMTCk7CisgICAgcmV0dXJuIG11dGVkOworfQorCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZNdXRlKCkKIHsKICAgICBtX211dGVUaW1l
ckhhbmRsZXIgPSAwOwpAQCAtMTczMCw2ICsxNzU3LDI1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBBU1NFUlQo
IW1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIG1f
ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA9IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6
OmNyZWF0ZSh0aGlzKTsKKyNlbmRpZgorICAgIG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+
ZW50ZXJGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4
aXRGdWxsc2NyZWVuKCk7CisgICAgbV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLnJlbGVhc2Uo
KTsKK30KKyNlbmRpZgorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9y
dHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJ
T1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MApAQCAtMTc0Myw3
ICsxNzg5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzRnVs
bHNjcmVlbigpIGNvbnN0CiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1NZWRpYSBwOwotI2lmbmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAg
ICBwLnR5cGUgPSBQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlOwogICAgIHAubWVk
aWEuZ3N0cmVhbWVyR1dvcmxkID0gbV9nc3RHV29ybGQuZ2V0KCk7CiAjZW5kaWYKQEAgLTE3OTYs
MTAgKzE4NDIsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NU
UGxheUJpbigpCiAgICAgQVNTRVJUKCFtX3BsYXlCaW4pOwogICAgIG1fcGxheUJpbiA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZShnUGxheWJpbk5hbWUsICJwbGF5Iik7CiAKLSNpZm5kZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLSAgICBtX2dzdEdXb3JsZCA9IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRl
R1dvcmxkKG1fcGxheUJpbik7Ci0jZW5kaWYKLQogICAgIEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVs
aW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbikpOwogICAgIGdzdF9idXNfYWRkX3Np
Z25hbF93YXRjaChidXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLCAibWVzc2FnZSIsIEdf
Q0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CkBAIC0x
ODEzLDcgKzE4NTUsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
R1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX3BsYXlCaW4sICJ2aWRlby1jaGFu
Z2VkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVWaWRlb0NoYW5nZWRDYWxsYmFjayks
IHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLCAiYXVkaW8tY2hhbmdlZCIs
IEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlz
KTsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTykKKyAgICBtX2dzdEdXb3JsZCA9IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxk
KG1fcGxheUJpbik7CiAgICAgbV93ZWJraXRWaWRlb1NpbmsgPSB3ZWJraXRWaWRlb1NpbmtOZXco
bV9nc3RHV29ybGQuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtp
dFZpZGVvU2lua05ldygpOwpAQCAtMTgyMywxOSArMTg2NiwyNCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVj
dChtX3dlYmtpdFZpZGVvU2luaywgInJlcGFpbnQtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyhtZWRp
YVBsYXllclByaXZhdGVSZXBhaW50Q2FsbGJhY2spLCB0aGlzKTsKIAogCi0jaWZuZGVmIEdTVF9B
UElfVkVSU0lPTl8xCi0gICAgbV92aWRlb1NpbmtCaW4gPSBnc3RfYmluX25ldygic2luayIpOwor
I2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAvLyBCdWlsZCBhIG5ldyB2aWRl
byBzaW5rIGNvbnNpc3Rpbmcgb2YgYSBiaW4gY29udGFpbmluZyBhIHRlZQorICAgIC8vIChtZWFu
dCB0byBkaXN0cmlidXRlIGRhdGEgdG8gbXVsdGlwbGUgdmlkZW8gc2lua3MpIGFuZCBvdXIKKyAg
ICAvLyBpbnRlcm5hbCB2aWRlbyBzaW5rLiBGb3IgZnVsbHNjcmVlbiB3ZSBjcmVhdGUgYW4gYXV0
b3ZpZGVvc2luaworICAgIC8vIGFuZCBpbml0aWFsbHkgYmxvY2sgdGhlIGRhdGEgZmxvdyB0b3dh
cmRzIGl0IGFuZCBjb25maWd1cmUgaXQKIAotICAgIEdzdEVsZW1lbnQqIHZpZGVvVGVlID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKLSAgICBHc3RFbGVtZW50
KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBtX3Zp
ZGVvU2lua0JpbiA9IGdzdF9iaW5fbmV3KCJzaW5rIik7CiAKICAgICAvLyBUYWtlIG93bmVyc2hp
cC4KICAgICBnc3Rfb2JqZWN0X3JlZl9zaW5rKG1fdmlkZW9TaW5rQmluKTsKIAotICAgIC8vIEJ1
aWxkIGEgbmV3IHZpZGVvIHNpbmsgY29uc2lzdGluZyBvZiBhIGJpbiBjb250YWluaW5nIGEgdGVl
Ci0gICAgLy8gKG1lYW50IHRvIGRpc3RyaWJ1dGUgZGF0YSB0byBtdWx0aXBsZSB2aWRlbyBzaW5r
cykgYW5kIG91cgotICAgIC8vIGludGVybmFsIHZpZGVvIHNpbmsuIEZvciBmdWxsc2NyZWVuIHdl
IGNyZWF0ZSBhbiBhdXRvdmlkZW9zaW5rCi0gICAgLy8gYW5kIGluaXRpYWxseSBibG9jayB0aGUg
ZGF0YSBmbG93IHRvd2FyZHMgaXQgYW5kIGNvbmZpZ3VyZSBpdAorICAgIEdzdEVsZW1lbnQqIHZp
ZGVvVGVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKKyAg
ICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAw
KTsKKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQ
YWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodmlkZW9UZWUsICJzaW5r
IikpOworICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoR1NUX09CSkVDVChzaW5rUGFkLmdldCgpKSwg
R1NUX1BBRF9GTEFHX1BST1hZX0FMTE9DQVRJT04pOworI2VuZGlmCiAKICAgICBnc3RfYmluX2Fk
ZF9tYW55KEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCB2aWRlb1RlZSwgcXVldWUsIE5VTEwpOwog
CkBAIC0xODY0LDcgKzE5MTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
Y3JlYXRlR1NUUGxheUJpbigpCiAKICAgICAgICAgICAgIGlmIChnX29iamVjdF9jbGFzc19maW5k
X3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhtX2Zwc1NpbmspLCAidmlkZW8tc2luayIpKSB7
CiAgICAgICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInZpZGVvLXNpbmsiLCBt
X3dlYmtpdFZpZGVvU2luaywgTlVMTCk7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICAgICAgICAgIGdzdF9iaW5fYWRk
KEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCBtX2Zwc1NpbmspOwogI2VuZGlmCiAgICAgICAgICAg
ICAgICAgYWN0dWFsVmlkZW9TaW5rID0gbV9mcHNTaW5rOwpAQCAtMTg3NSw3ICsxOTIzLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAg
IH0KIAogICAgIGlmICghbV9mcHNTaW5rKSB7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisj
aWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICBnc3RfYmluX2FkZChHU1Rf
QklOKG1fdmlkZW9TaW5rQmluKSwgbV93ZWJraXRWaWRlb1NpbmspOwogI2VuZGlmCiAgICAgICAg
IGFjdHVhbFZpZGVvU2luayA9IG1fd2Via2l0VmlkZW9TaW5rOwpAQCAtMTg4Myw3ICsxOTMxLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQog
CiAgICAgQVNTRVJUKGFjdHVhbFZpZGVvU2luayk7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gRmFzdGVyIGVsZW1l
bnRzIGxpbmtpbmcuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMi
LCBhY3R1YWxWaWRlb1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggN2Jl
YzE0My4uZGExYWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuaApAQCAtMzcsOCArMzcsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1ZmZlciBHc3RC
dWZmZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwogdHlwZWRlZiBz
dHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKIAorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTykKKyNpZiBQTEFURk9STShHVEspCisjZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJDbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrCisjZW5kaWYKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZmRlZiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
Q2xhc3MKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJDbGFzczsKKyNlbmRpZgorCiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKQEAg
LTc0LDExICs4NCwxMyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAgIHZvaWQgc2V0UmF0
ZShmbG9hdCk7CiAKICAgICAgICAgICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICAgICAg
ICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwogICAgICAgICAgICAgdm9pZCB2b2x1bWVDaGFuZ2Vk
KCk7CiAgICAgICAgICAgICB2b2lkIG5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlKCk7CiAKICAg
ICAgICAgICAgIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQg
c2V0TXV0ZWQoYm9vbCk7CisgICAgICAgICAgICBib29sIG11dGVkKCkgY29uc3Q7CiAgICAgICAg
ICAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CiAgICAgICAgICAgICB2b2lkIG5vdGlmeVBsYXllck9m
TXV0ZSgpOwogCkBAIC05Miw2ICsxMDQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAg
IGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBkaWRMb2Fk
aW5nUHJvZ3Jlc3MoKSBjb25zdDsKICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBj
b25zdDsKKyAgICAgICAgICAgIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25zdDsKIAogICAgICAg
ICAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgICAgICAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmKTsKQEAgLTEwOSw2ICsxMjIsMTIgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAg
ICAgICAgICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAorI2lmIFVT
RShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAgICAgICAgIHZvaWQgZW50ZXJGdWxsc2Ny
ZWVuKCk7CisgICAgICAgICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICBi
b29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgor
CiAgICAgICAgICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgICAgICAg
ICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAKQEAgLTEyNiw2ICsxNDUs
OCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgICAgICAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9h
ZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogCisgICAgICAgICAgICBNZWRpYVBsYXllciog
bWVkaWFQbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQorCiAgICAgICAgIHByaXZh
dGU6CiAgICAgICAgICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIq
KTsKIApAQCAtMTQyLDcgKzE2Myw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogCiAgICAgICAgICAgICB2
b2lkIGNhY2hlRHVyYXRpb24oKTsKICAgICAgICAgICAgIHZvaWQgdXBkYXRlU3RhdGVzKCk7Ci0g
ICAgICAgICAgICBmbG9hdCBtYXhUaW1lTG9hZGVkKCkgY29uc3Q7CiAKICAgICAgICAgICAgIHZv
aWQgY3JlYXRlR1NUUGxheUJpbigpOwogICAgICAgICAgICAgYm9vbCBjaGFuZ2VQaXBlbGluZVN0
YXRlKEdzdFN0YXRlIHN0YXRlKTsKQEAgLTE4OSw4ICsyMDksOSBAQCBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsK
ICAgICAgICAgICAgIGJvb2wgbV9kZWxheWluZ0xvYWQ7CiAgICAgICAgICAgICBib29sIG1fbWVk
aWFEdXJhdGlvbktub3duOwogICAgICAgICAgICAgbXV0YWJsZSBmbG9hdCBtX21heFRpbWVMb2Fk
ZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisj
aWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICAgICAgUmVmUHRyPEdTdHJl
YW1lckdXb3JsZD4gbV9nc3RHV29ybGQ7CisgICAgICAgICAgICBPd25QdHI8RnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckNsYXNzPiBtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CiAjZW5kaWYK
ICAgICAgICAgICAgIGd1aW50IG1fdm9sdW1lVGltZXJIYW5kbGVyOwogICAgICAgICAgICAgZ3Vp
bnQgbV9tdXRlVGltZXJIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgKaW5k
ZXggMmY4ZDM2NS4uNGExYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oCkBA
IC0xOSw3ICsxOSw3IEBACiAKICNpZm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRvd19oCiAjZGVmaW5l
IFBsYXRmb3JtVmlkZW9XaW5kb3dfaAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRl
ICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjEsNSArNjEsNSBA
QCBjbGFzcyBQbGF0Zm9ybVZpZGVvV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1W
aWRlb1dpbmRvdz4gewogICAgIH07CiB9CiAKLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAmJiAh
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAmJiBV
U0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93R3RrLmNwcAppbmRleCBiODM4ODExLi4zZDE1M2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dp
bmRvd0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCkBAIC0xOSw3ICsxOSw3IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCi0jaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05f
MSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApAQCAtNTAsMTEgKzUwLDEy
IEBAIFBsYXRmb3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKIHsKICAgICBp
ZiAobV92aWRlb1dpbmRvdyAmJiBtX3dpbmRvdykgewogICAgICAgICBndGtfY29udGFpbmVyX3Jl
bW92ZShHVEtfQ09OVEFJTkVSKG1fd2luZG93KSwgbV92aWRlb1dpbmRvdyk7Ci0gICAgICAgIGd0
a193aWRnZXRfZGVzdHJveShtX3ZpZGVvV2luZG93KTsKKyAgICAgICAgaWYgKEdUS19JU19XSURH
RVQobV92aWRlb1dpbmRvdykpCisgICAgICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV92aWRl
b1dpbmRvdyk7CiAgICAgICAgIG1fdmlkZW9XaW5kb3cgPSAwOwogICAgIH0KIAotICAgIGlmICht
X3dpbmRvdykgeworICAgIGlmIChHVEtfSVNfV0lER0VUKG1fd2luZG93KSkgewogICAgICAgICBn
dGtfd2lkZ2V0X2Rlc3Ryb3kobV93aW5kb3cpOwogICAgICAgICBtX3dpbmRvdyA9IDA7CiAgICAg
fQpAQCAtNjUsNSArNjYsNSBAQCBQbGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dp
bmRvdygpCiB2b2lkIFBsYXRmb3JtVmlkZW9XaW5kb3c6OnByZXBhcmVGb3JPdmVybGF5KEdzdE1l
c3NhZ2UqKQogewogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Np
bmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggZDg1MjE4NC4uODhhNmNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RydWN0IF9X
ZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICNlbmRpZgog
Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKQogICAgIFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkOwogI2VuZGlmCiAK
QEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtS
ZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgICAgICByZXR1
cm4gR1NUX0ZMT1dfT0s7CiAgICAgfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIC8vIElnbm9yZSBidWZmZXJzIGlmIHRo
ZSB2aWRlbyBpcyBhbHJlYWR5IGluIGZ1bGxzY3JlZW4gdXNpbmcKICAgICAvLyBhbm90aGVyIHNp
bmsuCiAgICAgaWYgKHByaXYtPmdzdEdXb3JsZC0+aXNGdWxsc2NyZWVuKCkpIHsKQEAgLTQxOCw3
ICs0MTgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktp
dFZpZGVvU2lua0NsYXNzKiBrbGFzcykKIH0KIAogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogR3N0RWxlbWVudCogd2Via2l0Vmlk
ZW9TaW5rTmV3KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkKQogewogICAgIEdz
dEVsZW1lbnQqIGVsZW1lbnQgPSBHU1RfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
VklERU9fU0lOSywgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oCmluZGV4IDA2MWI2
OTQuLjhjZmQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKQEAgLTIyLDcgKzIy
LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIAotI2lmbmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICNpbmNs
dWRlICJHU3RyZWFtZXJHV29ybGQuaCIKICNlbmRpZgogCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVj
dCBfV2ViS2l0VmlkZW9TaW5rQ2xhc3MgewogCiBHVHlwZSB3ZWJraXRfdmlkZW9fc2lua19nZXRf
dHlwZSgpIEdfR05VQ19DT05TVDsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVT
RShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIEdzdEVsZW1lbnQqIHdlYmtpdFZpZGVvU2lua05l
dyhXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQqKTsKICNlbHNlCiBHc3RFbGVtZW50KiB3ZWJraXRW
aWRlb1NpbmtOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwCnNpbWlsYXJp
dHkgaW5kZXggNTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHAKaW5k
ZXggZDE0ZGM5Ny4uMjAzNjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAor
ICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMTksODYgKzE5LDg2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShW
SURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKLSNpbmNs
dWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckd0ay5oIgogCisjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKKyNpbmNsdWRlICJHU3RyZWFt
ZXJHV29ybGQuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCIKIAogI2lu
Y2x1ZGUgPGdkay9nZGsuaD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUg
PGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2RlZmluZSBIVURfQVVUT19ISURFX0lO
VEVSVkFMIDMwMDAgLy8gMyBzZWNvbmRzCiAjZGVmaW5lIFBST0dSRVNTX0JBUl9VUERBVEVfSU5U
RVJWQUwgMTUwIC8vIDE1MG1zCi0jZGVmaW5lIFZPTFVNRV9VUF9PRkZTRVQgMC4wNSAvLyA1JQot
I2RlZmluZSBWT0xVTUVfRE9XTl9PRkZTRVQgMC4wNSAvLyA1JQogCiAvLyBVc2Ugc3ltYm9saWMg
aWNvbnMgb25seSBpZiB3ZSBidWlsZCB3aXRoIEdUSystMyBzdXBwb3J0LiBUaGV5IGNvdWxkCiAv
LyBiZSBlbmFibGVkIGZvciB0aGUgR1RLKzIgYnVpbGQgYnV0IHdlJ2QgbmVlZCB0byBidW1wIHRo
ZSByZXF1aXJlZAogLy8gdmVyc2lvbiB0byBhdCBsZWFzdCAyLjIyLgotI2lmIEdUS19NQUpPUl9W
RVJTSU9OIDwgMwotI2RlZmluZSBQTEFZX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stc3RhcnQi
Ci0jZGVmaW5lIFBBVVNFX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stcGF1c2UiCi0jZGVmaW5l
IEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUgInZpZXctcmVzdG9yZSIKKyNpZiBHVEtfTUFKT1Jf
VkVSU0lPTiA+IDIKKyNkZWZpbmUgSUNPTl9OQU1FX1NVRkZJWCAiLXN5bWJvbGljIgogI2Vsc2UK
LSNkZWZpbmUgUExBWV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0LXN5bWJvbGljIgot
I2RlZmluZSBQQVVTRV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlLXN5bWJvbGljIgot
I2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMi
CisjZGVmaW5lIElDT05fTkFNRV9TVUZGSVgKICNlbmRpZgogCi1zdGF0aWMgZ2Jvb2xlYW4gaGlk
ZUh1ZENhbGxiYWNrKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCisjZGVm
aW5lIFBMQVlfSUNPTl9OQU1FICJtZWRpYS1wbGF5YmFjay1zdGFydCJJQ09OX05BTUVfU1VGRklY
CisjZGVmaW5lIFBBVVNFX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stcGF1c2UiSUNPTl9OQU1F
X1NVRkZJWAorI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FICJ2aWV3LXJlc3RvcmUi
SUNPTl9OQU1FX1NVRkZJWAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBnYm9vbGVh
biBoaWRlSHVkQ2FsbGJhY2soRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxl
cikKIHsKICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQog
Ci1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCwgIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrTW90aW9u
Tm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCwgIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxl
ci0+c2hvd0h1ZCh0cnVlKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIHZvaWQgb25G
dWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBHUGFyYW1T
cGVjKiBwcm9wZXJ0eSwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0
YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlvbihHdGtXaWRnZXQqIHdp
ZGdldCwgR1BhcmFtU3BlYyogcHJvcGVydHksIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsq
IGNvbnRyb2xsZXIpCiB7CiAgICAgaWYgKCFndGtfd2luZG93X2lzX2FjdGl2ZShHVEtfV0lORE9X
KHdpZGdldCkpKQogICAgICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CiB9CiAKLXN0YXRpYyBn
Ym9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnRDb25maWd1cmUqIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250
cm9sbGVyKQorc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQsIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxlci0+Z3RrQ29uZmln
dXJlKGV2ZW50KTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIHZvaWQgb25GdWxsc2Ny
ZWVuR3RrRGVzdHJveShHdGtXaWRnZXQqIHdpZGdldCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogY29udHJvbGxlcikKK3N0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3koR3RrV2lk
Z2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7
CiAgICAgY29udHJvbGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAotc3RhdGljIHZvaWQgdG9n
Z2xlUGxheVBhdXNlQWN0aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIHZvaWQgdG9nZ2xlUGxheVBhdXNlQWN0aXZh
dGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250
cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKIH0KIAotc3RhdGljIHZv
aWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24sIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCBleGl0RnVsbHNjcmVlbkFj
dGl2YXRlZChHdGtBY3Rpb24qIGFjdGlvbiwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayog
Y29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5leGl0T25Vc2VyUmVxdWVzdCgpOwogfQog
Ci1zdGF0aWMgZ2Jvb2xlYW4gcHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjayhGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIGdib29sZWFuIHByb2dyZXNzQmFyVXBk
YXRlQ2FsbGJhY2soRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsK
ICAgICByZXR1cm4gY29udHJvbGxlci0+dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKIH0KIAotc3Rh
dGljIGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblByZXNzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50QnV0dG9uKiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxl
cikKK3N0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lk
Z2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsq
IGNvbnRyb2xsZXIpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlICE9IEdES19CVVRUT05fUFJFU1Mp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTEwNyw2NCArMTA3LDQ5IEBAIHN0YXRpYyBnYm9v
bGVhbiB0aW1lU2NhbGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1
dHRvbiogZXZlbnQsCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gdGlt
ZVNjYWxlQnV0dG9uUmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBl
dmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyBnYm9v
bGVhbiB0aW1lU2NhbGVCdXR0b25SZWxlYXNlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRC
dXR0b24qIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQog
ewogICAgIGNvbnRyb2xsZXItPmVuZFNlZWsoKTsKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0
YXRpYyB2b2lkIHRpbWVTY2FsZVZhbHVlQ2hhbmdlZChHdGtXaWRnZXQqIHdpZGdldCwgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyB2b2lkIHRpbWVTY2FsZVZh
bHVlQ2hhbmdlZChHdGtXaWRnZXQqIHdpZGdldCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0
ayogY29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5kb1NlZWsoKTsKIH0KIAotc3RhdGlj
IHZvaWQgdm9sdW1lVmFsdWVDaGFuZ2VkKEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3VibGUg
dmFsdWUsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgdm9p
ZCB2b2x1bWVWYWx1ZUNoYW5nZWQoR3RrU2NhbGVCdXR0b24gKmJ1dHRvbiwgZ2RvdWJsZSB2YWx1
ZSwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250
cm9sbGVyLT5zZXRWb2x1bWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7CiB9CiAKLXZvaWQg
cGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNwZWMg
KnBzcGVjLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQotewotICAgIGNv
bnRyb2xsZXItPnZvbHVtZUNoYW5nZWQoKTsKLX0KIAotdm9pZCBwbGF5ZXJNdXRlQ2hhbmdlZENh
bGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNwZWMgKnBzcGVjLCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQotewotICAgIGNvbnRyb2xsZXItPm11dGVDaGFuZ2Vk
KCk7Ci19Ci0KLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIoKQotICAgIDogbV9odWRUaW1lb3V0SWQoMCkKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHdGs6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsoTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKiBwbGF5ZXIpCisgICAgOiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
KHBsYXllcikKKyAgICAsIG1faHVkVGltZW91dElkKDApCiAgICAgLCBtX3Byb2dyZXNzQmFyVXBk
YXRlSWQoMCkKICAgICAsIG1fc2Vla0xvY2soZmFsc2UpCiAgICAgLCBtX3dpbmRvdygwKQogICAg
ICwgbV9odWRXaW5kb3coMCkKKyAgICAsIG1fa2V5UHJlc3NTaWduYWxIYW5kbGVyKDApCisgICAg
LCBtX2Rlc3Ryb3lTaWduYWxIYW5kbGVyKDApCisgICAgLCBtX2lzQWN0aXZlU2lnbmFsSGFuZGxl
cigwKQorICAgICwgbV9tb3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyKDApCisgICAgLCBtX2NvbmZp
Z3VyZUV2ZW50U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9odWRNb3Rpb25Ob3RpZnlTaWduYWxI
YW5kbGVyKDApCisgICAgLCBtX3RpbWVTY2FsZUJ1dHRvblByZXNzZWRTaWduYWxIYW5kbGVyKDAp
CisgICAgLCBtX3RpbWVTY2FsZUJ1dHRvblJlbGVhc2VkU2lnbmFsSGFuZGxlcigwKQorICAgICwg
bV9wbGF5QWN0aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyKDApCisgICAgLCBtX2V4aXRGdWxsY3Jl
ZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIoMCkKIHsKIH0KIAotRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQotewotICAgIGV4aXRGdWxs
c2NyZWVuKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLXsKLSAgICBpZiAobWVkaWFF
bGVtZW50ID09IG1fbWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX21lZGlh
RWxlbWVudCA9IG1lZGlhRWxlbWVudDsKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50KSB7Ci0gICAg
ICAgIC8vIENhbid0IGRvIGZ1bGwtc2NyZWVuLCBqdXN0IGdldCBvdXQKLSAgICAgICAgZXhpdEZ1
bGxzY3JlZW4oKTsKLSAgICB9Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
Z3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCkKK3ZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckd0azo6Z3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCkK
IHsKICAgICB1cGRhdGVIdWRQb3NpdGlvbigpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0azo6c2hvd0h1ZChib29sIGF1dG9IaWRlKQogewogICAgIGlmICghbV9odWRXaW5k
b3cpCiAgICAgICAgIHJldHVybjsKQEAgLTE5Miw3ICsxNzcsNyBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKICAgICAgICAgbV9odWRUaW1l
b3V0SWQgPSBnX3RpbWVvdXRfYWRkKEhVRF9BVVRPX0hJREVfSU5URVJWQUwsIHJlaW50ZXJwcmV0
X2Nhc3Q8R1NvdXJjZUZ1bmM+KGhpZGVIdWRDYWxsYmFjayksIHRoaXMpOwogfQogCi12b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR3RrOjpoaWRlSHVkKCkKIHsKICAgICBpZiAobV9odWRUaW1lb3V0SWQpIHsKICAg
ICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faHVkVGltZW91dElkKTsKQEAgLTIyMiwxMiArMjA3LDEw
IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1ZCgpCiAgICAgfQogfQog
Ci1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBj
b250cm9sbGVyKQorc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBzd2l0Y2ggKGV2ZW50LT5rZXl2YWwpIHsK
ICAgICBjYXNlIEdES19Fc2NhcGU6Ci0gICAgY2FzZSAnZic6Ci0gICAgY2FzZSAnRic6CiAgICAg
ICAgIGNvbnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR0RLX3NwYWNlOgpAQCAtMjM1LDEyICsyMTgsMTAgQEAgc3RhdGljIGdib29sZWFuIG9u
RnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5
KiBldmUKICAgICAgICAgY29udHJvbGxlci0+dG9nZ2xlUGxheSgpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEdES19VcDoKLSAgICAgICAgLy8gdm9sdW1lIHVwCi0gICAgICAgIGNvbnRyb2xs
ZXItPnNldFZvbHVtZShjb250cm9sbGVyLT52b2x1bWUoKSArIFZPTFVNRV9VUF9PRkZTRVQpOwor
ICAgICAgICBjb250cm9sbGVyLT5pbmNyZWFzZVZvbHVtZSgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEdES19Eb3duOgotICAgICAgICAvLyB2b2x1bWUgZG93bgotICAgICAgICBjb250cm9s
bGVyLT5zZXRWb2x1bWUoY29udHJvbGxlci0+dm9sdW1lKCkgLSBWT0xVTUVfRE9XTl9PRkZTRVQp
OworICAgICAgICBjb250cm9sbGVyLT5kZWNyZWFzZVZvbHVtZSgpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTI0OSwyNSArMjMwLDEwIEBAIHN0YXRp
YyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0
LCBHZGtFdmVudEtleSogZXZlCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLQotdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQordm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR3RrOjppbml0aWFsaXplV2luZG93KCkKIHsKLSAgICBpZiAoIW1fbWVkaWFF
bGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnBsYXRm
b3JtTWVkaWEoKS50eXBlICE9IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWE6OkdTdHJlYW1lckdXb3Js
ZFR5cGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZ3N0cmVhbWVyR1dvcmxkID0gbV9tZWRp
YUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQ7Ci0gICAgaWYg
KCFtX2dzdHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIG1fd2luZG93ID0gcmVpbnRlcnByZXRfY2FzdDxHdGtXaWRnZXQqPihtX2dzdHJlYW1l
ckdXb3JsZC0+cGxhdGZvcm1WaWRlb1dpbmRvdygpLT53aW5kb3coKSk7CiAKLSAgICBHc3RFbGVt
ZW50KiBwaXBlbGluZSA9IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOwotICAgIGdfc2ln
bmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6OnZvbHVtZSIsIEdfQ0FMTEJBQ0socGxheWVy
Vm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChwaXBl
bGluZSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0socGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOwotCiAgICAgaWYgKCFtX2h1ZFdpbmRvdykKICAgICAgICAgY3JlYXRlSHVkKCk7
CiAKQEAgLTI4MSw5ICsyNDcsOSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVu
dGVyRnVsbHNjcmVlbigpCiAjZW5kaWYKICAgICBndGtfd2lkZ2V0X3NldF9kb3VibGVfYnVmZmVy
ZWQobV93aW5kb3csIEZBTFNFKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJr
ZXktcHJlc3MtZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQp
LCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAiZGVzdHJveSIsIEdfQ0FM
TEJBQ0sob25GdWxsc2NyZWVuR3RrRGVzdHJveSksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV93aW5kb3csICJub3RpZnk6OmlzLWFjdGl2ZSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVu
R3RrQWN0aXZlTm90aWZpY2F0aW9uKSwgdGhpcyk7CisgICAgbV9rZXlQcmVzc1NpZ25hbEhhbmRs
ZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAia2V5LXByZXNzLWV2ZW50IiwgR19DQUxM
QkFDSyhvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7CisgICAgbV9kZXN0cm95
U2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJkZXN0cm95IiwgR19D
QUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7CisgICAgbV9pc0FjdGl2ZVNp
Z25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAibm90aWZ5Ojppcy1hY3Rp
dmUiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlvbiksIHRoaXMp
OwogCiAgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7CiAKQEAgLTI5MSwxNCArMjU3
LDE0IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkK
ICAgICBHUmVmUHRyPEdka0N1cnNvcj4gY3Vyc29yKGFkb3B0R1JlZihibGFua0N1cnNvcigpKSk7
CiAgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yLmdldCgpKTsKIAotICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxM
QkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOwotICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV93aW5kb3csICJjb25maWd1cmUtZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVs
bHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KSwgdGhpcyk7CisgICAgbV9tb3Rpb25Ob3RpZnlTaWdu
YWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZl
bnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7
CisgICAgbV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1f
d2luZG93LCAiY29uZmlndXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25m
aWd1cmVFdmVudCksIHRoaXMpOwogCiAgICAgZ3RrX3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5E
T1cobV93aW5kb3cpKTsKICAgICBzaG93SHVkKHRydWUpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckd0azo6dXBkYXRlSHVkUG9zaXRpb24oKQogewogICAgIGlmICghbV9odWRXaW5k
b3cpCiAgICAgICAgIHJldHVybjsKQEAgLTMwNyw4ICsyNzMsNyBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKCkKICAgICBHZGtTY3JlZW4qIHNjcmVl
biA9IGd0a193aW5kb3dfZ2V0X3NjcmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7CiAgICAgR2Rr
V2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpOwogICAgIEdk
a1JlY3RhbmdsZSBmdWxsc2NyZWVuUmVjdGFuZ2xlOwotICAgIGdka19zY3JlZW5fZ2V0X21vbml0
b3JfZ2VvbWV0cnkoc2NyZWVuLCBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2F0X3dpbmRvdyhzY3Jl
ZW4sIHdpbmRvdyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVsbHNj
cmVlblJlY3RhbmdsZSk7CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3Jl
ZW4sIGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93KSwgJmZ1
bGxzY3JlZW5SZWN0YW5nbGUpOwogCiAgICAgLy8gR2V0IHRoZSBwb3B1cCB3aW5kb3cgc2l6ZS4K
ICAgICBpbnQgaHVkV2lkdGgsIGh1ZEhlaWdodDsKQEAgLTMxOCwyOCArMjgzLDI2IEBAIHZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRpb24oKQogICAgIGd0a193
aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xl
LndpZHRoLCBodWRIZWlnaHQpOwogCiAgICAgLy8gTW92ZSB0aGUgaHVkIHRvIHRoZSBib3R0b20g
b2YgdGhlIHNjcmVlbi4KLSAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRv
dyksIGZ1bGxzY3JlZW5SZWN0YW5nbGUueCwKLSAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVl
blJlY3RhbmdsZS5oZWlnaHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBodWRIZWlnaHQpOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVzZXJSZXF1ZXN0KCkK
LXsKLSAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBndGtfd2luZG93
X21vdmUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5SZWN0YW5nbGUueCwgZnVs
bHNjcmVlblJlY3RhbmdsZS5oZWlnaHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBodWRIZWln
aHQpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVu
KCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6ZGVzdHJveVdpbmRvdygpCiB7
CiAgICAgaWYgKCFtX2h1ZFdpbmRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ19zaWduYWxf
aGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZv
aWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7Ci0gICAgZ19zaWduYWxf
aGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZv
aWQqPihvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihv
bkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsKLQotICAgIEdzdEVsZW1l
bnQqIHBpcGVsaW5lID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3Ry
ZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKHBpcGVsaW5lLCByZWludGVycHJldF9jYXN0PHZvaWQqPihwbGF5ZXJWb2x1bWVD
aGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMocGlwZWxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBsYXllck11dGVDaGFu
Z2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93
aW5kb3csIG1fa2V5UHJlc3NTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QobV93aW5kb3csIG1fZGVzdHJveVNpZ25hbEhhbmRsZXIpOworICAgIGdfc2lnbmFs
X2hhbmRsZXJfZGlzY29ubmVjdChtX3dpbmRvdywgbV9pc0FjdGl2ZVNpZ25hbEhhbmRsZXIpOwor
ICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3dpbmRvdywgbV9tb3Rpb25Ob3RpZnlT
aWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93aW5kb3cs
IG1fY29uZmlndXJlRXZlbnRTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QobV9odWRXaW5kb3csIG1faHVkTW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcik7Cisg
ICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fdGltZUhTY2FsZSwgbV90aW1lU2NhbGVC
dXR0b25QcmVzc2VkU2lnbmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KG1fdGltZUhTY2FsZSwgbV90aW1lU2NhbGVCdXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXIp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1faHNjYWxl
VXBkYXRlSWQpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3ZvbHVtZUJ1dHRv
biwgbV92b2x1bWVVcGRhdGVJZCk7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1f
cGxheVBhdXNlQWN0aW9uLCBtX3BsYXlBY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIpOworICAg
IGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX2V4aXRGdWxsc2NyZWVuQWN0aW9uLCBtX2V4
aXRGdWxsY3JlZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIpOwogCiAgICAgaWYgKG1faHVk
VGltZW91dElkKSB7CiAgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7CkBA
IC0zNTEsMTU4ICszMTQsNTggQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0
RnVsbHNjcmVlbigpCiAgICAgICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IDA7CiAgICAgfQog
Ci0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9PSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQotICAgICAgICBtX21lZGlhRWxl
bWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKLQogICAgIGd0a193aWRnZXRfaGlkZShtX3dpbmRvdyk7CiAKLSAgICBndGtfd2lkZ2V0
X2Rlc3Ryb3kobV9odWRXaW5kb3cpOworICAgIGlmIChtX2h1ZFdpbmRvdykKKyAgICAgICAgZ3Rr
X3dpZGdldF9kZXN0cm95KG1faHVkV2luZG93KTsKICAgICBtX2h1ZFdpbmRvdyA9IDA7CiB9CiAK
LWJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fbWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVtZW50LT5jYW5QbGF5KCk7Ci19Ci0K
LXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxheSgpCi17Ci0gICAgaWYgKG1fbWVk
aWFFbGVtZW50KQotICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxheSgpOwotCi0gICAgcGxheVN0
YXRlQ2hhbmdlZCgpOwotICAgIHNob3dIdWQodHJ1ZSk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6cGF1c2UoKQotewotICAgIGlmIChtX21lZGlhRWxlbWVudCkKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnBhdXNlKCk7Ci0KLSAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7Ci0g
ICAgc2hvd0h1ZChmYWxzZSk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
cGxheVN0YXRlQ2hhbmdlZCgpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnBs
YXlTdGF0ZUNoYW5nZWQoKQogewotICAgIGlmIChjYW5QbGF5KCkpCisgICAgaWYgKG1fY2xpZW50
LT5tZWRpYVBsYXllcklzUGF1c2VkKCkpCiAgICAgICAgIGdfb2JqZWN0X3NldChtX3BsYXlQYXVz
ZUFjdGlvbiwgInRvb2x0aXAiLCBfKCJQbGF5IiksICJpY29uLW5hbWUiLCBQTEFZX0lDT05fTkFN
RSwgTlVMTCk7CiAgICAgZWxzZQogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rp
b24sICJ0b29sdGlwIiwgXygiUGF1c2UiKSwgImljb24tbmFtZSIsIFBBVVNFX0lDT05fTkFNRSwg
TlVMTCk7CisgICAgc2hvd0h1ZCghbV9jbGllbnQtPm1lZGlhUGxheWVySXNQYXVzZWQoKSk7CiB9
CiAKLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxheSgpCi17Ci0gICAg
aWYgKGNhblBsYXkoKSkKLSAgICAgICAgcGxheSgpOwotICAgIGVsc2UKLSAgICAgICAgcGF1c2Uo
KTsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+dm9sdW1lKCkg
OiAwOwotfQotCi1ib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+bXV0ZWQoKSA6
IGZhbHNlOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldFZvbHVtZShm
bG9hdCB2b2x1bWUpCi17Ci0gICAgaWYgKHZvbHVtZSA8IDAuMCB8fCB2b2x1bWUgPiAxLjApCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX21lZGlhRWxlbWVudCkgewotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjOwotICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Vm9sdW1lKHZvbHVtZSwg
ZWMpOwotICAgIH0KLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWVD
aGFuZ2VkKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6dm9sdW1lQ2hhbmdl
ZCgpCiB7CiAgICAgZ19zaWduYWxfaGFuZGxlcl9ibG9jayhtX3ZvbHVtZUJ1dHRvbiwgbV92b2x1
bWVVcGRhdGVJZCk7Ci0gICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JV
VFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgpKTsKKyAgICBndGtfc2NhbGVfYnV0dG9uX3Nl
dF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgbV9wbGF5ZXItPnZvbHVt
ZSgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9s
dW1lVXBkYXRlSWQpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVD
aGFuZ2VkKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6bXV0ZUNoYW5nZWQo
KQogewogICAgIGdfc2lnbmFsX2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1l
VXBkYXRlSWQpOwotICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FMRV9CVVRU
T04obV92b2x1bWVCdXR0b24pLCBtdXRlZCgpID8gMCA6IHZvbHVtZSgpKTsKKyAgICBndGtfc2Nh
bGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgbV9w
bGF5ZXItPm11dGVkKCkgPyAwIDogbV9wbGF5ZXItPnZvbHVtZSgpKTsKICAgICBnX3NpZ25hbF9o
YW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwogfQogCi1m
bG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkg
OiAwOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1l
KGZsb2F0IHZhbHVlKQotewotICAgIGlmIChtX21lZGlhRWxlbWVudCkgewotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjOwotICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodmFs
dWUsIGVjKTsKLSAgICB9Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmR1
cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxl
bWVudC0+ZHVyYXRpb24oKSA6IDA7Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/
IG1fbWVkaWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgOiAwOwotfQotCi12b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmJlZ2luU2VlaygpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGs6OmJlZ2luU2VlaygpCiB7CiAgICAgbV9zZWVrTG9jayA9IHRydWU7Ci0KLSAgICBp
ZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5iZWdpblNjcnViYmlu
ZygpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRvU2VlaygpCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmRvU2VlaygpCiB7CiAgICAgaWYgKCFtX3Nl
ZWtMb2NrKQotICAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm47CiAKLSAgICBzZXRDdXJy
ZW50VGltZShndGtfcmFuZ2VfZ2V0X3ZhbHVlKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpKSpkdXJh
dGlvbigpIC8gMTAwKTsKKyAgICBtX3BsYXllci0+c2VlayhndGtfcmFuZ2VfZ2V0X3ZhbHVlKEdU
S19SQU5HRShtX3RpbWVIU2NhbGUpKSptX3BsYXllci0+ZHVyYXRpb24oKSAvIDEwMCk7CiB9CiAK
LXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW5kU2VlaygpCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmVuZFNlZWsoKQogewotICAgIGlmIChtX21lZGlhRWxlbWVu
dCkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmVuZFNjcnViYmluZygpOwotCiAgICAgbV9zZWVr
TG9jayA9IGZhbHNlOwogfQogCi1zdGF0aWMgU3RyaW5nIHRpbWVUb1N0cmluZyhmbG9hdCB0aW1l
KQorZ2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6dXBkYXRlSHVkUHJvZ3Jl
c3NCYXIoKQogewotICAgIGlmICghaXNmaW5pdGUodGltZSkpCi0gICAgICAgIHRpbWUgPSAwOwot
ICAgIGludCBzZWNvbmRzID0gZmFic2YodGltZSk7Ci0gICAgaW50IGhvdXJzID0gc2Vjb25kcyAv
ICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7Ci0gICAg
c2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChob3VycykgewotICAgICAgICBpZiAoaG91cnMgPiA5
KQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZDolMDJkIiwg
KHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7Ci0gICAgICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICIt
IiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgIH0KLQotICAgIHJldHVybiBT
dHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIG1pbnV0
ZXMsIHNlY29uZHMpOwotfQotCi1nYm9vbGVhbiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1
cGRhdGVIdWRQcm9ncmVzc0JhcigpCi17Ci0gICAgZmxvYXQgbWVkaWFEdXJhdGlvbihkdXJhdGlv
bigpKTsKLSAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKGN1cnJlbnRUaW1lKCkpOworICAgIGZsb2F0
IG1lZGlhRHVyYXRpb24obV9wbGF5ZXItPmR1cmF0aW9uKCkpOworICAgIGZsb2F0IG1lZGlhUG9z
aXRpb24obV9wbGF5ZXItPmN1cnJlbnRUaW1lKCkpOwogCiAgICAgaWYgKCFtX3NlZWtMb2NrKSB7
CiAgICAgICAgIGdkb3VibGUgdmFsdWUgPSAwLjA7CkBAIC01MTQsMjIgKzM3NywyMSBAQCBnYm9v
bGVhbiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0JhcigpCiAg
ICAgICAgIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShhZGp1c3RtZW50LCB2YWx1ZSk7CiAgICAg
fQogCi0gICAgZ3RrX3JhbmdlX3NldF9maWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUp
LCBwZXJjZW50TG9hZGVkKCkqIDEwMCk7CisgICAgZ3RrX3JhbmdlX3NldF9maWxsX2xldmVsKEdU
S19SQU5HRShtX3RpbWVIU2NhbGUpLCAobV9wbGF5ZXItPm1heFRpbWVMb2FkZWQoKSAvIG1lZGlh
RHVyYXRpb24pKiAxMDApOwogCi0gICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJpbnRmKCIl
cyAvICVzIiwgdGltZVRvU3RyaW5nKG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb1N0cmluZyhtZWRpYUR1cmF0aW9u
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBnY2hhciogbGFiZWwgPSBnX3N0cmR1cF9wcmludGYoIiVz
IC8gJXMiLCB0aW1lVG9TdHJpbmcobWVkaWFQb3NpdGlvbikudXRmOCgpLmRhdGEoKSwgdGltZVRv
U3RyaW5nKG1lZGlhRHVyYXRpb24pLnV0ZjgoKS5kYXRhKCkpOwogICAgIGd0a19sYWJlbF9zZXRf
dGV4dChHVEtfTEFCRUwobV90aW1lTGFiZWwpLCBsYWJlbCk7CiAgICAgZ19mcmVlKGxhYmVsKTsK
ICAgICByZXR1cm4gVFJVRTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpj
cmVhdGVIdWQoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpjcmVhdGVIdWQo
KQogewogICAgIG1faHVkV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCk7
CiAgICAgZ3RrX3dpbmRvd19zZXRfZ3Jhdml0eShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgR0RL
X0dSQVZJVFlfU09VVEhfV0VTVCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdHlwZV9oaW50KEdUS19X
SU5ET1cobV9odWRXaW5kb3cpLCBHREtfV0lORE9XX1RZUEVfSElOVF9OT1JNQUwpOwogCi0gICAg
Z19zaWduYWxfY29ubmVjdChtX2h1ZFdpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NB
TExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7CisgICAgbV9o
dWRNb3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX2h1ZFdpbmRv
dywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlv
bk5vdGlmeUV2ZW50KSwgdGhpcyk7CiAKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogICAgIEd0
a1dpZGdldCogaGJveCA9IGd0a19oYm94X25ldyhGQUxTRSwgNCk7CkBAIC01MzksOSArNDAxLDcg
QEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQoKQogICAgIGd0a19j
b250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9odWRXaW5kb3cpLCBoYm94KTsKIAogICAgIG1f
cGxheVBhdXNlQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoInBsYXkiLCBfKCJQbGF5IC8gUGF1c2Ui
KSwgXygiUGxheSBvciBwYXVzZSB0aGUgbWVkaWEiKSwgUEFVU0VfSUNPTl9OQU1FKTsKLSAgICBn
X3NpZ25hbF9jb25uZWN0KG1fcGxheVBhdXNlQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNL
KHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZCksIHRoaXMpOwotCi0gICAgcGxheVN0YXRlQ2hhbmdl
ZCgpOworICAgIG1fcGxheUFjdGlvbkFjdGl2YXRlU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nv
bm5lY3QobV9wbGF5UGF1c2VBY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xlUGxh
eVBhdXNlQWN0aXZhdGVkKSwgdGhpcyk7CiAKICAgICBHdGtXaWRnZXQqIGl0ZW0gPSBndGtfYWN0
aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9wbGF5UGF1c2VBY3Rpb24pOwogICAgIGd0a19ib3hfcGFj
a19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7CkBAIC01NTcsOCAr
NDE3LDggQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQoKQogI2Vu
ZGlmCiAgICAgZ3RrX3NjYWxlX3NldF9kcmF3X3ZhbHVlKEdUS19TQ0FMRShtX3RpbWVIU2NhbGUp
LCBGQUxTRSk7CiAgICAgZ3RrX3JhbmdlX3NldF9zaG93X2ZpbGxfbGV2ZWwoR1RLX1JBTkdFKG1f
dGltZUhTY2FsZSksIFRSVUUpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAi
YnV0dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0b25QcmVzc2VkKSwg
dGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX3RpbWVIU2NhbGUsICJidXR0b24tcmVsZWFz
ZS1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUmVsZWFzZWQpLCB0aGlzKTsKKyAg
ICBtX3RpbWVTY2FsZUJ1dHRvblByZXNzZWRTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVj
dChtX3RpbWVIU2NhbGUsICJidXR0b24tcHJlc3MtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2Fs
ZUJ1dHRvblByZXNzZWQpLCB0aGlzKTsKKyAgICBtX3RpbWVTY2FsZUJ1dHRvblJlbGVhc2VkU2ln
bmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9uLXJlbGVh
c2UtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhpcyk7CiAg
ICAgbV9oc2NhbGVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAidmFs
dWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlVmFsdWVDaGFuZ2VkKSwgdGhpcyk7CiAK
ICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lSFNjYWxlLCBUUlVF
LCBUUlVFLCAwKTsKQEAgLTU2OSwxOCArNDI5LDE5IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6Y3JlYXRlSHVkKCkKICAgICAvLyBWb2x1bWUgYnV0dG9uLgogICAgIG1fdm9sdW1l
QnV0dG9uID0gZ3RrX3ZvbHVtZV9idXR0b25fbmV3KCk7CiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0
KEdUS19CT1goaGJveCksIG1fdm9sdW1lQnV0dG9uLCBGQUxTRSwgVFJVRSwgMCk7Ci0gICAgZ3Rr
X3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiks
IHZvbHVtZSgpKTsKKyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVU
VE9OKG1fdm9sdW1lQnV0dG9uKSwgbV9wbGF5ZXItPnZvbHVtZSgpKTsKICAgICBtX3ZvbHVtZVVw
ZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3ZvbHVtZUJ1dHRvbiwgInZhbHVlLWNoYW5nZWQi
LCBHX0NBTExCQUNLKHZvbHVtZVZhbHVlQ2hhbmdlZCksIHRoaXMpOwogCi0KICAgICBtX2V4aXRG
dWxsc2NyZWVuQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoImV4aXQiLCBfKCJFeGl0IEZ1bGxzY3Jl
ZW4iKSwgXygiRXhpdCBmcm9tIGZ1bGxzY3JlZW4gbW9kZSIpLCBFWElUX0ZVTExTQ1JFRU5fSUNP
Tl9OQU1FKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJh
Y3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQpLCB0aGlzKTsKKyAg
ICBtX2V4aXRGdWxsY3JlZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9j
b25uZWN0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhp
dEZ1bGxzY3JlZW5BY3RpdmF0ZWQpLCB0aGlzKTsKICAgICBnX29iamVjdF9zZXQobV9leGl0RnVs
bHNjcmVlbkFjdGlvbiwgImljb24tbmFtZSIsIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUsIE5V
TEwpOwogICAgIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9leGl0RnVsbHNj
cmVlbkFjdGlvbik7CiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGl0ZW0s
IEZBTFNFLCBUUlVFLCAwKTsKIAotCiAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gZ190aW1l
b3V0X2FkZChQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCByZWludGVycHJldF9jYXN0PEdT
b3VyY2VGdW5jPihwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBwbGF5
U3RhdGVDaGFuZ2VkKCk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaApzaW1pbGFyaXR5IGluZGV4IDUzJQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmgKaW5kZXggODE3YmMxOS4uOTE3ZjI4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNywzMiArMTcsMjcgQEAKICAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJfaAotI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKKyNpZm5kZWYgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0a19oCisjZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGtfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKIAotI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgotI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHU3RyZWFtZXIuaCIKIAotY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik7Ci1wdWJs
aWM6Ci0gICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwotICAgIHZpcnR1YWwgfkZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIHZvaWQg
c2V0TWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqKTsKLSAgICBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlh
RWxlbWVudC5nZXQoKTsgfQorLyogY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJl
YW1lcjsgKi8KKy8qIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsgKi8KIAotICAg
IHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCk7CitjbGFzcyBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIDogcHVibGljIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHdGs+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBs
YXllcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGso
cGxheWVyKSk7IH0KKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciopOwogCi0gICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKLSAgICB2
b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBndGtDb25maWd1cmUoR2RrRXZlbnRDb25m
aWd1cmUqKTsKKworICAgIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpOwogCi0gICAgdm9pZCBleGl0
T25Vc2VyUmVxdWVzdCgpOwotICAgIHZvaWQgdG9nZ2xlUGxheSgpOwogICAgIHZvaWQgYmVnaW5T
ZWVrKCk7CiAgICAgdm9pZCBkb1NlZWsoKTsKICAgICB2b2lkIGVuZFNlZWsoKTsKQEAgLTUxLDMx
ICs0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93SHVkKGJvb2wpOwogICAgIGdib29sZWFu
IHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CiAKLSAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsKLSAg
ICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdm9pZCB2b2x1bWVDaGFuZ2VkKCk7CiAgICAg
dm9pZCBtdXRlQ2hhbmdlZCgpOwogCiBwcml2YXRlOgotICAgIGJvb2wgY2FuUGxheSgpIGNvbnN0
OwotICAgIHZvaWQgcGxheSgpOwotICAgIHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIHBsYXlTdGF0
ZUNoYW5nZWQoKTsKLQotICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKLQotICAgIGZsb2F0IGN1cnJl
bnRUaW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7Ci0KLSAgICBm
bG9hdCBkdXJhdGlvbigpIGNvbnN0OwotICAgIGZsb2F0IHBlcmNlbnRMb2FkZWQoKSBjb25zdDsK
KyAgICB2b2lkIGluaXRpYWxpemVXaW5kb3coKTsKKyAgICB2b2lkIGRlc3Ryb3lXaW5kb3coKTsK
IAogICAgIHZvaWQgY3JlYXRlSHVkKCk7CiAgICAgdm9pZCB1cGRhdGVIdWRQb3NpdGlvbigpOwog
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFFbGVtZW50Owot
ICAgIFJlZlB0cjxXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0cmVhbWVyR1dvcmxkOwot
CiAgICAgZ3VpbnQgbV9odWRUaW1lb3V0SWQ7CiAgICAgZ3VpbnQgbV9wcm9ncmVzc0JhclVwZGF0
ZUlkOwogICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJGaWxsVXBkYXRlSWQ7CkBAIC04OSw4ICs2OSwy
MCBAQCBwcml2YXRlOgogICAgIEd0a1dpZGdldCogbV90aW1lSFNjYWxlOwogICAgIEd0a1dpZGdl
dCogbV90aW1lTGFiZWw7CiAgICAgR3RrV2lkZ2V0KiBtX3ZvbHVtZUJ1dHRvbjsKKworICAgIHVu
c2lnbmVkIGxvbmcgbV9rZXlQcmVzc1NpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBt
X2Rlc3Ryb3lTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV9pc0FjdGl2ZVNpZ25h
bEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX21vdGlvbk5vdGlmeVNpZ25hbEhhbmRsZXI7
CisgICAgdW5zaWduZWQgbG9uZyBtX2NvbmZpZ3VyZUV2ZW50U2lnbmFsSGFuZGxlcjsKKyAgICB1
bnNpZ25lZCBsb25nIG1faHVkTW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcjsKKyAgICB1bnNpZ25l
ZCBsb25nIG1fdGltZVNjYWxlQnV0dG9uUHJlc3NlZFNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWdu
ZWQgbG9uZyBtX3RpbWVTY2FsZUJ1dHRvblJlbGVhc2VkU2lnbmFsSGFuZGxlcjsKKyAgICB1bnNp
Z25lZCBsb25nIG1fcGxheUFjdGlvbkFjdGl2YXRlU2lnbmFsSGFuZGxlcjsKKyAgICB1bnNpZ25l
ZCBsb25nIG1fZXhpdEZ1bGxjcmVlbkFjdGlvbkFjdGl2YXRlU2lnbmFsSGFuZGxlcjsKIH07CiAK
K30KICNlbmRpZgogCi0jZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCisjZW5k
aWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0a19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXgg
ZjgzNjg5ZS4uYzYyYjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEz
LTAxLTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1N0cmVhbWVyXSBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pIHN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlciBhcyBpdCBtb3ZlZCB0bworICAgICAgICBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIGFuZCBpdHMgR3RrIHN1YmNsYXNzIGluCisgICAgICAg
IFdlYkNvcmUuIEhvb2sgaW4gTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gaW4gdGhlIENocm9tZUNs
aWVudCBpbgorICAgICAgICB0aGUgdHdvIHBvc3NpYmxlIHNjZW5hcmlvcywgd2V0aGVyIEZVTExT
Q1JFRU5fQVBJIGlzIGVuYWJsZWQgb3Igbm90LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
IFJlbW92ZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUpOiBIb29rCisgICAgICAg
IE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQuCisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKTogRGl0dG8KKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8KKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBEaXR0bwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoQ2hy
b21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwOiBSZW1vdmUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciBzdXBwb3J0LgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oOiBEaXR0bworCiAyMDEzLTAxLTE4ICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBB
ZGQgcHJvcGVydHkgZm9yIEluZGV4ZWREQiBkYXRhYmFzZSBwYXRoIHRvIFdlYktpdEdUSysKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktp
dC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggYTFiZmU3OS4uYjA0MDYwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsv
R05VbWFrZWZpbGUuYW0KQEAgLTIxMCw4ICsyMTAsNiBAQCB3ZWJraXRndGtfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
aCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29u
dGV4dEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0
d29ya2luZ0NvbnRleHRHdGsuaCBcCi0JU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgXAotCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudEd0ay5oIFwKIAlTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9HdGtBZGp1c3RtZW50V2F0Y2hlci5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAKaW5kZXggMTRkOGNkZi4uNjcwZjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC03Nyw2ICs3NywxMCBAQAog
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODk2LDggKzkwMCw3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51PiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVHdGsoY2xpZW50KSk7CiB9CiAKLSNp
ZiBFTkFCTEUoVklERU8pCi0KKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKIGJvb2wgQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2Rl
KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp2aWRlb1RhZyk7CkBAIC05MDUsMTIgKzkwOCwyOCBAQCBib29sIENocm9tZUNsaWVudDo6
c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQogCiB2b2lkIENocm9t
ZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewotICAgIHdlYlZp
ZXdFbnRlckZ1bGxzY3JlZW4obV93ZWJWaWV3LCBub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TEVsZW1lbnQqPihub2RlKTsKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlhRWxl
bWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgaWYgKG1lZGlhRWxl
bWVudC0+cGxheWVyKCkgJiYgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+Y2FuRW50ZXJGdWxsc2Ny
ZWVuKCkpCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5lbnRlckZ1bGxzY3Jl
ZW4oKTsKKyAgICB9CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvck5v
ZGUoTm9kZSogbm9kZSkKIHsKLSAgICB3ZWJWaWV3RXhpdEZ1bGxzY3JlZW4obV93ZWJWaWV3KTsK
KyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKTsKKyAgICBpZiAoZWxlbWVudCAm
JiBlbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsK
KyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkpCisgICAgICAgICAgICBtZWRpYUVs
ZW1lbnQtPnBsYXllcigpLT5leGl0RnVsbHNjcmVlbigpOworICAgIH0KIH0KICNlbmRpZgogCkBA
IC05NDksNiArOTY4LDE5IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKHJldHVyblZhbHVlKQog
ICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlhRWxlbWVudCgp
KSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+
cGxheWVyKCkgJiYgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+Y2FuRW50ZXJGdWxsc2NyZWVuKCkp
IHsKKyAgICAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5wbGF5
ZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
ID0gZWxlbWVudDsKKyAgICAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0
X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwogICAgIGlmICghd2lkZ2V0SXNP
bnNjcmVlblRvcGxldmVsV2luZG93KHdpbmRvdykpCiAgICAgICAgIHJldHVybjsKQEAgLTk3Niw2
ICsxMDA4LDE5IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
V2ViQ29yZTo6RWxlbWVudCopCiAgICAgaWYgKHJldHVyblZhbHVlKQogICAgICAgICByZXR1cm47
CiAKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAg
ICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCAmJiBtX2Z1bGxTY3JlZW5FbGVtZW50LT5pc01lZGlh
RWxlbWVudCgpKSB7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndl
YmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQo
KSk7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxNZWRpYUVsZW1lbnQqPihtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyAgICAgICAg
aWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkpIHsKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudC0+
cGxheWVyKCktPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVt
ZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxs
U2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LmNs
ZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAg
R3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1f
d2ViVmlldykpOwogICAgIEFTU0VSVCh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cod2lu
ZG93KSk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdpbmRvdywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaAppbmRleCAxZTkzMzFjLi5kYzJkOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTM1LDcgKzEzNSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9w
dXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50
KikgY29uc3Q7Ci0jaWYgRU5BQkxFKFZJREVPKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxs
c2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1
bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2Ny
ZWVuRm9yTm9kZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggZDFhNWY1Zi4uMzI5OWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNTMwOCwzNCArNTMwOCw2IEBAIHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICByZXR1cm4gc3VyZmFj
ZTsKIH0KIAotdm9pZCB3ZWJWaWV3RW50ZXJGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
dmlkZW9UYWcpKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQotICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKLSAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAgICAvLyBGaXJzdCBleGl0IEZ1
bGxzY3JlZW4gZm9yIHRoZSBvbGQgbWVkaWFFbGVtZW50LgotICAgIGlmIChwcml2LT5mdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKQotICAgICAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLT5leGl0RnVsbHNjcmVlbigpOwotCi0gICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlciA9IG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwotICAgIHByaXYtPmZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXItPnNldE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpOwotICAgIHBy
aXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOwotI2VuZGlm
Ci19Ci0KLXZvaWQgd2ViVmlld0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
Ci17Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKLSAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgaWYgKHBy
aXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJM
RShJQ09OREFUQUJBU0UpCiB2b2lkIHdlYmtpdFdlYlZpZXdJY29uTG9hZGVkKFdlYktpdEZhdmlj
b25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IGNoYXIqIGZyYW1lVVJJLCBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXdwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
d3ByaXZhdGUuaAppbmRleCAwYWU1MjJjLi40NjY1YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaApAQCAtMjQsNyArMjQsNiBAQAogI2Rl
ZmluZSB3ZWJraXR3ZWJ2aWV3cHJpdmF0ZV9oCiAKICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJHdGtDbGlja0Nv
dW50ZXIuaCIKICNpbmNsdWRlICJHdGtEcmFnQW5kRHJvcEhlbHBlci5oIgpAQCAtOTEsMTAgKzkw
LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAKICAgICBnYm9vbGVhbiBkaXNw
b3Npbmc7CiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8x
KQotICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI7Ci0jZW5kaWYKLQogICAgIC8vIFRoZXNlIGFyZSBob3N0ZWQgaGVyZSBiZWNhdXNlIHRoZSBE
YXRhU291cmNlIG9iamVjdCBpcwogICAgIC8vIGNyZWF0ZWQgdG9vIGxhdGUgaW4gdGhlIGZyYW1l
IGxvYWRpbmcgcHJvY2Vzcy4KICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiBtYWluUmVz
b3VyY2U7CkBAIC0xNDMsOSArMTM4LDYgQEAgR0xpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfc3Vi
cmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF90b29s
dGlwX3RleHQoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqKTsKIEd0a01lbnUqIHdlYmtpdF93
ZWJfdmlld19nZXRfY29udGV4dF9tZW51KFdlYktpdFdlYlZpZXcqKTsKIAotdm9pZCB3ZWJWaWV3
RW50ZXJGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok5vZGUqKTsK
LXZvaWQgd2ViVmlld0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOwotCiB2
b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdCopOwogCiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKLS0g
CjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183671</attachid>
            <date>2013-01-20 07:10:57 -0800</date>
            <delta_ts>2013-01-20 10:54:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>39005</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhMDJlYzEzYmViNTdhNzg4OTU3NDZjOTM1ZjMzMDFjMmZlMDgyZDVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjA2OjUyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDk2ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgMTQ3ICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCB8ICAg
NzMgKysrKysrKysrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
ICAgICAgICAgfCAgMTE1ICsrKysrKysrKysrLS0tLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCAgfCAgICA1ICstCiAuLi4vZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgICAgICB8ICAgNjggKysrKysrLS0tCiAuLi4vZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAgMjEgKystCiAu
Li4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCAgICAgICB8ICAgIDQg
Ky0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHAgIHwg
ICAgOSArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwICAg
ICAgfCAgICA2ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5o
ICAgICAgICB8ICAgIDQgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ5MSBpbnNlcnRpb25zKCspLCA2
MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5j
cHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDNjMTFjNjEuLjU4NWQ3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OSBAQAorMjAxMy0w
MS0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dTdHJlYW1lcl0gVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSBzdXBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHN1cHBvcnQg
Zm9yIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIGluIHRoZSBHU3RyZWFtZXIgbWVkaWEKKyAgICAg
ICAgcGxheWVyLiBBIG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIGNsYXNz
IGlzCisgICAgICAgIGludHJvZHVjZWQsIHBvcnRzIGludGVyZXN0ZWQgdG8gaW1wbGVtZW50IG5h
dGl2ZSBmdWxsc2NyZWVuIHZpZGVvCisgICAgICAgIHN1cHBvcnQgc2hvdWxkIGluaGVyaXQgZnJv
bSBpdCAoc2VlIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGspCisgICAgICAgIGFuZCBob29r
IGl0IGluIHRoZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgYmFja2VuZC4KKworICAgICAg
ICBUaGUgR1N0cmVhbWVyR1dvcmxkIHBvcnQgdG8gR1N0cmVhbWVyIDEueCBpcyBwYXJ0bHkgYmFz
ZWQgb24gYQorICAgICAgICBwYXRjaCBieSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJv
Z2VAY29sbGFib3JhLmNvbT4uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogRW5hYmxlIE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbTogTmV3CisgICAgICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJ7R1N0cmVhbWVyLEd0
a30gbW9kdWxlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spOiBQbGF5
YmluIG5vdGlmeTo6dm9sdW1lCisgICAgICAgIHNpZ25hbCBjYWxsYmFjay4KKyAgICAgICAgKFdl
YkNvcmU6OnBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spOiBQbGF5YmluIG5vdGlmeTo6bXV0ZSBz
aWduYWwgY2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6On5GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIFN3
aXRjaCBHU3RyZWFtZXJHV29ybGQgdG8gZnVsbCBzY3JlZW4sIGhvb2sgaW4gdG8gcGxheWJpbidz
CisgICAgICAgIG5vdGlmeTo6dm9sdW1lIGFuZCBtdXRlIHNpZ25hbHMgYW5kIGluaXRpYWxpemUg
dGhlIGZ1bGwgc2NyZWVuIHdpbmRvdy4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgRGVzdHJveSB0
aGUgZnVsbCBzY3JlZW4gd2luZG93LCBkaXNjb25uZWN0IGZyb20gcGxheWJpbiBzaWduYWxzCisg
ICAgICAgIGFuZCBzd2l0Y2ggR1N0cmVhbWVyR1dvcmxkIG91dCBvZiBmdWxsIHNjcmVlbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRP
blVzZXJSZXF1ZXN0KToKKyAgICAgICAgVHJpZ2dlciBleGl0IGZyb20gZnVsbCBzY3JlZW4gbW9k
ZS4gVGhpcyBtZXRob2QgaXMgbWVhbnQgdG8gYmUKKyAgICAgICAgY2FsbGVkIHdoZW4gdGhlIHVz
ZXIgZXhwbGljaXRlbHkgcmVxdWVzdHMgdG8gZXhpdCBmcm9tIGZ1bGwgc2NyZWVuCisgICAgICAg
IGJ5IHByZXNzaW5nIGEga2V5IG9yIHNvbWV0aGluZyBzaW1pbGFyLgorICAgICAgICAoV2ViQ29y
ZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6dG9nZ2xlUGxheSk6IFN3aXRj
aAorICAgICAgICBiZXR3ZWVuIHBsYXkgYW5kIHBhdXNlIHN0YXRlcy4gVXNlZnVsIGZvciBjaGls
ZCBjbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdT
dHJlYW1lcjo6aW5jcmVhc2VWb2x1bWUpOgorICAgICAgICBVc2VmdWwgZm9yIGNoaWxkIGNsYXNz
ZXMgYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXI6OmRlY3JlYXNlVm9sdW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpzZXRWb2x1bWUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRpbWVUb1N0
cmluZyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnBsYXlTdGF0
ZUNoYW5nZWQpOgorICAgICAgICBUbyBiZSBpbXBsZW1lbnRlZCBieSBjaGlsZCBjbGFzcyB0byBy
ZWZsZWN0IHRoZSBwbGF5ZXIncyBzdGF0ZSBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6dm9sdW1lQ2hhbmdlZCk6IFRvCisgICAg
ICAgIGJlIGltcGxlbWVudGVkIGJ5IGNoaWxkIGNsYXNzIGFzIHdlbGwuCisgICAgICAgIChXZWJD
b3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjptdXRlQ2hhbmdlZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1l
cjo6aW5pdGlhbGl6ZVdpbmRvdyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZGVzdHJveVdpbmRvdyk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayk6IEFkYXB0IGZvciBH
U3RyZWFtZXIgdmlkZW8KKyAgICAgICAgb3ZlcmxheSBBUEkgY2hhbmdlcy4KKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dvcmxkKToKKyAgICAgICAgZ3N0X2J1
c19zZXRfc3luY19oYW5kbGVyIHRha2VzIG9uZSBtb3JlIGFyZ3VtZW50IGluIEdTdHJlYW1lciAx
LnguCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbik6
IGZmbXBlZ2NvbG9yc3BhY2Ugd2FzCisgICAgICAgIHJlbmFtZWQgdG8gdmlkZW9jb252ZXJ0IGlu
IEdTdHJlYW1lciAxLnggYW5kIHRoZSB0ZWUgc3JjIHBhZAorICAgICAgICB0ZW1wbGF0ZSB3YXMg
cmVuYW1lZCB0byBzcmNfJXUuIFRoZXJlIGlzIG5vIG5lZWQgdG8gc2VuZCBhIG5ldworICAgICAg
ICBzZWdtZW50IHF1ZXJ5IGVpdGhlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Z3N0R1dvcmxkUGFkUHJvYmVDYWxsYmFjayk6IFJlbW92ZSB0aGUgcGxhdGZvcm0gdmlk
ZW8KKyAgICAgICAgc2luayBicmFuY2ggb25jZSB0aGUgdGVlIHNvdXJjZSBwYWQgc3RhcnRpbmcg
aXQgaGFzIGJlZW4gYmxvY2tlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6
ZXhpdEZ1bGxzY3JlZW4pOiBSZWZhY3RvciB0byB1c2UgYW4KKyAgICAgICAgYXN5bmNocm9ub3Vz
IHBhZCBwcm9iZS4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxh
dGZvcm1WaWRlb1NpbmspOiBSZWZhY3RvcmVkCisgICAgICAgIGZyb20gZXhpdEZ1bGxzY3JlZW4u
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkpOiBB
ZGFwdCBmb3IgR1N0cmVhbWVyIHZpZGVvCisgICAgICAgIG92ZXJsYXkgQVBJIGNoYW5nZXMuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oOgor
ICAgICAgICAoR1N0cmVhbWVyR1dvcmxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcik6CisgICAgICAgIEhvb2sgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dm9sdW1lKTogUGxh
eWJpbiB2b2x1bWUKKyAgICAgICAgcXVlcnkgdXNlZCBieSB0aGUgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKTogdm9sdW1lKCksIG11
dGVkKCkgYW5kIE1lZGlhUGxheWVyCisgICAgICAgIGFjY2Vzc29yIG1ldGhvZHMgYWRkZWQuIE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPIG1ldGhvZHMgYWRkZWQgYXMgd2VsbC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FuRW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWVkaWFQbGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVv
V2luZG93Lmg6IFJlLWVuYWJsZQorICAgICAgICBtb2R1bGUgaWYgTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU8gaXMgdHVybmVkIG9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcDogRGl0dG8uCisgICAgICAgIChQbGF0Zm9ybVZp
ZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dpbmRvdyk6IFByZXZlbnQgZGVzdHJ1Y3Rpb24KKyAg
ICAgICAgb2Ygbm9uLUd0a1dpZGdldHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6IFJlLWVuYWJsZQorICAgICAgICBHU3RyZWFt
ZXJHV29ybGQgc3VwcG9ydC4KKyAgICAgICAgKF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlKToKKyAg
ICAgICAgKHdlYmtpdFZpZGVvU2lua1JlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oOiBEaXR0by4KKwogMjAxMy0wMS0xOSAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBHVEsgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBjYzg0ZGU0Li5lNTdmYTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3IEBAIGlmIFVTRV9HU1RSRUFN
RVIKIGlmIEVOQUJMRV9ERUJVRwogd2ViY29yZV9jcHBmbGFncyArPSAtREdTVF9ESVNBQkxFX0RF
UFJFQ0FURUQKIGVuZGlmICMgRU5EIEVOQUJMRV9ERUJVRword2ViY29yZV9jcHBmbGFncyArPSAt
RFdURl9VU0VfTkFUSVZFX0ZVTExTQ1JFRU5fVklERU89MQogZW5kaWYgIyBFTkQgVVNFX0dTVFJF
QU1FUgogZWxzZQogZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyArPSBFTkFCTEVfVklERU89MCBF
TkFCTEVfVklERU9fVFJBQ0s9MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNzU2
NTdlYi4uNTAyZGE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MDU5LDYg
KzYwNTksOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMmU4MTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwxNDcg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oIgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKworI2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKKyNkZWZpbmUg
Vk9MVU1FX0RPV05fT0ZGU0VUIDAuMDUgLy8gNSUKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1T
cGVjICpwc3BlYywgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lciogY29udHJvbGxl
cikKK3sKKyAgICBjb250cm9sbGVyLT52b2x1bWVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgcGxheWVy
TXV0ZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3BlYywg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lciogY29udHJvbGxlcikKK3sKKyAgICBj
b250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOworfQorCisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAg
LCBtX2NsaWVudChwbGF5ZXItPm1lZGlhUGxheWVyKCktPm1lZGlhUGxheWVyQ2xpZW50KCkpCisg
ICAgLCBtX2dzdHJlYW1lckdXb3JsZChwbGF5ZXItPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3Ry
ZWFtZXJHV29ybGQpCisgICAgLCBtX3BsYXllclZvbHVtZVNpZ25hbEhhbmRsZXIoMCkKKyAgICAs
IG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIoMCkKK3sKK30KKworRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoKQor
eworICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckdTdHJlYW1lcjo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAoIW1fZ3N0cmVhbWVy
R1dvcmxkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fZ3N0cmVhbWVyR1dvcmxkLT5l
bnRlckZ1bGxzY3JlZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0RWxlbWVudCogcGlw
ZWxpbmUgPSBtX2dzdHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKKyAgICBtX3BsYXllclZvbHVt
ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5lLCAibm90aWZ5Ojp2b2x1
bWUiLCBHX0NBTExCQUNLKHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOworICAg
IG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5lLCAi
bm90aWZ5OjptdXRlIiwgR19DQUxMQkFDSyhwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgdGhp
cyk7CisKKyAgICBpbml0aWFsaXplV2luZG93KCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIGRlc3Ryb3lXaW5k
b3coKTsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9nc3RyZWFtZXJHV29ybGQtPnBp
cGVsaW5lKCk7CisgICAgaWYgKG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlcikgeworICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QocGlwZWxpbmUsIG1fcGxheWVyVm9sdW1lU2ln
bmFsSGFuZGxlcik7CisgICAgICAgIG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlciA9IDA7Cisg
ICAgfQorCisgICAgaWYgKG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIpIHsKKyAgICAgICAgZ19z
aWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHBpcGVsaW5lLCBtX3BsYXllck11dGVTaWduYWxIYW5k
bGVyKTsKKyAgICAgICAgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlciA9IDA7CisgICAgfQorCisg
ICAgbV9nc3RyZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdE9uVXNlclJlcXVlc3QoKQoreworICAg
IG1fY2xpZW50LT5tZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6dG9nZ2xlUGxheSgpCit7CisgICAgaWYgKG1f
Y2xpZW50LT5tZWRpYVBsYXllcklzUGF1c2VkKCkpCisgICAgICAgIG1fY2xpZW50LT5tZWRpYVBs
YXllclBsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIG1fY2xpZW50LT5tZWRpYVBsYXllclBhdXNl
KCk7CisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXI6OmluY3JlYXNlVm9sdW1lKCkKK3sKKyAgICBzZXRWb2x1bWUobV9w
bGF5ZXItPnZvbHVtZSgpICsgVk9MVU1FX1VQX09GRlNFVCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZGVjcmVhc2VWb2x1bWUoKQoreworICAgIHNldFZv
bHVtZShtX3BsYXllci0+dm9sdW1lKCkgLSBWT0xVTUVfRE9XTl9PRkZTRVQpOworfQorCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnNldFZvbHVtZShmbG9hdCB2b2x1
bWUpCit7CisgICAgaWYgKHZvbHVtZSA8IDAuMCB8fCB2b2x1bWUgPiAxLjApCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcGxheWVyLT5zZXRWb2x1bWUodm9sdW1lKTsKK30KKworU3RyaW5nIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRpbWVUb1N0cmluZyhmbG9hdCB0aW1l
KQoreworICAgIGlmICghaXNmaW5pdGUodGltZSkpCisgICAgICAgIHRpbWUgPSAwOworICAgIGlu
dCBzZWNvbmRzID0gZmFic2YodGltZSk7CisgICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAq
IDYwKTsKKyAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25k
cyAlPSA2MDsKKworICAgIGlmIChob3VycykgeworICAgICAgICBpZiAoaG91cnMgPiA5KQorICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZDolMDJkIiwgKHRpbWUg
PCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CisgICAgICAgIHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIi
KSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6
OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIG1pbnV0ZXMsIHNl
Y29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYzFjNzYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChDKSAyMDEzIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyX2gKKyNkZWZpbmUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdT
dHJlYW1lcl9oCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHU3RyZWFtZXJHV29ybGQ7CitjbGFzcyBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI7CitjbGFzcyBNZWRpYVBsYXllckNsaWVudDsKKworY2xh
c3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lciB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcik7CitwdWJsaWM6Cisg
ICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcihNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqKTsKKyAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyKCk7CisKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxz
Y3JlZW4oKTsKKyAgICB2b2lkIGV4aXRPblVzZXJSZXF1ZXN0KCk7CisKKyAgICB2b2lkIHRvZ2ds
ZVBsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpIHsgfQorCisgICAg
dm9pZCBpbmNyZWFzZVZvbHVtZSgpOworICAgIHZvaWQgZGVjcmVhc2VWb2x1bWUoKTsKKyAgICB2
b2lkIHNldFZvbHVtZShmbG9hdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdm9sdW1lQ2hhbmdlZCgp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBtdXRlQ2hhbmdlZCgpIHsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgU3RyaW5nIHRpbWVUb1N0cmluZyhmbG9hdCB0aW1lKTsKKworICAgIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lciogbV9wbGF5ZXI7CisgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50
OworICAgIEdTdHJlYW1lckdXb3JsZCogbV9nc3RyZWFtZXJHV29ybGQ7CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaW5kb3coKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGVzdHJveVdpbmRvdygpIHsgfQorCisgICAgdW5zaWduZWQgbG9uZyBtX3BsYXllclZvbHVtZVNp
Z25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3BsYXllck11dGVTaWduYWxIYW5kbGVy
OworfTsKKworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKaW5kZXggMjEyZGVmYi4uOWFk
OThjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKQEAgLTE4LDE0ICsxOCwyMiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5o
IgotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQ
SV9WRVJTSU9OXzEpCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVT
RShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIu
aCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJs
YXkuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CiAKKyNpZmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlb292ZXJsYXkuaD4KKyNlbHNlCisj
aW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KKyNlbmRpZgorCisKICNpZiBQTEFU
Rk9STShHVEspCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lmZGVmIEdES19XSU5ET1dJTkdfWDEx
CkBAIC0zMyw2ICs0MSwxMiBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQorc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnROYW1lID0gImZmbXBlZ2Nv
bG9yc3BhY2UiOworI2Vsc2UKK3N0YXRpYyBjb25zdCBjaGFyKiBnVmlkZW9Db252ZXJ0TmFtZSA9
ICJ2aWRlb2NvbnZlcnQiOworI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQyLDExICs1NiwxNiBAQCBnYm9vbGVhbiBnc3RHV29ybGRTeW5j
TWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRh
dAogICAgIEFTU0VSVChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VM
RU1FTlQpOwogCiAgICAgR1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQgPSBzdGF0aWNfY2FzdDxH
U3RyZWFtZXJHV29ybGQqPihkYXRhKTsKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBj
b25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUo
bWVzc2FnZSk7CiAKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJw
cmVwYXJlLXh3aW5kb3ctaWQiKQogICAgICAgICB8fCBnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0
cnVjdHVyZSwgImhhdmUtbnMtdmlldyIpKQogICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRvd092
ZXJsYXkobWVzc2FnZSk7CisjZWxzZQorICAgIGlmIChnc3RfaXNfdmlkZW9fb3ZlcmxheV9wcmVw
YXJlX3dpbmRvd19oYW5kbGVfbWVzc2FnZShtZXNzYWdlKSkKKyAgICAgICAgZ3N0R1dvcmxkLT5z
ZXRXaW5kb3dPdmVybGF5KG1lc3NhZ2UpOworI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
QEAgLTYwLDcgKzc5LDExIEBAIEdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dvcmxkKEdzdEVs
ZW1lbnQqIHBpcGVsaW5lKQogewogICAgIC8vIFhPdmVybGF5IG1lc3NhZ2VzIG5lZWQgdG8gYmUg
aGFuZGxlZCBzeW5jaHJvbm91c2x5LgogICAgIEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dl
dF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKTsKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVzLCBnc3RfYnVzX3N5bmNfc2lnbmFs
X2hhbmRsZXIsIHRoaXMpOworI2Vsc2UKKyAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVz
LCBnc3RfYnVzX3N5bmNfc2lnbmFsX2hhbmRsZXIsIHRoaXMsIDApOworI2VuZGlmCiAgICAgZ19z
aWduYWxfY29ubmVjdChidXMsICJzeW5jLW1lc3NhZ2U6OmVsZW1lbnQiLCBHX0NBTExCQUNLKGdz
dEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnc3Rfb2JqZWN0X3VucmVm
KGJ1cyk7CiB9CkBAIC04MSw3ICsxMDQsNyBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJG
dWxsc2NyZWVuKCkKICAgICAgICAgbV92aWRlb1dpbmRvdyA9IFBsYXRmb3JtVmlkZW9XaW5kb3c6
OmNyZWF0ZVdpbmRvdygpOwogCiAgICAgR3N0RWxlbWVudCogcGxhdGZvcm1WaWRlb1NpbmsgPSBn
c3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG92aWRlb3NpbmsiLCAicGxhdGZvcm1WaWRlb1Np
bmsiKTsKLSAgICBHc3RFbGVtZW50KiBjb2xvcnNwYWNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJmZm1wZWdjb2xvcnNwYWNlIiwgImNvbG9yc3BhY2UiKTsKKyAgICBHc3RFbGVtZW50KiBj
b2xvcnNwYWNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKGdWaWRlb0NvbnZlcnROYW1lLCAi
Y29sb3JzcGFjZSIpOwogICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJxdWV1ZSIsICJxdWV1ZSIpOwogICAgIEdzdEVsZW1lbnQqIHZpZGVvU2NhbGUgPSBn
c3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZpZGVvc2NhbGUiLCAidmlkZW9TY2FsZSIpOwogCkBA
IC0xMDMsNyArMTI2LDExIEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4o
KQogICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHZpZGVvU2NhbGUsICJzcmMiLCBwbGF0
Zm9ybVZpZGVvU2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAKICAg
ICAvLyBMaW5rIGEgbmV3IHNyYyBwYWQgZnJvbSB0ZWUgdG8gcXVldWUuCisjaWZuZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3Rf
ZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQodGVlLmdldCgpLCAic3JjJWQiKSk7CisjZWxzZQorICAg
IEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3JlcXVl
c3RfcGFkKHRlZS5nZXQoKSwgInNyY18ldSIpKTsKKyNlbmRpZgogICAgIEdSZWZQdHI8R3N0UGFk
PiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAi
c2luayIpKTsKICAgICBnc3RfcGFkX2xpbmsoc3JjUGFkLmdldCgpLCBzaW5rUGFkLmdldCgpKTsK
IApAQCAtMTIxLDkgKzE0OCw5IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3Jl
ZW4oKQogICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShjb2xvcnNwYWNlLCBzdGF0ZSk7CiAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKHF1ZXVlLCBzdGF0ZSk7CiAKKyNpZm5kZWYgR1NUX0FQSV9W
RVJTSU9OXzEKICAgICAvLyBRdWVyeSB0aGUgY3VycmVudCBtZWRpYSBzZWdtZW50IGluZm9ybWF0
aW9ucyBhbmQgc2VuZCB0aGVtIHRvd2FyZHMKICAgICAvLyB0aGUgbmV3IHRlZSBicmFuY2ggZG93
bnN0cmVhbS4KLQogICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfc2VnbWVudChH
U1RfRk9STUFUX1RJTUUpOwogICAgIGdib29sZWFuIHF1ZXJ5UmVzdWx0ID0gZ3N0X2VsZW1lbnRf
cXVlcnkobV9waXBlbGluZSwgcXVlcnkpOwogCkBAIC0xMzIsOCArMTU5LDggQEAgYm9vbCBHU3Ry
ZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIEdzdEZvcm1hdCBmb3JtYXQ7CiAgICAgZ2ludDY0IHBvc2l0aW9uOworICAgIEdz
dEZvcm1hdCBmb3JtYXQ7CiAgICAgaWYgKCFnc3RfZWxlbWVudF9xdWVyeV9wb3NpdGlvbihtX3Bp
cGVsaW5lLCAmZm9ybWF0LCAmcG9zaXRpb24pKQogICAgICAgICBwb3NpdGlvbiA9IDA7CiAKQEAg
LTE0NSwyMCArMTcyLDUzIEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4o
KQogICAgIGdzdF9wYWRfcHVzaF9ldmVudChzcmNQYWQuZ2V0KCksIGV2ZW50KTsKIAogICAgIGdz
dF9xdWVyeV91bnJlZihxdWVyeSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCitzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gZ3N0R1dvcmxk
UGFkUHJvYmVDYWxsYmFjayhHc3RQYWQqIHBhZCwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBHU3Ry
ZWFtZXJHV29ybGQqIGdzdEdXb3JsZCkKK3sKKyAgICBnc3RHV29ybGQtPnJlbW92ZVBsYXRmb3Jt
VmlkZW9TaW5rKCk7CisgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfUkVNT1ZFOworfQorI2VuZGlm
CisKIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbigpCiB7CiAgICAgaWYgKCFt
X2R5bmFtaWNQYWROYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBHZXQgdmlkZW8gc2lu
ayBiaW4gYW5kIHRoZSBlbGVtZW50cyB0byByZW1vdmUuCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50
PiB2aWRlb1Npbms7CiAgICAgR3N0RWxlbWVudCogc2lua1B0ciA9IDA7CisgICAgZ19vYmplY3Rf
Z2V0KG1fcGlwZWxpbmUsICJ2aWRlby1zaW5rIiwgJnNpbmtQdHIsIE5VTEwpOworICAgIEdSZWZQ
dHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rID0gYWRvcHRHUmVmKHNpbmtQdHIpOwogCisgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1Rf
QklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKKyAgICBHUmVmUHRyPEdzdFBhZD4g
c3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHRlZS5nZXQoKSwg
bV9keW5hbWljUGFkTmFtZS5nZXQoKSkpOworCisgICAgLy8gQmxvY2sgZGF0YSBmbG93IHRvd2Fy
ZHMgdGhlIHBpcGVsaW5lIGJyYW5jaCB0byByZW1vdmUuIE5vIG5lZWQKKyAgICAvLyBmb3IgcGFk
IGJsb2NraW5nIGlmIHRoZSBwaXBlbGluZSBpcyBwYXVzZWQuCisgICAgR3N0U3RhdGUgc3RhdGU7
CisgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUsICZzdGF0ZSwgMCwgMCk7Cisj
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBpZiAoc3RhdGUgPj0gR1NUX1NUQVRFX1BMQVlJ
TkcpCisgICAgICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNyY1BhZC5nZXQoKSwgR1NUX1BBRF9QUk9C
RV9UWVBFX0lETEUsIHJlaW50ZXJwcmV0X2Nhc3Q8R3N0UGFkUHJvYmVDYWxsYmFjaz4oZ3N0R1dv
cmxkUGFkUHJvYmVDYWxsYmFjayksIHRoaXMsIDApOworICAgIGVsc2UKKyNlbHNlCisgICAgaWYg
KHN0YXRlIDwgR1NUX1NUQVRFX1BMQVlJTkcgfHwgZ3N0X3BhZF9zZXRfYmxvY2tlZChzcmNQYWQu
Z2V0KCksIHRydWUpKQorI2VuZGlmCisgICAgICAgIHJlbW92ZVBsYXRmb3JtVmlkZW9TaW5rKCk7
Cit9CisKK3ZvaWQgR1N0cmVhbWVyR1dvcmxkOjpyZW1vdmVQbGF0Zm9ybVZpZGVvU2luaygpCit7
CisgICAgaWYgKCFtX2R5bmFtaWNQYWROYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBH
ZXQgdmlkZW8gc2luayBiaW4gYW5kIHRoZSBlbGVtZW50cyB0byByZW1vdmUuCisgICAgR3N0RWxl
bWVudCogc2lua1B0ciA9IDA7CiAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUsICJ2aWRlby1z
aW5rIiwgJnNpbmtQdHIsIE5VTEwpOwotICAgIHZpZGVvU2luayA9IGFkb3B0R1JlZihzaW5rUHRy
KTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2luayA9IGFkb3B0R1JlZihzaW5rUHRy
KTsKIAogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdGVlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0
X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9UZWUiKSk7CiAgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBwbGF0Zm9ybVZpZGVvU2luayA9IGFkb3B0R1JlZihnc3RfYmluX2dl
dF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInBsYXRmb3JtVmlkZW9TaW5rIikp
OwpAQCAtMTcwLDI0ICsyMzAsMTcgQEAgdm9pZCBHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2Ny
ZWVuKCkKICAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9zdGF0aWNfcGFkKHRlZS5nZXQoKSwgbV9keW5hbWljUGFkTmFtZS5nZXQoKSkpOwogICAg
IEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0
aWNfcGFkKHF1ZXVlLmdldCgpLCAic2luayIpKTsKIAotICAgIC8vIEJsb2NrIGRhdGEgZmxvdyB0
b3dhcmRzIHRoZSBwaXBlbGluZSBicmFuY2ggdG8gcmVtb3ZlLiBObyBuZWVkCi0gICAgLy8gZm9y
IHBhZCBibG9ja2luZyBpZiB0aGUgcGlwZWxpbmUgaXMgcGF1c2VkLgotICAgIEdzdFN0YXRlIHN0
YXRlOwotICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BpcGVsaW5lLCAmc3RhdGUsIDAsIDAp
OwotICAgIGlmIChzdGF0ZSA8IEdTVF9TVEFURV9QTEFZSU5HIHx8IGdzdF9wYWRfc2V0X2Jsb2Nr
ZWQoc3JjUGFkLmdldCgpLCB0cnVlKSkgewotCi0gICAgICAgIC8vIFVubGluayBhbmQgcmVsZWFz
ZSByZXF1ZXN0IHBhZC4KLSAgICAgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLmdldCgpLCBzaW5r
UGFkLmdldCgpKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUu
Z2V0KCksIHNyY1BhZC5nZXQoKSk7Ci0KLSAgICAgICAgLy8gVW5saW5rLCByZW1vdmUgYW5kIGNs
ZWFudXAgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5kIHNpbmsuCi0gICAg
ICAgIGdzdF9lbGVtZW50X3VubGlua19tYW55KHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgp
LCB2aWRlb1NjYWxlLmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7Ci0gICAg
ICAgIGdzdF9iaW5fcmVtb3ZlX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZS5n
ZXQoKSwgY29sb3JzcGFjZS5nZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1Np
bmsuZ2V0KCksIE5VTEwpOwotICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocGxhdGZvcm1W
aWRlb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKHZpZGVvU2NhbGUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2Vs
ZW1lbnRfc2V0X3N0YXRlKGNvbG9yc3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHF1ZXVlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0g
ICAgfQorICAgIC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBhZC4KKyAgICBnc3RfcGFk
X3VubGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOworICAgIGdzdF9lbGVtZW50X3Jl
bGVhc2VfcmVxdWVzdF9wYWQodGVlLmdldCgpLCBzcmNQYWQuZ2V0KCkpOworCisgICAgLy8gVW5s
aW5rLCByZW1vdmUgYW5kIGNsZWFudXAgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UsIHZpZGVvU2Nh
bGUgYW5kIHNpbmsuCisgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUuZ2V0KCksIGNv
bG9yc3BhY2UuZ2V0KCksIHZpZGVvU2NhbGUuZ2V0KCksIHBsYXRmb3JtVmlkZW9TaW5rLmdldCgp
LCBOVUxMKTsKKyAgICBnc3RfYmluX3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgp
KSwgcXVldWUuZ2V0KCksIGNvbG9yc3BhY2UuZ2V0KCksIHZpZGVvU2NhbGUuZ2V0KCksIHBsYXRm
b3JtVmlkZW9TaW5rLmdldCgpLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocGxh
dGZvcm1WaWRlb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUodmlkZW9TY2FsZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZShjb2xvcnNwYWNlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKHF1ZXVlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CiAKICAgICBt
X2R5bmFtaWNQYWROYW1lLmNsZWFyKCk7CiB9CkBAIC0xOTYsNyArMjQ5LDExIEBAIHZvaWQgR1N0
cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAg
ICAgR3N0T2JqZWN0KiBzaW5rID0gR1NUX01FU1NBR0VfU1JDKG1lc3NhZ2UpOwogCisjaWZuZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKCFHU1RfSVNfWF9PVkVSTEFZKHNpbmspKQorI2Vs
c2UKKyAgICBpZiAoIUdTVF9JU19WSURFT19PVkVSTEFZKHNpbmspKQorI2VuZGlmCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNU
X0dFVF9DTEFTUyhzaW5rKSwgImZvcmNlLWFzcGVjdC1yYXRpbyIpKQpAQCAtMjA1LDYgKzI2Miw3
IEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1l
c3NhZ2UpCiAgICAgaWYgKG1fdmlkZW9XaW5kb3cpIHsKICAgICAgICAgbV92aWRlb1dpbmRvdy0+
cHJlcGFyZUZvck92ZXJsYXkobWVzc2FnZSk7CiAKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEK
IC8vIGdzdF94X292ZXJsYXlfc2V0X3dpbmRvd19oYW5kbGUgd2FzIGludHJvZHVjZWQgaW4gLXBs
dWdpbnMtYmFzZQogLy8gMC4xMC4zMSwganVzdCBsaWtlIHRoZSBtYWNybyBmb3IgY2hlY2tpbmcg
dGhlIHZlcnNpb24uCiAjaWZkZWYgR1NUX0NIRUNLX1BMVUdJTlNfQkFTRV9WRVJTSU9OCkBAIC0y
MTIsOCArMjcwLDExIEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAjZWxzZQogICAgICAgICBnc3RfeF9vdmVybGF5X3NldF94d2lu
ZG93X2lkKEdTVF9YX09WRVJMQVkoc2luayksIG1fdmlkZW9XaW5kb3ctPnZpZGVvV2luZG93SWQo
KSk7CiAjZW5kaWYKKyNlbHNlCisgICAgICAgIGdzdF92aWRlb19vdmVybGF5X3NldF93aW5kb3df
aGFuZGxlKEdTVF9WSURFT19PVkVSTEFZKHNpbmspLCBtX3ZpZGVvV2luZG93LT52aWRlb1dpbmRv
d0lkKCkpOworI2VuZGlmCiAgICAgfQogfQogCiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAv
LyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaAppbmRleCBkZmY0N2IwLi4yMjgwNmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCkBAIC0yMCw3ICsyMCw3IEBACiAKICNpZm5kZWYgR1N0
cmVhbWVyR1dvcmxkX2gKICNkZWZpbmUgR1N0cmVhbWVyR1dvcmxkX2gKLSNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVO
X1ZJREVPKQogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+R1N0cmVhbWVyR1dvcmxkKCk7
CiAKICAgICBHc3RFbGVtZW50KiBwaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGlwZWxpbmU7
IH0KKyAgICB2b2lkIHJlbW92ZVBsYXRmb3JtVmlkZW9TaW5rKCk7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBmdWxsLXNjcmVlbiB3aW5kb3cgY3JlYXRlZAogICAgIGJvb2wgZW50ZXJGdWxsc2NyZWVu
KCk7CkBAIC02Nyw1ICs2OCw1IEBAIHByaXZhdGU6CiB9OwogCiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkK
KyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3NGU1MDYyLi43ZGViOTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjY4LDcgKzI2OCw3
IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcigpCiAgICAgICAgIG1fbWVkaWFMb2NhdGlvbnMgPSAwOwogICAgIH0KIAotI2lmbmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBp
ZiAobV92aWRlb1NpbmtCaW4pIHsKICAgICAgICAgZ3N0X29iamVjdF91bnJlZihtX3ZpZGVvU2lu
a0Jpbik7CiAgICAgICAgIG1fdmlkZW9TaW5rQmluID0gMDsKQEAgLTY1Niw2ICs2NTYsMTQgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHZv
bHVtZSkpOwogfQogCitmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZvbHVtZSgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXlCaW4pCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIGdzdF9zdHJlYW1fdm9sdW1lX2dldF92b2x1bWUoR1NUX1NUUkVBTV9WT0xVTUUobV9w
bGF5QmluKSwgR1NUX1NUUkVBTV9WT0xVTUVfRk9STUFUX0NVQklDKTsKK30KKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlKCkKIHsK
ICAgICBtX3ZvbHVtZVRpbWVySGFuZGxlciA9IDA7CkBAIC0xNTMzLDYgKzE1NDEsMTYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiAgICAg
Z19vYmplY3Rfc2V0KG1fcGxheUJpbiwgIm11dGUiLCBtdXRlZCwgTlVMTCk7CiB9CiAKK2Jvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptdXRlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3BsYXlCaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgbXV0ZWQ7CisgICAg
Z19vYmplY3RfZ2V0KG1fcGxheUJpbiwgIm11dGUiLCAmbXV0ZWQsIE5VTEwpOworICAgIHJldHVy
biBtdXRlZDsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBs
YXllck9mTXV0ZSgpCiB7CiAgICAgbV9tdXRlVGltZXJIYW5kbGVyID0gMDsKQEAgLTE3MzAsNiAr
MTc0OCwxOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVu
dGVyRnVsbHNjcmVlbigpCit7CisgICAgLy8gVE9ETy4KK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICAvLyBUT0RPLgorfQorI2Vu
ZGlmCisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0Z1bGxzY3Jl
ZW4oKSBjb25zdAogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCkBAIC0xNzQzLDcgKzE3NzMsNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNGdWxsc2NyZWVuKCkg
Y29uc3QKIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9y
bU1lZGlhKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybU1lZGlhIHA7Ci0jaWZuZGVmIEdTVF9BUElf
VkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIHAudHlwZSA9
IFBsYXRmb3JtTWVkaWE6OkdTdHJlYW1lckdXb3JsZFR5cGU7CiAgICAgcC5tZWRpYS5nc3RyZWFt
ZXJHV29ybGQgPSBtX2dzdEdXb3JsZC5nZXQoKTsKICNlbmRpZgpAQCAtMTc5NiwxMCArMTgyNiw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkK
ICAgICBBU1NFUlQoIW1fcGxheUJpbik7CiAgICAgbV9wbGF5QmluID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKGdQbGF5YmluTmFtZSwgInBsYXkiKTsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQotICAgIG1fZ3N0R1dvcmxkID0gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQobV9w
bGF5QmluKTsKLSNlbmRpZgotCiAgICAgR3N0QnVzKiBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1
cyhHU1RfUElQRUxJTkUobV9wbGF5QmluKSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNo
KGJ1cyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMsICJtZXNzYWdlIiwgR19DQUxMQkFDSyht
ZWRpYVBsYXllclByaXZhdGVNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTE4MTMsNyArMTgz
OSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KCkKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheUJpbiwgInZpZGVvLWNoYW5nZWQiLCBHX0NB
TExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVZpZGVvQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdChtX3BsYXlCaW4sICJhdWRpby1jaGFuZ2VkIiwgR19DQUxMQkFD
SyhtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogCi0jaWZu
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQor
ICAgIG1fZ3N0R1dvcmxkID0gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQobV9wbGF5Qmlu
KTsKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtpdFZpZGVvU2lua05ldyhtX2dzdEdXb3Js
ZC5nZXQoKSk7CiAjZWxzZQogICAgIG1fd2Via2l0VmlkZW9TaW5rID0gd2Via2l0VmlkZW9TaW5r
TmV3KCk7CkBAIC0xODIzLDE5ICsxODUwLDI0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2Via2l0
VmlkZW9TaW5rLCAicmVwYWludC1yZXF1ZXN0ZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJp
dmF0ZVJlcGFpbnRDYWxsYmFjayksIHRoaXMpOwogCiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKLSAgICBtX3ZpZGVvU2lua0JpbiA9IGdzdF9iaW5fbmV3KCJzaW5rIik7CisjaWYgVVNFKE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIC8vIEJ1aWxkIGEgbmV3IHZpZGVvIHNpbmsgY29u
c2lzdGluZyBvZiBhIGJpbiBjb250YWluaW5nIGEgdGVlCisgICAgLy8gKG1lYW50IHRvIGRpc3Ry
aWJ1dGUgZGF0YSB0byBtdWx0aXBsZSB2aWRlbyBzaW5rcykgYW5kIG91cgorICAgIC8vIGludGVy
bmFsIHZpZGVvIHNpbmsuIEZvciBmdWxsc2NyZWVuIHdlIGNyZWF0ZSBhbiBhdXRvdmlkZW9zaW5r
CisgICAgLy8gYW5kIGluaXRpYWxseSBibG9jayB0aGUgZGF0YSBmbG93IHRvd2FyZHMgaXQgYW5k
IGNvbmZpZ3VyZSBpdAogCi0gICAgR3N0RWxlbWVudCogdmlkZW9UZWUgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoInRlZSIsICJ2aWRlb1RlZSIpOwotICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0g
Z3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsIDApOworICAgIG1fdmlkZW9TaW5rQmlu
ID0gZ3N0X2Jpbl9uZXcoInNpbmsiKTsKIAogICAgIC8vIFRha2Ugb3duZXJzaGlwLgogICAgIGdz
dF9vYmplY3RfcmVmX3NpbmsobV92aWRlb1NpbmtCaW4pOwogCi0gICAgLy8gQnVpbGQgYSBuZXcg
dmlkZW8gc2luayBjb25zaXN0aW5nIG9mIGEgYmluIGNvbnRhaW5pbmcgYSB0ZWUKLSAgICAvLyAo
bWVhbnQgdG8gZGlzdHJpYnV0ZSBkYXRhIHRvIG11bHRpcGxlIHZpZGVvIHNpbmtzKSBhbmQgb3Vy
Ci0gICAgLy8gaW50ZXJuYWwgdmlkZW8gc2luay4gRm9yIGZ1bGxzY3JlZW4gd2UgY3JlYXRlIGFu
IGF1dG92aWRlb3NpbmsKLSAgICAvLyBhbmQgaW5pdGlhbGx5IGJsb2NrIHRoZSBkYXRhIGZsb3cg
dG93YXJkcyBpdCBhbmQgY29uZmlndXJlIGl0CisgICAgR3N0RWxlbWVudCogdmlkZW9UZWUgPSBn
c3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInRlZSIsICJ2aWRlb1RlZSIpOworICAgIEdzdEVsZW1l
bnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsIDApOworCisjaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHUmVmUHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0
R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh2aWRlb1RlZSwgInNpbmsiKSk7CisgICAg
R1NUX09CSkVDVF9GTEFHX1NFVChHU1RfT0JKRUNUKHNpbmtQYWQuZ2V0KCkpLCBHU1RfUEFEX0ZM
QUdfUFJPWFlfQUxMT0NBVElPTik7CisjZW5kaWYKIAogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NU
X0JJTihtX3ZpZGVvU2lua0JpbiksIHZpZGVvVGVlLCBxdWV1ZSwgTlVMTCk7CiAKQEAgLTE4NjQs
NyArMTg5Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQ
bGF5QmluKCkKIAogICAgICAgICAgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHko
R19PQkpFQ1RfR0VUX0NMQVNTKG1fZnBzU2luayksICJ2aWRlby1zaW5rIikpIHsKICAgICAgICAg
ICAgICAgICBnX29iamVjdF9zZXQobV9mcHNTaW5rLCAidmlkZW8tc2luayIsIG1fd2Via2l0Vmlk
ZW9TaW5rLCBOVUxMKTsKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8pCiAgICAgICAgICAgICAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTiht
X3ZpZGVvU2lua0JpbiksIG1fZnBzU2luayk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBhY3R1
YWxWaWRlb1NpbmsgPSBtX2Zwc1Npbms7CkBAIC0xODc1LDcgKzE5MDcsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgfQogCiAgICAg
aWYgKCFtX2Zwc1NpbmspIHsKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4obV92aWRl
b1NpbmtCaW4pLCBtX3dlYmtpdFZpZGVvU2luayk7CiAjZW5kaWYKICAgICAgICAgYWN0dWFsVmlk
ZW9TaW5rID0gbV93ZWJraXRWaWRlb1Npbms7CkBAIC0xODgzLDcgKzE5MTUsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAKICAgICBBU1NF
UlQoYWN0dWFsVmlkZW9TaW5rKTsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVT
RShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2lu
Zy4KICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwgInNyYyIsIGFjdHVhbFZp
ZGVvU2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA3YmVjMTQzLi43MzJl
MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBA
IC0zOSw2ICszOSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVtZW50Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZmRlZiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
Q2xhc3MKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJDbGFzczsKKyNlbmRpZgorCiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKQEAg
LTc0LDExICs3OCwxMyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAgIHZvaWQgc2V0UmF0
ZShmbG9hdCk7CiAKICAgICAgICAgICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICAgICAg
ICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwogICAgICAgICAgICAgdm9pZCB2b2x1bWVDaGFuZ2Vk
KCk7CiAgICAgICAgICAgICB2b2lkIG5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlKCk7CiAKICAg
ICAgICAgICAgIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQg
c2V0TXV0ZWQoYm9vbCk7CisgICAgICAgICAgICBib29sIG11dGVkKCkgY29uc3Q7CiAgICAgICAg
ICAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CiAgICAgICAgICAgICB2b2lkIG5vdGlmeVBsYXllck9m
TXV0ZSgpOwogCkBAIC05Miw2ICs5OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAg
ZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3Q7CiAgICAgICAgICAgICBib29sIGRpZExvYWRp
bmdQcm9ncmVzcygpIGNvbnN0OwogICAgICAgICAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNv
bnN0OworICAgICAgICAgICAgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0OwogCiAgICAgICAg
ICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgICAgICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpOwpAQCAtMTA5LDYgKzExNiwxMiBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAg
ICAgICAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCisjaWYgVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgICAgICAgICAgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW4oKTsKKyAgICAgICAgICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIGJv
b2wgY2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisK
ICAgICAgICAgICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgICAgICAg
ICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKIApAQCAtMTI2LDYgKzEzOSw4
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UgewogCiAgICAgICAgICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2Fk
VHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Q7CiAKKyAgICAgICAgICAgIE1lZGlhUGxheWVyKiBt
ZWRpYVBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyOyB9CisKICAgICAgICAgcHJpdmF0
ZToKICAgICAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciop
OwogCkBAIC0xNDIsNyArMTU3LDYgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
IDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICAgICAgICAgIHZv
aWQgY2FjaGVEdXJhdGlvbigpOwogICAgICAgICAgICAgdm9pZCB1cGRhdGVTdGF0ZXMoKTsKLSAg
ICAgICAgICAgIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25zdDsKIAogICAgICAgICAgICAgdm9p
ZCBjcmVhdGVHU1RQbGF5QmluKCk7CiAgICAgICAgICAgICBib29sIGNoYW5nZVBpcGVsaW5lU3Rh
dGUoR3N0U3RhdGUgc3RhdGUpOwpAQCAtMTg5LDggKzIwMywxMSBAQCBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsK
ICAgICAgICAgICAgIGJvb2wgbV9kZWxheWluZ0xvYWQ7CiAgICAgICAgICAgICBib29sIG1fbWVk
aWFEdXJhdGlvbktub3duOwogICAgICAgICAgICAgbXV0YWJsZSBmbG9hdCBtX21heFRpbWVMb2Fk
ZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisj
aWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICAgICAgUmVmUHRyPEdTdHJl
YW1lckdXb3JsZD4gbV9nc3RHV29ybGQ7CisjaWZkZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckNsYXNzCisgICAgICAgICAgICBPd25QdHI8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckNsYXNz
PiBtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CisjZW5kaWYKICNlbmRpZgogICAgICAgICAg
ICAgZ3VpbnQgbV92b2x1bWVUaW1lckhhbmRsZXI7CiAgICAgICAgICAgICBndWludCBtX211dGVU
aW1lckhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAppbmRleCAyZjhkMzY1
Li40YTFiYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgKQEAgLTE5LDcgKzE5
LDcgQEAKIAogI2lmbmRlZiBQbGF0Zm9ybVZpZGVvV2luZG93X2gKICNkZWZpbmUgUGxhdGZvcm1W
aWRlb1dpbmRvd19oCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVm
aW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgIldpZGdldC5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC02MSw1ICs2MSw1IEBAIGNsYXNzIFBs
YXRmb3JtVmlkZW9XaW5kb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVZpZGVvV2luZG93
PiB7CiAgICAgfTsKIH0KIAotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdT
VF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5k
b3dHdGsuY3BwCmluZGV4IGI4Mzg4MTEuLjNkMTUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZv
cm1WaWRlb1dpbmRvd0d0ay5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cuaCIKLSNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKQogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCkBAIC01MCwxMSArNTAsMTIgQEAgUGxhdGZv
cm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQogewogICAgIGlmIChtX3ZpZGVv
V2luZG93ICYmIG1fd2luZG93KSB7CiAgICAgICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19D
T05UQUlORVIobV93aW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKLSAgICAgICAgZ3RrX3dpZGdldF9k
ZXN0cm95KG1fdmlkZW9XaW5kb3cpOworICAgICAgICBpZiAoR1RLX0lTX1dJREdFVChtX3ZpZGVv
V2luZG93KSkKKyAgICAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX3ZpZGVvV2luZG93KTsK
ICAgICAgICAgbV92aWRlb1dpbmRvdyA9IDA7CiAgICAgfQogCi0gICAgaWYgKG1fd2luZG93KSB7
CisgICAgaWYgKEdUS19JU19XSURHRVQobV93aW5kb3cpKSB7CiAgICAgICAgIGd0a193aWRnZXRf
ZGVzdHJveShtX3dpbmRvdyk7CiAgICAgICAgIG1fd2luZG93ID0gMDsKICAgICB9CkBAIC02NSw1
ICs2Niw1IEBAIFBsYXRmb3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKIHZv
aWQgUGxhdGZvcm1WaWRlb1dpbmRvdzo6cHJlcGFyZUZvck92ZXJsYXkoR3N0TWVzc2FnZSopCiB7
CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5l
ZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyLmNwcAppbmRleCBkODUyMTg0Li44OGE2Y2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgX1dlYktpdFZpZGVv
U2lua1ByaXZhdGUgewogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwogI2VuZGlmCiAKLSNpZm5kZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAg
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQ7CiAjZW5kaWYKIApAQCAtMTU0LDcg
KzE1NCw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RC
YXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAgIHJldHVybiBHU1RfRkxP
V19PSzsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gSWdub3JlIGJ1ZmZlcnMgaWYgdGhlIHZpZGVvIGlz
IGFscmVhZHkgaW4gZnVsbHNjcmVlbiB1c2luZwogICAgIC8vIGFub3RoZXIgc2luay4KICAgICBp
ZiAocHJpdi0+Z3N0R1dvcmxkLT5pc0Z1bGxzY3JlZW4oKSkgewpAQCAtNDE4LDcgKzQxOCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5r
Q2xhc3MqIGtsYXNzKQogfQogCiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiBHc3RFbGVtZW50KiB3ZWJraXRWaWRlb1NpbmtOZXco
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQpCiB7CiAgICAgR3N0RWxlbWVudCog
ZWxlbWVudCA9IEdTVF9FTEVNRU5UKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9WSURFT19TSU5L
LCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKaW5kZXggMDYxYjY5NC4uOGNmZDJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaApAQCAtMjIsNyArMjIsNyBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaWZuZGVmIEdTVF9BUElfVkVS
U0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogI2luY2x1ZGUgIkdTdHJl
YW1lckdXb3JsZC5oIgogI2VuZGlmCiAKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IF9XZWJLaXRW
aWRlb1NpbmtDbGFzcyB7CiAKIEdUeXBlIHdlYmtpdF92aWRlb19zaW5rX2dldF90eXBlKCkgR19H
TlVDX0NPTlNUOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQogR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5rTmV3KFdlYkNvcmU6
OkdTdHJlYW1lckdXb3JsZCopOwogI2Vsc2UKIEdzdEVsZW1lbnQqIHdlYmtpdFZpZGVvU2lua05l
dygpOwotLSAKMS43LjEwLjQ=
</data>
<flag name="review"
          id="202127"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183676</attachid>
            <date>2013-01-20 10:54:29 -0800</date>
            <delta_ts>2013-01-26 07:14:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>42865</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhMGMzZmVjOGM0NmNmZGViZTJmNWU4MGMxNDc5NmUyZmY4YjdmNGU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjIwOjExICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE5ICsrCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAg
ICAgICAgICAgICB8ICAgIDIgKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwICAgICAgfCAgIDIyICstCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDYgKwogLi4uL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR3RrLmNwcH0gfCAgMzM1ICsrKysrKy0tLS0tLS0tLS0tLS0tCiAuLi4v
Z3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaH0gICB8ICAgNjggKyst
LQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDI3ICsrCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgLQogLi4uL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcCAgfCAgIDUzICsrKy0KIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oIHwgICAgMiArLQogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwICAgICAgICAgfCAgIDI4IC0tCiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlld3ByaXZhdGUuaCAgICB8ICAgIDggLQogMTIgZmlsZXMgY2hhbmdlZCwgMjUyIGlu
c2VydGlvbnMoKyksIDMyMCBkZWxldGlvbnMoLSkKIHJlbmFtZSBTb3VyY2Uve1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgPT4gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHB9ICg1
NCUpCiByZW5hbWUgU291cmNlL3tXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuaCA9PiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrLmh9ICg1MyUpCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE5OTNkY2QuLjI4
OTlkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS11bR1N0cmVhbWVy
XSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTyBzdXBwb3J0IGZvciB0aGUgR1RLIHBvcnQuIFRoZSBwcmV2aW91cworICAgICAgICBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyIGltcGxlbWVudGF0aW9uIHdhcyByZWZhY3RvcmVkIGFzIGEK
KyAgICAgICAgc3ViLWNsYXNzIG9mIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIg
YW5kIGhvb2tlZCBpbiB0aGUKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIGJh
Y2tlbmQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaC4KKworMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl0gVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3NjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggNTAyZGE0OC4uZWQyZDI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC02MDc0LDYgKzYwNzQsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDdkZWI5ODkuLjY4MTM2ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC02MCw2ICs2MCwx
MiBAQAogI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3N0cmVhbXZvbHVtZS5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisjaWYgUExBVEZPUk0oR1RLKQorI2lu
Y2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIKKyNlbmRpZgorI2VuZGlmCisK
IC8vIEdzdFBsYXlGbGFncyBmbGFncyBmcm9tIHBsYXliaW4yLiBJdCBpcyB0aGUgcG9saWN5IG9m
IEdTdHJlYW1lciB0bwogLy8gbm90IHB1YmxpY2x5IGV4cG9zZSBlbGVtZW50LXNwZWNpZmljIGVu
dW1zLiBUaGF0J3Mgd2h5IHRoaXMKIC8vIEdzdFBsYXlGbGFncyBlbnVtIGhhcyBiZWVuIGNvcGll
ZCBoZXJlLgpAQCAtMjY5LDYgKzI3NSw5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpCiAgICAgfQogCiAjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisg
ICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CisKICAgICBpZiAobV92aWRlb1NpbmtCaW4pIHsKICAg
ICAgICAgZ3N0X29iamVjdF91bnJlZihtX3ZpZGVvU2lua0Jpbik7CiAgICAgICAgIG1fdmlkZW9T
aW5rQmluID0gMDsKQEAgLTE3NTEsMTIgKzE3NjAsMjEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICNpZiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
ZW50ZXJGdWxsc2NyZWVuKCkKIHsKLSAgICAvLyBUT0RPLgorICAgIEFTU0VSVCghbV9mdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKTsKKyNpZiBQTEFURk9STShHVEspCisgICAgbV9mdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyID0gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6Y3JlYXRlKHRo
aXMpOworICAgIG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmV4aXRGdWxs
c2NyZWVuKCkKIHsKLSAgICAvLyBUT0RPLgorI2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAoIW1f
ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBtX2Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIucmVsZWFzZSgpOworI2VuZGlmCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDczMmUwNDkuLmEwOTNl
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAg
LTM3LDYgKzM3LDEyIEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RCdWZmZXIgR3N0QnVmZmVyOwogdHlw
ZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RF
bGVtZW50IEdzdEVsZW1lbnQ7CiAKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisj
aWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3Mg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0aworI2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWZkZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5hbWUg
ZnJvbSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGQxNGRjOTcuLjIwMzYyZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTMgSWdhbGlhIFMuTAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDg2ICsxOSw4NiBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZpbmVkKEdT
VF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCi0jaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIK
IAorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJHUmVmUHRyR3RrLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCiAjaW5jbHVk
ZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAj
aW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgot
I2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKICNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAzMDAwIC8vIDMgc2Vj
b25kcwogI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1MCAvLyAxNTBtcwot
I2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKLSNkZWZpbmUgVk9MVU1FX0RPV05f
T0ZGU0VUIDAuMDUgLy8gNSUKIAogLy8gVXNlIHN5bWJvbGljIGljb25zIG9ubHkgaWYgd2UgYnVp
bGQgd2l0aCBHVEsrLTMgc3VwcG9ydC4gVGhleSBjb3VsZAogLy8gYmUgZW5hYmxlZCBmb3IgdGhl
IEdUSysyIGJ1aWxkIGJ1dCB3ZSdkIG5lZWQgdG8gYnVtcCB0aGUgcmVxdWlyZWQKIC8vIHZlcnNp
b24gdG8gYXQgbGVhc3QgMi4yMi4KLSNpZiBHVEtfTUFKT1JfVkVSU0lPTiA8IDMKLSNkZWZpbmUg
UExBWV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0IgotI2RlZmluZSBQQVVTRV9JQ09O
X05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlIgotI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNP
Tl9OQU1FICJ2aWV3LXJlc3RvcmUiCisjaWYgR1RLX01BSk9SX1ZFUlNJT04gPiAyCisjZGVmaW5l
IElDT05fTkFNRV9TVUZGSVggIi1zeW1ib2xpYyIKICNlbHNlCi0jZGVmaW5lIFBMQVlfSUNPTl9O
QU1FICJtZWRpYS1wbGF5YmFjay1zdGFydC1zeW1ib2xpYyIKLSNkZWZpbmUgUEFVU0VfSUNPTl9O
QU1FICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIKLSNkZWZpbmUgRVhJVF9GVUxMU0NS
RUVOX0lDT05fTkFNRSAidmlldy1yZXN0b3JlLXN5bWJvbGljIgorI2RlZmluZSBJQ09OX05BTUVf
U1VGRklYCiAjZW5kaWYKIAotc3RhdGljIGdib29sZWFuIGhpZGVIdWRDYWxsYmFjayhGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorI2RlZmluZSBQTEFZX0lDT05fTkFNRSAi
bWVkaWEtcGxheWJhY2stc3RhcnQiSUNPTl9OQU1FX1NVRkZJWAorI2RlZmluZSBQQVVTRV9JQ09O
X05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlIklDT05fTkFNRV9TVUZGSVgKKyNkZWZpbmUgRVhJ
VF9GVUxMU0NSRUVOX0lDT05fTkFNRSAidmlldy1yZXN0b3JlIklDT05fTkFNRV9TVUZGSVgKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgZ2Jvb2xlYW4gaGlkZUh1ZENhbGxiYWNrKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxl
ci0+aGlkZUh1ZCgpOwogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIG9u
RnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVu
dE1vdGlvbiogZXZlbnQsICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQor
c3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudE1vdGlvbiogZXZlbnQsICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrKiBjb250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPnNob3dIdWQodHJ1ZSk7CiAg
ICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5v
dGlmaWNhdGlvbihHdGtXaWRnZXQqIHdpZGdldCwgR1BhcmFtU3BlYyogcHJvcGVydHksIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3Jl
ZW5HdGtBY3RpdmVOb3RpZmljYXRpb24oR3RrV2lkZ2V0KiB3aWRnZXQsIEdQYXJhbVNwZWMqIHBy
b3BlcnR5LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAg
IGlmICghZ3RrX3dpbmRvd19pc19hY3RpdmUoR1RLX1dJTkRPVyh3aWRnZXQpKSkKICAgICAgICAg
Y29udHJvbGxlci0+aGlkZUh1ZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVu
R3RrQ29uZmlndXJlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Q29uZmlndXJlKiBl
dmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyBnYm9v
bGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRDb25maWd1cmUqIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250
cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPmd0a0NvbmZpZ3VyZShldmVudCk7CiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3koR3RrV2lk
Z2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0
aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KEd0a1dpZGdldCogd2lkZ2V0LCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPmV4
aXRGdWxsc2NyZWVuKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRl
ZChHdGtBY3Rpb24qIGFjdGlvbiwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxl
cikKK3N0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlv
biwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250
cm9sbGVyLT50b2dnbGVQbGF5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGV4aXRGdWxsc2NyZWVuQWN0
aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250
cm9sbGVyKQorc3RhdGljIHZvaWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBh
Y3Rpb24sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAg
Y29udHJvbGxlci0+ZXhpdE9uVXNlclJlcXVlc3QoKTsKIH0KIAotc3RhdGljIGdib29sZWFuIHBy
b2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2soRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlcikKK3N0YXRpYyBnYm9vbGVhbiBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB0aW1lU2Nh
bGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQs
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4g
dGltZVNjYWxlQnV0dG9uUHJlc3NlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24q
IGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAg
IGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9OX1BSRVNTKQogICAgICAgICByZXR1cm4gRkFM
U0U7CkBAIC0xMDcsNjQgKzEwNyw0OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9u
UHJlc3NlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LAogICAgIHJl
dHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblJlbGVhc2Vk
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9u
UmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCwgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5l
bmRTZWVrKCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCB0aW1lU2NhbGVW
YWx1ZUNoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCB0aW1lU2NhbGVWYWx1ZUNoYW5nZWQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAg
ICAgY29udHJvbGxlci0+ZG9TZWVrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHZvbHVtZVZhbHVlQ2hh
bmdlZChHdGtTY2FsZUJ1dHRvbiAqYnV0dG9uLCBnZG91YmxlIHZhbHVlLCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIHZvaWQgdm9sdW1lVmFsdWVDaGFuZ2Vk
KEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3VibGUgdmFsdWUsIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKHN0
YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOwogfQogCi12b2lkIHBsYXllclZvbHVtZUNoYW5nZWRD
YWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3BlYywgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT52b2x1bWVDaGFu
Z2VkKCk7Ci19CiAKLXZvaWQgcGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVt
ZW50LCBHUGFyYW1TcGVjICpwc3BlYywgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOwotfQotCi1GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKLSAgICA6IG1faHVk
VGltZW91dElkKDApCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR3RrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQorICAg
IDogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcihwbGF5ZXIpCisgICAgLCBtX2h1
ZFRpbWVvdXRJZCgwKQogICAgICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCiAgICAgLCBtX3Nl
ZWtMb2NrKGZhbHNlKQogICAgICwgbV93aW5kb3coMCkKICAgICAsIG1faHVkV2luZG93KDApCisg
ICAgLCBtX2tleVByZXNzU2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9kZXN0cm95U2lnbmFsSGFu
ZGxlcigwKQorICAgICwgbV9pc0FjdGl2ZVNpZ25hbEhhbmRsZXIoMCkKKyAgICAsIG1fbW90aW9u
Tm90aWZ5U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRs
ZXIoMCkKKyAgICAsIG1faHVkTW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV90
aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSGFuZGxlcigwKQorICAgICwgbV90aW1lU2NhbGVC
dXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXIoMCkKKyAgICAsIG1fcGxheUFjdGlvbkFjdGl2YXRl
U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0aXZhdGVTaWdu
YWxIYW5kbGVyKDApCiB7CiB9CiAKLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKCkKLXsKLSAgICBleGl0RnVsbHNjcmVlbigpOwotfQotCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgaWYgKG1lZGlhRWxlbWVudCA9PSBtX21lZGlhRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1l
bnQ7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkgewotICAgICAgICAvLyBDYW4ndCBkbyBmdWxs
LXNjcmVlbiwganVzdCBnZXQgb3V0Ci0gICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgfQot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omd0a0NvbmZpZ3VyZShHZGtFdmVu
dENvbmZpZ3VyZSogZXZlbnQpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Omd0
a0NvbmZpZ3VyZShHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpCiB7CiAgICAgdXBkYXRlSHVkUG9z
aXRpb24oKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzaG93SHVkKGJv
b2wgYXV0b0hpZGUpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnNob3dIdWQo
Ym9vbCBhdXRvSGlkZSkKIHsKICAgICBpZiAoIW1faHVkV2luZG93KQogICAgICAgICByZXR1cm47
CkBAIC0xOTIsNyArMTc3LDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzaG93
SHVkKGJvb2wgYXV0b0hpZGUpCiAgICAgICAgIG1faHVkVGltZW91dElkID0gZ190aW1lb3V0X2Fk
ZChIVURfQVVUT19ISURFX0lOVEVSVkFMLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPiho
aWRlSHVkQ2FsbGJhY2spLCB0aGlzKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpoaWRlSHVkKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6aGlkZUh1
ZCgpCiB7CiAgICAgaWYgKG1faHVkVGltZW91dElkKSB7CiAgICAgICAgIGdfc291cmNlX3JlbW92
ZShtX2h1ZFRpbWVvdXRJZCk7CkBAIC0yMjIsMTIgKzIwNywxMCBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQoKQogICAgIH0KIH0KIAotc3RhdGljIGdib29sZWFuIG9u
RnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5
KiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyBn
Ym9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEtleSogZXZlbnQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xs
ZXIpCiB7CiAgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7CiAgICAgY2FzZSBHREtfRXNjYXBl
OgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgogICAgICAgICBjb250cm9sbGVyLT5leGl0
T25Vc2VyUmVxdWVzdCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdES19zcGFjZToKQEAg
LTIzNSwxMiArMjE4LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVz
c0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZlCiAgICAgICAgIGNvbnRy
b2xsZXItPnRvZ2dsZVBsYXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHREtfVXA6Ci0g
ICAgICAgIC8vIHZvbHVtZSB1cAotICAgICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoY29udHJv
bGxlci0+dm9sdW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VUKTsKKyAgICAgICAgY29udHJvbGxlci0+
aW5jcmVhc2VWb2x1bWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHREtfRG93bjoKLSAg
ICAgICAgLy8gdm9sdW1lIGRvd24KLSAgICAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKGNvbnRy
b2xsZXItPnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZGU0VUKTsKKyAgICAgICAgY29udHJvbGxl
ci0+ZGVjcmVhc2VWb2x1bWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC0yNDksMjUgKzIzMCwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2Ny
ZWVuR3RrS2V5UHJlc3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZQog
ICAgIHJldHVybiBUUlVFOwogfQogCi0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
ZW50ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6aW5p
dGlhbGl6ZVdpbmRvdygpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2dzdHJlYW1lckdXb3JsZCA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1l
ZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkOwotICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQt
PmVudGVyRnVsbHNjcmVlbigpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3dpbmRvdyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8R3RrV2lkZ2V0Kj4obV9nc3RyZWFtZXJHV29ybGQtPnBsYXRmb3JtVmlk
ZW9XaW5kb3coKS0+d2luZG93KCkpOwogCi0gICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX2dz
dHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5l
LCAibm90aWZ5Ojp2b2x1bWUiLCBHX0NBTExCQUNLKHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6Om11dGUi
LCBHX0NBTExCQUNLKHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLQogICAgIGlm
ICghbV9odWRXaW5kb3cpCiAgICAgICAgIGNyZWF0ZUh1ZCgpOwogCkBAIC0yODEsOSArMjQ3LDkg
QEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQogI2Vu
ZGlmCiAgICAgZ3RrX3dpZGdldF9zZXRfZG91YmxlX2J1ZmZlcmVkKG1fd2luZG93LCBGQUxTRSk7
CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAia2V5LXByZXNzLWV2ZW50IiwgR19D
QUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0
a0Rlc3Ryb3kpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAibm90aWZ5
Ojppcy1hY3RpdmUiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlv
biksIHRoaXMpOworICAgIG1fa2V5UHJlc3NTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVj
dChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
S2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIG1fZGVzdHJveVNpZ25hbEhhbmRsZXIgPSBnX3Np
Z25hbF9jb25uZWN0KG1fd2luZG93LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVu
R3RrRGVzdHJveSksIHRoaXMpOworICAgIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyID0gZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwgR19DQUxMQkFDSyhvbkZ1
bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKIAogICAgIGd0a193aWRnZXRf
c2hvd19hbGwobV93aW5kb3cpOwogCkBAIC0yOTEsMTQgKzI1NywxNCBAQCB2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgR1JlZlB0cjxHZGtDdXJz
b3I+IGN1cnNvcihhZG9wdEdSZWYoYmxhbmtDdXJzb3IoKSkpOwogICAgIGdka193aW5kb3dfc2V0
X2N1cnNvcih3aW5kb3csIGN1cnNvci5nZXQoKSk7CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2luZG93LCAibW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
TW90aW9uTm90aWZ5RXZlbnQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93
LCAiY29uZmlndXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVF
dmVudCksIHRoaXMpOworICAgIG1fbW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlciA9IGdfc2lnbmFs
X2Nvbm5lY3QobV93aW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1
bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworICAgIG1fY29uZmlndXJlRXZl
bnRTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImNvbmZpZ3VyZS1l
dmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsK
IAogICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7CiAgICAg
c2hvd0h1ZCh0cnVlKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRh
dGVIdWRQb3NpdGlvbigpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0
ZUh1ZFBvc2l0aW9uKCkKIHsKICAgICBpZiAoIW1faHVkV2luZG93KQogICAgICAgICByZXR1cm47
CkBAIC0zMDcsOCArMjczLDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRh
dGVIdWRQb3NpdGlvbigpCiAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2luZG93X2dldF9z
Y3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOwogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKICAgICBHZGtSZWN0YW5nbGUgZnVsbHNjcmVl
blJlY3RhbmdsZTsKLSAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwg
Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3cpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxzY3JlZW5SZWN0YW5nbGUpOworICAg
IGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBnZGtfc2NyZWVuX2dldF9t
b25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRvdyksICZmdWxsc2NyZWVuUmVjdGFuZ2xlKTsK
IAogICAgIC8vIEdldCB0aGUgcG9wdXAgd2luZG93IHNpemUuCiAgICAgaW50IGh1ZFdpZHRoLCBo
dWRIZWlnaHQ7CkBAIC0zMTgsMjggKzI4MywyNiBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKCkKICAgICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lO
RE9XKG1faHVkV2luZG93KSwgZnVsbHNjcmVlblJlY3RhbmdsZS53aWR0aCwgaHVkSGVpZ2h0KTsK
IAogICAgIC8vIE1vdmUgdGhlIGh1ZCB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uCi0gICAg
Z3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFu
Z2xlLngsCi0gICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVpZ2h0ICsg
ZnVsbHNjcmVlblJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCi17Ci0gICAgbV9tZWRpYUVsZW1l
bnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgZ3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9o
dWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xlLngsIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVp
Z2h0ICsgZnVsbHNjcmVlblJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKIH0KIAotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCit2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHdGs6OmRlc3Ryb3lXaW5kb3coKQogewogICAgIGlmICghbV9odWRXaW5k
b3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3Rr
S2V5UHJlc3NFdmVudCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3Rr
RGVzdHJveSksIHRoaXMpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
YyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrTW90aW9u
Tm90aWZ5RXZlbnQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0Nv
bmZpZ3VyZUV2ZW50KSwgdGhpcyk7Ci0KLSAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fbWVk
aWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGlu
ZSgpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGluZSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhp
cyk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHBpcGVsaW5lLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7
CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX2tleVByZXNzU2ln
bmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBt
X2Rlc3Ryb3lTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qo
bV93aW5kb3csIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QobV93aW5kb3csIG1fbW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcik7CisgICAg
Z19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX2NvbmZpZ3VyZUV2ZW50U2ln
bmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1faHVkV2luZG93
LCBtX2h1ZE1vdGlvbk5vdGlmeVNpZ25hbEhhbmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1fdGltZVNjYWxlQnV0dG9uUHJlc3NlZFNpZ25hbEhh
bmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1f
dGltZVNjYWxlQnV0dG9uUmVsZWFzZWRTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5k
bGVyX2Rpc2Nvbm5lY3QobV90aW1lSFNjYWxlLCBtX2hzY2FsZVVwZGF0ZUlkKTsKKyAgICBnX3Np
Z25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3BsYXlQYXVzZUFjdGlvbiwgbV9w
bGF5QWN0aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0
aXZhdGVTaWduYWxIYW5kbGVyKTsKIAogICAgIGlmIChtX2h1ZFRpbWVvdXRJZCkgewogICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOwpAQCAtMzUxLDE1OCArMzE0LDU4IEBA
IHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgICAg
ICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOwogICAgIH0KIAotICAgIGlmIChtX21lZGlhRWxl
bWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0
cmVhbWVyR1dvcmxkVHlwZSkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEo
KS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7Ci0KICAgICBndGtfd2lk
Z2V0X2hpZGUobV93aW5kb3cpOwogCi0gICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faHVkV2luZG93
KTsKKyAgICBpZiAobV9odWRXaW5kb3cpCisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX2h1
ZFdpbmRvdyk7CiAgICAgbV9odWRXaW5kb3cgPSAwOwogfQogCi1ib29sIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmNhblBsYXkoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRWxlbWVu
dCAmJiBtX21lZGlhRWxlbWVudC0+Y2FuUGxheSgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnBsYXkoKQotewotICAgIGlmIChtX21lZGlhRWxlbWVudCkKLSAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnBsYXkoKTsKLQotICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKLSAgICBz
aG93SHVkKHRydWUpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNl
KCkKLXsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5w
YXVzZSgpOwotCi0gICAgcGxheVN0YXRlQ2hhbmdlZCgpOwotICAgIHNob3dIdWQoZmFsc2UpOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQoKQor
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpwbGF5U3RhdGVDaGFuZ2VkKCkKIHsK
LSAgICBpZiAoY2FuUGxheSgpKQorICAgIGlmIChtX2NsaWVudC0+bWVkaWFQbGF5ZXJJc1BhdXNl
ZCgpKQogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwg
XygiUGxheSIpLCAiaWNvbi1uYW1lIiwgUExBWV9JQ09OX05BTUUsIE5VTEwpOwogICAgIGVsc2UK
ICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheVBhdXNlQWN0aW9uLCAidG9vbHRpcCIsIF8oIlBh
dXNlIiksICJpY29uLW5hbWUiLCBQQVVTRV9JQ09OX05BTUUsIE5VTEwpOworICAgIHNob3dIdWQo
IW1fY2xpZW50LT5tZWRpYVBsYXllcklzUGF1c2VkKCkpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkoKQotewotICAgIGlmIChjYW5QbGF5KCkpCi0gICAg
ICAgIHBsYXkoKTsKLSAgICBlbHNlCi0gICAgICAgIHBhdXNlKCk7Ci19Ci0KLWZsb2F0IEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPnZvbHVtZSgpIDogMDsKLX0KLQotYm9vbCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm11dGVkKCkgOiBmYWxzZTsKLX0KLQotdm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQotewotICAg
IGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4gMS4wKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKLSAgICB9Ci19Ci0KLXZv
aWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lQ2hhbmdlZCgpCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnZvbHVtZUNoYW5nZWQoKQogewogICAgIGdfc2lnbmFs
X2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwotICAgIGd0
a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24p
LCB2b2x1bWUoKSk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JV
VFRPTihtX3ZvbHVtZUJ1dHRvbiksIG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgZ19zaWduYWxf
aGFuZGxlcl91bmJsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKIH0KIAot
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlQ2hhbmdlZCgpCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Om11dGVDaGFuZ2VkKCkKIHsKICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKLSAgICBndGtf
c2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwg
bXV0ZWQoKSA/IDAgOiB2b2x1bWUoKSk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUo
R1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIG1fcGxheWVyLT5tdXRlZCgpID8gMCA6
IG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgZ19zaWduYWxfaGFuZGxlcl91bmJsb2NrKG1fdm9s
dW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKIH0KIAotZmxvYXQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRWxl
bWVudCA/IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIDogMDsKLX0KLQotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHZhbHVlLCBlYyk7Ci0gICAgfQotfQot
Ci1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkgOiAw
OwotfQotCi1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9hZGVkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+cGVy
Y2VudExvYWRlZCgpIDogMDsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpi
ZWdpblNlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpiZWdpblNlZWso
KQogewogICAgIG1fc2Vla0xvY2sgPSB0cnVlOwotCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50KQot
ICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKIH0KIAotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR3RrOjpkb1NlZWsoKQogewogICAgIGlmICghbV9zZWVrTG9jaykKLSAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0Q3VycmVudFRpbWUoZ3RrX3JhbmdlX2dl
dF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSkqZHVyYXRpb24oKSAvIDEwMCk7CisgICAg
bV9wbGF5ZXItPnNlZWsoZ3RrX3JhbmdlX2dldF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSkqbV9wbGF5ZXItPmR1cmF0aW9uKCkgLyAxMDApOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmVuZFNlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3Rr
OjplbmRTZWVrKCkKIHsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFF
bGVtZW50LT5lbmRTY3J1YmJpbmcoKTsKLQogICAgIG1fc2Vla0xvY2sgPSBmYWxzZTsKIH0KIAot
c3RhdGljIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSkKK2dib29sZWFuIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCkKIHsKLSAgICBpZiAo
IWlzZmluaXRlKHRpbWUpKQotICAgICAgICB0aW1lID0gMDsKLSAgICBpbnQgc2Vjb25kcyA9IGZh
YnNmKHRpbWUpOwotICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7Ci0gICAgaW50
IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAlIDYwOwotICAgIHNlY29uZHMgJT0gNjA7Ci0KLSAg
ICBpZiAoaG91cnMpIHsKLSAgICAgICAgaWYgKGhvdXJzID4gOSkKLSAgICAgICAgICAgIHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIi
KSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIiVzJTAxZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAy
ZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKLX0KLQot
Z2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIo
KQotewotICAgIGZsb2F0IG1lZGlhRHVyYXRpb24oZHVyYXRpb24oKSk7Ci0gICAgZmxvYXQgbWVk
aWFQb3NpdGlvbihjdXJyZW50VGltZSgpKTsKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uKG1fcGxh
eWVyLT5kdXJhdGlvbigpKTsKKyAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKG1fcGxheWVyLT5jdXJy
ZW50VGltZSgpKTsKIAogICAgIGlmICghbV9zZWVrTG9jaykgewogICAgICAgICBnZG91YmxlIHZh
bHVlID0gMC4wOwpAQCAtNTE0LDIyICszNzcsMjEgQEAgZ2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKQogICAgICAgICBndGtfYWRqdXN0bWVu
dF9zZXRfdmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOwogICAgIH0KIAotICAgIGd0a19yYW5nZV9z
ZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgcGVyY2VudExvYWRlZCgpKiAx
MDApOworICAgIGd0a19yYW5nZV9zZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSwgKG1fcGxheWVyLT5tYXhUaW1lTG9hZGVkKCkgLyBtZWRpYUR1cmF0aW9uKSogMTAwKTsKIAot
ICAgIGdjaGFyKiBsYWJlbCA9IGdfc3RyZHVwX3ByaW50ZigiJXMgLyAlcyIsIHRpbWVUb1N0cmlu
ZyhtZWRpYVBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lVG9TdHJpbmcobWVkaWFEdXJhdGlvbikudXRmOCgpLmRhdGEoKSk7Cisg
ICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJpbnRmKCIlcyAvICVzIiwgdGltZVRvU3RyaW5n
KG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksIHRpbWVUb1N0cmluZyhtZWRpYUR1cmF0aW9u
KS51dGY4KCkuZGF0YSgpKTsKICAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKG1fdGlt
ZUxhYmVsKSwgbGFiZWwpOwogICAgIGdfZnJlZShsYWJlbCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9
CiAKLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKK3ZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6Y3JlYXRlSHVkKCkKIHsKICAgICBtX2h1ZFdpbmRv
dyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOwogICAgIGd0a193aW5kb3dfc2V0
X2dyYXZpdHkoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19HUkFWSVRZX1NPVVRIX1dFU1Qp
OwogICAgIGd0a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9XKG1faHVkV2luZG93KSwg
R0RLX1dJTkRPV19UWVBFX0hJTlRfTk9STUFMKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9o
dWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5H
dGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworICAgIG1faHVkTW90aW9uTm90aWZ5U2lnbmFs
SGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV9odWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2
ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMp
OwogCiAjaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKICAgICBHdGtXaWRnZXQqIGhib3ggPSBndGtf
aGJveF9uZXcoRkFMU0UsIDQpOwpAQCAtNTM5LDkgKzQwMSw3IEBAIHZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKG1faHVkV2luZG93KSwgaGJveCk7CiAKICAgICBtX3BsYXlQYXVzZUFjdGlvbiA9IGd0
a19hY3Rpb25fbmV3KCJwbGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkgb3IgcGF1c2Ug
dGhlIG1lZGlhIiksIFBBVVNFX0lDT05fTkFNRSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX3Bs
YXlQYXVzZUFjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyh0b2dnbGVQbGF5UGF1c2VBY3Rp
dmF0ZWQpLCB0aGlzKTsKLQotICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BsYXlBY3Rp
b25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fcGxheVBhdXNlQWN0
aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZCksIHRo
aXMpOwogCiAgICAgR3RrV2lkZ2V0KiBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVt
KG1fcGxheVBhdXNlQWN0aW9uKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94
KSwgaXRlbSwgRkFMU0UsIFRSVUUsIDApOwpAQCAtNTU3LDggKzQxNyw4IEBAIHZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKICNlbmRpZgogICAgIGd0a19zY2FsZV9z
ZXRfZHJhd192YWx1ZShHVEtfU0NBTEUobV90aW1lSFNjYWxlKSwgRkFMU0UpOwogICAgIGd0a19y
YW5nZV9zZXRfc2hvd19maWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCBUUlVFKTsK
LSAgICBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1wcmVzcy1ldmVudCIs
IEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUHJlc3NlZCksIHRoaXMpOwotICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9uLXJlbGVhc2UtZXZlbnQiLCBHX0NBTExCQUNL
KHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhpcyk7CisgICAgbV90aW1lU2NhbGVCdXR0b25Q
cmVzc2VkU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0
dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0b25QcmVzc2VkKSwgdGhp
cyk7CisgICAgbV90aW1lU2NhbGVCdXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXIgPSBnX3NpZ25h
bF9jb25uZWN0KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1yZWxlYXNlLWV2ZW50IiwgR19DQUxMQkFD
Syh0aW1lU2NhbGVCdXR0b25SZWxlYXNlZCksIHRoaXMpOwogICAgIG1faHNjYWxlVXBkYXRlSWQg
PSBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExC
QUNLKHRpbWVTY2FsZVZhbHVlQ2hhbmdlZCksIHRoaXMpOwogCiAgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUhTY2FsZSwgVFJVRSwgVFJVRSwgMCk7CkBAIC01Njks
MTggKzQyOSwxOSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCgp
CiAgICAgLy8gVm9sdW1lIGJ1dHRvbi4KICAgICBtX3ZvbHVtZUJ1dHRvbiA9IGd0a192b2x1bWVf
YnV0dG9uX25ldygpOwogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBtX3Zv
bHVtZUJ1dHRvbiwgRkFMU0UsIFRSVUUsIDApOwotICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3Zh
bHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pLCB2b2x1bWUoKSk7CisgICAgZ3Rr
X3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiks
IG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgbV92b2x1bWVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nv
bm5lY3QobV92b2x1bWVCdXR0b24sICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh2b2x1bWVW
YWx1ZUNoYW5nZWQpLCB0aGlzKTsKIAotCiAgICAgbV9leGl0RnVsbHNjcmVlbkFjdGlvbiA9IGd0
a19hY3Rpb25fbmV3KCJleGl0IiwgXygiRXhpdCBGdWxsc2NyZWVuIiksIF8oIkV4aXQgZnJvbSBm
dWxsc2NyZWVuIG1vZGUiKSwgRVhJVF9GVUxMU0NSRUVOX0lDT05fTkFNRSk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChtX2V4aXRGdWxsc2NyZWVuQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNL
KGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVkKSwgdGhpcyk7CisgICAgbV9leGl0RnVsbGNyZWVuQWN0
aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX2V4aXRGdWxsc2Ny
ZWVuQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVk
KSwgdGhpcyk7CiAgICAgZ19vYmplY3Rfc2V0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJpY29u
LW5hbWUiLCBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FLCBOVUxMKTsKICAgICBpdGVtID0gZ3Rr
X2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24pOwogICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7CiAK
LQogICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQoUFJPR1JFU1NfQkFS
X1VQREFURV9JTlRFUlZBTCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocHJvZ3Jlc3NC
YXJVcGRhdGVDYWxsYmFjayksIHRoaXMpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOwogfQog
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R3RrLmgKc2ltaWxhcml0eSBpbmRleCA1MyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ay5oCmluZGV4IDgxN2JjMTkuLjkxN2YyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ay5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlh
IFMuTAorICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTcsMzIgKzE3LDI3IEBACiAgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmbmRlZiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKLSNkZWZpbmUgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCisjaWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHdGtfaAorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrX2gKIAotI2lmIEVO
QUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAK
LSNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCiAK
LWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwotcHVibGljOgotICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIoKTsKLSAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCk7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KKy8q
IGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI7ICovCisvKiBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7ICovCiAKLSAgICB2b2lkIGd0a0NvbmZpZ3VyZShH
ZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpOworY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ayA6IHB1YmxpYyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrPiBj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKHBsYXllcikpOyB9CisgICAgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsK
IAotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigp
OworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKik7CisKKyAgICB2b2lk
IHBsYXlTdGF0ZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKLSAg
ICB2b2lkIHRvZ2dsZVBsYXkoKTsKICAgICB2b2lkIGJlZ2luU2VlaygpOwogICAgIHZvaWQgZG9T
ZWVrKCk7CiAgICAgdm9pZCBlbmRTZWVrKCk7CkBAIC01MSwzMSArNDYsMTYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2hvd0h1ZChib29sKTsKICAgICBnYm9vbGVhbiB1cGRhdGVIdWRQcm9ncmVzc0Jh
cigpOwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWb2x1bWUoZmxv
YXQpOwogICAgIHZvaWQgdm9sdW1lQ2hhbmdlZCgpOwogICAgIHZvaWQgbXV0ZUNoYW5nZWQoKTsK
IAogcHJpdmF0ZToKLSAgICBib29sIGNhblBsYXkoKSBjb25zdDsKLSAgICB2b2lkIHBsYXkoKTsK
LSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBwbGF5U3RhdGVDaGFuZ2VkKCk7Ci0KLSAgICBi
b29sIG11dGVkKCkgY29uc3Q7Ci0KLSAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOwotCi0gICAgZmxvYXQgZHVyYXRpb24oKSBjb25z
dDsKLSAgICBmbG9hdCBwZXJjZW50TG9hZGVkKCkgY29uc3Q7CisgICAgdm9pZCBpbml0aWFsaXpl
V2luZG93KCk7CisgICAgdm9pZCBkZXN0cm95V2luZG93KCk7CiAKICAgICB2b2lkIGNyZWF0ZUh1
ZCgpOwogICAgIHZvaWQgdXBkYXRlSHVkUG9zaXRpb24oKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
R1N0cmVhbWVyR1dvcmxkPiBtX2dzdHJlYW1lckdXb3JsZDsKLQogICAgIGd1aW50IG1faHVkVGlt
ZW91dElkOwogICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZDsKICAgICBndWludCBtX3By
b2dyZXNzQmFyRmlsbFVwZGF0ZUlkOwpAQCAtODksOCArNjksMjAgQEAgcHJpdmF0ZToKICAgICBH
dGtXaWRnZXQqIG1fdGltZUhTY2FsZTsKICAgICBHdGtXaWRnZXQqIG1fdGltZUxhYmVsOwogICAg
IEd0a1dpZGdldCogbV92b2x1bWVCdXR0b247CisKKyAgICB1bnNpZ25lZCBsb25nIG1fa2V5UHJl
c3NTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV9kZXN0cm95U2lnbmFsSGFuZGxl
cjsKKyAgICB1bnNpZ25lZCBsb25nIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyOworICAgIHVuc2ln
bmVkIGxvbmcgbV9tb3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcg
bV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX2h1ZE1v
dGlvbk5vdGlmeVNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3RpbWVTY2FsZUJ1
dHRvblByZXNzZWRTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV90aW1lU2NhbGVC
dXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3BsYXlBY3Rp
b25BY3RpdmF0ZVNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX2V4aXRGdWxsY3Jl
ZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXI7CiB9OwogCit9CiAjZW5kaWYKIAotI2VuZGlm
IC8vIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAorI2VuZGlmIC8vIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGY4MzY4OWUuLjY3NWUyYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMy0wMS0yMCAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bR1N0cmVhbWVyXSBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIgYXMgaXQgbW92ZWQgdG8KKyAgICAgICAgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lciBhbmQgaXRzIEd0ayBzdWJjbGFzcyBpbgorICAgICAgICBXZWJDb3Jl
LiBIb29rIGluIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIGluIHRoZSBDaHJvbWVDbGllbnQgaW4K
KyAgICAgICAgdGhlIHR3byBwb3NzaWJsZSBzY2VuYXJpb3MsIHdldGhlciBGVUxMU0NSRUVOX0FQ
SSBpcyBlbmFibGVkIG9yIG5vdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmUg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hy
b21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKTogSG9vaworICAgICAgICBOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTyBzdXBwb3J0LgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6IERpdHRvCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IERpdHRvCisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKENocm9tZUNsaWVu
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDog
UmVtb3ZlIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgc3VwcG9ydC4KKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaDogRGl0dG8KKwogMjAxMy0wMS0xOCAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHByb3Bl
cnR5IGZvciBJbmRleGVkREIgZGF0YWJhc2UgcGF0aCB0byBXZWJLaXRHVEsrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGExYmZlNzkuLmIwNDA2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCkBAIC0yMTAsOCArMjEwLDYgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggXAogCVNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdD
b250ZXh0R3RrLmggXAotCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwIFwKLQlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvR3RrQWRqdXN0bWVudFdhdGNoZXIuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4
IDE0ZDhjZGYuLjY3MGY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNzcsNiArNzcsMTAgQEAKICNpbmNsdWRl
ICJEYXRhYmFzZU1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTg5Niw4ICs5MDAsNyBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4g
Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZQogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51R3RrKGNsaWVudCkpOwogfQogCi0jaWYgRU5BQkxF
KFZJREVPKQotCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCiBib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBO
b2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlk
ZW9UYWcpOwpAQCAtOTA1LDEyICs5MDgsMjggQEAgYm9vbCBDaHJvbWVDbGllbnQ6OnN1cHBvcnRz
RnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIAogdm9pZCBDaHJvbWVDbGllbnQ6
OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICB3ZWJWaWV3RW50ZXJG
dWxsc2NyZWVuKG1fd2ViVmlldywgbm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1
cm47CisKKyAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50
Kj4obm9kZSk7CisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkg
eworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBs
YXllcigpICYmIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmNhbkVudGVyRnVsbHNjcmVlbigpKQor
ICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7Cisg
ICAgfQogfQogCiB2b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUq
IG5vZGUpCiB7Ci0gICAgd2ViVmlld0V4aXRGdWxsc2NyZWVuKG1fd2ViVmlldyk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obm9kZSk7CisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVu
dC0+aXNNZWRpYUVsZW1lbnQoKSkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAg
IGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigpKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5w
bGF5ZXIoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB9CiB9CiAjZW5kaWYKIApAQCAtOTQ5LDYg
Kzk2OCwxOSBAQCB2b2lkIENocm9tZUNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChX
ZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAg
cmV0dXJuOwogCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkgeworICAg
ICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVk
aWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigp
ICYmIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmNhbkVudGVyRnVsbHNjcmVlbigpKSB7CisgICAg
ICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmVu
dGVyRnVsbHNjcmVlbigpOworICAgICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKICAgICBpZiAoIXdpZGdldElzT25zY3JlZW5U
b3BsZXZlbFdpbmRvdyh3aW5kb3cpKQogICAgICAgICByZXR1cm47CkBAIC05NzYsNiArMTAwOCwx
OSBAQCB2b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6
OkVsZW1lbnQqKQogICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuOwogCisjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgaWYgKG1f
ZnVsbFNjcmVlbkVsZW1lbnQgJiYgbV9mdWxsU2NyZWVuRWxlbWVudC0+aXNNZWRpYUVsZW1lbnQo
KSkgeworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxs
RXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAg
ICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVk
aWFFbGVtZW50Kj4obV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgIGlmIChtZWRp
YUVsZW1lbnQtPnBsYXllcigpKSB7CisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigp
LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9j
dW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVs
ZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC5jbGVhcigpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEd0a1dpZGdl
dCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcp
KTsKICAgICBBU1NFUlQod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHdpbmRvdykpOwog
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3aW5kb3csIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
aW5kZXggMWU5MzMxYy4uZGMyZDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlYXJj
aFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0
OwotI2lmIEVOQUJMRShWSURFTykKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZv
ck5vZGUoY29uc3QgTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVu
Rm9yTm9kZShOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5v
ZGUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmlu
ZGV4IGQxYTVmNWYuLjMyOTliMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTUzMDgsMzQgKzUzMDgsNiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAK
LXZvaWQgd2ViVmlld0VudGVyRnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBOb2Rl
KiBub2RlKQotewotICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFn
KSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1Rf
QVBJX1ZFUlNJT05fMSkKLSAgICBIVE1MTWVkaWFFbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSk7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotCi0gICAgLy8gRmlyc3QgZXhpdCBGdWxsc2NyZWVu
IGZvciB0aGUgb2xkIG1lZGlhRWxlbWVudC4KLSAgICBpZiAocHJpdi0+ZnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcikKLSAgICAgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZXhp
dEZ1bGxzY3JlZW4oKTsKLQotICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBu
ZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKLSAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLT5zZXRNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50KTsKLSAgICBwcml2LT5mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKLSNlbmRpZgotfQotCi12
b2lkIHdlYlZpZXdFeGl0RnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQotewotI2lm
IEVOQUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCi0gICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIGlmIChwcml2LT5mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKQotICAgICAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOwotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoSUNPTkRB
VEFCQVNFKQogdm9pZCB3ZWJraXRXZWJWaWV3SWNvbkxvYWRlZChXZWJLaXRGYXZpY29uRGF0YWJh
c2UqIGRhdGFiYXNlLCBjb25zdCBjaGFyKiBmcmFtZVVSSSwgV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRl
LmgKaW5kZXggMGFlNTIyYy4uNDY2NWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgd2Vi
a2l0d2Vidmlld3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiR3RrQ2xpY2tDb3VudGVyLmgi
CiAjaW5jbHVkZSAiR3RrRHJhZ0FuZERyb3BIZWxwZXIuaCIKQEAgLTkxLDEwICs5MCw2IEBAIHN0
cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogCiAgICAgZ2Jvb2xlYW4gZGlzcG9zaW5nOwog
Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKLSAgICBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBmdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwotI2Vu
ZGlmCi0KICAgICAvLyBUaGVzZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJj
ZSBvYmplY3QgaXMKICAgICAvLyBjcmVhdGVkIHRvbyBsYXRlIGluIHRoZSBmcmFtZSBsb2FkaW5n
IHByb2Nlc3MuCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gbWFpblJlc291cmNlOwpA
QCAtMTQzLDkgKzEzOCw2IEBAIEdMaXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNl
cyhXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfdG9vbHRpcF90ZXh0
KFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKik7CiBHdGtNZW51KiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHRfbWVudShXZWJLaXRXZWJWaWV3Kik7CiAKLXZvaWQgd2ViVmlld0VudGVyRnVs
bHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJDb3JlOjpOb2RlKik7Ci12b2lkIHdl
YlZpZXdFeGl0RnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsKLQogdm9pZCB3ZWJr
aXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QqKTsKIAogI2lmIEVOQUJMRShJQ09OREFUQUJBU0UpCi0tIAoxLjcuMTAu
NA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184863</attachid>
            <date>2013-01-26 07:14:28 -0800</date>
            <delta_ts>2013-01-26 07:37:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>39471</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyNmJlZWQwOTFlZTZhNjVhZDg5Zjg4ODQ2MjQ2OWZhMWRlNDg5NDEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjA2OjUyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDk0ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgMTQ2ICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCB8ICAg
NzMgKysrKysrKysrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
ICAgICAgICAgfCAgMTE2ICsrKysrKysrKysrKy0tLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAgNSArLQogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDY4ICsrKysrKy0tLQogLi4uL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgfCAgIDIxICsrLQog
Li4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggICAgICAgfCAgICA0
ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwICB8
ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCAg
ICAgIHwgICAgNiArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIu
aCAgICAgICAgfCAgICA0ICstCiAxMyBmaWxlcyBjaGFuZ2VkLCA0ODUgaW5zZXJ0aW9ucygrKSwg
NjIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3MDZjMGI3Li5kMWY2MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMTMt
MDEtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5pdGlhbCBzdXBwb3J0
IGZvciBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTyBpbiB0aGUgR1N0cmVhbWVyIG1lZGlhCisgICAg
ICAgIHBsYXllci4gQSBuZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lciBjbGFz
cyBpcworICAgICAgICBpbnRyb2R1Y2VkLCBwb3J0cyBpbnRlcmVzdGVkIHRvIGltcGxlbWVudCBu
YXRpdmUgZnVsbHNjcmVlbiB2aWRlbworICAgICAgICBzdXBwb3J0IHNob3VsZCBpbmhlcml0IGZy
b20gaXQgKHNlZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKQorICAgICAgICBhbmQgaG9v
ayBpdCBpbiB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIGJhY2tlbmQuCisKKyAgICAg
ICAgVGhlIEdTdHJlYW1lckdXb3JsZCBwb3J0IHRvIEdTdHJlYW1lciAxLnggaXMgcGFydGx5IGJh
c2VkIG9uIGEKKyAgICAgICAgcGF0Y2ggYnkgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRy
b2dlQGNvbGxhYm9yYS5jb20+LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEVuYWJsZSBO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTyBzdXBwb3J0LgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06IE5ldworICAgICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVye0dTdHJlYW1lcixH
dGt9IG1vZHVsZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6cGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKTogUGxh
eWJpbiBub3RpZnk6OnZvbHVtZQorICAgICAgICBzaWduYWwgY2FsbGJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKTogUGxheWJpbiBub3RpZnk6Om11dGUg
c2lnbmFsIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckdTdHJlYW1lcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp+RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICBT
d2l0Y2ggR1N0cmVhbWVyR1dvcmxkIHRvIGZ1bGwgc2NyZWVuLCBob29rIGluIHRvIHBsYXliaW4n
cworICAgICAgICBub3RpZnk6OnZvbHVtZSBhbmQgbXV0ZSBzaWduYWxzIGFuZCBpbml0aWFsaXpl
IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIERlc3Ryb3kg
dGhlIGZ1bGwgc2NyZWVuIHdpbmRvdywgZGlzY29ubmVjdCBmcm9tIHBsYXliaW4gc2lnbmFscwor
ICAgICAgICBhbmQgc3dpdGNoIEdTdHJlYW1lckdXb3JsZCBvdXQgb2YgZnVsbCBzY3JlZW4uCisg
ICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpleGl0
T25Vc2VyUmVxdWVzdCk6CisgICAgICAgIFRyaWdnZXIgZXhpdCBmcm9tIGZ1bGwgc2NyZWVuIG1v
ZGUuIFRoaXMgbWV0aG9kIGlzIG1lYW50IHRvIGJlCisgICAgICAgIGNhbGxlZCB3aGVuIHRoZSB1
c2VyIGV4cGxpY2l0ZWx5IHJlcXVlc3RzIHRvIGV4aXQgZnJvbSBmdWxsIHNjcmVlbgorICAgICAg
ICBieSBwcmVzc2luZyBhIGtleSBvciBzb21ldGhpbmcgc2ltaWxhci4KKyAgICAgICAgKFdlYkNv
cmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRvZ2dsZVBsYXkpOiBTd2l0
Y2gKKyAgICAgICAgYmV0d2VlbiBwbGF5IGFuZCBwYXVzZSBzdGF0ZXMuIFVzZWZ1bCBmb3IgY2hp
bGQgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXI6OmluY3JlYXNlVm9sdW1lKToKKyAgICAgICAgVXNlZnVsIGZvciBjaGlsZCBjbGFz
c2VzIGFzIHdlbGwuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyOjpkZWNyZWFzZVZvbHVtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6c2V0Vm9sdW1lKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0aW1lVG9T
dHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpwbGF5U3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgVG8gYmUgaW1wbGVtZW50ZWQgYnkgY2hpbGQgY2xhc3MgdG8g
cmVmbGVjdCB0aGUgcGxheWVyJ3Mgc3RhdGUgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnZvbHVtZUNoYW5nZWQpOiBUbworICAg
ICAgICBiZSBpbXBsZW1lbnRlZCBieSBjaGlsZCBjbGFzcyBhcyB3ZWxsLgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6bXV0ZUNoYW5nZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFt
ZXI6OmluaXRpYWxpemVXaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmRlc3Ryb3lXaW5kb3cpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spOiBBZGFwdCBmb3Ig
R1N0cmVhbWVyIHZpZGVvCisgICAgICAgIG92ZXJsYXkgQVBJIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZCk6CisgICAgICAgIGdzdF9i
dXNfc2V0X3N5bmNfaGFuZGxlciB0YWtlcyBvbmUgbW9yZSBhcmd1bWVudCBpbiBHU3RyZWFtZXIg
MS54LgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4p
OiBmZm1wZWdjb2xvcnNwYWNlIHdhcworICAgICAgICByZW5hbWVkIHRvIHZpZGVvY29udmVydCBp
biBHU3RyZWFtZXIgMS54IGFuZCB0aGUgdGVlIHNyYyBwYWQKKyAgICAgICAgdGVtcGxhdGUgd2Fz
IHJlbmFtZWQgdG8gc3JjXyV1LiBUaGVyZSBpcyBubyBuZWVkIHRvIHNlbmQgYSBuZXcKKyAgICAg
ICAgc2VnbWVudCBxdWVyeSBlaXRoZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmdzdEdXb3JsZFBhZFByb2JlQ2FsbGJhY2spOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHZp
ZGVvCisgICAgICAgIHNpbmsgYnJhbmNoIG9uY2UgdGhlIHRlZSBzb3VyY2UgcGFkIHN0YXJ0aW5n
IGl0IGhhcyBiZWVuIGJsb2NrZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6
OmV4aXRGdWxsc2NyZWVuKTogUmVmYWN0b3IgdG8gdXNlIGFuCisgICAgICAgIGFzeW5jaHJvbm91
cyBwYWQgcHJvYmUuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OnJlbW92ZVBs
YXRmb3JtVmlkZW9TaW5rKTogUmVmYWN0b3JlZAorICAgICAgICBmcm9tIGV4aXRGdWxsc2NyZWVu
LgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KTog
QWRhcHQgZm9yIEdTdHJlYW1lciB2aWRlbworICAgICAgICBvdmVybGF5IEFQSSBjaGFuZ2VzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaDoK
KyAgICAgICAgKEdTdHJlYW1lckdXb3JsZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICBIb29rIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZvbHVtZSk6IFBs
YXliaW4gdm9sdW1lCisgICAgICAgIHF1ZXJ5IHVzZWQgYnkgdGhlIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6IHZvbHVtZSgpLCBt
dXRlZCgpIGFuZCBNZWRpYVBsYXllcgorICAgICAgICBhY2Nlc3NvciBtZXRob2RzIGFkZGVkLiBO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTyBtZXRob2RzIGFkZGVkIGFzIHdlbGwuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbkVudGVyRnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1lZGlhUGxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvdy5oOiBSZS1lbmFibGUKKyAgICAgICAgbW9kdWxlIGlmIE5BVElWRV9GVUxMU0NSRUVO
X1ZJREVPIGlzIHR1cm5lZCBvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwOiBSZS1lbmFibGUKKyAg
ICAgICAgR1N0cmVhbWVyR1dvcmxkIHN1cHBvcnQuCisgICAgICAgIChfV2ViS2l0VmlkZW9TaW5r
UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtSZW5kZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaDogRGl0dG8uCisK
IDIwMTMtMDEtMjYgIEp1c3RpbiBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0NIUk9NSVVNXSBTdXBwcmVzcyBtb3JlIGM0MjY3IGJ1aWxkIHdhcm5pbmdzIGZvciBXaW42
NCB0YXJnZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDk1YTIzZWQuLjAyMmU1MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0xNjEsNiArMTYxLDcgQEAgaWYgVVNFX0dTVFJFQU1FUgogaWYg
RU5BQkxFX0RFQlVHCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ER1NUX0RJU0FCTEVfREVQUkVDQVRF
RAogZW5kaWYgIyBFTkQgRU5BQkxFX0RFQlVHCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1EV1RGX1VT
RV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTz0xCiBlbmRpZiAjIEVORCBVU0VfR1NUUkVBTUVSCiBl
bHNlCiBmZWF0dXJlX2RlZmluZXNfb3ZlcnJpZGVzICs9IEVOQUJMRV9WSURFTz0wIEVOQUJMRV9W
SURFT19UUkFDSz0wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzZDZlMjMxLi45
MmU5NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYwNTcsNiArNjA1Nyw4
IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMwYWVhNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKworI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgorI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgiCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KworI2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKKyNkZWZpbmUgVk9MVU1FX0RP
V05fT0ZGU0VUIDAuMDUgLy8gNSUKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHBsYXll
clZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3Bl
YywgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lciogY29udHJvbGxlcikKK3sKKyAg
ICBjb250cm9sbGVyLT52b2x1bWVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgcGxheWVyTXV0ZUNoYW5n
ZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3BlYywgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckdTdHJlYW1lciogY29udHJvbGxlcikKK3sKKyAgICBjb250cm9sbGVy
LT5tdXRlQ2hhbmdlZCgpOworfQorCisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFt
ZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX2NsaWVu
dChwbGF5ZXItPm1lZGlhUGxheWVyKCktPm1lZGlhUGxheWVyQ2xpZW50KCkpCisgICAgLCBtX2dz
dHJlYW1lckdXb3JsZChwbGF5ZXItPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29y
bGQpCisgICAgLCBtX3BsYXllclZvbHVtZVNpZ25hbEhhbmRsZXIoMCkKKyAgICAsIG1fcGxheWVy
TXV0ZVNpZ25hbEhhbmRsZXIoMCkKK3sKK30KKworRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdT
dHJlYW1lcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoKQoreworICAgIGV4
aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJl
YW1lcjo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAoIW1fZ3N0cmVhbWVyR1dvcmxkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fZ3N0cmVhbWVyR1dvcmxkLT5lbnRlckZ1bGxz
Y3JlZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBt
X2dzdHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKKyAgICBtX3BsYXllclZvbHVtZVNpZ25hbEhh
bmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5lLCAibm90aWZ5Ojp2b2x1bWUiLCBHX0NB
TExCQUNLKHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOworICAgIG1fcGxheWVy
TXV0ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5lLCAibm90aWZ5Ojpt
dXRlIiwgR19DQUxMQkFDSyhwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisKKyAg
ICBpbml0aWFsaXplV2luZG93KCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lcjo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIGRlc3Ryb3lXaW5kb3coKTsKKwor
ICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7
CisgICAgaWYgKG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlcikgeworICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QocGlwZWxpbmUsIG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxl
cik7CisgICAgICAgIG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlciA9IDA7CisgICAgfQorCisg
ICAgaWYgKG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIpIHsKKyAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcl9kaXNjb25uZWN0KHBpcGVsaW5lLCBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyKTsKKyAg
ICAgICAgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlciA9IDA7CisgICAgfQorCisgICAgbV9nc3Ry
ZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdE9uVXNlclJlcXVlc3QoKQoreworICAgIG1fY2xpZW50
LT5tZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcjo6dG9nZ2xlUGxheSgpCit7CisgICAgaWYgKG1fY2xpZW50LT5t
ZWRpYVBsYXllcklzUGF1c2VkKCkpCisgICAgICAgIG1fY2xpZW50LT5tZWRpYVBsYXllclBsYXko
KTsKKyAgICBlbHNlCisgICAgICAgIG1fY2xpZW50LT5tZWRpYVBsYXllclBhdXNlKCk7CisgICAg
cGxheVN0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXI6OmluY3JlYXNlVm9sdW1lKCkKK3sKKyAgICBzZXRWb2x1bWUobV9wbGF5ZXItPnZv
bHVtZSgpICsgVk9MVU1FX1VQX09GRlNFVCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6ZGVjcmVhc2VWb2x1bWUoKQoreworICAgIHNldFZvbHVtZShtX3Bs
YXllci0+dm9sdW1lKCkgLSBWT0xVTUVfRE9XTl9PRkZTRVQpOworfQorCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit7Cisg
ICAgaWYgKHZvbHVtZSA8IDAuMCB8fCB2b2x1bWUgPiAxLjApCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcGxheWVyLT5zZXRWb2x1bWUodm9sdW1lKTsKK30KKworU3RyaW5nIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRpbWVUb1N0cmluZyhmbG9hdCB0aW1lKQoreworICAg
IGlmICghaXNmaW5pdGUodGltZSkpCisgICAgICAgIHRpbWUgPSAwOworICAgIGludCBzZWNvbmRz
ID0gZmFic2YodGltZSk7CisgICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKKyAg
ICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25kcyAlPSA2MDsK
KworICAgIGlmIChob3VycykgeworICAgICAgICBpZiAoaG91cnMgPiA5KQorICAgICAgICAgICAg
cmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0i
IDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBTdHJpbmc6
OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMs
IG1pbnV0ZXMsIHNlY29uZHMpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgi
JXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQxYzFjNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEz
IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyX2gKKyNkZWZpbmUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9o
CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHU3RyZWFtZXJHV29ybGQ7CitjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI7CitjbGFzcyBNZWRpYVBsYXllckNsaWVudDsKKworY2xhc3MgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcik7CitwdWJsaWM6CisgICAgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcihNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIq
KTsKKyAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKCk7CisK
KyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsK
KyAgICB2b2lkIGV4aXRPblVzZXJSZXF1ZXN0KCk7CisKKyAgICB2b2lkIHRvZ2dsZVBsYXkoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpIHsgfQorCisgICAgdm9pZCBpbmNy
ZWFzZVZvbHVtZSgpOworICAgIHZvaWQgZGVjcmVhc2VWb2x1bWUoKTsKKyAgICB2b2lkIHNldFZv
bHVtZShmbG9hdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdm9sdW1lQ2hhbmdlZCgpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBtdXRlQ2hhbmdlZCgpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgU3RyaW5n
IHRpbWVUb1N0cmluZyhmbG9hdCB0aW1lKTsKKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lciogbV9wbGF5ZXI7CisgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OworICAgIEdT
dHJlYW1lckdXb3JsZCogbV9nc3RyZWFtZXJHV29ybGQ7CisKK3ByaXZhdGU6CisgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVXaW5kb3coKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVdp
bmRvdygpIHsgfQorCisgICAgdW5zaWduZWQgbG9uZyBtX3BsYXllclZvbHVtZVNpZ25hbEhhbmRs
ZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyOworfTsKKwor
fQorI2VuZGlmCisKKyNlbmRpZiAvLyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJHV29ybGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKaW5kZXggZTZiOTA4ZS4uYjFkYmI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckdXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKQEAgLTE4LDE1ICsxOCwyMyBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgotI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9O
XzEpCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1
ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1
dGlscy5oPgogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlIDxnc3QvdmlkZW8v
dmlkZW9vdmVybGF5Lmg+CisjZWxzZQorI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5
Lmg+CisjZW5kaWYKKworCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
ICNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQpAQCAtMzQsNiArNDIsMTIgQEAKICNlbmRpZgogI2Vu
ZGlmCiAKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKK3N0YXRpYyBjb25zdCBjaGFyKiBnVmlk
ZW9Db252ZXJ0TmFtZSA9ICJmZm1wZWdjb2xvcnNwYWNlIjsKKyNlbHNlCitzdGF0aWMgY29uc3Qg
Y2hhciogZ1ZpZGVvQ29udmVydE5hbWUgPSAidmlkZW9jb252ZXJ0IjsKKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MywxMSArNTcsMTYg
QEAgZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNz
YWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXQKICAgICBBU1NFUlQoR1NUX01FU1NBR0VfVFlQRSht
ZXNzYWdlKSA9PSBHU1RfTUVTU0FHRV9FTEVNRU5UKTsKIAogICAgIEdTdHJlYW1lckdXb3JsZCog
Z3N0R1dvcmxkID0gc3RhdGljX2Nhc3Q8R1N0cmVhbWVyR1dvcmxkKj4oZGF0YSk7CisjaWZuZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgY29uc3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1lc3NhZ2UpOwogCiAgICAgaWYgKGdzdF9zdHJ1Y3R1
cmVfaGFzX25hbWUoc3RydWN0dXJlLCAicHJlcGFyZS14d2luZG93LWlkIikKICAgICAgICAgfHwg
Z3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJoYXZlLW5zLXZpZXciKSkKICAgICAg
ICAgZ3N0R1dvcmxkLT5zZXRXaW5kb3dPdmVybGF5KG1lc3NhZ2UpOworI2Vsc2UKKyAgICBpZiAo
Z3N0X2lzX3ZpZGVvX292ZXJsYXlfcHJlcGFyZV93aW5kb3dfaGFuZGxlX21lc3NhZ2UobWVzc2Fn
ZSkpCisgICAgICAgIGdzdEdXb3JsZC0+c2V0V2luZG93T3ZlcmxheShtZXNzYWdlKTsKKyNlbmRp
ZgogICAgIHJldHVybiBUUlVFOwogfQogCkBAIC02MSw3ICs4MCwxMSBAQCBHU3RyZWFtZXJHV29y
bGQ6OkdTdHJlYW1lckdXb3JsZChHc3RFbGVtZW50KiBwaXBlbGluZSkKIHsKICAgICAvLyBYT3Zl
cmxheSBtZXNzYWdlcyBuZWVkIHRvIGJlIGhhbmRsZWQgc3luY2hyb25vdXNseS4KICAgICBHUmVm
UHRyPEdzdEJ1cz4gYnVzID0gd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMoR1NUX1BJUEVMSU5FKG1f
cGlwZWxpbmUpKTsKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnc3RfYnVzX3NldF9z
eW5jX2hhbmRsZXIoYnVzLmdldCgpLCBnc3RfYnVzX3N5bmNfc2lnbmFsX2hhbmRsZXIsIHRoaXMp
OworI2Vsc2UKKyAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVzLmdldCgpLCBnc3RfYnVz
X3N5bmNfc2lnbmFsX2hhbmRsZXIsIHRoaXMsIDApOworI2VuZGlmCiAgICAgZ19zaWduYWxfY29u
bmVjdChidXMuZ2V0KCksICJzeW5jLW1lc3NhZ2U6OmVsZW1lbnQiLCBHX0NBTExCQUNLKGdzdEdX
b3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKIH0KIApAQCAtODEsNyArMTA0LDcgQEAg
Ym9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgICAgIG1fdmlkZW9X
aW5kb3cgPSBQbGF0Zm9ybVZpZGVvV2luZG93OjpjcmVhdGVXaW5kb3coKTsKIAogICAgIEdzdEVs
ZW1lbnQqIHBsYXRmb3JtVmlkZW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRv
dmlkZW9zaW5rIiwgInBsYXRmb3JtVmlkZW9TaW5rIik7Ci0gICAgR3N0RWxlbWVudCogY29sb3Jz
cGFjZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZmZtcGVnY29sb3JzcGFjZSIsICJjb2xv
cnNwYWNlIik7CisgICAgR3N0RWxlbWVudCogY29sb3JzcGFjZSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZShnVmlkZW9Db252ZXJ0TmFtZSwgImNvbG9yc3BhY2UiKTsKICAgICBHc3RFbGVtZW50
KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAicXVldWUiKTsKICAg
ICBHc3RFbGVtZW50KiB2aWRlb1NjYWxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2aWRl
b3NjYWxlIiwgInZpZGVvU2NhbGUiKTsKIApAQCAtOTQsNyArMTE3LDYgQEAgYm9vbCBHU3RyZWFt
ZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHRl
ZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgp
KSwgInZpZGVvVGVlIikpOwogCi0gICAgLy8gQWRkIGFuZCBsaW5rIGEgcXVldWUsIGZmbXBlZ2Nv
bG9yc3BhY2UsIHZpZGVvc2NhbGUgYW5kIHNpbmsgaW4gdGhlIGJpbi4KICAgICBnc3RfYmluX2Fk
ZF9tYW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcGxhdGZvcm1WaWRlb1NpbmssIHZpZGVv
U2NhbGUsIGNvbG9yc3BhY2UsIHF1ZXVlLCBOVUxMKTsKIAogICAgIC8vIEZhc3RlciBlbGVtZW50
cyBsaW5raW5nLgpAQCAtMTAzLDcgKzEyNSwxMSBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50
ZXJGdWxsc2NyZWVuKCkKICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh2aWRlb1NjYWxl
LCAic3JjIiwgcGxhdGZvcm1WaWRlb1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05P
VEhJTkcpOwogCiAgICAgLy8gTGluayBhIG5ldyBzcmMgcGFkIGZyb20gdGVlIHRvIHF1ZXVlLgor
I2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKHRlZS5nZXQoKSwgInNyYyVkIikp
OworI2Vsc2UKKyAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVt
ZW50X2dldF9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksICJzcmNfJXUiKSk7CisjZW5kaWYKICAgICBH
UmVmUHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGlj
X3BhZChxdWV1ZSwgInNpbmsiKSk7CiAgICAgZ3N0X3BhZF9saW5rKHNyY1BhZC5nZXQoKSwgc2lu
a1BhZC5nZXQoKSk7CiAKQEAgLTEyMSw5ICsxNDcsOSBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6
ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3JzcGFjZSwg
c3RhdGUpOwogICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZSwgc3RhdGUpOwogCisjaWZu
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgLy8gUXVlcnkgdGhlIGN1cnJlbnQgbWVkaWEgc2Vn
bWVudCBpbmZvcm1hdGlvbnMgYW5kIHNlbmQgdGhlbSB0b3dhcmRzCiAgICAgLy8gdGhlIG5ldyB0
ZWUgYnJhbmNoIGRvd25zdHJlYW0uCi0KICAgICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlf
bmV3X3NlZ21lbnQoR1NUX0ZPUk1BVF9USU1FKTsKICAgICBnYm9vbGVhbiBxdWVyeVJlc3VsdCA9
IGdzdF9lbGVtZW50X3F1ZXJ5KG1fcGlwZWxpbmUsIHF1ZXJ5KTsKIApAQCAtMTMyLDggKzE1OCw4
IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBHc3RGb3JtYXQgZm9ybWF0OwogICAgIGdpbnQ2NCBwb3Np
dGlvbjsKKyAgICBHc3RGb3JtYXQgZm9ybWF0OwogICAgIGlmICghZ3N0X2VsZW1lbnRfcXVlcnlf
cG9zaXRpb24obV9waXBlbGluZSwgJmZvcm1hdCwgJnBvc2l0aW9uKSkKICAgICAgICAgcG9zaXRp
b24gPSAwOwogCkBAIC0xNDUsMjAgKzE3MSw1NSBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50
ZXJGdWxsc2NyZWVuKCkKICAgICBnc3RfcGFkX3B1c2hfZXZlbnQoc3JjUGFkLmdldCgpLCBldmVu
dCk7CiAKICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorc3RhdGljIEdzdFBhZFByb2JlUmV0
dXJuIGdzdEdXb3JsZFBhZFByb2JlQ2FsbGJhY2soR3N0UGFkKiBwYWQsIEdzdFBhZFByb2JlSW5m
byogaW5mbywgR1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQpCit7CisgICAgZ3N0R1dvcmxkLT5y
ZW1vdmVQbGF0Zm9ybVZpZGVvU2luaygpOworICAgIHJldHVybiBHU1RfUEFEX1BST0JFX1JFTU9W
RTsKK30KKyNlbmRpZgorCiB2b2lkIEdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4oKQog
ewogICAgIGlmICghbV9keW5hbWljUGFkTmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
R2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgotICAgIEdSZWZQ
dHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rOwogICAgIEdzdEVsZW1lbnQqIHNpbmtQdHIgPSAwOwor
ICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLCAidmlkZW8tc2luayIsICZzaW5rUHRyLCBOVUxM
KTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2luayA9IGFkb3B0R1JlZihzaW5rUHRy
KTsKIAorICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdGVlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0
X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9UZWUiKSk7CisgICAgR1Jl
ZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3Bh
ZCh0ZWUuZ2V0KCksIG1fZHluYW1pY1BhZE5hbWUuZ2V0KCkpKTsKKworICAgIC8vIEJsb2NrIGRh
dGEgZmxvdyB0b3dhcmRzIHRoZSBwaXBlbGluZSBicmFuY2ggdG8gcmVtb3ZlLiBObyBuZWVkCisg
ICAgLy8gZm9yIHBhZCBibG9ja2luZyBpZiB0aGUgcGlwZWxpbmUgaXMgcGF1c2VkLgorICAgIEdz
dFN0YXRlIHN0YXRlOworICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BpcGVsaW5lLCAmc3Rh
dGUsIDAsIDApOworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgaWYgKHN0YXRlID49IEdT
VF9TVEFURV9QTEFZSU5HKQorICAgICAgICBnc3RfcGFkX2FkZF9wcm9iZShzcmNQYWQuZ2V0KCks
IEdTVF9QQURfUFJPQkVfVFlQRV9JRExFLCByZWludGVycHJldF9jYXN0PEdzdFBhZFByb2JlQ2Fs
bGJhY2s+KGdzdEdXb3JsZFBhZFByb2JlQ2FsbGJhY2spLCB0aGlzLCAwKTsKKyAgICBlbHNlCisj
ZWxzZQorICAgIGlmIChzdGF0ZSA8IEdTVF9TVEFURV9QTEFZSU5HIHx8IGdzdF9wYWRfc2V0X2Js
b2NrZWQoc3JjUGFkLmdldCgpLCB0cnVlKSkKKyNlbmRpZgorICAgICAgICByZW1vdmVQbGF0Zm9y
bVZpZGVvU2luaygpOworCisgICAgbV92aWRlb1dpbmRvdyA9IDA7Cit9CisKK3ZvaWQgR1N0cmVh
bWVyR1dvcmxkOjpyZW1vdmVQbGF0Zm9ybVZpZGVvU2luaygpCit7CisgICAgaWYgKCFtX2R5bmFt
aWNQYWROYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBHZXQgdmlkZW8gc2luayBiaW4g
YW5kIHRoZSBlbGVtZW50cyB0byByZW1vdmUuCisgICAgR3N0RWxlbWVudCogc2lua1B0ciA9IDA7
CiAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUsICJ2aWRlby1zaW5rIiwgJnNpbmtQdHIsIE5V
TEwpOwotICAgIHZpZGVvU2luayA9IGFkb3B0R1JlZihzaW5rUHRyKTsKKyAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHZpZGVvU2luayA9IGFkb3B0R1JlZihzaW5rUHRyKTsKIAogICAgIEdSZWZQdHI8
R3N0RWxlbWVudD4gdGVlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2
aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9UZWUiKSk7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBw
bGF0Zm9ybVZpZGVvU2luayA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4o
dmlkZW9TaW5rLmdldCgpKSwgInBsYXRmb3JtVmlkZW9TaW5rIikpOwpAQCAtMTY2LDI4ICsyMjcs
MTcgQEAgdm9pZCBHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKICAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IGNvbG9yc3BhY2UgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShH
U1RfQklOKHZpZGVvU2luay5nZXQoKSksICJjb2xvcnNwYWNlIikpOwogICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gdmlkZW9TY2FsZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9C
SU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvU2NhbGUiKSk7CiAKLSAgICAvLyBHZXQgcGFkcyB0
byB1bmxpbmsgYW5kIHJlbW92ZS4KICAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRH
UmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHRlZS5nZXQoKSwgbV9keW5hbWljUGFkTmFt
ZS5nZXQoKSkpOwogICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9l
bGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLmdldCgpLCAic2luayIpKTsKKyAgICBnc3RfcGFk
X3VubGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOworICAgIGdzdF9lbGVtZW50X3Jl
bGVhc2VfcmVxdWVzdF9wYWQodGVlLmdldCgpLCBzcmNQYWQuZ2V0KCkpOwogCi0gICAgLy8gQmxv
Y2sgZGF0YSBmbG93IHRvd2FyZHMgdGhlIHBpcGVsaW5lIGJyYW5jaCB0byByZW1vdmUuIE5vIG5l
ZWQKLSAgICAvLyBmb3IgcGFkIGJsb2NraW5nIGlmIHRoZSBwaXBlbGluZSBpcyBwYXVzZWQuCi0g
ICAgR3N0U3RhdGUgc3RhdGU7Ci0gICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUs
ICZzdGF0ZSwgMCwgMCk7Ci0gICAgaWYgKHN0YXRlIDwgR1NUX1NUQVRFX1BMQVlJTkcgfHwgZ3N0
X3BhZF9zZXRfYmxvY2tlZChzcmNQYWQuZ2V0KCksIHRydWUpKSB7Ci0KLSAgICAgICAgLy8gVW5s
aW5rIGFuZCByZWxlYXNlIHJlcXVlc3QgcGFkLgotICAgICAgICBnc3RfcGFkX3VubGluayhzcmNQ
YWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOwotICAgICAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3Jl
cXVlc3RfcGFkKHRlZS5nZXQoKSwgc3JjUGFkLmdldCgpKTsKLQotICAgICAgICAvLyBVbmxpbmss
IHJlbW92ZSBhbmQgY2xlYW51cCBxdWV1ZSwgZmZtcGVnY29sb3JzcGFjZSwgdmlkZW9TY2FsZSBh
bmQgc2luay4KLSAgICAgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUuZ2V0KCksIGNv
bG9yc3BhY2UuZ2V0KCksIHZpZGVvU2NhbGUuZ2V0KCksIHBsYXRmb3JtVmlkZW9TaW5rLmdldCgp
LCBOVUxMKTsKLSAgICAgICAgZ3N0X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKHZpZGVvU2luay5n
ZXQoKSksIHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgpLCB2aWRlb1NjYWxlLmdldCgpLCBw
bGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgICAgICBn
c3RfZWxlbWVudF9zZXRfc3RhdGUodmlkZW9TY2FsZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwot
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3JzcGFjZS5nZXQoKSwgR1NUX1NUQVRF
X05VTEwpOwotICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocXVldWUuZ2V0KCksIEdTVF9T
VEFURV9OVUxMKTsKLSAgICB9CisgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUuZ2V0
KCksIGNvbG9yc3BhY2UuZ2V0KCksIHZpZGVvU2NhbGUuZ2V0KCksIHBsYXRmb3JtVmlkZW9TaW5r
LmdldCgpLCBOVUxMKTsKKyAgICBnc3RfYmluX3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9TaW5r
LmdldCgpKSwgcXVldWUuZ2V0KCksIGNvbG9yc3BhY2UuZ2V0KCksIHZpZGVvU2NhbGUuZ2V0KCks
IHBsYXRmb3JtVmlkZW9TaW5rLmdldCgpLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUocGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxl
bWVudF9zZXRfc3RhdGUodmlkZW9TY2FsZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShjb2xvcnNwYWNlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Cisg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHF1ZXVlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CiAK
ICAgICBtX2R5bmFtaWNQYWROYW1lLmNsZWFyKCk7CiB9CkBAIC0xOTYsNyArMjQ2LDExIEBAIHZv
aWQgR1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiB7CiAgICAgR3N0T2JqZWN0KiBzaW5rID0gR1NUX01FU1NBR0VfU1JDKG1lc3NhZ2UpOwogCisj
aWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKCFHU1RfSVNfWF9PVkVSTEFZKHNpbmsp
KQorI2Vsc2UKKyAgICBpZiAoIUdTVF9JU19WSURFT19PVkVSTEFZKHNpbmspKQorI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdf
T0JKRUNUX0dFVF9DTEFTUyhzaW5rKSwgImZvcmNlLWFzcGVjdC1yYXRpbyIpKQpAQCAtMjA1LDYg
KzI1OSw3IEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UpCiAgICAgaWYgKG1fdmlkZW9XaW5kb3cpIHsKICAgICAgICAgbV92aWRlb1dp
bmRvdy0+cHJlcGFyZUZvck92ZXJsYXkobWVzc2FnZSk7CiAKKyNpZm5kZWYgR1NUX0FQSV9WRVJT
SU9OXzEKIC8vIGdzdF94X292ZXJsYXlfc2V0X3dpbmRvd19oYW5kbGUgd2FzIGludHJvZHVjZWQg
aW4gLXBsdWdpbnMtYmFzZQogLy8gMC4xMC4zMSwganVzdCBsaWtlIHRoZSBtYWNybyBmb3IgY2hl
Y2tpbmcgdGhlIHZlcnNpb24uCiAjaWZkZWYgR1NUX0NIRUNLX1BMVUdJTlNfQkFTRV9WRVJTSU9O
CkBAIC0yMTIsOCArMjY3LDExIEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVy
bGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAjZWxzZQogICAgICAgICBnc3RfeF9vdmVybGF5X3Nl
dF94d2luZG93X2lkKEdTVF9YX09WRVJMQVkoc2luayksIG1fdmlkZW9XaW5kb3ctPnZpZGVvV2lu
ZG93SWQoKSk7CiAjZW5kaWYKKyNlbHNlCisgICAgICAgIGdzdF92aWRlb19vdmVybGF5X3NldF93
aW5kb3dfaGFuZGxlKEdTVF9WSURFT19PVkVSTEFZKHNpbmspLCBtX3ZpZGVvV2luZG93LT52aWRl
b1dpbmRvd0lkKCkpOworI2VuZGlmCiAgICAgfQogfQogCiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNl
bmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaAppbmRleCBkZmY0N2IwLi4yMjgw
NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyR1dvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCkBAIC0yMCw3ICsyMCw3IEBACiAKICNpZm5k
ZWYgR1N0cmVhbWVyR1dvcmxkX2gKICNkZWZpbmUgR1N0cmVhbWVyR1dvcmxkX2gKLSNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8x
KQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxM
U0NSRUVOX1ZJREVPKQogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+R1N0cmVhbWVyR1dv
cmxkKCk7CiAKICAgICBHc3RFbGVtZW50KiBwaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGlw
ZWxpbmU7IH0KKyAgICB2b2lkIHJlbW92ZVBsYXRmb3JtVmlkZW9TaW5rKCk7CiAKICAgICAvLyBS
ZXR1cm5zIHRoZSBmdWxsLXNjcmVlbiB3aW5kb3cgY3JlYXRlZAogICAgIGJvb2wgZW50ZXJGdWxs
c2NyZWVuKCk7CkBAIC02Nyw1ICs2OCw1IEBAIHByaXZhdGU6CiB9OwogCiB9Ci0jZW5kaWYgLy8g
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBkNjMyMTZiLi40ZTVkZmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjY4LDcg
KzI2OCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcigpCiAgICAgICAgIG1fbWVkaWFMb2NhdGlvbnMgPSAwOwogICAgIH0KIAotI2lm
bmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykK
ICAgICBpZiAobV92aWRlb1NpbmtCaW4pIHsKICAgICAgICAgZ3N0X29iamVjdF91bnJlZihtX3Zp
ZGVvU2lua0Jpbik7CiAgICAgICAgIG1fdmlkZW9TaW5rQmluID0gMDsKQEAgLTY2MCw2ICs2NjAs
MTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFZvbHVtZShmbG9hdCB2
b2x1bWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHZvbHVtZSkpOwogfQogCitmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZv
bHVtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXlCaW4pCisgICAgICAgIHJldHVybiAwOwor
CisgICAgcmV0dXJuIGdzdF9zdHJlYW1fdm9sdW1lX2dldF92b2x1bWUoR1NUX1NUUkVBTV9WT0xV
TUUobV9wbGF5QmluLmdldCgpKSwgR1NUX1NUUkVBTV9WT0xVTUVfRk9STUFUX0NVQklDKTsKK30K
Kwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVm9sdW1l
Q2hhbmdlKCkKIHsKICAgICBtX3ZvbHVtZVRpbWVySGFuZGxlciA9IDA7CkBAIC0xNTQyLDYgKzE1
NTAsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldE11dGVkKGJvb2wg
bXV0ZWQpCiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbi5nZXQoKSwgIm11dGUiLCBtdXRlZCwg
TlVMTCk7CiB9CiAKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptdXRlZCgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3BsYXlCaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGJvb2wgbXV0ZWQ7CisgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgIm11dGUiLCAm
bXV0ZWQsIE5VTEwpOworICAgIHJldHVybiBtdXRlZDsKK30KKwogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mTXV0ZSgpCiB7CiAgICAgbV9tdXRlVGltZXJI
YW5kbGVyID0gMDsKQEAgLTE3NDAsNiArMTc1OCwxOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmVudGVyRnVsbHNjcmVlbigpCit7CisgICAgLy8gVE9ETy4K
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmV4aXRGdWxsc2NyZWVuKCkK
K3sKKyAgICAvLyBUT0RPLgorfQorI2VuZGlmCisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogewogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAx
MDUwCkBAIC0xNzUzLDcgKzE3ODMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybU1l
ZGlhIHA7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NS
RUVOX1ZJREVPKQogICAgIHAudHlwZSA9IFBsYXRmb3JtTWVkaWE6OkdTdHJlYW1lckdXb3JsZFR5
cGU7CiAgICAgcC5tZWRpYS5nc3RyZWFtZXJHV29ybGQgPSBtX2dzdEdXb3JsZC5nZXQoKTsKICNl
bmRpZgpAQCAtMTg0MywxMCArMTg3Myw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAgICAvLyB3ZSBzaG91bGQgbm90IGFkb3B0LgogICAg
IG1fcGxheUJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZShnUGxheWJpbk5hbWUsICJwbGF5
Iik7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBtX2dzdEdXb3JsZCA9IEdTdHJl
YW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKG1fcGxheUJpbi5nZXQoKSk7Ci0jZW5kaWYKLQogICAg
IEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJ
TkUobV9wbGF5QmluLmdldCgpKSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5n
ZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCksICJtZXNzYWdlIiwgR19DQUxM
QkFDSyhtZWRpYVBsYXllclByaXZhdGVNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTE4NTks
NyArMTg4NSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQ
bGF5QmluKCkKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheUJpbi5nZXQoKSwgInZpZGVvLWNo
YW5nZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVZpZGVvQ2hhbmdlZENhbGxiYWNr
KSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX3BsYXlCaW4uZ2V0KCksICJhdWRpby1j
aGFuZ2VkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQorICAgIG1fZ3N0R1dvcmxkID0gR1N0cmVhbWVyR1dvcmxkOjpjcmVh
dGVHV29ybGQobV9wbGF5QmluLmdldCgpKTsKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtp
dFZpZGVvU2lua05ldyhtX2dzdEdXb3JsZC5nZXQoKSk7CiAjZWxzZQogICAgIG1fd2Via2l0Vmlk
ZW9TaW5rID0gd2Via2l0VmlkZW9TaW5rTmV3KCk7CkBAIC0xODY5LDE5ICsxODk2LDI0IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAgICBn
X3NpZ25hbF9jb25uZWN0KG1fd2Via2l0VmlkZW9TaW5rLCAicmVwYWludC1yZXF1ZXN0ZWQiLCBH
X0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayksIHRoaXMpOwogCiAK
LSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBtX3ZpZGVvU2lua0JpbiA9IGdzdF9iaW5f
bmV3KCJ2aWRlby1zaW5rIik7CisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAg
IC8vIEJ1aWxkIGEgbmV3IHZpZGVvIHNpbmsgY29uc2lzdGluZyBvZiBhIGJpbiBjb250YWluaW5n
IGEgdGVlCisgICAgLy8gKG1lYW50IHRvIGRpc3RyaWJ1dGUgZGF0YSB0byBtdWx0aXBsZSB2aWRl
byBzaW5rcykgYW5kIG91cgorICAgIC8vIGludGVybmFsIHZpZGVvIHNpbmsuIEZvciBmdWxsc2Ny
ZWVuIHdlIGNyZWF0ZSBhbiBhdXRvdmlkZW9zaW5rCisgICAgLy8gYW5kIGluaXRpYWxseSBibG9j
ayB0aGUgZGF0YSBmbG93IHRvd2FyZHMgaXQgYW5kIGNvbmZpZ3VyZSBpdAogCi0gICAgR3N0RWxl
bWVudCogdmlkZW9UZWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInRlZSIsICJ2aWRlb1Rl
ZSIpOwotICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJx
dWV1ZSIsIDApOworICAgIG1fdmlkZW9TaW5rQmluID0gZ3N0X2Jpbl9uZXcoInZpZGVvLXNpbmsi
KTsKIAogICAgIC8vIFRha2Ugb3duZXJzaGlwLgogICAgIGdzdF9vYmplY3RfcmVmX3NpbmsobV92
aWRlb1NpbmtCaW4pOwogCi0gICAgLy8gQnVpbGQgYSBuZXcgdmlkZW8gc2luayBjb25zaXN0aW5n
IG9mIGEgYmluIGNvbnRhaW5pbmcgYSB0ZWUKLSAgICAvLyAobWVhbnQgdG8gZGlzdHJpYnV0ZSBk
YXRhIHRvIG11bHRpcGxlIHZpZGVvIHNpbmtzKSBhbmQgb3VyCi0gICAgLy8gaW50ZXJuYWwgdmlk
ZW8gc2luay4gRm9yIGZ1bGxzY3JlZW4gd2UgY3JlYXRlIGFuIGF1dG92aWRlb3NpbmsKLSAgICAv
LyBhbmQgaW5pdGlhbGx5IGJsb2NrIHRoZSBkYXRhIGZsb3cgdG93YXJkcyBpdCBhbmQgY29uZmln
dXJlIGl0CisgICAgR3N0RWxlbWVudCogdmlkZW9UZWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoInRlZSIsICJ2aWRlb1RlZSIpOworICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsIDApOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
KyAgICBHUmVmUHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZCh2aWRlb1RlZSwgInNpbmsiKSk7CisgICAgR1NUX09CSkVDVF9GTEFHX1NFVChH
U1RfT0JKRUNUKHNpbmtQYWQuZ2V0KCkpLCBHU1RfUEFEX0ZMQUdfUFJPWFlfQUxMT0NBVElPTik7
CisjZW5kaWYKIAogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3ZpZGVvU2lua0Jpbiks
IHZpZGVvVGVlLCBxdWV1ZSwgTlVMTCk7CiAKQEAgLTE5MTAsNyArMTk0Miw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKIAogICAgICAgICAg
ICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKG1f
ZnBzU2luayksICJ2aWRlby1zaW5rIikpIHsKICAgICAgICAgICAgICAgICBnX29iamVjdF9zZXQo
bV9mcHNTaW5rLCAidmlkZW8tc2luayIsIG1fd2Via2l0VmlkZW9TaW5rLCBOVUxMKTsKLSNpZm5k
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAg
ICAgICAgICAgICAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTihtX3ZpZGVvU2lua0JpbiksIG1fZnBz
U2luayk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBhY3R1YWxWaWRlb1NpbmsgPSBtX2Zwc1Np
bms7CkBAIC0xOTIxLDcgKzE5NTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgfQogCiAgICAgaWYgKCFtX2Zwc1NpbmspIHsKLSNp
Zm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8p
CiAgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCBtX3dlYmtpdFZp
ZGVvU2luayk7CiAjZW5kaWYKICAgICAgICAgYWN0dWFsVmlkZW9TaW5rID0gbV93ZWJraXRWaWRl
b1Npbms7CkBAIC0xOTI5LDcgKzE5NjEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAKICAgICBBU1NFUlQoYWN0dWFsVmlkZW9TaW5rKTsK
IAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTykKICAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2luZy4KICAgICBnc3RfZWxlbWVudF9s
aW5rX3BhZHNfZnVsbChxdWV1ZSwgInNyYyIsIGFjdHVhbFZpZGVvU2luaywgInNpbmsiLCBHU1Rf
UEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAppbmRleCA3ZTVkYmY4Li43Mzk4ZTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zOSw2ICszOSwxMCBAQCB0eXBl
ZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVtZW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNpZmRlZiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3MKK2NsYXNzIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJDbGFzczsKKyNlbmRpZgorCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKQEAgLTc1LDExICs3OSwxMyBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKICAgICAgICAgICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCk7CiAK
ICAgICAgICAgICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICAgICAgICAgIGZsb2F0IHZv
bHVtZSgpIGNvbnN0OwogICAgICAgICAgICAgdm9pZCB2b2x1bWVDaGFuZ2VkKCk7CiAgICAgICAg
ICAgICB2b2lkIG5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlKCk7CiAKICAgICAgICAgICAgIGJv
b2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQgc2V0TXV0ZWQoYm9v
bCk7CisgICAgICAgICAgICBib29sIG11dGVkKCkgY29uc3Q7CiAgICAgICAgICAgICB2b2lkIG11
dGVDaGFuZ2VkKCk7CiAgICAgICAgICAgICB2b2lkIG5vdGlmeVBsYXllck9mTXV0ZSgpOwogCkBA
IC05Myw2ICs5OSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1Ymxp
YyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgZmxvYXQgbWF4VGlt
ZVNlZWthYmxlKCkgY29uc3Q7CiAgICAgICAgICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0OwogICAgICAgICAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNvbnN0OworICAgICAg
ICAgICAgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0OwogCiAgICAgICAgICAgICB2b2lkIHNl
dFZpc2libGUoYm9vbCk7CiAgICAgICAgICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
OwpAQCAtMTEwLDYgKzExNywxMiBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgICAgICAgICAgYm9v
bCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCisjaWYgVVNFKE5BVElWRV9GVUxM
U0NSRUVOX1ZJREVPKQorICAgICAgICAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAg
ICAgICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIGJvb2wgY2FuRW50ZXJG
dWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisKICAgICAgICAgICAg
IGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgICAgICAgICBQbGF0Zm9ybU1l
ZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKIApAQCAtMTI3LDYgKzE0MCw4IEBAIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UgewogCiAgICAgICAgICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxv
YWRUeXBlKCkgY29uc3Q7CiAKKyAgICAgICAgICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyOyB9CisKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAg
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciopOwogCkBAIC0xNDQs
NyArMTU5LDYgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICAgICAgICAgIHZvaWQgY2FjaGVEdXJh
dGlvbigpOwogICAgICAgICAgICAgdm9pZCB1cGRhdGVTdGF0ZXMoKTsKLSAgICAgICAgICAgIGZs
b2F0IG1heFRpbWVMb2FkZWQoKSBjb25zdDsKIAogICAgICAgICAgICAgdm9pZCBjcmVhdGVHU1RQ
bGF5QmluKCk7CiAgICAgICAgICAgICBib29sIGNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUg
c3RhdGUpOwpAQCAtMTkxLDggKzIwNSwxMSBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAg
IGJvb2wgbV9kZWxheWluZ0xvYWQ7CiAgICAgICAgICAgICBib29sIG1fbWVkaWFEdXJhdGlvbktu
b3duOwogICAgICAgICAgICAgbXV0YWJsZSBmbG9hdCBtX21heFRpbWVMb2FkZWRBdExhc3REaWRM
b2FkaW5nUHJvZ3Jlc3M7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICAgICAgUmVmUHRyPEdTdHJlYW1lckdXb3JsZD4g
bV9nc3RHV29ybGQ7CisjaWZkZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckNsYXNzCisgICAg
ICAgICAgICBPd25QdHI8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckNsYXNzPiBtX2Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI7CisjZW5kaWYKICNlbmRpZgogICAgICAgICAgICAgZ3VpbnQgbV92
b2x1bWVUaW1lckhhbmRsZXI7CiAgICAgICAgICAgICBndWludCBtX211dGVUaW1lckhhbmRsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
UGxhdGZvcm1WaWRlb1dpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAppbmRleCAyZjhkMzY1Li40YTFiYzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxh
dGZvcm1WaWRlb1dpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgKQEAgLTE5LDcgKzE5LDcgQEAKIAogI2lm
bmRlZiBQbGF0Zm9ybVZpZGVvV2luZG93X2gKICNkZWZpbmUgUGxhdGZvcm1WaWRlb1dpbmRvd19o
Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJ
X1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC02MSw1ICs2MSw1IEBAIGNsYXNzIFBsYXRmb3JtVmlkZW9X
aW5kb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVZpZGVvV2luZG93PiB7CiAgICAgfTsK
IH0KIAotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCmlu
ZGV4IGI4Mzg4MTEuLjBjMzU3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRv
d0d0ay5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogCkBAIC00OCw4ICs0OCw3IEBAIFBsYXRmb3JtVmlkZW9XaW5kb3c6
OlBsYXRmb3JtVmlkZW9XaW5kb3coKQogCiBQbGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxhdGZvcm1W
aWRlb1dpbmRvdygpCiB7Ci0gICAgaWYgKG1fdmlkZW9XaW5kb3cgJiYgbV93aW5kb3cpIHsKLSAg
ICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX3dpbmRvdyksIG1fdmlk
ZW9XaW5kb3cpOworICAgIGlmIChtX3ZpZGVvV2luZG93KSB7CiAgICAgICAgIGd0a193aWRnZXRf
ZGVzdHJveShtX3ZpZGVvV2luZG93KTsKICAgICAgICAgbV92aWRlb1dpbmRvdyA9IDA7CiAgICAg
fQpAQCAtNjUsNSArNjQsNSBAQCBQbGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dp
bmRvdygpCiB2b2lkIFBsYXRmb3JtVmlkZW9XaW5kb3c6OnByZXBhcmVGb3JPdmVybGF5KEdzdE1l
c3NhZ2UqKQogewogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Np
bmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggZDg1MjE4NC4uODhhNmNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RydWN0IF9X
ZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICNlbmRpZgog
Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKQogICAgIFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkOwogI2VuZGlmCiAK
QEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtS
ZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgICAgICByZXR1
cm4gR1NUX0ZMT1dfT0s7CiAgICAgfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIC8vIElnbm9yZSBidWZmZXJzIGlmIHRo
ZSB2aWRlbyBpcyBhbHJlYWR5IGluIGZ1bGxzY3JlZW4gdXNpbmcKICAgICAvLyBhbm90aGVyIHNp
bmsuCiAgICAgaWYgKHByaXYtPmdzdEdXb3JsZC0+aXNGdWxsc2NyZWVuKCkpIHsKQEAgLTQxOCw3
ICs0MTgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktp
dFZpZGVvU2lua0NsYXNzKiBrbGFzcykKIH0KIAogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogR3N0RWxlbWVudCogd2Via2l0Vmlk
ZW9TaW5rTmV3KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkKQogewogICAgIEdz
dEVsZW1lbnQqIGVsZW1lbnQgPSBHU1RfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
VklERU9fU0lOSywgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oCmluZGV4IDA2MWI2
OTQuLjhjZmQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKQEAgLTIyLDcgKzIy
LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIAotI2lmbmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICNpbmNs
dWRlICJHU3RyZWFtZXJHV29ybGQuaCIKICNlbmRpZgogCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVj
dCBfV2ViS2l0VmlkZW9TaW5rQ2xhc3MgewogCiBHVHlwZSB3ZWJraXRfdmlkZW9fc2lua19nZXRf
dHlwZSgpIEdfR05VQ19DT05TVDsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVT
RShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIEdzdEVsZW1lbnQqIHdlYmtpdFZpZGVvU2lua05l
dyhXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQqKTsKICNlbHNlCiBHc3RFbGVtZW50KiB3ZWJraXRW
aWRlb1NpbmtOZXcoKTsKLS0gCjEuNy4xMC40
</data>
<flag name="commit-queue"
          id="203740"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184866</attachid>
            <date>2013-01-26 07:37:35 -0800</date>
            <delta_ts>2013-01-26 08:05:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>43280</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4MTIyNzRmNTMxNmQ3ZmM4YmMxZmUwODczZWZlMzkwNWIwYzVkMDI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjA2OjUyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDk0ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgMTQ2ICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCB8ICAg
NzMgKysrKysrKysrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
ICAgICAgICAgfCAgMTE2ICsrKysrKysrKysrKy0tLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAgNSArLQogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDY4ICsrKysrKy0tLQogLi4uL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgfCAgIDIxICsrLQog
Li4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggICAgICAgfCAgICA0
ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwICB8
ICAgIDcgKy0KIC4uLi9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCAgICAg
ICAgIHwgICAgMyArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
UXQuY3BwICAgfCAgICA0ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJl
YW1lci5jcHAgICAgICB8ICAgIDYgKy0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5r
R1N0cmVhbWVyLmggICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgfCAgICAyICstCiAuLi4vV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcCB8ICAgIDIgKy0KIC4uLi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaCAgIHwgICAgMiArLQogMTggZmlsZXMgY2hh
bmdlZCwgNDkyIGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA2YzBiNy4uZDFmNjAzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk3IEBACisyMDEzLTAxLTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBVU0UoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gaW4g
dGhlIEdTdHJlYW1lciBtZWRpYQorICAgICAgICBwbGF5ZXIuIEEgbmV3IEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHU3RyZWFtZXIgY2xhc3MgaXMKKyAgICAgICAgaW50cm9kdWNlZCwgcG9ydHMg
aW50ZXJlc3RlZCB0byBpbXBsZW1lbnQgbmF0aXZlIGZ1bGxzY3JlZW4gdmlkZW8KKyAgICAgICAg
c3VwcG9ydCBzaG91bGQgaW5oZXJpdCBmcm9tIGl0IChzZWUgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0aykKKyAgICAgICAgYW5kIGhvb2sgaXQgaW4gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciBiYWNrZW5kLgorCisgICAgICAgIFRoZSBHU3RyZWFtZXJHV29ybGQgcG9ydCB0byBH
U3RyZWFtZXIgMS54IGlzIHBhcnRseSBiYXNlZCBvbiBhCisgICAgICAgIHBhdGNoIGJ5IFNlYmFz
dGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9nZUBjb2xsYWJvcmEuY29tPi4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOiBFbmFibGUgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydC4K
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBOZXcKKyAgICAgICAgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcntHU3RyZWFtZXIsR3RrfSBtb2R1bGVzLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXllclZv
bHVtZUNoYW5nZWRDYWxsYmFjayk6IFBsYXliaW4gbm90aWZ5Ojp2b2x1bWUKKyAgICAgICAgc2ln
bmFsIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6cGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFj
ayk6IFBsYXliaW4gbm90aWZ5OjptdXRlIHNpZ25hbCBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNv
cmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZW50
ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgU3dpdGNoIEdTdHJlYW1lckdXb3JsZCB0byBmdWxsIHNj
cmVlbiwgaG9vayBpbiB0byBwbGF5YmluJ3MKKyAgICAgICAgbm90aWZ5Ojp2b2x1bWUgYW5kIG11
dGUgc2lnbmFscyBhbmQgaW5pdGlhbGl6ZSB0aGUgZnVsbCBzY3JlZW4gd2luZG93LgorICAgICAg
ICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdEZ1bGxz
Y3JlZW4pOgorICAgICAgICBEZXN0cm95IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3csIGRpc2Nvbm5l
Y3QgZnJvbSBwbGF5YmluIHNpZ25hbHMKKyAgICAgICAgYW5kIHN3aXRjaCBHU3RyZWFtZXJHV29y
bGQgb3V0IG9mIGZ1bGwgc2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdE9uVXNlclJlcXVlc3QpOgorICAgICAgICBUcmlnZ2Vy
IGV4aXQgZnJvbSBmdWxsIHNjcmVlbiBtb2RlLiBUaGlzIG1ldGhvZCBpcyBtZWFudCB0byBiZQor
ICAgICAgICBjYWxsZWQgd2hlbiB0aGUgdXNlciBleHBsaWNpdGVseSByZXF1ZXN0cyB0byBleGl0
IGZyb20gZnVsbCBzY3JlZW4KKyAgICAgICAgYnkgcHJlc3NpbmcgYSBrZXkgb3Igc29tZXRoaW5n
IHNpbWlsYXIuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjp0b2dnbGVQbGF5KTogU3dpdGNoCisgICAgICAgIGJldHdlZW4gcGxheSBhbmQgcGF1
c2Ugc3RhdGVzLiBVc2VmdWwgZm9yIGNoaWxkIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbmNyZWFzZVZvbHVtZSk6CisgICAg
ICAgIFVzZWZ1bCBmb3IgY2hpbGQgY2xhc3NlcyBhcyB3ZWxsLgorICAgICAgICAoV2ViQ29yZTo6
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZGVjcmVhc2VWb2x1bWUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6
OnNldFZvbHVtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6dGltZVRvU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6cGxheVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIFRvIGJlIGltcGxl
bWVudGVkIGJ5IGNoaWxkIGNsYXNzIHRvIHJlZmxlY3QgdGhlIHBsYXllcidzIHN0YXRlIGNoYW5n
ZWQuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
Ojp2b2x1bWVDaGFuZ2VkKTogVG8KKyAgICAgICAgYmUgaW1wbGVtZW50ZWQgYnkgY2hpbGQgY2xh
c3MgYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXI6Om11dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbml0aWFsaXplV2luZG93KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpkZXN0
cm95V2luZG93KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckdXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnc3RHV29ybGRTeW5jTWVz
c2FnZUNhbGxiYWNrKTogQWRhcHQgZm9yIEdTdHJlYW1lciB2aWRlbworICAgICAgICBvdmVybGF5
IEFQSSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFt
ZXJHV29ybGQpOgorICAgICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIgdGFrZXMgb25lIG1v
cmUgYXJndW1lbnQgaW4gR1N0cmVhbWVyIDEueC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
ckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKTogZmZtcGVnY29sb3JzcGFjZSB3YXMKKyAgICAgICAg
cmVuYW1lZCB0byB2aWRlb2NvbnZlcnQgaW4gR1N0cmVhbWVyIDEueCBhbmQgdGhlIHRlZSBzcmMg
cGFkCisgICAgICAgIHRlbXBsYXRlIHdhcyByZW5hbWVkIHRvIHNyY18ldS4gVGhlcmUgaXMgbm8g
bmVlZCB0byBzZW5kIGEgbmV3CisgICAgICAgIHNlZ21lbnQgcXVlcnkgZWl0aGVyLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpnc3RHV29ybGRQYWRQcm9iZUNhbGxiYWNr
KTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSB2aWRlbworICAgICAgICBzaW5rIGJyYW5jaCBvbmNlIHRo
ZSB0ZWUgc291cmNlIHBhZCBzdGFydGluZyBpdCBoYXMgYmVlbiBibG9ja2VkLgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbik6IFJlZmFjdG9yIHRvIHVz
ZSBhbgorICAgICAgICBhc3luY2hyb25vdXMgcGFkIHByb2JlLgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyR1dvcmxkOjpyZW1vdmVQbGF0Zm9ybVZpZGVvU2luayk6IFJlZmFjdG9yZWQKKyAg
ICAgICAgZnJvbSBleGl0RnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdX
b3JsZDo6c2V0V2luZG93T3ZlcmxheSk6IEFkYXB0IGZvciBHU3RyZWFtZXIgdmlkZW8KKyAgICAg
ICAgb3ZlcmxheSBBUEkgY2hhbmdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAgIChHU3RyZWFtZXJHV29ybGQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgSG9vayBOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTyBzdXBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjp2b2x1bWUpOiBQbGF5YmluIHZvbHVtZQorICAgICAgICBxdWVyeSB1c2Vk
IGJ5IHRoZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIpOiB2b2x1bWUoKSwgbXV0ZWQoKSBhbmQgTWVkaWFQbGF5ZXIKKyAgICAgICAg
YWNjZXNzb3IgbWV0aG9kcyBhZGRlZC4gTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gbWV0aG9kcyBh
ZGRlZCBhcyB3ZWxsLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjYW5FbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjptZWRpYVBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaDogUmUtZW5hYmxlCisgICAgICAgIG1v
ZHVsZSBpZiBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTyBpcyB0dXJuZWQgb24uCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0
cmVhbWVyLmNwcDogUmUtZW5hYmxlCisgICAgICAgIEdTdHJlYW1lckdXb3JsZCBzdXBwb3J0Lgor
ICAgICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGUpOgorICAgICAgICAod2Via2l0VmlkZW9T
aW5rUmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyLmg6IERpdHRvLgorCiAyMDEzLTAxLTI2ICBKdXN0aW4gU2NodWggIDxqc2No
dWhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDSFJPTUlVTV0gU3VwcHJlc3MgbW9yZSBjNDI2
NyBidWlsZCB3YXJuaW5ncyBmb3IgV2luNjQgdGFyZ2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCA5NWEyM2VkLi4wMjJlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3
IEBAIGlmIFVTRV9HU1RSRUFNRVIKIGlmIEVOQUJMRV9ERUJVRwogd2ViY29yZV9jcHBmbGFncyAr
PSAtREdTVF9ESVNBQkxFX0RFUFJFQ0FURUQKIGVuZGlmICMgRU5EIEVOQUJMRV9ERUJVRword2Vi
Y29yZV9jcHBmbGFncyArPSAtRFdURl9VU0VfTkFUSVZFX0ZVTExTQ1JFRU5fVklERU89MQogZW5k
aWYgIyBFTkQgVVNFX0dTVFJFQU1FUgogZWxzZQogZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyAr
PSBFTkFCTEVfVklERU89MCBFTkFCTEVfVklERU9fVFJBQ0s9MApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggM2Q2ZTIzMS4uOTJlOTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC02MDU3LDYgKzYwNTcsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3Js
ZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXJDYWlyby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYzMGFlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5j
cHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisKKyNpbmNs
dWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlICJH
U3RyZWFtZXJHV29ybGQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKyNkZWZpbmUgVk9MVU1FX1VQX09GRlNFVCAwLjA1
IC8vIDUlCisjZGVmaW5lIFZPTFVNRV9ET1dOX09GRlNFVCAwLjA1IC8vIDUlCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAq
ZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIqIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxlci0+dm9sdW1lQ2hhbmdlZCgpOwor
fQorCit2b2lkIHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1Bh
cmFtU3BlYyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIqIGNvbnRy
b2xsZXIpCit7CisgICAgY29udHJvbGxlci0+bXV0ZUNoYW5nZWQoKTsKK30KKworCitGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQorICAgIDogbV9wbGF5
ZXIocGxheWVyKQorICAgICwgbV9jbGllbnQocGxheWVyLT5tZWRpYVBsYXllcigpLT5tZWRpYVBs
YXllckNsaWVudCgpKQorICAgICwgbV9nc3RyZWFtZXJHV29ybGQocGxheWVyLT5wbGF0Zm9ybU1l
ZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkKQorICAgICwgbV9wbGF5ZXJWb2x1bWVTaWduYWxI
YW5kbGVyKDApCisgICAgLCBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyKDApCit7Cit9CisKK0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyKCkKK3sKKyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmVudGVyRnVsbHNjcmVlbigpCit7CisgICAg
aWYgKCFtX2dzdHJlYW1lckdXb3JsZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2dz
dHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7Cisg
ICAgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChwaXBlbGlu
ZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29u
bmVjdChwaXBlbGluZSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0socGxheWVyTXV0ZUNoYW5n
ZWRDYWxsYmFjayksIHRoaXMpOworCisgICAgaW5pdGlhbGl6ZVdpbmRvdygpOworfQorCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRGdWxsc2NyZWVuKCkKK3sK
KyAgICBkZXN0cm95V2luZG93KCk7CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fZ3N0
cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIGlmIChtX3BsYXllclZvbHVtZVNpZ25hbEhh
bmRsZXIpIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHBpcGVsaW5lLCBt
X3BsYXllclZvbHVtZVNpZ25hbEhhbmRsZXIpOworICAgICAgICBtX3BsYXllclZvbHVtZVNpZ25h
bEhhbmRsZXIgPSAwOworICAgIH0KKworICAgIGlmIChtX3BsYXllck11dGVTaWduYWxIYW5kbGVy
KSB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwaXBlbGluZSwgbV9wbGF5
ZXJNdXRlU2lnbmFsSGFuZGxlcik7CisgICAgICAgIG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIg
PSAwOworICAgIH0KKworICAgIG1fZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVsbHNjcmVlbigpOwor
fQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRPblVzZXJS
ZXF1ZXN0KCkKK3sKKyAgICBtX2NsaWVudC0+bWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwor
fQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRvZ2dsZVBsYXko
KQoreworICAgIGlmIChtX2NsaWVudC0+bWVkaWFQbGF5ZXJJc1BhdXNlZCgpKQorICAgICAgICBt
X2NsaWVudC0+bWVkaWFQbGF5ZXJQbGF5KCk7CisgICAgZWxzZQorICAgICAgICBtX2NsaWVudC0+
bWVkaWFQbGF5ZXJQYXVzZSgpOworICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbmNyZWFzZVZvbHVtZSgpCit7Cisg
ICAgc2V0Vm9sdW1lKG1fcGxheWVyLT52b2x1bWUoKSArIFZPTFVNRV9VUF9PRkZTRVQpOworfQor
Cit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmRlY3JlYXNlVm9sdW1l
KCkKK3sKKyAgICBzZXRWb2x1bWUobV9wbGF5ZXItPnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZG
U0VUKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpzZXRW
b2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4g
MS4wKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsYXllci0+c2V0Vm9sdW1lKHZvbHVtZSk7
Cit9CisKK1N0cmluZyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0aW1lVG9T
dHJpbmcoZmxvYXQgdGltZSkKK3sKKyAgICBpZiAoIWlzZmluaXRlKHRpbWUpKQorICAgICAgICB0
aW1lID0gMDsKKyAgICBpbnQgc2Vjb25kcyA9IGZhYnNmKHRpbWUpOworICAgIGludCBob3VycyA9
IHNlY29uZHMgLyAoNjAgKiA2MCk7CisgICAgaW50IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAl
IDYwOworICAgIHNlY29uZHMgJT0gNjA7CisKKyAgICBpZiAoaG91cnMpIHsKKyAgICAgICAgaWYg
KGhvdXJzID4gOSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUw
MmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMp
OworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAxZDolMDJkOiUwMmQiLCAodGlt
ZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDog
IiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWMxYzc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaApAQCAtMCwwICsxLDczIEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCisjZGVmaW5lIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1N0cmVhbWVyR1dv
cmxkOworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOworY2xhc3MgTWVkaWFQbGF5
ZXJDbGllbnQ7CisKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFt
ZXIpOworcHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CisgICAgdmlydHVhbCB+RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcigpOworCisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKKyAg
ICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBleGl0T25Vc2VyUmVxdWVzdCgpOwor
CisgICAgdm9pZCB0b2dnbGVQbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXlTdGF0ZUNoYW5n
ZWQoKSB7IH0KKworICAgIHZvaWQgaW5jcmVhc2VWb2x1bWUoKTsKKyAgICB2b2lkIGRlY3JlYXNl
Vm9sdW1lKCk7CisgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOworCisgICAgdmlydHVhbCB2b2lk
IHZvbHVtZUNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNoYW5nZWQoKSB7IH0K
KworcHJvdGVjdGVkOgorICAgIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSk7CisKKyAg
ICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIG1fcGxheWVyOworICAgIE1lZGlhUGxheWVy
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBHU3RyZWFtZXJHV29ybGQqIG1fZ3N0cmVhbWVyR1dvcmxk
OworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2luZG93KCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lXaW5kb3coKSB7IH0KKworICAgIHVuc2lnbmVkIGxvbmcg
bV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV9wbGF5ZXJN
dXRlU2lnbmFsSGFuZGxlcjsKK307CisKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCmlu
ZGV4IGU2YjkwOGUuLmIxZGJiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCkBAIC0x
OCwxNSArMTgsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJH
U3RyZWFtZXJHV29ybGQuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYm
ICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRlICJH
UmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgog
I2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KIAorI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvb3ZlcmxheS5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgorI2VuZGlmCisKKwogI2lmIFBMQVRGT1JNKEdU
SykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKQEAgLTM0
LDYgKzQyLDEyIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CitzdGF0aWMgY29uc3QgY2hhciogZ1ZpZGVvQ29udmVydE5hbWUgPSAiZmZtcGVnY29sb3JzcGFj
ZSI7CisjZWxzZQorc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnROYW1lID0gInZpZGVv
Y29udmVydCI7CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDMsMTEgKzU3LDE2IEBAIGdib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdl
Q2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0CiAgICAg
QVNTRVJUKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0VfRUxFTUVOVCk7
CiAKICAgICBHU3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCA9IHN0YXRpY19jYXN0PEdTdHJlYW1l
ckdXb3JsZCo+KGRhdGEpOworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGNvbnN0IEdz
dFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdl
KTsKIAogICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgInByZXBhcmUt
eHdpbmRvdy1pZCIpCiAgICAgICAgIHx8IGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJl
LCAiaGF2ZS1ucy12aWV3IikpCiAgICAgICAgIGdzdEdXb3JsZC0+c2V0V2luZG93T3ZlcmxheSht
ZXNzYWdlKTsKKyNlbHNlCisgICAgaWYgKGdzdF9pc192aWRlb19vdmVybGF5X3ByZXBhcmVfd2lu
ZG93X2hhbmRsZV9tZXNzYWdlKG1lc3NhZ2UpKQorICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRv
d092ZXJsYXkobWVzc2FnZSk7CisjZW5kaWYKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtNjEs
NyArODAsMTEgQEAgR1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQoR3N0RWxlbWVudCog
cGlwZWxpbmUpCiB7CiAgICAgLy8gWE92ZXJsYXkgbWVzc2FnZXMgbmVlZCB0byBiZSBoYW5kbGVk
IHN5bmNocm9ub3VzbHkuCiAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IHdlYmtpdEdzdFBpcGVs
aW5lR2V0QnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSk7CisjaWZuZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19z
eW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzKTsKKyNlbHNlCisgICAgZ3N0X2J1c19zZXRfc3luY19o
YW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzLCAwKTsK
KyNlbmRpZgogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjpl
bGVtZW50IiwgR19DQUxMQkFDSyhnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7
CiB9CiAKQEAgLTgxLDcgKzEwNCw3IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxz
Y3JlZW4oKQogICAgICAgICBtX3ZpZGVvV2luZG93ID0gUGxhdGZvcm1WaWRlb1dpbmRvdzo6Y3Jl
YXRlV2luZG93KCk7CiAKICAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwbGF0Zm9ybVZpZGVvU2luayIp
OwotICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2Uo
ImZmbXBlZ2NvbG9yc3BhY2UiLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQqIGNvbG9y
c3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoZ1ZpZGVvQ29udmVydE5hbWUsICJjb2xv
cnNwYWNlIik7CiAgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoInF1ZXVlIiwgInF1ZXVlIik7CiAgICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgidmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxlIik7CiAKQEAgLTk0
LDcgKzExNyw2IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQogCiAg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFt
ZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKIAotICAgIC8vIEFkZCBh
bmQgbGluayBhIHF1ZXVlLCBmZm1wZWdjb2xvcnNwYWNlLCB2aWRlb3NjYWxlIGFuZCBzaW5rIGlu
IHRoZSBiaW4uCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKHZpZGVvU2luay5nZXQoKSks
IHBsYXRmb3JtVmlkZW9TaW5rLCB2aWRlb1NjYWxlLCBjb2xvcnNwYWNlLCBxdWV1ZSwgTlVMTCk7
CiAKICAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2luZy4KQEAgLTEwMyw3ICsxMjUsMTEgQEAg
Ym9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgZ3N0X2VsZW1lbnRf
bGlua19wYWRzX2Z1bGwodmlkZW9TY2FsZSwgInNyYyIsIHBsYXRmb3JtVmlkZW9TaW5rLCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKIAogICAgIC8vIExpbmsgYSBuZXcgc3Jj
IHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBH
UmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0
X3BhZCh0ZWUuZ2V0KCksICJzcmMlZCIpKTsKKyNlbHNlCisgICAgR1JlZlB0cjxHc3RQYWQ+IHNy
Y1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQodGVlLmdldCgpLCAi
c3JjXyV1IikpOworI2VuZGlmCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIikpOwogICAgIGdzdF9w
YWRfbGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOwogCkBAIC0xMjEsOSArMTQ3LDkg
QEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKGNvbG9yc3BhY2UsIHN0YXRlKTsKICAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUocXVldWUsIHN0YXRlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIC8vIFF1
ZXJ5IHRoZSBjdXJyZW50IG1lZGlhIHNlZ21lbnQgaW5mb3JtYXRpb25zIGFuZCBzZW5kIHRoZW0g
dG93YXJkcwogICAgIC8vIHRoZSBuZXcgdGVlIGJyYW5jaCBkb3duc3RyZWFtLgotCiAgICAgR3N0
UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWdtZW50KEdTVF9GT1JNQVRfVElNRSk7CiAg
ICAgZ2Jvb2xlYW4gcXVlcnlSZXN1bHQgPSBnc3RfZWxlbWVudF9xdWVyeShtX3BpcGVsaW5lLCBx
dWVyeSk7CiAKQEAgLTEzMiw4ICsxNTgsOCBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJG
dWxsc2NyZWVuKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgR3N0Rm9ybWF0
IGZvcm1hdDsKICAgICBnaW50NjQgcG9zaXRpb247CisgICAgR3N0Rm9ybWF0IGZvcm1hdDsKICAg
ICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKG1fcGlwZWxpbmUsICZmb3JtYXQsICZw
b3NpdGlvbikpCiAgICAgICAgIHBvc2l0aW9uID0gMDsKIApAQCAtMTQ1LDIwICsxNzEsNTUgQEAg
Ym9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgZ3N0X3BhZF9wdXNo
X2V2ZW50KHNyY1BhZC5nZXQoKSwgZXZlbnQpOwogCiAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5
KTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9O
XzEKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBnc3RHV29ybGRQYWRQcm9iZUNhbGxiYWNrKEdz
dFBhZCogcGFkLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIEdTdHJlYW1lckdXb3JsZCogZ3N0R1dv
cmxkKQoreworICAgIGdzdEdXb3JsZC0+cmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKKyAgICBy
ZXR1cm4gR1NUX1BBRF9QUk9CRV9SRU1PVkU7Cit9CisjZW5kaWYKKwogdm9pZCBHU3RyZWFtZXJH
V29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoIW1fZHluYW1pY1BhZE5hbWUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIC8vIEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIGVsZW1l
bnRzIHRvIHJlbW92ZS4KLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2luazsKICAgICBH
c3RFbGVtZW50KiBzaW5rUHRyID0gMDsKKyAgICBnX29iamVjdF9nZXQobV9waXBlbGluZSwgInZp
ZGVvLXNpbmsiLCAmc2lua1B0ciwgTlVMTCk7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRl
b1NpbmsgPSBhZG9wdEdSZWYoc2lua1B0cik7CiAKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHRl
ZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgp
KSwgInZpZGVvVGVlIikpOworICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYo
Z3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFtaWNQYWROYW1lLmdl
dCgpKSk7CisKKyAgICAvLyBCbG9jayBkYXRhIGZsb3cgdG93YXJkcyB0aGUgcGlwZWxpbmUgYnJh
bmNoIHRvIHJlbW92ZS4gTm8gbmVlZAorICAgIC8vIGZvciBwYWQgYmxvY2tpbmcgaWYgdGhlIHBp
cGVsaW5lIGlzIHBhdXNlZC4KKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBnc3RfZWxlbWVudF9n
ZXRfc3RhdGUobV9waXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQorICAgIGlmIChzdGF0ZSA+PSBHU1RfU1RBVEVfUExBWUlORykKKyAgICAgICAgZ3N0X3Bh
ZF9hZGRfcHJvYmUoc3JjUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfSURMRSwgcmVpbnRl
cnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxiYWNrPihnc3RHV29ybGRQYWRQcm9iZUNhbGxiYWNr
KSwgdGhpcywgMCk7CisgICAgZWxzZQorI2Vsc2UKKyAgICBpZiAoc3RhdGUgPCBHU1RfU1RBVEVf
UExBWUlORyB8fCBnc3RfcGFkX3NldF9ibG9ja2VkKHNyY1BhZC5nZXQoKSwgdHJ1ZSkpCisjZW5k
aWYKKyAgICAgICAgcmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKKworICAgIG1fdmlkZW9XaW5k
b3cgPSAwOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxhdGZvcm1WaWRlb1Np
bmsoKQoreworICAgIGlmICghbV9keW5hbWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgorICAg
IEdzdEVsZW1lbnQqIHNpbmtQdHIgPSAwOwogICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLCAi
dmlkZW8tc2luayIsICZzaW5rUHRyLCBOVUxMKTsKLSAgICB2aWRlb1NpbmsgPSBhZG9wdEdSZWYo
c2lua1B0cik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRlb1NpbmsgPSBhZG9wdEdSZWYo
c2lua1B0cik7CiAKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHRlZSA9IGFkb3B0R1JlZihnc3Rf
YmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIikpOwog
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gcGxhdGZvcm1WaWRlb1NpbmsgPSBhZG9wdEdSZWYoZ3N0
X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJwbGF0Zm9ybVZpZGVv
U2luayIpKTsKQEAgLTE2NiwyOCArMjI3LDE3IEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0
RnVsbHNjcmVlbigpCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBjb2xvcnNwYWNlID0gYWRvcHRH
UmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAiY29sb3Jz
cGFjZSIpKTsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2NhbGUgPSBhZG9wdEdSZWYo
Z3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1NjYWxl
IikpOwogCi0gICAgLy8gR2V0IHBhZHMgdG8gdW5saW5rIGFuZCByZW1vdmUuCiAgICAgR1JlZlB0
cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh0
ZWUuZ2V0KCksIG1fZHluYW1pY1BhZE5hbWUuZ2V0KCkpKTsKICAgICBHUmVmUHRyPEdzdFBhZD4g
c2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1ZS5nZXQo
KSwgInNpbmsiKSk7CisgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLmdldCgpLCBzaW5rUGFkLmdl
dCgpKTsKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKHRlZS5nZXQoKSwgc3Jj
UGFkLmdldCgpKTsKIAotICAgIC8vIEJsb2NrIGRhdGEgZmxvdyB0b3dhcmRzIHRoZSBwaXBlbGlu
ZSBicmFuY2ggdG8gcmVtb3ZlLiBObyBuZWVkCi0gICAgLy8gZm9yIHBhZCBibG9ja2luZyBpZiB0
aGUgcGlwZWxpbmUgaXMgcGF1c2VkLgotICAgIEdzdFN0YXRlIHN0YXRlOwotICAgIGdzdF9lbGVt
ZW50X2dldF9zdGF0ZShtX3BpcGVsaW5lLCAmc3RhdGUsIDAsIDApOwotICAgIGlmIChzdGF0ZSA8
IEdTVF9TVEFURV9QTEFZSU5HIHx8IGdzdF9wYWRfc2V0X2Jsb2NrZWQoc3JjUGFkLmdldCgpLCB0
cnVlKSkgewotCi0gICAgICAgIC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBhZC4KLSAg
ICAgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLmdldCgpLCBzaW5rUGFkLmdldCgpKTsKLSAgICAg
ICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksIHNyY1BhZC5nZXQo
KSk7Ci0KLSAgICAgICAgLy8gVW5saW5rLCByZW1vdmUgYW5kIGNsZWFudXAgcXVldWUsIGZmbXBl
Z2NvbG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5kIHNpbmsuCi0gICAgICAgIGdzdF9lbGVtZW50X3Vu
bGlua19tYW55KHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgpLCB2aWRlb1NjYWxlLmdldCgp
LCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7Ci0gICAgICAgIGdzdF9iaW5fcmVtb3Zl
X21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZS5nZXQoKSwgY29sb3JzcGFjZS5n
ZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIE5VTEwpOwot
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIEdT
VF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHZpZGVvU2NhbGUu
Z2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNv
bG9yc3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKHF1ZXVlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgfQorICAgIGdzdF9lbGVt
ZW50X3VubGlua19tYW55KHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgpLCB2aWRlb1NjYWxl
LmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7CisgICAgZ3N0X2Jpbl9yZW1v
dmVfbWFueShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksIHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNl
LmdldCgpLCB2aWRlb1NjYWxlLmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7
CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5rLmdldCgpLCBHU1Rf
U1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHZpZGVvU2NhbGUuZ2V0KCks
IEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3JzcGFjZS5n
ZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZS5n
ZXQoKSwgR1NUX1NUQVRFX05VTEwpOwogCiAgICAgbV9keW5hbWljUGFkTmFtZS5jbGVhcigpOwog
fQpAQCAtMTk2LDcgKzI0NiwxMSBAQCB2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3Zl
cmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewogICAgIEdzdE9iamVjdCogc2luayA9IEdTVF9N
RVNTQUdFX1NSQyhtZXNzYWdlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGlm
ICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyNlbHNlCisgICAgaWYgKCFHU1RfSVNfVklERU9f
T1ZFUkxBWShzaW5rKSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZ19vYmpl
Y3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1Moc2luayksICJmb3JjZS1h
c3BlY3QtcmF0aW8iKSkKQEAgLTIwNSw2ICsyNTksNyBAQCB2b2lkIEdTdHJlYW1lckdXb3JsZDo6
c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIGlmIChtX3ZpZGVvV2lu
ZG93KSB7CiAgICAgICAgIG1fdmlkZW9XaW5kb3ctPnByZXBhcmVGb3JPdmVybGF5KG1lc3NhZ2Up
OwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAvLyBnc3RfeF9vdmVybGF5X3NldF93aW5k
b3dfaGFuZGxlIHdhcyBpbnRyb2R1Y2VkIGluIC1wbHVnaW5zLWJhc2UKIC8vIDAuMTAuMzEsIGp1
c3QgbGlrZSB0aGUgbWFjcm8gZm9yIGNoZWNraW5nIHRoZSB2ZXJzaW9uLgogI2lmZGVmIEdTVF9D
SEVDS19QTFVHSU5TX0JBU0VfVkVSU0lPTgpAQCAtMjEyLDggKzI2NywxMSBAQCB2b2lkIEdTdHJl
YW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogI2Vsc2UK
ICAgICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZChHU1RfWF9PVkVSTEFZKHNpbmsp
LCBtX3ZpZGVvV2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwogI2VuZGlmCisjZWxzZQorICAgICAg
ICBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZShHU1RfVklERU9fT1ZFUkxBWShz
aW5rKSwgbV92aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKKyNlbmRpZgogICAgIH0KIH0K
IAogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmlu
ZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dv
cmxkLmgKaW5kZXggZGZmNDdiMC4uMjI4MDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaApA
QCAtMjAsNyArMjAsNyBAQAogCiAjaWZuZGVmIEdTdHJlYW1lckdXb3JsZF9oCiAjZGVmaW5lIEdT
dHJlYW1lckdXb3JsZF9oCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAh
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDksNiArNDksNyBAQCBw
dWJsaWM6CiAgICAgfkdTdHJlYW1lckdXb3JsZCgpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxp
bmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lOyB9CisgICAgdm9pZCByZW1vdmVQbGF0Zm9y
bVZpZGVvU2luaygpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgZnVsbC1zY3JlZW4gd2luZG93IGNy
ZWF0ZWQKICAgICBib29sIGVudGVyRnVsbHNjcmVlbigpOwpAQCAtNjcsNSArNjgsNSBAQCBwcml2
YXRlOgogfTsKIAogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
ZDYzMjE2Yi4uNGU1ZGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBtX21lZGlhTG9j
YXRpb25zID0gMDsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgaWYgKG1fdmlkZW9TaW5rQmluKSB7CiAgICAg
ICAgIGdzdF9vYmplY3RfdW5yZWYobV92aWRlb1NpbmtCaW4pOwogICAgICAgICBtX3ZpZGVvU2lu
a0JpbiA9IDA7CkBAIC02NjAsNiArNjYwLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPih2b2x1bWUpKTsKIH0KIAorZmxvYXQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2b2x1bWUoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5
QmluKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBnc3Rfc3RyZWFtX3ZvbHVtZV9n
ZXRfdm9sdW1lKEdTVF9TVFJFQU1fVk9MVU1FKG1fcGxheUJpbi5nZXQoKSksIEdTVF9TVFJFQU1f
Vk9MVU1FX0ZPUk1BVF9DVUJJQyk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZlZvbHVtZUNoYW5nZSgpCiB7CiAgICAgbV92b2x1bWVUaW1lckhh
bmRsZXIgPSAwOwpAQCAtMTU0Miw2ICsxNTUwLDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRNdXRlZChib29sIG11dGVkKQogICAgIGdfb2JqZWN0X3NldChtX3BsYXlC
aW4uZ2V0KCksICJtdXRlIiwgbXV0ZWQsIE5VTEwpOwogfQogCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bXV0ZWQoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5QmluKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIG11dGVkOworICAgIGdfb2JqZWN0X2dldCht
X3BsYXlCaW4uZ2V0KCksICJtdXRlIiwgJm11dGVkLCBOVUxMKTsKKyAgICByZXR1cm4gbXV0ZWQ7
Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZk11
dGUoKQogewogICAgIG1fbXV0ZVRpbWVySGFuZGxlciA9IDA7CkBAIC0xNzQwLDYgKzE3NTgsMTgg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjplbnRlckZ1bGxz
Y3JlZW4oKQoreworICAgIC8vIFRPRE8uCit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgLy8gVE9ETy4KK30KKyNlbmRpZgorCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29u
c3QKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MApAQCAtMTc1Myw3ICsxNzgzLDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiBQ
bGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxhdGZvcm1NZWRpYSgp
IGNvbnN0CiB7CiAgICAgUGxhdGZvcm1NZWRpYSBwOwotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBwLnR5cGUgPSBQbGF0Zm9y
bU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlOwogICAgIHAubWVkaWEuZ3N0cmVhbWVyR1dvcmxk
ID0gbV9nc3RHV29ybGQuZ2V0KCk7CiAjZW5kaWYKQEAgLTE4NDMsMTAgKzE4NzMsNiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgLy8g
d2Ugc2hvdWxkIG5vdCBhZG9wdC4KICAgICBtX3BsYXlCaW4gPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoZ1BsYXliaW5OYW1lLCAicGxheSIpOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
Ci0gICAgbV9nc3RHV29ybGQgPSBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChtX3BsYXlC
aW4uZ2V0KCkpOwotI2VuZGlmCi0KICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gd2Via2l0R3N0
UGlwZWxpbmVHZXRCdXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpOwogICAgIGdzdF9i
dXNfYWRkX3NpZ25hbF93YXRjaChidXMuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVz
LmdldCgpLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlTWVzc2FnZUNh
bGxiYWNrKSwgdGhpcyk7CkBAIC0xODU5LDcgKzE4ODUsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVjdCht
X3BsYXlCaW4uZ2V0KCksICJ2aWRlby1jaGFuZ2VkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclBy
aXZhdGVWaWRlb0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9wbGF5QmluLmdldCgpLCAiYXVkaW8tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQ
cml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKIAotI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBtX2dzdEdXb3Js
ZCA9IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKG1fcGxheUJpbi5nZXQoKSk7CiAgICAg
bV93ZWJraXRWaWRlb1NpbmsgPSB3ZWJraXRWaWRlb1NpbmtOZXcobV9nc3RHV29ybGQuZ2V0KCkp
OwogI2Vsc2UKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtpdFZpZGVvU2lua05ldygpOwpA
QCAtMTg2OSwxOSArMTg5NiwyNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYmtpdFZpZGVvU2lu
aywgInJlcGFpbnQtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVSZXBh
aW50Q2FsbGJhY2spLCB0aGlzKTsKIAogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAg
bV92aWRlb1NpbmtCaW4gPSBnc3RfYmluX25ldygidmlkZW8tc2luayIpOworI2lmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAvLyBCdWlsZCBhIG5ldyB2aWRlbyBzaW5rIGNvbnNp
c3Rpbmcgb2YgYSBiaW4gY29udGFpbmluZyBhIHRlZQorICAgIC8vIChtZWFudCB0byBkaXN0cmli
dXRlIGRhdGEgdG8gbXVsdGlwbGUgdmlkZW8gc2lua3MpIGFuZCBvdXIKKyAgICAvLyBpbnRlcm5h
bCB2aWRlbyBzaW5rLiBGb3IgZnVsbHNjcmVlbiB3ZSBjcmVhdGUgYW4gYXV0b3ZpZGVvc2luawor
ICAgIC8vIGFuZCBpbml0aWFsbHkgYmxvY2sgdGhlIGRhdGEgZmxvdyB0b3dhcmRzIGl0IGFuZCBj
b25maWd1cmUgaXQKIAotICAgIEdzdEVsZW1lbnQqIHZpZGVvVGVlID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKLSAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBtX3ZpZGVvU2lua0JpbiA9
IGdzdF9iaW5fbmV3KCJ2aWRlby1zaW5rIik7CiAKICAgICAvLyBUYWtlIG93bmVyc2hpcC4KICAg
ICBnc3Rfb2JqZWN0X3JlZl9zaW5rKG1fdmlkZW9TaW5rQmluKTsKIAotICAgIC8vIEJ1aWxkIGEg
bmV3IHZpZGVvIHNpbmsgY29uc2lzdGluZyBvZiBhIGJpbiBjb250YWluaW5nIGEgdGVlCi0gICAg
Ly8gKG1lYW50IHRvIGRpc3RyaWJ1dGUgZGF0YSB0byBtdWx0aXBsZSB2aWRlbyBzaW5rcykgYW5k
IG91cgotICAgIC8vIGludGVybmFsIHZpZGVvIHNpbmsuIEZvciBmdWxsc2NyZWVuIHdlIGNyZWF0
ZSBhbiBhdXRvdmlkZW9zaW5rCi0gICAgLy8gYW5kIGluaXRpYWxseSBibG9jayB0aGUgZGF0YSBm
bG93IHRvd2FyZHMgaXQgYW5kIGNvbmZpZ3VyZSBpdAorICAgIEdzdEVsZW1lbnQqIHZpZGVvVGVl
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKKyAgICBHc3RF
bGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKwor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodmlkZW9UZWUsICJzaW5rIikpOwor
ICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoR1NUX09CSkVDVChzaW5rUGFkLmdldCgpKSwgR1NUX1BB
RF9GTEFHX1BST1hZX0FMTE9DQVRJT04pOworI2VuZGlmCiAKICAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCB2aWRlb1RlZSwgcXVldWUsIE5VTEwpOwogCkBAIC0x
OTEwLDcgKzE5NDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
R1NUUGxheUJpbigpCiAKICAgICAgICAgICAgIGlmIChnX29iamVjdF9jbGFzc19maW5kX3Byb3Bl
cnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhtX2Zwc1NpbmspLCAidmlkZW8tc2luayIpKSB7CiAgICAg
ICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInZpZGVvLXNpbmsiLCBtX3dlYmtp
dFZpZGVvU2luaywgTlVMTCk7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICAgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9C
SU4obV92aWRlb1NpbmtCaW4pLCBtX2Zwc1NpbmspOwogI2VuZGlmCiAgICAgICAgICAgICAgICAg
YWN0dWFsVmlkZW9TaW5rID0gbV9mcHNTaW5rOwpAQCAtMTkyMSw3ICsxOTUzLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIH0KIAog
ICAgIGlmICghbV9mcHNTaW5rKSB7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICBnc3RfYmluX2FkZChHU1RfQklOKG1f
dmlkZW9TaW5rQmluKSwgbV93ZWJraXRWaWRlb1NpbmspOwogI2VuZGlmCiAgICAgICAgIGFjdHVh
bFZpZGVvU2luayA9IG1fd2Via2l0VmlkZW9TaW5rOwpAQCAtMTkyOSw3ICsxOTYxLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogCiAgICAg
QVNTRVJUKGFjdHVhbFZpZGVvU2luayk7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNp
ZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxp
bmtpbmcuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBhY3R1
YWxWaWRlb1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggN2U1ZGJmOC4u
NzM5OGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aApAQCAtMzksNiArMzksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVu
dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWZkZWYgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckNsYXNzCitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3M7CisjZW5kaWYK
KwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7
CkBAIC03NSwxMSArNzksMTMgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDog
cHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAgICAgICB2b2lkIHNl
dFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCiAgICAgICAgICAgICB2b2lkIHNldFZvbHVtZShmbG9h
dCk7CisgICAgICAgICAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQg
dm9sdW1lQ2hhbmdlZCgpOwogICAgICAgICAgICAgdm9pZCBub3RpZnlQbGF5ZXJPZlZvbHVtZUNo
YW5nZSgpOwogCiAgICAgICAgICAgICBib29sIHN1cHBvcnRzTXV0aW5nKCkgY29uc3Q7CiAgICAg
ICAgICAgICB2b2lkIHNldE11dGVkKGJvb2wpOworICAgICAgICAgICAgYm9vbCBtdXRlZCgpIGNv
bnN0OwogICAgICAgICAgICAgdm9pZCBtdXRlQ2hhbmdlZCgpOwogICAgICAgICAgICAgdm9pZCBu
b3RpZnlQbGF5ZXJPZk11dGUoKTsKIApAQCAtOTMsNiArOTksNyBAQCBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsK
ICAgICAgICAgICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0OwogICAgICAgICAgICAg
Ym9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdDsKICAgICAgICAgICAgIHVuc2lnbmVkIHRv
dGFsQnl0ZXMoKSBjb25zdDsKKyAgICAgICAgICAgIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25z
dDsKIAogICAgICAgICAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgICAgICAgICAgdm9p
ZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKQEAgLTExMCw2ICsxMTcsMTIgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSB7CiAKICAgICAgICAgICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25z
dDsKIAorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAgICAgICAgIHZvaWQg
ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgICAgICAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyNlbmRpZgorCiAgICAgICAgICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0
OwogICAgICAgICAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAKQEAg
LTEyNyw2ICsxNDAsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgICAgICAgICAgTWVkaWFQbGF5
ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogCisgICAgICAgICAgICBN
ZWRpYVBsYXllciogbWVkaWFQbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQorCiAg
ICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIo
TWVkaWFQbGF5ZXIqKTsKIApAQCAtMTQ0LDcgKzE1OSw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogCiAg
ICAgICAgICAgICB2b2lkIGNhY2hlRHVyYXRpb24oKTsKICAgICAgICAgICAgIHZvaWQgdXBkYXRl
U3RhdGVzKCk7Ci0gICAgICAgICAgICBmbG9hdCBtYXhUaW1lTG9hZGVkKCkgY29uc3Q7CiAKICAg
ICAgICAgICAgIHZvaWQgY3JlYXRlR1NUUGxheUJpbigpOwogICAgICAgICAgICAgYm9vbCBjaGFu
Z2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlIHN0YXRlKTsKQEAgLTE5MSw4ICsyMDUsMTEgQEAgY2xh
c3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSB7CiAgICAgICAgICAgICBib29sIG1fZGVsYXlpbmdMb2FkOwogICAgICAgICAg
ICAgYm9vbCBtX21lZGlhRHVyYXRpb25Lbm93bjsKICAgICAgICAgICAgIG11dGFibGUgZmxvYXQg
bV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzOwotI2lmbmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICAgICAgICAg
IFJlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0R1dvcmxkOworI2lmZGVmIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJDbGFzcworICAgICAgICAgICAgT3duUHRyPEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJDbGFzcz4gbV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOworI2VuZGlmCiAjZW5k
aWYKICAgICAgICAgICAgIGd1aW50IG1fdm9sdW1lVGltZXJIYW5kbGVyOwogICAgICAgICAgICAg
Z3VpbnQgbV9tdXRlVGltZXJIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgK
aW5kZXggMmY4ZDM2NS4uNGExYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5o
CkBAIC0xOSw3ICsxOSw3IEBACiAKICNpZm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRvd19oCiAjZGVm
aW5lIFBsYXRmb3JtVmlkZW9XaW5kb3dfaAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJF
QU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNs
dWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjEsNSArNjEs
NSBAQCBjbGFzcyBQbGF0Zm9ybVZpZGVvV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZv
cm1WaWRlb1dpbmRvdz4gewogICAgIH07CiB9CiAKLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAm
JiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAm
JiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0
Zm9ybVZpZGVvV2luZG93R3RrLmNwcAppbmRleCBiODM4ODExLi4wYzM1NzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvd0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCkBAIC0xOSw3ICsxOSw3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApAQCAtNDgsOCArNDgs
NyBAQCBQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93KCkKIAogUGxhdGZv
cm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQogewotICAgIGlmIChtX3ZpZGVv
V2luZG93ICYmIG1fd2luZG93KSB7Ci0gICAgICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19D
T05UQUlORVIobV93aW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKKyAgICBpZiAobV92aWRlb1dpbmRv
dykgewogICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV92aWRlb1dpbmRvdyk7CiAgICAgICAg
IG1fdmlkZW9XaW5kb3cgPSAwOwogICAgIH0KQEAgLTY1LDUgKzY0LDUgQEAgUGxhdGZvcm1WaWRl
b1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQogdm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93
OjpwcmVwYXJlRm9yT3ZlcmxheShHc3RNZXNzYWdlKikKIHsKIH0KLSNlbmRpZiAvLyBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJp
dmF0ZS5oCmluZGV4IGY0OGZmODMuLjk3MmI1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93UHJpdmF0ZS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpZm5kZWYgUGxhdGZv
cm1WaWRlb1dpbmRvd1ByaXZhdGVfaAogI2RlZmluZSBQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0
ZV9oCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRlIDxRRXZlbnQ+CiAjaW5jbHVkZSA8UVRpbWVyPgpA
QCAtNTUsNSArNTYsNSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLQor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQogI2VuZGlmIC8vIFBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKaW5kZXggMTFiNmZiNy4uMWRj
ZmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKQEAgLTE5LDcg
KzE5LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9X
aW5kb3cuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgiCkBAIC0xMzAs
NCArMTMwLDQgQEAgUGxhdGZvcm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQog
dm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93OjpwcmVwYXJlRm9yT3ZlcmxheShHc3RNZXNzYWdlKikK
IHsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyLmNwcAppbmRleCBkODUyMTg0Li44OGE2Y2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgX1dlYktpdFZpZGVv
U2lua1ByaXZhdGUgewogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwogI2VuZGlmCiAKLSNpZm5kZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAg
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQ7CiAjZW5kaWYKIApAQCAtMTU0LDcg
KzE1NCw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RC
YXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAgIHJldHVybiBHU1RfRkxP
V19PSzsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gSWdub3JlIGJ1ZmZlcnMgaWYgdGhlIHZpZGVvIGlz
IGFscmVhZHkgaW4gZnVsbHNjcmVlbiB1c2luZwogICAgIC8vIGFub3RoZXIgc2luay4KICAgICBp
ZiAocHJpdi0+Z3N0R1dvcmxkLT5pc0Z1bGxzY3JlZW4oKSkgewpAQCAtNDE4LDcgKzQxOCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5r
Q2xhc3MqIGtsYXNzKQogfQogCiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiBHc3RFbGVtZW50KiB3ZWJraXRWaWRlb1NpbmtOZXco
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQpCiB7CiAgICAgR3N0RWxlbWVudCog
ZWxlbWVudCA9IEdTVF9FTEVNRU5UKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9WSURFT19TSU5L
LCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKaW5kZXggMDYxYjY5NC4uOGNmZDJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaApAQCAtMjIsNyArMjIsNyBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaWZuZGVmIEdTVF9BUElfVkVS
U0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogI2luY2x1ZGUgIkdTdHJl
YW1lckdXb3JsZC5oIgogI2VuZGlmCiAKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IF9XZWJLaXRW
aWRlb1NpbmtDbGFzcyB7CiAKIEdUeXBlIHdlYmtpdF92aWRlb19zaW5rX2dldF90eXBlKCkgR19H
TlVDX0NPTlNUOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQogR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5rTmV3KFdlYkNvcmU6
OkdTdHJlYW1lckdXb3JsZCopOwogI2Vsc2UKIEdzdEVsZW1lbnQqIHdlYmtpdFZpZGVvU2lua05l
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcAppbmRleCA1Mzc0Zjc2Li45MmY1YzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtNzUsNyArNzUsNyBAQAog
I2luY2x1ZGUgPHF3aW5kb3cuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKLSNpZiBFTkFC
TEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9O
XzEpKSB8fCBVU0UoUVRfTVVMVElNRURJQSkgfHwgVVNFKFFUS0lUKSkKKyNpZiBFTkFCTEUoVklE
RU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSkg
fHwgVVNFKFFUX01VTFRJTUVESUEpIHx8IFVTRShRVEtJVCkpCiAjaW5jbHVkZSAiRnVsbFNjcmVl
blZpZGVvUXQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1
bGxTY3JlZW5WaWRlb1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvUXQuY3BwCmluZGV4IDI1ZTM1N2EuLjM5MjgyMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCkBA
IC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShHU1RSRUFN
RVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIFVTRShHU1RSRUFNRVIpICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXI6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQogICAgIDogbV92aWRlb0Vs
ZW1lbnQoMCkKICAgICAsIG1fZnVsbFNjcmVlbldpZGdldCgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCmluZGV4IDgxYTI4OGQu
LjhlMGQxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvUXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1
bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUVRLaXRGdWxsU2NyZWVu
VmlkZW9IYW5kbGVyOwogI2VuZGlmCiAKIC8vIFdlIGRvIG5vdCB1c2UgRU5BQkxFIG9yIFVTRSBi
ZWNhdXNlIG1vYyBkb2VzIG5vdCBleHBhbmQgdGhlc2UgbWFjcm9zLgotI2lmIGRlZmluZWQoV1RG
X1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NUUkVBTUVSICYmICFkZWZpbmVkKEdTVF9BUElf
VkVSU0lPTl8xKQorI2lmIGRlZmluZWQoV1RGX1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NU
UkVBTUVSICYmIGRlZmluZWQoV1RGX1VTRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTykgJiYgV1RG
X1VTRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTwogY2xhc3MgRnVsbFNjcmVlblZpZGVvV2luZG93
OwogCiBjbGFzcyBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGljIFFPYmpl
Y3QgewotLSAKMS43LjEwLjQ=
</data>
<flag name="commit-queue"
          id="203743"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184868</attachid>
            <date>2013-01-26 08:05:13 -0800</date>
            <delta_ts>2013-01-26 08:36:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>43567</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmMGZlNTNiMGU0YTVlNDdhMmRkOWMwMTU2YjE4MmNhYjNiMTUxNzYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjA2OjUyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDk0ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgMTQ2ICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCB8ICAg
NzMgKysrKysrKysrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
ICAgICAgICAgfCAgMTE2ICsrKysrKysrKysrKy0tLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAgNSArLQogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDY4ICsrKysrKy0tLQogLi4uL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgfCAgIDIxICsrLQog
Li4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggICAgICAgfCAgICA0
ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwICB8
ICAgIDcgKy0KIC4uLi9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCAgICAg
ICAgIHwgICAgMyArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
UXQuY3BwICAgfCAgICA0ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJl
YW1lci5jcHAgICAgICB8ICAgIDYgKy0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5r
R1N0cmVhbWVyLmggICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgfCAgICAyICstCiAuLi4vV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcCB8ICAgIDIgKy0KIC4uLi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaCAgIHwgICAgNCArLQogMTggZmlsZXMgY2hh
bmdlZCwgNDkzIGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA2YzBiNy4uZDFmNjAzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk3IEBACisyMDEzLTAxLTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBVU0UoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gaW4g
dGhlIEdTdHJlYW1lciBtZWRpYQorICAgICAgICBwbGF5ZXIuIEEgbmV3IEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHU3RyZWFtZXIgY2xhc3MgaXMKKyAgICAgICAgaW50cm9kdWNlZCwgcG9ydHMg
aW50ZXJlc3RlZCB0byBpbXBsZW1lbnQgbmF0aXZlIGZ1bGxzY3JlZW4gdmlkZW8KKyAgICAgICAg
c3VwcG9ydCBzaG91bGQgaW5oZXJpdCBmcm9tIGl0IChzZWUgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0aykKKyAgICAgICAgYW5kIGhvb2sgaXQgaW4gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciBiYWNrZW5kLgorCisgICAgICAgIFRoZSBHU3RyZWFtZXJHV29ybGQgcG9ydCB0byBH
U3RyZWFtZXIgMS54IGlzIHBhcnRseSBiYXNlZCBvbiBhCisgICAgICAgIHBhdGNoIGJ5IFNlYmFz
dGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9nZUBjb2xsYWJvcmEuY29tPi4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOiBFbmFibGUgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydC4K
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBOZXcKKyAgICAgICAgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcntHU3RyZWFtZXIsR3RrfSBtb2R1bGVzLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXllclZv
bHVtZUNoYW5nZWRDYWxsYmFjayk6IFBsYXliaW4gbm90aWZ5Ojp2b2x1bWUKKyAgICAgICAgc2ln
bmFsIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6cGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFj
ayk6IFBsYXliaW4gbm90aWZ5OjptdXRlIHNpZ25hbCBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNv
cmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZW50
ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgU3dpdGNoIEdTdHJlYW1lckdXb3JsZCB0byBmdWxsIHNj
cmVlbiwgaG9vayBpbiB0byBwbGF5YmluJ3MKKyAgICAgICAgbm90aWZ5Ojp2b2x1bWUgYW5kIG11
dGUgc2lnbmFscyBhbmQgaW5pdGlhbGl6ZSB0aGUgZnVsbCBzY3JlZW4gd2luZG93LgorICAgICAg
ICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdEZ1bGxz
Y3JlZW4pOgorICAgICAgICBEZXN0cm95IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3csIGRpc2Nvbm5l
Y3QgZnJvbSBwbGF5YmluIHNpZ25hbHMKKyAgICAgICAgYW5kIHN3aXRjaCBHU3RyZWFtZXJHV29y
bGQgb3V0IG9mIGZ1bGwgc2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdE9uVXNlclJlcXVlc3QpOgorICAgICAgICBUcmlnZ2Vy
IGV4aXQgZnJvbSBmdWxsIHNjcmVlbiBtb2RlLiBUaGlzIG1ldGhvZCBpcyBtZWFudCB0byBiZQor
ICAgICAgICBjYWxsZWQgd2hlbiB0aGUgdXNlciBleHBsaWNpdGVseSByZXF1ZXN0cyB0byBleGl0
IGZyb20gZnVsbCBzY3JlZW4KKyAgICAgICAgYnkgcHJlc3NpbmcgYSBrZXkgb3Igc29tZXRoaW5n
IHNpbWlsYXIuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjp0b2dnbGVQbGF5KTogU3dpdGNoCisgICAgICAgIGJldHdlZW4gcGxheSBhbmQgcGF1
c2Ugc3RhdGVzLiBVc2VmdWwgZm9yIGNoaWxkIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbmNyZWFzZVZvbHVtZSk6CisgICAg
ICAgIFVzZWZ1bCBmb3IgY2hpbGQgY2xhc3NlcyBhcyB3ZWxsLgorICAgICAgICAoV2ViQ29yZTo6
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZGVjcmVhc2VWb2x1bWUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6
OnNldFZvbHVtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6dGltZVRvU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjo6cGxheVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIFRvIGJlIGltcGxl
bWVudGVkIGJ5IGNoaWxkIGNsYXNzIHRvIHJlZmxlY3QgdGhlIHBsYXllcidzIHN0YXRlIGNoYW5n
ZWQuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
Ojp2b2x1bWVDaGFuZ2VkKTogVG8KKyAgICAgICAgYmUgaW1wbGVtZW50ZWQgYnkgY2hpbGQgY2xh
c3MgYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXI6Om11dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbml0aWFsaXplV2luZG93KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpkZXN0
cm95V2luZG93KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckdXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnc3RHV29ybGRTeW5jTWVz
c2FnZUNhbGxiYWNrKTogQWRhcHQgZm9yIEdTdHJlYW1lciB2aWRlbworICAgICAgICBvdmVybGF5
IEFQSSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFt
ZXJHV29ybGQpOgorICAgICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIgdGFrZXMgb25lIG1v
cmUgYXJndW1lbnQgaW4gR1N0cmVhbWVyIDEueC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
ckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKTogZmZtcGVnY29sb3JzcGFjZSB3YXMKKyAgICAgICAg
cmVuYW1lZCB0byB2aWRlb2NvbnZlcnQgaW4gR1N0cmVhbWVyIDEueCBhbmQgdGhlIHRlZSBzcmMg
cGFkCisgICAgICAgIHRlbXBsYXRlIHdhcyByZW5hbWVkIHRvIHNyY18ldS4gVGhlcmUgaXMgbm8g
bmVlZCB0byBzZW5kIGEgbmV3CisgICAgICAgIHNlZ21lbnQgcXVlcnkgZWl0aGVyLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpnc3RHV29ybGRQYWRQcm9iZUNhbGxiYWNr
KTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSB2aWRlbworICAgICAgICBzaW5rIGJyYW5jaCBvbmNlIHRo
ZSB0ZWUgc291cmNlIHBhZCBzdGFydGluZyBpdCBoYXMgYmVlbiBibG9ja2VkLgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbik6IFJlZmFjdG9yIHRvIHVz
ZSBhbgorICAgICAgICBhc3luY2hyb25vdXMgcGFkIHByb2JlLgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyR1dvcmxkOjpyZW1vdmVQbGF0Zm9ybVZpZGVvU2luayk6IFJlZmFjdG9yZWQKKyAg
ICAgICAgZnJvbSBleGl0RnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdX
b3JsZDo6c2V0V2luZG93T3ZlcmxheSk6IEFkYXB0IGZvciBHU3RyZWFtZXIgdmlkZW8KKyAgICAg
ICAgb3ZlcmxheSBBUEkgY2hhbmdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAgIChHU3RyZWFtZXJHV29ybGQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgSG9vayBOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTyBzdXBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjp2b2x1bWUpOiBQbGF5YmluIHZvbHVtZQorICAgICAgICBxdWVyeSB1c2Vk
IGJ5IHRoZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIpOiB2b2x1bWUoKSwgbXV0ZWQoKSBhbmQgTWVkaWFQbGF5ZXIKKyAgICAgICAg
YWNjZXNzb3IgbWV0aG9kcyBhZGRlZC4gTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gbWV0aG9kcyBh
ZGRlZCBhcyB3ZWxsLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjYW5FbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjptZWRpYVBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaDogUmUtZW5hYmxlCisgICAgICAgIG1v
ZHVsZSBpZiBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTyBpcyB0dXJuZWQgb24uCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0
cmVhbWVyLmNwcDogUmUtZW5hYmxlCisgICAgICAgIEdTdHJlYW1lckdXb3JsZCBzdXBwb3J0Lgor
ICAgICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGUpOgorICAgICAgICAod2Via2l0VmlkZW9T
aW5rUmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyLmg6IERpdHRvLgorCiAyMDEzLTAxLTI2ICBKdXN0aW4gU2NodWggIDxqc2No
dWhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDSFJPTUlVTV0gU3VwcHJlc3MgbW9yZSBjNDI2
NyBidWlsZCB3YXJuaW5ncyBmb3IgV2luNjQgdGFyZ2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCA5NWEyM2VkLi4wMjJlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTYxLDYgKzE2MSw3
IEBAIGlmIFVTRV9HU1RSRUFNRVIKIGlmIEVOQUJMRV9ERUJVRwogd2ViY29yZV9jcHBmbGFncyAr
PSAtREdTVF9ESVNBQkxFX0RFUFJFQ0FURUQKIGVuZGlmICMgRU5EIEVOQUJMRV9ERUJVRword2Vi
Y29yZV9jcHBmbGFncyArPSAtRFdURl9VU0VfTkFUSVZFX0ZVTExTQ1JFRU5fVklERU89MQogZW5k
aWYgIyBFTkQgVVNFX0dTVFJFQU1FUgogZWxzZQogZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyAr
PSBFTkFCTEVfVklERU89MCBFTkFCTEVfVklERU9fVFJBQ0s9MApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggM2Q2ZTIzMS4uOTJlOTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC02MDU3LDYgKzYwNTcsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3Js
ZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXJDYWlyby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYzMGFlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5j
cHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisKKyNpbmNs
dWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlICJH
U3RyZWFtZXJHV29ybGQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKyNkZWZpbmUgVk9MVU1FX1VQX09GRlNFVCAwLjA1
IC8vIDUlCisjZGVmaW5lIFZPTFVNRV9ET1dOX09GRlNFVCAwLjA1IC8vIDUlCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAq
ZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIqIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxlci0+dm9sdW1lQ2hhbmdlZCgpOwor
fQorCit2b2lkIHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1Bh
cmFtU3BlYyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIqIGNvbnRy
b2xsZXIpCit7CisgICAgY29udHJvbGxlci0+bXV0ZUNoYW5nZWQoKTsKK30KKworCitGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQorICAgIDogbV9wbGF5
ZXIocGxheWVyKQorICAgICwgbV9jbGllbnQocGxheWVyLT5tZWRpYVBsYXllcigpLT5tZWRpYVBs
YXllckNsaWVudCgpKQorICAgICwgbV9nc3RyZWFtZXJHV29ybGQocGxheWVyLT5wbGF0Zm9ybU1l
ZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkKQorICAgICwgbV9wbGF5ZXJWb2x1bWVTaWduYWxI
YW5kbGVyKDApCisgICAgLCBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyKDApCit7Cit9CisKK0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyKCkKK3sKKyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmVudGVyRnVsbHNjcmVlbigpCit7CisgICAg
aWYgKCFtX2dzdHJlYW1lckdXb3JsZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2dz
dHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7Cisg
ICAgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChwaXBlbGlu
ZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29u
bmVjdChwaXBlbGluZSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0socGxheWVyTXV0ZUNoYW5n
ZWRDYWxsYmFjayksIHRoaXMpOworCisgICAgaW5pdGlhbGl6ZVdpbmRvdygpOworfQorCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRGdWxsc2NyZWVuKCkKK3sK
KyAgICBkZXN0cm95V2luZG93KCk7CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fZ3N0
cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIGlmIChtX3BsYXllclZvbHVtZVNpZ25hbEhh
bmRsZXIpIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHBpcGVsaW5lLCBt
X3BsYXllclZvbHVtZVNpZ25hbEhhbmRsZXIpOworICAgICAgICBtX3BsYXllclZvbHVtZVNpZ25h
bEhhbmRsZXIgPSAwOworICAgIH0KKworICAgIGlmIChtX3BsYXllck11dGVTaWduYWxIYW5kbGVy
KSB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwaXBlbGluZSwgbV9wbGF5
ZXJNdXRlU2lnbmFsSGFuZGxlcik7CisgICAgICAgIG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIg
PSAwOworICAgIH0KKworICAgIG1fZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVsbHNjcmVlbigpOwor
fQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRPblVzZXJS
ZXF1ZXN0KCkKK3sKKyAgICBtX2NsaWVudC0+bWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwor
fQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRvZ2dsZVBsYXko
KQoreworICAgIGlmIChtX2NsaWVudC0+bWVkaWFQbGF5ZXJJc1BhdXNlZCgpKQorICAgICAgICBt
X2NsaWVudC0+bWVkaWFQbGF5ZXJQbGF5KCk7CisgICAgZWxzZQorICAgICAgICBtX2NsaWVudC0+
bWVkaWFQbGF5ZXJQYXVzZSgpOworICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbmNyZWFzZVZvbHVtZSgpCit7Cisg
ICAgc2V0Vm9sdW1lKG1fcGxheWVyLT52b2x1bWUoKSArIFZPTFVNRV9VUF9PRkZTRVQpOworfQor
Cit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmRlY3JlYXNlVm9sdW1l
KCkKK3sKKyAgICBzZXRWb2x1bWUobV9wbGF5ZXItPnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZG
U0VUKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpzZXRW
b2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4g
MS4wKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsYXllci0+c2V0Vm9sdW1lKHZvbHVtZSk7
Cit9CisKK1N0cmluZyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0aW1lVG9T
dHJpbmcoZmxvYXQgdGltZSkKK3sKKyAgICBpZiAoIWlzZmluaXRlKHRpbWUpKQorICAgICAgICB0
aW1lID0gMDsKKyAgICBpbnQgc2Vjb25kcyA9IGZhYnNmKHRpbWUpOworICAgIGludCBob3VycyA9
IHNlY29uZHMgLyAoNjAgKiA2MCk7CisgICAgaW50IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAl
IDYwOworICAgIHNlY29uZHMgJT0gNjA7CisKKyAgICBpZiAoaG91cnMpIHsKKyAgICAgICAgaWYg
KGhvdXJzID4gOSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUw
MmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMp
OworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAxZDolMDJkOiUwMmQiLCAodGlt
ZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDog
IiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWMxYzc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaApAQCAtMCwwICsxLDczIEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCisjZGVmaW5lIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1N0cmVhbWVyR1dv
cmxkOworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOworY2xhc3MgTWVkaWFQbGF5
ZXJDbGllbnQ7CisKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFt
ZXIpOworcHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CisgICAgdmlydHVhbCB+RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcigpOworCisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKKyAg
ICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBleGl0T25Vc2VyUmVxdWVzdCgpOwor
CisgICAgdm9pZCB0b2dnbGVQbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXlTdGF0ZUNoYW5n
ZWQoKSB7IH0KKworICAgIHZvaWQgaW5jcmVhc2VWb2x1bWUoKTsKKyAgICB2b2lkIGRlY3JlYXNl
Vm9sdW1lKCk7CisgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOworCisgICAgdmlydHVhbCB2b2lk
IHZvbHVtZUNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNoYW5nZWQoKSB7IH0K
KworcHJvdGVjdGVkOgorICAgIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSk7CisKKyAg
ICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIG1fcGxheWVyOworICAgIE1lZGlhUGxheWVy
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBHU3RyZWFtZXJHV29ybGQqIG1fZ3N0cmVhbWVyR1dvcmxk
OworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2luZG93KCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lXaW5kb3coKSB7IH0KKworICAgIHVuc2lnbmVkIGxvbmcg
bV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV9wbGF5ZXJN
dXRlU2lnbmFsSGFuZGxlcjsKK307CisKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCmlu
ZGV4IGU2YjkwOGUuLmIxZGJiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCkBAIC0x
OCwxNSArMTgsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJH
U3RyZWFtZXJHV29ybGQuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYm
ICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRlICJH
UmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgog
I2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KIAorI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvb3ZlcmxheS5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgorI2VuZGlmCisKKwogI2lmIFBMQVRGT1JNKEdU
SykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKQEAgLTM0
LDYgKzQyLDEyIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CitzdGF0aWMgY29uc3QgY2hhciogZ1ZpZGVvQ29udmVydE5hbWUgPSAiZmZtcGVnY29sb3JzcGFj
ZSI7CisjZWxzZQorc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnROYW1lID0gInZpZGVv
Y29udmVydCI7CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDMsMTEgKzU3LDE2IEBAIGdib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdl
Q2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0CiAgICAg
QVNTRVJUKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0VfRUxFTUVOVCk7
CiAKICAgICBHU3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCA9IHN0YXRpY19jYXN0PEdTdHJlYW1l
ckdXb3JsZCo+KGRhdGEpOworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGNvbnN0IEdz
dFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdl
KTsKIAogICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgInByZXBhcmUt
eHdpbmRvdy1pZCIpCiAgICAgICAgIHx8IGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJl
LCAiaGF2ZS1ucy12aWV3IikpCiAgICAgICAgIGdzdEdXb3JsZC0+c2V0V2luZG93T3ZlcmxheSht
ZXNzYWdlKTsKKyNlbHNlCisgICAgaWYgKGdzdF9pc192aWRlb19vdmVybGF5X3ByZXBhcmVfd2lu
ZG93X2hhbmRsZV9tZXNzYWdlKG1lc3NhZ2UpKQorICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRv
d092ZXJsYXkobWVzc2FnZSk7CisjZW5kaWYKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtNjEs
NyArODAsMTEgQEAgR1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQoR3N0RWxlbWVudCog
cGlwZWxpbmUpCiB7CiAgICAgLy8gWE92ZXJsYXkgbWVzc2FnZXMgbmVlZCB0byBiZSBoYW5kbGVk
IHN5bmNocm9ub3VzbHkuCiAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IHdlYmtpdEdzdFBpcGVs
aW5lR2V0QnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSk7CisjaWZuZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19z
eW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzKTsKKyNlbHNlCisgICAgZ3N0X2J1c19zZXRfc3luY19o
YW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzLCAwKTsK
KyNlbmRpZgogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjpl
bGVtZW50IiwgR19DQUxMQkFDSyhnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7
CiB9CiAKQEAgLTgxLDcgKzEwNCw3IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxz
Y3JlZW4oKQogICAgICAgICBtX3ZpZGVvV2luZG93ID0gUGxhdGZvcm1WaWRlb1dpbmRvdzo6Y3Jl
YXRlV2luZG93KCk7CiAKICAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwbGF0Zm9ybVZpZGVvU2luayIp
OwotICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2Uo
ImZmbXBlZ2NvbG9yc3BhY2UiLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQqIGNvbG9y
c3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoZ1ZpZGVvQ29udmVydE5hbWUsICJjb2xv
cnNwYWNlIik7CiAgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoInF1ZXVlIiwgInF1ZXVlIik7CiAgICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgidmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxlIik7CiAKQEAgLTk0
LDcgKzExNyw2IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQogCiAg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFt
ZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKIAotICAgIC8vIEFkZCBh
bmQgbGluayBhIHF1ZXVlLCBmZm1wZWdjb2xvcnNwYWNlLCB2aWRlb3NjYWxlIGFuZCBzaW5rIGlu
IHRoZSBiaW4uCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKHZpZGVvU2luay5nZXQoKSks
IHBsYXRmb3JtVmlkZW9TaW5rLCB2aWRlb1NjYWxlLCBjb2xvcnNwYWNlLCBxdWV1ZSwgTlVMTCk7
CiAKICAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2luZy4KQEAgLTEwMyw3ICsxMjUsMTEgQEAg
Ym9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgZ3N0X2VsZW1lbnRf
bGlua19wYWRzX2Z1bGwodmlkZW9TY2FsZSwgInNyYyIsIHBsYXRmb3JtVmlkZW9TaW5rLCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKIAogICAgIC8vIExpbmsgYSBuZXcgc3Jj
IHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBH
UmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0
X3BhZCh0ZWUuZ2V0KCksICJzcmMlZCIpKTsKKyNlbHNlCisgICAgR1JlZlB0cjxHc3RQYWQ+IHNy
Y1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQodGVlLmdldCgpLCAi
c3JjXyV1IikpOworI2VuZGlmCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIikpOwogICAgIGdzdF9w
YWRfbGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOwogCkBAIC0xMjEsOSArMTQ3LDkg
QEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKGNvbG9yc3BhY2UsIHN0YXRlKTsKICAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUocXVldWUsIHN0YXRlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIC8vIFF1
ZXJ5IHRoZSBjdXJyZW50IG1lZGlhIHNlZ21lbnQgaW5mb3JtYXRpb25zIGFuZCBzZW5kIHRoZW0g
dG93YXJkcwogICAgIC8vIHRoZSBuZXcgdGVlIGJyYW5jaCBkb3duc3RyZWFtLgotCiAgICAgR3N0
UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWdtZW50KEdTVF9GT1JNQVRfVElNRSk7CiAg
ICAgZ2Jvb2xlYW4gcXVlcnlSZXN1bHQgPSBnc3RfZWxlbWVudF9xdWVyeShtX3BpcGVsaW5lLCBx
dWVyeSk7CiAKQEAgLTEzMiw4ICsxNTgsOCBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJG
dWxsc2NyZWVuKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgR3N0Rm9ybWF0
IGZvcm1hdDsKICAgICBnaW50NjQgcG9zaXRpb247CisgICAgR3N0Rm9ybWF0IGZvcm1hdDsKICAg
ICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKG1fcGlwZWxpbmUsICZmb3JtYXQsICZw
b3NpdGlvbikpCiAgICAgICAgIHBvc2l0aW9uID0gMDsKIApAQCAtMTQ1LDIwICsxNzEsNTUgQEAg
Ym9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgZ3N0X3BhZF9wdXNo
X2V2ZW50KHNyY1BhZC5nZXQoKSwgZXZlbnQpOwogCiAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5
KTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9O
XzEKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBnc3RHV29ybGRQYWRQcm9iZUNhbGxiYWNrKEdz
dFBhZCogcGFkLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIEdTdHJlYW1lckdXb3JsZCogZ3N0R1dv
cmxkKQoreworICAgIGdzdEdXb3JsZC0+cmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKKyAgICBy
ZXR1cm4gR1NUX1BBRF9QUk9CRV9SRU1PVkU7Cit9CisjZW5kaWYKKwogdm9pZCBHU3RyZWFtZXJH
V29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoIW1fZHluYW1pY1BhZE5hbWUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIC8vIEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIGVsZW1l
bnRzIHRvIHJlbW92ZS4KLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2luazsKICAgICBH
c3RFbGVtZW50KiBzaW5rUHRyID0gMDsKKyAgICBnX29iamVjdF9nZXQobV9waXBlbGluZSwgInZp
ZGVvLXNpbmsiLCAmc2lua1B0ciwgTlVMTCk7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRl
b1NpbmsgPSBhZG9wdEdSZWYoc2lua1B0cik7CiAKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHRl
ZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgp
KSwgInZpZGVvVGVlIikpOworICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYo
Z3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFtaWNQYWROYW1lLmdl
dCgpKSk7CisKKyAgICAvLyBCbG9jayBkYXRhIGZsb3cgdG93YXJkcyB0aGUgcGlwZWxpbmUgYnJh
bmNoIHRvIHJlbW92ZS4gTm8gbmVlZAorICAgIC8vIGZvciBwYWQgYmxvY2tpbmcgaWYgdGhlIHBp
cGVsaW5lIGlzIHBhdXNlZC4KKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBnc3RfZWxlbWVudF9n
ZXRfc3RhdGUobV9waXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQorICAgIGlmIChzdGF0ZSA+PSBHU1RfU1RBVEVfUExBWUlORykKKyAgICAgICAgZ3N0X3Bh
ZF9hZGRfcHJvYmUoc3JjUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfSURMRSwgcmVpbnRl
cnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxiYWNrPihnc3RHV29ybGRQYWRQcm9iZUNhbGxiYWNr
KSwgdGhpcywgMCk7CisgICAgZWxzZQorI2Vsc2UKKyAgICBpZiAoc3RhdGUgPCBHU1RfU1RBVEVf
UExBWUlORyB8fCBnc3RfcGFkX3NldF9ibG9ja2VkKHNyY1BhZC5nZXQoKSwgdHJ1ZSkpCisjZW5k
aWYKKyAgICAgICAgcmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKKworICAgIG1fdmlkZW9XaW5k
b3cgPSAwOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxhdGZvcm1WaWRlb1Np
bmsoKQoreworICAgIGlmICghbV9keW5hbWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgorICAg
IEdzdEVsZW1lbnQqIHNpbmtQdHIgPSAwOwogICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLCAi
dmlkZW8tc2luayIsICZzaW5rUHRyLCBOVUxMKTsKLSAgICB2aWRlb1NpbmsgPSBhZG9wdEdSZWYo
c2lua1B0cik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRlb1NpbmsgPSBhZG9wdEdSZWYo
c2lua1B0cik7CiAKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHRlZSA9IGFkb3B0R1JlZihnc3Rf
YmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIikpOwog
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gcGxhdGZvcm1WaWRlb1NpbmsgPSBhZG9wdEdSZWYoZ3N0
X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJwbGF0Zm9ybVZpZGVv
U2luayIpKTsKQEAgLTE2NiwyOCArMjI3LDE3IEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0
RnVsbHNjcmVlbigpCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBjb2xvcnNwYWNlID0gYWRvcHRH
UmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAiY29sb3Jz
cGFjZSIpKTsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2NhbGUgPSBhZG9wdEdSZWYo
Z3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1NjYWxl
IikpOwogCi0gICAgLy8gR2V0IHBhZHMgdG8gdW5saW5rIGFuZCByZW1vdmUuCiAgICAgR1JlZlB0
cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh0
ZWUuZ2V0KCksIG1fZHluYW1pY1BhZE5hbWUuZ2V0KCkpKTsKICAgICBHUmVmUHRyPEdzdFBhZD4g
c2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1ZS5nZXQo
KSwgInNpbmsiKSk7CisgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLmdldCgpLCBzaW5rUGFkLmdl
dCgpKTsKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKHRlZS5nZXQoKSwgc3Jj
UGFkLmdldCgpKTsKIAotICAgIC8vIEJsb2NrIGRhdGEgZmxvdyB0b3dhcmRzIHRoZSBwaXBlbGlu
ZSBicmFuY2ggdG8gcmVtb3ZlLiBObyBuZWVkCi0gICAgLy8gZm9yIHBhZCBibG9ja2luZyBpZiB0
aGUgcGlwZWxpbmUgaXMgcGF1c2VkLgotICAgIEdzdFN0YXRlIHN0YXRlOwotICAgIGdzdF9lbGVt
ZW50X2dldF9zdGF0ZShtX3BpcGVsaW5lLCAmc3RhdGUsIDAsIDApOwotICAgIGlmIChzdGF0ZSA8
IEdTVF9TVEFURV9QTEFZSU5HIHx8IGdzdF9wYWRfc2V0X2Jsb2NrZWQoc3JjUGFkLmdldCgpLCB0
cnVlKSkgewotCi0gICAgICAgIC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBhZC4KLSAg
ICAgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLmdldCgpLCBzaW5rUGFkLmdldCgpKTsKLSAgICAg
ICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksIHNyY1BhZC5nZXQo
KSk7Ci0KLSAgICAgICAgLy8gVW5saW5rLCByZW1vdmUgYW5kIGNsZWFudXAgcXVldWUsIGZmbXBl
Z2NvbG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5kIHNpbmsuCi0gICAgICAgIGdzdF9lbGVtZW50X3Vu
bGlua19tYW55KHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgpLCB2aWRlb1NjYWxlLmdldCgp
LCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7Ci0gICAgICAgIGdzdF9iaW5fcmVtb3Zl
X21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZS5nZXQoKSwgY29sb3JzcGFjZS5n
ZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIE5VTEwpOwot
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIEdT
VF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHZpZGVvU2NhbGUu
Z2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNv
bG9yc3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKHF1ZXVlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgfQorICAgIGdzdF9lbGVt
ZW50X3VubGlua19tYW55KHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgpLCB2aWRlb1NjYWxl
LmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7CisgICAgZ3N0X2Jpbl9yZW1v
dmVfbWFueShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksIHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNl
LmdldCgpLCB2aWRlb1NjYWxlLmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7
CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5rLmdldCgpLCBHU1Rf
U1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHZpZGVvU2NhbGUuZ2V0KCks
IEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3JzcGFjZS5n
ZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZS5n
ZXQoKSwgR1NUX1NUQVRFX05VTEwpOwogCiAgICAgbV9keW5hbWljUGFkTmFtZS5jbGVhcigpOwog
fQpAQCAtMTk2LDcgKzI0NiwxMSBAQCB2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3Zl
cmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewogICAgIEdzdE9iamVjdCogc2luayA9IEdTVF9N
RVNTQUdFX1NSQyhtZXNzYWdlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGlm
ICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyNlbHNlCisgICAgaWYgKCFHU1RfSVNfVklERU9f
T1ZFUkxBWShzaW5rKSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZ19vYmpl
Y3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1Moc2luayksICJmb3JjZS1h
c3BlY3QtcmF0aW8iKSkKQEAgLTIwNSw2ICsyNTksNyBAQCB2b2lkIEdTdHJlYW1lckdXb3JsZDo6
c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIGlmIChtX3ZpZGVvV2lu
ZG93KSB7CiAgICAgICAgIG1fdmlkZW9XaW5kb3ctPnByZXBhcmVGb3JPdmVybGF5KG1lc3NhZ2Up
OwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAvLyBnc3RfeF9vdmVybGF5X3NldF93aW5k
b3dfaGFuZGxlIHdhcyBpbnRyb2R1Y2VkIGluIC1wbHVnaW5zLWJhc2UKIC8vIDAuMTAuMzEsIGp1
c3QgbGlrZSB0aGUgbWFjcm8gZm9yIGNoZWNraW5nIHRoZSB2ZXJzaW9uLgogI2lmZGVmIEdTVF9D
SEVDS19QTFVHSU5TX0JBU0VfVkVSU0lPTgpAQCAtMjEyLDggKzI2NywxMSBAQCB2b2lkIEdTdHJl
YW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogI2Vsc2UK
ICAgICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZChHU1RfWF9PVkVSTEFZKHNpbmsp
LCBtX3ZpZGVvV2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwogI2VuZGlmCisjZWxzZQorICAgICAg
ICBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZShHU1RfVklERU9fT1ZFUkxBWShz
aW5rKSwgbV92aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKKyNlbmRpZgogICAgIH0KIH0K
IAogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmlu
ZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dv
cmxkLmgKaW5kZXggZGZmNDdiMC4uMjI4MDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaApA
QCAtMjAsNyArMjAsNyBAQAogCiAjaWZuZGVmIEdTdHJlYW1lckdXb3JsZF9oCiAjZGVmaW5lIEdT
dHJlYW1lckdXb3JsZF9oCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAh
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDksNiArNDksNyBAQCBw
dWJsaWM6CiAgICAgfkdTdHJlYW1lckdXb3JsZCgpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxp
bmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lOyB9CisgICAgdm9pZCByZW1vdmVQbGF0Zm9y
bVZpZGVvU2luaygpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgZnVsbC1zY3JlZW4gd2luZG93IGNy
ZWF0ZWQKICAgICBib29sIGVudGVyRnVsbHNjcmVlbigpOwpAQCAtNjcsNSArNjgsNSBAQCBwcml2
YXRlOgogfTsKIAogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
ZDYzMjE2Yi4uNGU1ZGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBtX21lZGlhTG9j
YXRpb25zID0gMDsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgaWYgKG1fdmlkZW9TaW5rQmluKSB7CiAgICAg
ICAgIGdzdF9vYmplY3RfdW5yZWYobV92aWRlb1NpbmtCaW4pOwogICAgICAgICBtX3ZpZGVvU2lu
a0JpbiA9IDA7CkBAIC02NjAsNiArNjYwLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPih2b2x1bWUpKTsKIH0KIAorZmxvYXQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2b2x1bWUoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5
QmluKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBnc3Rfc3RyZWFtX3ZvbHVtZV9n
ZXRfdm9sdW1lKEdTVF9TVFJFQU1fVk9MVU1FKG1fcGxheUJpbi5nZXQoKSksIEdTVF9TVFJFQU1f
Vk9MVU1FX0ZPUk1BVF9DVUJJQyk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZlZvbHVtZUNoYW5nZSgpCiB7CiAgICAgbV92b2x1bWVUaW1lckhh
bmRsZXIgPSAwOwpAQCAtMTU0Miw2ICsxNTUwLDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRNdXRlZChib29sIG11dGVkKQogICAgIGdfb2JqZWN0X3NldChtX3BsYXlC
aW4uZ2V0KCksICJtdXRlIiwgbXV0ZWQsIE5VTEwpOwogfQogCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bXV0ZWQoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5QmluKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIG11dGVkOworICAgIGdfb2JqZWN0X2dldCht
X3BsYXlCaW4uZ2V0KCksICJtdXRlIiwgJm11dGVkLCBOVUxMKTsKKyAgICByZXR1cm4gbXV0ZWQ7
Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZk11
dGUoKQogewogICAgIG1fbXV0ZVRpbWVySGFuZGxlciA9IDA7CkBAIC0xNzQwLDYgKzE3NTgsMTgg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjplbnRlckZ1bGxz
Y3JlZW4oKQoreworICAgIC8vIFRPRE8uCit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgLy8gVE9ETy4KK30KKyNlbmRpZgorCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29u
c3QKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MApAQCAtMTc1Myw3ICsxNzgzLDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiBQ
bGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxhdGZvcm1NZWRpYSgp
IGNvbnN0CiB7CiAgICAgUGxhdGZvcm1NZWRpYSBwOwotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBwLnR5cGUgPSBQbGF0Zm9y
bU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlOwogICAgIHAubWVkaWEuZ3N0cmVhbWVyR1dvcmxk
ID0gbV9nc3RHV29ybGQuZ2V0KCk7CiAjZW5kaWYKQEAgLTE4NDMsMTAgKzE4NzMsNiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgLy8g
d2Ugc2hvdWxkIG5vdCBhZG9wdC4KICAgICBtX3BsYXlCaW4gPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoZ1BsYXliaW5OYW1lLCAicGxheSIpOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
Ci0gICAgbV9nc3RHV29ybGQgPSBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChtX3BsYXlC
aW4uZ2V0KCkpOwotI2VuZGlmCi0KICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gd2Via2l0R3N0
UGlwZWxpbmVHZXRCdXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpOwogICAgIGdzdF9i
dXNfYWRkX3NpZ25hbF93YXRjaChidXMuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVz
LmdldCgpLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlTWVzc2FnZUNh
bGxiYWNrKSwgdGhpcyk7CkBAIC0xODU5LDcgKzE4ODUsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVjdCht
X3BsYXlCaW4uZ2V0KCksICJ2aWRlby1jaGFuZ2VkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclBy
aXZhdGVWaWRlb0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9wbGF5QmluLmdldCgpLCAiYXVkaW8tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQ
cml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKIAotI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBtX2dzdEdXb3Js
ZCA9IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKG1fcGxheUJpbi5nZXQoKSk7CiAgICAg
bV93ZWJraXRWaWRlb1NpbmsgPSB3ZWJraXRWaWRlb1NpbmtOZXcobV9nc3RHV29ybGQuZ2V0KCkp
OwogI2Vsc2UKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtpdFZpZGVvU2lua05ldygpOwpA
QCAtMTg2OSwxOSArMTg5NiwyNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYmtpdFZpZGVvU2lu
aywgInJlcGFpbnQtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVSZXBh
aW50Q2FsbGJhY2spLCB0aGlzKTsKIAogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAg
bV92aWRlb1NpbmtCaW4gPSBnc3RfYmluX25ldygidmlkZW8tc2luayIpOworI2lmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAvLyBCdWlsZCBhIG5ldyB2aWRlbyBzaW5rIGNvbnNp
c3Rpbmcgb2YgYSBiaW4gY29udGFpbmluZyBhIHRlZQorICAgIC8vIChtZWFudCB0byBkaXN0cmli
dXRlIGRhdGEgdG8gbXVsdGlwbGUgdmlkZW8gc2lua3MpIGFuZCBvdXIKKyAgICAvLyBpbnRlcm5h
bCB2aWRlbyBzaW5rLiBGb3IgZnVsbHNjcmVlbiB3ZSBjcmVhdGUgYW4gYXV0b3ZpZGVvc2luawor
ICAgIC8vIGFuZCBpbml0aWFsbHkgYmxvY2sgdGhlIGRhdGEgZmxvdyB0b3dhcmRzIGl0IGFuZCBj
b25maWd1cmUgaXQKIAotICAgIEdzdEVsZW1lbnQqIHZpZGVvVGVlID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKLSAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBtX3ZpZGVvU2lua0JpbiA9
IGdzdF9iaW5fbmV3KCJ2aWRlby1zaW5rIik7CiAKICAgICAvLyBUYWtlIG93bmVyc2hpcC4KICAg
ICBnc3Rfb2JqZWN0X3JlZl9zaW5rKG1fdmlkZW9TaW5rQmluKTsKIAotICAgIC8vIEJ1aWxkIGEg
bmV3IHZpZGVvIHNpbmsgY29uc2lzdGluZyBvZiBhIGJpbiBjb250YWluaW5nIGEgdGVlCi0gICAg
Ly8gKG1lYW50IHRvIGRpc3RyaWJ1dGUgZGF0YSB0byBtdWx0aXBsZSB2aWRlbyBzaW5rcykgYW5k
IG91cgotICAgIC8vIGludGVybmFsIHZpZGVvIHNpbmsuIEZvciBmdWxsc2NyZWVuIHdlIGNyZWF0
ZSBhbiBhdXRvdmlkZW9zaW5rCi0gICAgLy8gYW5kIGluaXRpYWxseSBibG9jayB0aGUgZGF0YSBm
bG93IHRvd2FyZHMgaXQgYW5kIGNvbmZpZ3VyZSBpdAorICAgIEdzdEVsZW1lbnQqIHZpZGVvVGVl
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKKyAgICBHc3RF
bGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKwor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodmlkZW9UZWUsICJzaW5rIikpOwor
ICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoR1NUX09CSkVDVChzaW5rUGFkLmdldCgpKSwgR1NUX1BB
RF9GTEFHX1BST1hZX0FMTE9DQVRJT04pOworI2VuZGlmCiAKICAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCB2aWRlb1RlZSwgcXVldWUsIE5VTEwpOwogCkBAIC0x
OTEwLDcgKzE5NDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
R1NUUGxheUJpbigpCiAKICAgICAgICAgICAgIGlmIChnX29iamVjdF9jbGFzc19maW5kX3Byb3Bl
cnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhtX2Zwc1NpbmspLCAidmlkZW8tc2luayIpKSB7CiAgICAg
ICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInZpZGVvLXNpbmsiLCBtX3dlYmtp
dFZpZGVvU2luaywgTlVMTCk7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICAgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9C
SU4obV92aWRlb1NpbmtCaW4pLCBtX2Zwc1NpbmspOwogI2VuZGlmCiAgICAgICAgICAgICAgICAg
YWN0dWFsVmlkZW9TaW5rID0gbV9mcHNTaW5rOwpAQCAtMTkyMSw3ICsxOTUzLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIH0KIAog
ICAgIGlmICghbV9mcHNTaW5rKSB7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICBnc3RfYmluX2FkZChHU1RfQklOKG1f
dmlkZW9TaW5rQmluKSwgbV93ZWJraXRWaWRlb1NpbmspOwogI2VuZGlmCiAgICAgICAgIGFjdHVh
bFZpZGVvU2luayA9IG1fd2Via2l0VmlkZW9TaW5rOwpAQCAtMTkyOSw3ICsxOTYxLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogCiAgICAg
QVNTRVJUKGFjdHVhbFZpZGVvU2luayk7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNp
ZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxp
bmtpbmcuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBhY3R1
YWxWaWRlb1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggN2U1ZGJmOC4u
NzM5OGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aApAQCAtMzksNiArMzksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVu
dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWZkZWYgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckNsYXNzCitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3M7CisjZW5kaWYK
KwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7
CkBAIC03NSwxMSArNzksMTMgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDog
cHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAgICAgICB2b2lkIHNl
dFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCiAgICAgICAgICAgICB2b2lkIHNldFZvbHVtZShmbG9h
dCk7CisgICAgICAgICAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQg
dm9sdW1lQ2hhbmdlZCgpOwogICAgICAgICAgICAgdm9pZCBub3RpZnlQbGF5ZXJPZlZvbHVtZUNo
YW5nZSgpOwogCiAgICAgICAgICAgICBib29sIHN1cHBvcnRzTXV0aW5nKCkgY29uc3Q7CiAgICAg
ICAgICAgICB2b2lkIHNldE11dGVkKGJvb2wpOworICAgICAgICAgICAgYm9vbCBtdXRlZCgpIGNv
bnN0OwogICAgICAgICAgICAgdm9pZCBtdXRlQ2hhbmdlZCgpOwogICAgICAgICAgICAgdm9pZCBu
b3RpZnlQbGF5ZXJPZk11dGUoKTsKIApAQCAtOTMsNiArOTksNyBAQCBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsK
ICAgICAgICAgICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0OwogICAgICAgICAgICAg
Ym9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdDsKICAgICAgICAgICAgIHVuc2lnbmVkIHRv
dGFsQnl0ZXMoKSBjb25zdDsKKyAgICAgICAgICAgIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25z
dDsKIAogICAgICAgICAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgICAgICAgICAgdm9p
ZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKQEAgLTExMCw2ICsxMTcsMTIgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSB7CiAKICAgICAgICAgICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25z
dDsKIAorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAgICAgICAgIHZvaWQg
ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgICAgICAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyNlbmRpZgorCiAgICAgICAgICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0
OwogICAgICAgICAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAKQEAg
LTEyNyw2ICsxNDAsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgICAgICAgICAgTWVkaWFQbGF5
ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogCisgICAgICAgICAgICBN
ZWRpYVBsYXllciogbWVkaWFQbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQorCiAg
ICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIo
TWVkaWFQbGF5ZXIqKTsKIApAQCAtMTQ0LDcgKzE1OSw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogCiAg
ICAgICAgICAgICB2b2lkIGNhY2hlRHVyYXRpb24oKTsKICAgICAgICAgICAgIHZvaWQgdXBkYXRl
U3RhdGVzKCk7Ci0gICAgICAgICAgICBmbG9hdCBtYXhUaW1lTG9hZGVkKCkgY29uc3Q7CiAKICAg
ICAgICAgICAgIHZvaWQgY3JlYXRlR1NUUGxheUJpbigpOwogICAgICAgICAgICAgYm9vbCBjaGFu
Z2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlIHN0YXRlKTsKQEAgLTE5MSw4ICsyMDUsMTEgQEAgY2xh
c3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSB7CiAgICAgICAgICAgICBib29sIG1fZGVsYXlpbmdMb2FkOwogICAgICAgICAg
ICAgYm9vbCBtX21lZGlhRHVyYXRpb25Lbm93bjsKICAgICAgICAgICAgIG11dGFibGUgZmxvYXQg
bV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzOwotI2lmbmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICAgICAgICAg
IFJlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0R1dvcmxkOworI2lmZGVmIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJDbGFzcworICAgICAgICAgICAgT3duUHRyPEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJDbGFzcz4gbV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOworI2VuZGlmCiAjZW5k
aWYKICAgICAgICAgICAgIGd1aW50IG1fdm9sdW1lVGltZXJIYW5kbGVyOwogICAgICAgICAgICAg
Z3VpbnQgbV9tdXRlVGltZXJIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgK
aW5kZXggMmY4ZDM2NS4uNGExYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5o
CkBAIC0xOSw3ICsxOSw3IEBACiAKICNpZm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRvd19oCiAjZGVm
aW5lIFBsYXRmb3JtVmlkZW9XaW5kb3dfaAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJF
QU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNs
dWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjEsNSArNjEs
NSBAQCBjbGFzcyBQbGF0Zm9ybVZpZGVvV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZv
cm1WaWRlb1dpbmRvdz4gewogICAgIH07CiB9CiAKLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAm
JiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAm
JiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0
Zm9ybVZpZGVvV2luZG93R3RrLmNwcAppbmRleCBiODM4ODExLi4wYzM1NzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvd0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCkBAIC0xOSw3ICsxOSw3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApAQCAtNDgsOCArNDgs
NyBAQCBQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93KCkKIAogUGxhdGZv
cm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQogewotICAgIGlmIChtX3ZpZGVv
V2luZG93ICYmIG1fd2luZG93KSB7Ci0gICAgICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19D
T05UQUlORVIobV93aW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKKyAgICBpZiAobV92aWRlb1dpbmRv
dykgewogICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV92aWRlb1dpbmRvdyk7CiAgICAgICAg
IG1fdmlkZW9XaW5kb3cgPSAwOwogICAgIH0KQEAgLTY1LDUgKzY0LDUgQEAgUGxhdGZvcm1WaWRl
b1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQogdm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93
OjpwcmVwYXJlRm9yT3ZlcmxheShHc3RNZXNzYWdlKikKIHsKIH0KLSNlbmRpZiAvLyBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJp
dmF0ZS5oCmluZGV4IGY0OGZmODMuLjk3MmI1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93UHJpdmF0ZS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpZm5kZWYgUGxhdGZv
cm1WaWRlb1dpbmRvd1ByaXZhdGVfaAogI2RlZmluZSBQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0
ZV9oCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRlIDxRRXZlbnQ+CiAjaW5jbHVkZSA8UVRpbWVyPgpA
QCAtNTUsNSArNTYsNSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLQor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQogI2VuZGlmIC8vIFBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKaW5kZXggMTFiNmZiNy4uMWRj
ZmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKQEAgLTE5LDcg
KzE5LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9X
aW5kb3cuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgiCkBAIC0xMzAs
NCArMTMwLDQgQEAgUGxhdGZvcm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQog
dm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93OjpwcmVwYXJlRm9yT3ZlcmxheShHc3RNZXNzYWdlKikK
IHsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyLmNwcAppbmRleCBkODUyMTg0Li44OGE2Y2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgX1dlYktpdFZpZGVv
U2lua1ByaXZhdGUgewogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwogI2VuZGlmCiAKLSNpZm5kZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAg
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQ7CiAjZW5kaWYKIApAQCAtMTU0LDcg
KzE1NCw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RC
YXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAgIHJldHVybiBHU1RfRkxP
V19PSzsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gSWdub3JlIGJ1ZmZlcnMgaWYgdGhlIHZpZGVvIGlz
IGFscmVhZHkgaW4gZnVsbHNjcmVlbiB1c2luZwogICAgIC8vIGFub3RoZXIgc2luay4KICAgICBp
ZiAocHJpdi0+Z3N0R1dvcmxkLT5pc0Z1bGxzY3JlZW4oKSkgewpAQCAtNDE4LDcgKzQxOCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5r
Q2xhc3MqIGtsYXNzKQogfQogCiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiBHc3RFbGVtZW50KiB3ZWJraXRWaWRlb1NpbmtOZXco
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQpCiB7CiAgICAgR3N0RWxlbWVudCog
ZWxlbWVudCA9IEdTVF9FTEVNRU5UKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9WSURFT19TSU5L
LCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKaW5kZXggMDYxYjY5NC4uOGNmZDJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaApAQCAtMjIsNyArMjIsNyBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaWZuZGVmIEdTVF9BUElfVkVS
U0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogI2luY2x1ZGUgIkdTdHJl
YW1lckdXb3JsZC5oIgogI2VuZGlmCiAKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IF9XZWJLaXRW
aWRlb1NpbmtDbGFzcyB7CiAKIEdUeXBlIHdlYmtpdF92aWRlb19zaW5rX2dldF90eXBlKCkgR19H
TlVDX0NPTlNUOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQogR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5rTmV3KFdlYkNvcmU6
OkdTdHJlYW1lckdXb3JsZCopOwogI2Vsc2UKIEdzdEVsZW1lbnQqIHdlYmtpdFZpZGVvU2lua05l
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcAppbmRleCA1Mzc0Zjc2Li45MmY1YzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtNzUsNyArNzUsNyBAQAog
I2luY2x1ZGUgPHF3aW5kb3cuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKLSNpZiBFTkFC
TEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9O
XzEpKSB8fCBVU0UoUVRfTVVMVElNRURJQSkgfHwgVVNFKFFUS0lUKSkKKyNpZiBFTkFCTEUoVklE
RU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSkg
fHwgVVNFKFFUX01VTFRJTUVESUEpIHx8IFVTRShRVEtJVCkpCiAjaW5jbHVkZSAiRnVsbFNjcmVl
blZpZGVvUXQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1
bGxTY3JlZW5WaWRlb1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvUXQuY3BwCmluZGV4IDI1ZTM1N2EuLjM5MjgyMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCkBA
IC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShHU1RSRUFN
RVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIFVTRShHU1RSRUFNRVIpICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXI6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQogICAgIDogbV92aWRlb0Vs
ZW1lbnQoMCkKICAgICAsIG1fZnVsbFNjcmVlbldpZGdldCgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCmluZGV4IDgxYTI4OGQu
LjQzOGFiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvUXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1
bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUVRLaXRGdWxsU2NyZWVu
VmlkZW9IYW5kbGVyOwogI2VuZGlmCiAKIC8vIFdlIGRvIG5vdCB1c2UgRU5BQkxFIG9yIFVTRSBi
ZWNhdXNlIG1vYyBkb2VzIG5vdCBleHBhbmQgdGhlc2UgbWFjcm9zLgotI2lmIGRlZmluZWQoV1RG
X1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NUUkVBTUVSICYmICFkZWZpbmVkKEdTVF9BUElf
VkVSU0lPTl8xKQorI2lmIGRlZmluZWQoV1RGX1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NU
UkVBTUVSICYmIGRlZmluZWQoV1RGX1VTRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTykgJiYgV1RG
X1VTRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTwogY2xhc3MgRnVsbFNjcmVlblZpZGVvV2luZG93
OwogCiBjbGFzcyBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGljIFFPYmpl
Y3QgewpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogI2lmIFVTRShRVF9NVUxUSU1FRElBKQog
ICAgIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7
CiAjZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKQorI2lmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyKiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CiAjZW5kaWYKICNpZiBVU0Uo
UVRLSVQpCi0tIAoxLjcuMTAuNA==
</data>
<flag name="commit-queue"
          id="203745"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184869</attachid>
            <date>2013-01-26 08:36:51 -0800</date>
            <delta_ts>2013-01-26 08:48:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>47928</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkMjQyZWU1N2Q4MjM5NWI2OGU4YjkwYzcwMzMxZmMxNDhmOTlmMzliIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjA2OjUyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDk0ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgMTQ2ICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCB8ICAg
NzMgKysrKysrKysrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
ICAgICAgICAgfCAgMTE2ICsrKysrKysrKysrKy0tLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAgNSArLQogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDY4ICsrKysrKy0tLQogLi4uL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgfCAgIDIxICsrLQog
Li4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggICAgICAgfCAgICA0
ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwICB8
ICAgIDcgKy0KIC4uLi9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCAgICAg
ICAgIHwgICAgMyArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
UXQuY3BwICAgfCAgICA0ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJl
YW1lci5jcHAgICAgICB8ICAgIDYgKy0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5r
R1N0cmVhbWVyLmggICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICsrKysKIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIHwgICAgOCArLQogLi4uL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAgfCAgIDEyICstCiAuLi4vV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmggICB8ICAgIDQgKy0KIDE5IGZp
bGVzIGNoYW5nZWQsIDUyNiBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwNmMwYjcuLmQxZjYwM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw5NyBAQAorMjAxMy0wMS0yMCAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbml0aWFsIHN1cHBvcnQgZm9yIE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPIGluIHRoZSBHU3RyZWFtZXIgbWVkaWEKKyAgICAgICAgcGxheWVyLiBBIG5ldyBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIGNsYXNzIGlzCisgICAgICAgIGludHJvZHVjZWQs
IHBvcnRzIGludGVyZXN0ZWQgdG8gaW1wbGVtZW50IG5hdGl2ZSBmdWxsc2NyZWVuIHZpZGVvCisg
ICAgICAgIHN1cHBvcnQgc2hvdWxkIGluaGVyaXQgZnJvbSBpdCAoc2VlIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHdGspCisgICAgICAgIGFuZCBob29rIGl0IGluIHRoZSBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIgYmFja2VuZC4KKworICAgICAgICBUaGUgR1N0cmVhbWVyR1dvcmxkIHBv
cnQgdG8gR1N0cmVhbWVyIDEueCBpcyBwYXJ0bHkgYmFzZWQgb24gYQorICAgICAgICBwYXRjaCBi
eSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZ2VAY29sbGFib3JhLmNvbT4uCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbTogRW5hYmxlIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1
cHBvcnQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogTmV3CisgICAgICAgIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJ7R1N0cmVhbWVyLEd0a30gbW9kdWxlcy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJl
YW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpw
bGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spOiBQbGF5YmluIG5vdGlmeTo6dm9sdW1lCisgICAg
ICAgIHNpZ25hbCBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXllck11dGVDaGFuZ2Vk
Q2FsbGJhY2spOiBQbGF5YmluIG5vdGlmeTo6bXV0ZSBzaWduYWwgY2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFt
ZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIFN3aXRjaCBHU3RyZWFtZXJHV29ybGQgdG8g
ZnVsbCBzY3JlZW4sIGhvb2sgaW4gdG8gcGxheWJpbidzCisgICAgICAgIG5vdGlmeTo6dm9sdW1l
IGFuZCBtdXRlIHNpZ25hbHMgYW5kIGluaXRpYWxpemUgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdy4K
KyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4
aXRGdWxsc2NyZWVuKToKKyAgICAgICAgRGVzdHJveSB0aGUgZnVsbCBzY3JlZW4gd2luZG93LCBk
aXNjb25uZWN0IGZyb20gcGxheWJpbiBzaWduYWxzCisgICAgICAgIGFuZCBzd2l0Y2ggR1N0cmVh
bWVyR1dvcmxkIG91dCBvZiBmdWxsIHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRPblVzZXJSZXF1ZXN0KToKKyAgICAgICAg
VHJpZ2dlciBleGl0IGZyb20gZnVsbCBzY3JlZW4gbW9kZS4gVGhpcyBtZXRob2QgaXMgbWVhbnQg
dG8gYmUKKyAgICAgICAgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZXhwbGljaXRlbHkgcmVxdWVzdHMg
dG8gZXhpdCBmcm9tIGZ1bGwgc2NyZWVuCisgICAgICAgIGJ5IHByZXNzaW5nIGEga2V5IG9yIHNv
bWV0aGluZyBzaW1pbGFyLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckdTdHJlYW1lcjo6dG9nZ2xlUGxheSk6IFN3aXRjaAorICAgICAgICBiZXR3ZWVuIHBsYXkg
YW5kIHBhdXNlIHN0YXRlcy4gVXNlZnVsIGZvciBjaGlsZCBjbGFzc2VzLgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6aW5jcmVhc2VWb2x1bWUp
OgorICAgICAgICBVc2VmdWwgZm9yIGNoaWxkIGNsYXNzZXMgYXMgd2VsbC4KKyAgICAgICAgKFdl
YkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmRlY3JlYXNlVm9sdW1l
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjpzZXRWb2x1bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRpbWVUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnBsYXlTdGF0ZUNoYW5nZWQpOgorICAgICAgICBUbyBi
ZSBpbXBsZW1lbnRlZCBieSBjaGlsZCBjbGFzcyB0byByZWZsZWN0IHRoZSBwbGF5ZXIncyBzdGF0
ZSBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdT
dHJlYW1lcjo6dm9sdW1lQ2hhbmdlZCk6IFRvCisgICAgICAgIGJlIGltcGxlbWVudGVkIGJ5IGNo
aWxkIGNsYXNzIGFzIHdlbGwuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR1N0cmVhbWVyOjptdXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6aW5pdGlhbGl6ZVdpbmRvdyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1l
cjo6ZGVzdHJveVdpbmRvdyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z3N0R1dvcmxk
U3luY01lc3NhZ2VDYWxsYmFjayk6IEFkYXB0IGZvciBHU3RyZWFtZXIgdmlkZW8KKyAgICAgICAg
b3ZlcmxheSBBUEkgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6
R1N0cmVhbWVyR1dvcmxkKToKKyAgICAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyIHRha2Vz
IG9uZSBtb3JlIGFyZ3VtZW50IGluIEdTdHJlYW1lciAxLnguCisgICAgICAgIChXZWJDb3JlOjpH
U3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbik6IGZmbXBlZ2NvbG9yc3BhY2Ugd2FzCisg
ICAgICAgIHJlbmFtZWQgdG8gdmlkZW9jb252ZXJ0IGluIEdTdHJlYW1lciAxLnggYW5kIHRoZSB0
ZWUgc3JjIHBhZAorICAgICAgICB0ZW1wbGF0ZSB3YXMgcmVuYW1lZCB0byBzcmNfJXUuIFRoZXJl
IGlzIG5vIG5lZWQgdG8gc2VuZCBhIG5ldworICAgICAgICBzZWdtZW50IHF1ZXJ5IGVpdGhlci4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Z3N0R1dvcmxkUGFkUHJvYmVD
YWxsYmFjayk6IFJlbW92ZSB0aGUgcGxhdGZvcm0gdmlkZW8KKyAgICAgICAgc2luayBicmFuY2gg
b25jZSB0aGUgdGVlIHNvdXJjZSBwYWQgc3RhcnRpbmcgaXQgaGFzIGJlZW4gYmxvY2tlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOiBSZWZhY3Rv
ciB0byB1c2UgYW4KKyAgICAgICAgYXN5bmNocm9ub3VzIHBhZCBwcm9iZS4KKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmspOiBSZWZhY3Rv
cmVkCisgICAgICAgIGZyb20gZXhpdEZ1bGxzY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkpOiBBZGFwdCBmb3IgR1N0cmVhbWVyIHZpZGVv
CisgICAgICAgIG92ZXJsYXkgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oOgorICAgICAgICAoR1N0cmVhbWVyR1dvcmxk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIEhvb2sgTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6dm9sdW1lKTogUGxheWJpbiB2b2x1bWUKKyAgICAgICAgcXVl
cnkgdXNlZCBieSB0aGUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKTogdm9sdW1lKCksIG11dGVkKCkgYW5kIE1lZGlhUGxheWVyCisg
ICAgICAgIGFjY2Vzc29yIG1ldGhvZHMgYWRkZWQuIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIG1l
dGhvZHMgYWRkZWQgYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6Y2FuRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWVkaWFQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93Lmg6IFJlLWVuYWJsZQorICAg
ICAgICBtb2R1bGUgaWYgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gaXMgdHVybmVkIG9uLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3Rr
LmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
U2lua0dTdHJlYW1lci5jcHA6IFJlLWVuYWJsZQorICAgICAgICBHU3RyZWFtZXJHV29ybGQgc3Vw
cG9ydC4KKyAgICAgICAgKF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlKToKKyAgICAgICAgKHdlYmtp
dFZpZGVvU2lua1JlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5oOiBEaXR0by4KKwogMjAxMy0wMS0yNiAgSnVzdGluIFNjaHVo
ICA8anNjaHVoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ0hST01JVU1dIFN1cHByZXNzIG1v
cmUgYzQyNjcgYnVpbGQgd2FybmluZ3MgZm9yIFdpbjY0IHRhcmdldHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggOTVhMjNlZC4uMDIyZTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE2MSw2
ICsxNjEsNyBAQCBpZiBVU0VfR1NUUkVBTUVSCiBpZiBFTkFCTEVfREVCVUcKIHdlYmNvcmVfY3Bw
ZmxhZ3MgKz0gLURHU1RfRElTQUJMRV9ERVBSRUNBVEVECiBlbmRpZiAjIEVORCBFTkFCTEVfREVC
VUcKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURXVEZfVVNFX05BVElWRV9GVUxMU0NSRUVOX1ZJREVP
PTEKIGVuZGlmICMgRU5EIFVTRV9HU1RSRUFNRVIKIGVsc2UKIGZlYXR1cmVfZGVmaW5lc19vdmVy
cmlkZXMgKz0gRU5BQkxFX1ZJREVPPTAgRU5BQkxFX1ZJREVPX1RSQUNLPTAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDNkNmUyMzEuLjkyZTk1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNjA1Nyw2ICs2MDU3LDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJHV29ybGQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42MzBhZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBJ
Z2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQor
CisjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIgorCisjaW5j
bHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjZGVmaW5lIFZPTFVNRV9VUF9PRkZT
RVQgMC4wNSAvLyA1JQorI2RlZmluZSBWT0xVTUVfRE9XTl9PRkZTRVQgMC4wNSAvLyA1JQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgcGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKEdP
YmplY3QgKmVsZW1lbnQsIEdQYXJhbVNwZWMgKnBzcGVjLCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyKiBjb250cm9sbGVyKQoreworICAgIGNvbnRyb2xsZXItPnZvbHVtZUNoYW5n
ZWQoKTsKK30KKwordm9pZCBwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1l
bnQsIEdQYXJhbVNwZWMgKnBzcGVjLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
KiBjb250cm9sbGVyKQoreworICAgIGNvbnRyb2xsZXItPm11dGVDaGFuZ2VkKCk7Cit9CisKKwor
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckdTdHJlYW1lcihNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKKyAgICA6
IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fY2xpZW50KHBsYXllci0+bWVkaWFQbGF5ZXIoKS0+
bWVkaWFQbGF5ZXJDbGllbnQoKSkKKyAgICAsIG1fZ3N0cmVhbWVyR1dvcmxkKHBsYXllci0+cGxh
dGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZCkKKyAgICAsIG1fcGxheWVyVm9sdW1l
U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlcigwKQorewor
fQorCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp+RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lcigpCit7CisgICAgZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjplbnRlckZ1bGxzY3JlZW4oKQor
eworICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghbV9nc3RyZWFtZXJHV29ybGQtPmVudGVyRnVsbHNjcmVlbigpKQorICAgICAgICByZXR1cm47
CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGlu
ZSgpOworICAgIG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3Qo
cGlwZWxpbmUsICJub3RpZnk6OnZvbHVtZSIsIEdfQ0FMTEJBQ0socGxheWVyVm9sdW1lQ2hhbmdl
ZENhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlciA9IGdfc2ln
bmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6Om11dGUiLCBHX0NBTExCQUNLKHBsYXllck11
dGVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKworICAgIGluaXRpYWxpemVXaW5kb3coKTsKK30K
Kwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpleGl0RnVsbHNjcmVl
bigpCit7CisgICAgZGVzdHJveVdpbmRvdygpOworCisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUg
PSBtX2dzdHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKKyAgICBpZiAobV9wbGF5ZXJWb2x1bWVT
aWduYWxIYW5kbGVyKSB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwaXBl
bGluZSwgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyKTsKKyAgICAgICAgbV9wbGF5ZXJWb2x1
bWVTaWduYWxIYW5kbGVyID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9wbGF5ZXJNdXRlU2lnbmFs
SGFuZGxlcikgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QocGlwZWxpbmUs
IG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIpOworICAgICAgICBtX3BsYXllck11dGVTaWduYWxI
YW5kbGVyID0gMDsKKyAgICB9CisKKyAgICBtX2dzdHJlYW1lckdXb3JsZC0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpleGl0
T25Vc2VyUmVxdWVzdCgpCit7CisgICAgbV9jbGllbnQtPm1lZGlhUGxheWVyRXhpdEZ1bGxzY3Jl
ZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0b2dn
bGVQbGF5KCkKK3sKKyAgICBpZiAobV9jbGllbnQtPm1lZGlhUGxheWVySXNQYXVzZWQoKSkKKyAg
ICAgICAgbV9jbGllbnQtPm1lZGlhUGxheWVyUGxheSgpOworICAgIGVsc2UKKyAgICAgICAgbV9j
bGllbnQtPm1lZGlhUGxheWVyUGF1c2UoKTsKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7Cit9CisK
K3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6aW5jcmVhc2VWb2x1bWUo
KQoreworICAgIHNldFZvbHVtZShtX3BsYXllci0+dm9sdW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VU
KTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpkZWNyZWFz
ZVZvbHVtZSgpCit7CisgICAgc2V0Vm9sdW1lKG1fcGxheWVyLT52b2x1bWUoKSAtIFZPTFVNRV9E
T1dOX09GRlNFVCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1l
cjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3sKKyAgICBpZiAodm9sdW1lIDwgMC4wIHx8IHZv
bHVtZSA+IDEuMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wbGF5ZXItPnNldFZvbHVtZSh2
b2x1bWUpOworfQorCitTdHJpbmcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6
dGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpCit7CisgICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKKyAg
ICAgICAgdGltZSA9IDA7CisgICAgaW50IHNlY29uZHMgPSBmYWJzZih0aW1lKTsKKyAgICBpbnQg
aG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOworICAgIGludCBtaW51dGVzID0gKHNlY29uZHMg
LyA2MCkgJSA2MDsKKyAgICBzZWNvbmRzICU9IDYwOworCisgICAgaWYgKGhvdXJzKSB7CisgICAg
ICAgIGlmIChob3VycyA+IDkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVz
JTAyZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51dGVzLCBz
ZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMWQ6JTAyZDolMDJk
IiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CisgICAg
fQorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/
ICItIiA6ICIiKSwgbWludXRlcywgc2Vjb25kcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjMWM3
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTAorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXJfaAorI2RlZmluZSBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyX2gKKworI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdTdHJl
YW1lckdXb3JsZDsKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsKK2NsYXNzIE1l
ZGlhUGxheWVyQ2xpZW50OworCitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyKTsKK3B1YmxpYzoKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOworICAgIHZpcnR1YWwgfkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoKTsKKworICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVu
KCk7CisgICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdE9uVXNlclJlcXVl
c3QoKTsKKworICAgIHZvaWQgdG9nZ2xlUGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF5U3Rh
dGVDaGFuZ2VkKCkgeyB9CisKKyAgICB2b2lkIGluY3JlYXNlVm9sdW1lKCk7CisgICAgdm9pZCBk
ZWNyZWFzZVZvbHVtZSgpOworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKworICAgIHZpcnR1
YWwgdm9pZCB2b2x1bWVDaGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG11dGVDaGFuZ2Vk
KCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBTdHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUp
OworCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBtX3BsYXllcjsKKyAgICBNZWRp
YVBsYXllckNsaWVudCogbV9jbGllbnQ7CisgICAgR1N0cmVhbWVyR1dvcmxkKiBtX2dzdHJlYW1l
ckdXb3JsZDsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdpbmRvdygp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95V2luZG93KCkgeyB9CisKKyAgICB1bnNpZ25l
ZCBsb25nIG1fcGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlcjsKKyAgICB1bnNpZ25lZCBsb25nIG1f
cGxheWVyTXV0ZVNpZ25hbEhhbmRsZXI7Cit9OworCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxk
LmNwcAppbmRleCBlNmI5MDhlLi5iMWRiYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNw
cApAQCAtMTgsMTUgKzE4LDIzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5j
bHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKworI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCiAjaW5j
bHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcu
aCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJs
YXkuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CiAKKyNpZmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlb292ZXJsYXkuaD4KKyNlbHNlCisj
aW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KKyNlbmRpZgorCisKICNpZiBQTEFU
Rk9STShHVEspCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lmZGVmIEdES19XSU5ET1dJTkdfWDEx
CkBAIC0zNCw2ICs0MiwxMiBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQorc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnROYW1lID0gImZmbXBlZ2Nv
bG9yc3BhY2UiOworI2Vsc2UKK3N0YXRpYyBjb25zdCBjaGFyKiBnVmlkZW9Db252ZXJ0TmFtZSA9
ICJ2aWRlb2NvbnZlcnQiOworI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQzLDExICs1NywxNiBAQCBnYm9vbGVhbiBnc3RHV29ybGRTeW5j
TWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRh
dAogICAgIEFTU0VSVChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VM
RU1FTlQpOwogCiAgICAgR1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQgPSBzdGF0aWNfY2FzdDxH
U3RyZWFtZXJHV29ybGQqPihkYXRhKTsKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBj
b25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUo
bWVzc2FnZSk7CiAKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJw
cmVwYXJlLXh3aW5kb3ctaWQiKQogICAgICAgICB8fCBnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0
cnVjdHVyZSwgImhhdmUtbnMtdmlldyIpKQogICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRvd092
ZXJsYXkobWVzc2FnZSk7CisjZWxzZQorICAgIGlmIChnc3RfaXNfdmlkZW9fb3ZlcmxheV9wcmVw
YXJlX3dpbmRvd19oYW5kbGVfbWVzc2FnZShtZXNzYWdlKSkKKyAgICAgICAgZ3N0R1dvcmxkLT5z
ZXRXaW5kb3dPdmVybGF5KG1lc3NhZ2UpOworI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
QEAgLTYxLDcgKzgwLDExIEBAIEdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dvcmxkKEdzdEVs
ZW1lbnQqIHBpcGVsaW5lKQogewogICAgIC8vIFhPdmVybGF5IG1lc3NhZ2VzIG5lZWQgdG8gYmUg
aGFuZGxlZCBzeW5jaHJvbm91c2x5LgogICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3ZWJraXRH
c3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOworI2lmbmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihidXMuZ2V0KCksIGdz
dF9idXNfc3luY19zaWduYWxfaGFuZGxlciwgdGhpcyk7CisjZWxzZQorICAgIGdzdF9idXNfc2V0
X3N5bmNfaGFuZGxlcihidXMuZ2V0KCksIGdzdF9idXNfc3luY19zaWduYWxfaGFuZGxlciwgdGhp
cywgMCk7CisjZW5kaWYKICAgICBnX3NpZ25hbF9jb25uZWN0KGJ1cy5nZXQoKSwgInN5bmMtbWVz
c2FnZTo6ZWxlbWVudCIsIEdfQ0FMTEJBQ0soZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayks
IHRoaXMpOwogfQogCkBAIC04MSw3ICsxMDQsNyBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50
ZXJGdWxsc2NyZWVuKCkKICAgICAgICAgbV92aWRlb1dpbmRvdyA9IFBsYXRmb3JtVmlkZW9XaW5k
b3c6OmNyZWF0ZVdpbmRvdygpOwogCiAgICAgR3N0RWxlbWVudCogcGxhdGZvcm1WaWRlb1Npbmsg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG92aWRlb3NpbmsiLCAicGxhdGZvcm1WaWRl
b1NpbmsiKTsKLSAgICBHc3RFbGVtZW50KiBjb2xvcnNwYWNlID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJmZm1wZWdjb2xvcnNwYWNlIiwgImNvbG9yc3BhY2UiKTsKKyAgICBHc3RFbGVtZW50
KiBjb2xvcnNwYWNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKGdWaWRlb0NvbnZlcnROYW1l
LCAiY29sb3JzcGFjZSIpOwogICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJxdWV1ZSIsICJxdWV1ZSIpOwogICAgIEdzdEVsZW1lbnQqIHZpZGVvU2NhbGUg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZpZGVvc2NhbGUiLCAidmlkZW9TY2FsZSIpOwog
CkBAIC05NCw3ICsxMTcsNiBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVu
KCkKIAogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdGVlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0
X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9UZWUiKSk7CiAKLSAgICAv
LyBBZGQgYW5kIGxpbmsgYSBxdWV1ZSwgZmZtcGVnY29sb3JzcGFjZSwgdmlkZW9zY2FsZSBhbmQg
c2luayBpbiB0aGUgYmluLgogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTih2aWRlb1Npbmsu
Z2V0KCkpLCBwbGF0Zm9ybVZpZGVvU2luaywgdmlkZW9TY2FsZSwgY29sb3JzcGFjZSwgcXVldWUs
IE5VTEwpOwogCiAgICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtpbmcuCkBAIC0xMDMsNyArMTI1
LDExIEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQogICAgIGdzdF9l
bGVtZW50X2xpbmtfcGFkc19mdWxsKHZpZGVvU2NhbGUsICJzcmMiLCBwbGF0Zm9ybVZpZGVvU2lu
aywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAKICAgICAvLyBMaW5rIGEg
bmV3IHNyYyBwYWQgZnJvbSB0ZWUgdG8gcXVldWUuCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRf
cmVxdWVzdF9wYWQodGVlLmdldCgpLCAic3JjJWQiKSk7CisjZWxzZQorICAgIEdSZWZQdHI8R3N0
UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKHRlZS5n
ZXQoKSwgInNyY18ldSIpKTsKKyNlbmRpZgogICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0g
YWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpKTsKICAg
ICBnc3RfcGFkX2xpbmsoc3JjUGFkLmdldCgpLCBzaW5rUGFkLmdldCgpKTsKIApAQCAtMTIxLDkg
KzE0Nyw5IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQogICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShjb2xvcnNwYWNlLCBzdGF0ZSk7CiAgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKHF1ZXVlLCBzdGF0ZSk7CiAKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAg
ICAvLyBRdWVyeSB0aGUgY3VycmVudCBtZWRpYSBzZWdtZW50IGluZm9ybWF0aW9ucyBhbmQgc2Vu
ZCB0aGVtIHRvd2FyZHMKICAgICAvLyB0aGUgbmV3IHRlZSBicmFuY2ggZG93bnN0cmVhbS4KLQog
ICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfc2VnbWVudChHU1RfRk9STUFUX1RJ
TUUpOwogICAgIGdib29sZWFuIHF1ZXJ5UmVzdWx0ID0gZ3N0X2VsZW1lbnRfcXVlcnkobV9waXBl
bGluZSwgcXVlcnkpOwogCkBAIC0xMzIsOCArMTU4LDggQEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6
OmVudGVyRnVsbHNjcmVlbigpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEdz
dEZvcm1hdCBmb3JtYXQ7CiAgICAgZ2ludDY0IHBvc2l0aW9uOworICAgIEdzdEZvcm1hdCBmb3Jt
YXQ7CiAgICAgaWYgKCFnc3RfZWxlbWVudF9xdWVyeV9wb3NpdGlvbihtX3BpcGVsaW5lLCAmZm9y
bWF0LCAmcG9zaXRpb24pKQogICAgICAgICBwb3NpdGlvbiA9IDA7CiAKQEAgLTE0NSwyMCArMTcx
LDU1IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQogICAgIGdzdF9w
YWRfcHVzaF9ldmVudChzcmNQYWQuZ2V0KCksIGV2ZW50KTsKIAogICAgIGdzdF9xdWVyeV91bnJl
ZihxdWVyeSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCitzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gZ3N0R1dvcmxkUGFkUHJvYmVDYWxs
YmFjayhHc3RQYWQqIHBhZCwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBHU3RyZWFtZXJHV29ybGQq
IGdzdEdXb3JsZCkKK3sKKyAgICBnc3RHV29ybGQtPnJlbW92ZVBsYXRmb3JtVmlkZW9TaW5rKCk7
CisgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfUkVNT1ZFOworfQorI2VuZGlmCisKIHZvaWQgR1N0
cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbigpCiB7CiAgICAgaWYgKCFtX2R5bmFtaWNQYWRO
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBHZXQgdmlkZW8gc2luayBiaW4gYW5kIHRo
ZSBlbGVtZW50cyB0byByZW1vdmUuCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRlb1Npbms7
CiAgICAgR3N0RWxlbWVudCogc2lua1B0ciA9IDA7CisgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxp
bmUsICJ2aWRlby1zaW5rIiwgJnNpbmtQdHIsIE5VTEwpOworICAgIEdSZWZQdHI8R3N0RWxlbWVu
dD4gdmlkZW9TaW5rID0gYWRvcHRHUmVmKHNpbmtQdHIpOwogCisgICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2lu
ay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKKyAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRv
cHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHRlZS5nZXQoKSwgbV9keW5hbWljUGFk
TmFtZS5nZXQoKSkpOworCisgICAgLy8gQmxvY2sgZGF0YSBmbG93IHRvd2FyZHMgdGhlIHBpcGVs
aW5lIGJyYW5jaCB0byByZW1vdmUuIE5vIG5lZWQKKyAgICAvLyBmb3IgcGFkIGJsb2NraW5nIGlm
IHRoZSBwaXBlbGluZSBpcyBwYXVzZWQuCisgICAgR3N0U3RhdGUgc3RhdGU7CisgICAgZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRlKG1fcGlwZWxpbmUsICZzdGF0ZSwgMCwgMCk7CisjaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKKyAgICBpZiAoc3RhdGUgPj0gR1NUX1NUQVRFX1BMQVlJTkcpCisgICAgICAg
IGdzdF9wYWRfYWRkX3Byb2JlKHNyY1BhZC5nZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0lETEUs
IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0UGFkUHJvYmVDYWxsYmFjaz4oZ3N0R1dvcmxkUGFkUHJvYmVD
YWxsYmFjayksIHRoaXMsIDApOworICAgIGVsc2UKKyNlbHNlCisgICAgaWYgKHN0YXRlIDwgR1NU
X1NUQVRFX1BMQVlJTkcgfHwgZ3N0X3BhZF9zZXRfYmxvY2tlZChzcmNQYWQuZ2V0KCksIHRydWUp
KQorI2VuZGlmCisgICAgICAgIHJlbW92ZVBsYXRmb3JtVmlkZW9TaW5rKCk7CisKKyAgICBtX3Zp
ZGVvV2luZG93ID0gMDsKK30KKwordm9pZCBHU3RyZWFtZXJHV29ybGQ6OnJlbW92ZVBsYXRmb3Jt
VmlkZW9TaW5rKCkKK3sKKyAgICBpZiAoIW1fZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIGVsZW1lbnRzIHRvIHJlbW92
ZS4KKyAgICBHc3RFbGVtZW50KiBzaW5rUHRyID0gMDsKICAgICBnX29iamVjdF9nZXQobV9waXBl
bGluZSwgInZpZGVvLXNpbmsiLCAmc2lua1B0ciwgTlVMTCk7Ci0gICAgdmlkZW9TaW5rID0gYWRv
cHRHUmVmKHNpbmtQdHIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rID0gYWRv
cHRHUmVmKHNpbmtQdHIpOwogCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdS
ZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1Rl
ZSIpKTsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXRmb3JtVmlkZW9TaW5rID0gYWRvcHRH
UmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAicGxhdGZv
cm1WaWRlb1NpbmsiKSk7CkBAIC0xNjYsMjggKzIyNywxNyBAQCB2b2lkIEdTdHJlYW1lckdXb3Js
ZDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gY29sb3JzcGFjZSA9
IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwg
ImNvbG9yc3BhY2UiKSk7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRlb1NjYWxlID0gYWRv
cHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidmlk
ZW9TY2FsZSIpKTsKIAotICAgIC8vIEdldCBwYWRzIHRvIHVubGluayBhbmQgcmVtb3ZlLgogICAg
IEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRp
Y19wYWQodGVlLmdldCgpLCBtX2R5bmFtaWNQYWROYW1lLmdldCgpKSk7CiAgICAgR1JlZlB0cjxH
c3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVl
dWUuZ2V0KCksICJzaW5rIikpOworICAgIGdzdF9wYWRfdW5saW5rKHNyY1BhZC5nZXQoKSwgc2lu
a1BhZC5nZXQoKSk7CisgICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUuZ2V0
KCksIHNyY1BhZC5nZXQoKSk7CiAKLSAgICAvLyBCbG9jayBkYXRhIGZsb3cgdG93YXJkcyB0aGUg
cGlwZWxpbmUgYnJhbmNoIHRvIHJlbW92ZS4gTm8gbmVlZAotICAgIC8vIGZvciBwYWQgYmxvY2tp
bmcgaWYgdGhlIHBpcGVsaW5lIGlzIHBhdXNlZC4KLSAgICBHc3RTdGF0ZSBzdGF0ZTsKLSAgICBn
c3RfZWxlbWVudF9nZXRfc3RhdGUobV9waXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKLSAgICBpZiAo
c3RhdGUgPCBHU1RfU1RBVEVfUExBWUlORyB8fCBnc3RfcGFkX3NldF9ibG9ja2VkKHNyY1BhZC5n
ZXQoKSwgdHJ1ZSkpIHsKLQotICAgICAgICAvLyBVbmxpbmsgYW5kIHJlbGVhc2UgcmVxdWVzdCBw
YWQuCi0gICAgICAgIGdzdF9wYWRfdW5saW5rKHNyY1BhZC5nZXQoKSwgc2lua1BhZC5nZXQoKSk7
Ci0gICAgICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQodGVlLmdldCgpLCBzcmNQ
YWQuZ2V0KCkpOwotCi0gICAgICAgIC8vIFVubGluaywgcmVtb3ZlIGFuZCBjbGVhbnVwIHF1ZXVl
LCBmZm1wZWdjb2xvcnNwYWNlLCB2aWRlb1NjYWxlIGFuZCBzaW5rLgotICAgICAgICBnc3RfZWxl
bWVudF91bmxpbmtfbWFueShxdWV1ZS5nZXQoKSwgY29sb3JzcGFjZS5nZXQoKSwgdmlkZW9TY2Fs
ZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIE5VTEwpOwotICAgICAgICBnc3RfYmlu
X3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcXVldWUuZ2V0KCksIGNvbG9y
c3BhY2UuZ2V0KCksIHZpZGVvU2NhbGUuZ2V0KCksIHBsYXRmb3JtVmlkZW9TaW5rLmdldCgpLCBO
VUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5rLmdl
dCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSh2aWRl
b1NjYWxlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShjb2xvcnNwYWNlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgICAgIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZShxdWV1ZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgIH0KKyAgICBn
c3RfZWxlbWVudF91bmxpbmtfbWFueShxdWV1ZS5nZXQoKSwgY29sb3JzcGFjZS5nZXQoKSwgdmlk
ZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIE5VTEwpOworICAgIGdzdF9i
aW5fcmVtb3ZlX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZS5nZXQoKSwgY29s
b3JzcGFjZS5nZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCks
IE5VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVvU2luay5nZXQo
KSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSh2aWRlb1NjYWxl
LmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNvbG9y
c3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
cXVldWUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKIAogICAgIG1fZHluYW1pY1BhZE5hbWUuY2xl
YXIoKTsKIH0KQEAgLTE5Niw3ICsyNDYsMTEgQEAgdm9pZCBHU3RyZWFtZXJHV29ybGQ6OnNldFdp
bmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBHc3RPYmplY3QqIHNpbmsg
PSBHU1RfTUVTU0FHRV9TUkMobWVzc2FnZSk7CiAKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEK
ICAgICBpZiAoIUdTVF9JU19YX09WRVJMQVkoc2luaykpCisjZWxzZQorICAgIGlmICghR1NUX0lT
X1ZJREVPX09WRVJMQVkoc2luaykpCisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAi
Zm9yY2UtYXNwZWN0LXJhdGlvIikpCkBAIC0yMDUsNiArMjU5LDcgQEAgdm9pZCBHU3RyZWFtZXJH
V29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICBpZiAobV92
aWRlb1dpbmRvdykgewogICAgICAgICBtX3ZpZGVvV2luZG93LT5wcmVwYXJlRm9yT3ZlcmxheSht
ZXNzYWdlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogLy8gZ3N0X3hfb3ZlcmxheV9z
ZXRfd2luZG93X2hhbmRsZSB3YXMgaW50cm9kdWNlZCBpbiAtcGx1Z2lucy1iYXNlCiAvLyAwLjEw
LjMxLCBqdXN0IGxpa2UgdGhlIG1hY3JvIGZvciBjaGVja2luZyB0aGUgdmVyc2lvbi4KICNpZmRl
ZiBHU1RfQ0hFQ0tfUExVR0lOU19CQVNFX1ZFUlNJT04KQEAgLTIxMiw4ICsyNjcsMTEgQEAgdm9p
ZCBHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSkK
ICNlbHNlCiAgICAgICAgIGdzdF94X292ZXJsYXlfc2V0X3h3aW5kb3dfaWQoR1NUX1hfT1ZFUkxB
WShzaW5rKSwgbV92aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKICNlbmRpZgorI2Vsc2UK
KyAgICAgICAgZ3N0X3ZpZGVvX292ZXJsYXlfc2V0X3dpbmRvd19oYW5kbGUoR1NUX1ZJREVPX09W
RVJMQVkoc2luayksIG1fdmlkZW9XaW5kb3ctPnZpZGVvV2luZG93SWQoKSk7CisjZW5kaWYKICAg
ICB9CiB9CiAKIH0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYm
ICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdX
b3JsZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckdXb3JsZC5oCmluZGV4IGRmZjQ3YjAuLjIyODA2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dv
cmxkLmgKQEAgLTIwLDcgKzIwLDcgQEAKIAogI2lmbmRlZiBHU3RyZWFtZXJHV29ybGRfaAogI2Rl
ZmluZSBHU3RyZWFtZXJHV29ybGRfaAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ5LDYgKzQ5
LDcgQEAgcHVibGljOgogICAgIH5HU3RyZWFtZXJHV29ybGQoKTsKIAogICAgIEdzdEVsZW1lbnQq
IHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9waXBlbGluZTsgfQorICAgIHZvaWQgcmVtb3Zl
UGxhdGZvcm1WaWRlb1NpbmsoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGZ1bGwtc2NyZWVuIHdp
bmRvdyBjcmVhdGVkCiAgICAgYm9vbCBlbnRlckZ1bGxzY3JlZW4oKTsKQEAgLTY3LDUgKzY4LDUg
QEAgcHJpdmF0ZToKIH07CiAKIH0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IGQ2MzIxNmIuLjRlNWRmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKCkKICAgICAgICAgbV9t
ZWRpYUxvY2F0aW9ucyA9IDA7CiAgICAgfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisj
aWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIGlmIChtX3ZpZGVvU2lua0Jpbikg
ewogICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKG1fdmlkZW9TaW5rQmluKTsKICAgICAgICAgbV92
aWRlb1NpbmtCaW4gPSAwOwpAQCAtNjYwLDYgKzY2MCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4odm9sdW1lKSk7CiB9CiAKK2Zsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fcGxheUJpbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZ3N0X3N0cmVhbV92
b2x1bWVfZ2V0X3ZvbHVtZShHU1RfU1RSRUFNX1ZPTFVNRShtX3BsYXlCaW4uZ2V0KCkpLCBHU1Rf
U1RSRUFNX1ZPTFVNRV9GT1JNQVRfQ1VCSUMpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFuZ2UoKQogewogICAgIG1fdm9sdW1l
VGltZXJIYW5kbGVyID0gMDsKQEAgLTE1NDIsNiArMTU1MCwxNiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKICAgICBnX29iamVjdF9zZXQo
bV9wbGF5QmluLmdldCgpLCAibXV0ZSIsIG11dGVkLCBOVUxMKTsKIH0KIAorYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om11dGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGxheUJp
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBtdXRlZDsKKyAgICBnX29iamVj
dF9nZXQobV9wbGF5QmluLmdldCgpLCAibXV0ZSIsICZtdXRlZCwgTlVMTCk7CisgICAgcmV0dXJu
IG11dGVkOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxh
eWVyT2ZNdXRlKCkKIHsKICAgICBtX211dGVUaW1lckhhbmRsZXIgPSAwOwpAQCAtMTc0MCw2ICsx
NzU4LDE4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBVU0UoTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW50
ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICAvLyBUT0RPLgorfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIC8vIFRPRE8uCit9CisjZW5k
aWYKKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzRnVsbHNjcmVl
bigpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKQEAgLTE3NTMsNyArMTc4Myw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBj
b25zdAogUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXRmb3Jt
TWVkaWEoKSBjb25zdAogewogICAgIFBsYXRmb3JtTWVkaWEgcDsKLSNpZm5kZWYgR1NUX0FQSV9W
RVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgcC50eXBlID0g
UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dvcmxkVHlwZTsKICAgICBwLm1lZGlhLmdzdHJlYW1l
ckdXb3JsZCA9IG1fZ3N0R1dvcmxkLmdldCgpOwogI2VuZGlmCkBAIC0xODQzLDEwICsxODczLDYg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQog
ICAgIC8vIHdlIHNob3VsZCBub3QgYWRvcHQuCiAgICAgbV9wbGF5QmluID0gZ3N0X2VsZW1lbnRf
ZmFjdG9yeV9tYWtlKGdQbGF5YmluTmFtZSwgInBsYXkiKTsKIAotI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQotICAgIG1fZ3N0R1dvcmxkID0gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQo
bV9wbGF5QmluLmdldCgpKTsKLSNlbmRpZgotCiAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IHdl
YmtpdEdzdFBpcGVsaW5lR2V0QnVzKEdTVF9QSVBFTElORShtX3BsYXlCaW4uZ2V0KCkpKTsKICAg
ICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KGJ1cy5nZXQoKSwgIm1lc3NhZ2UiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZU1l
c3NhZ2VDYWxsYmFjayksIHRoaXMpOwpAQCAtMTg1OSw3ICsxODg1LDggQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9wbGF5QmluLmdldCgpLCAidmlkZW8tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQ
bGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fcGxheUJpbi5nZXQoKSwgImF1ZGlvLWNoYW5nZWQiLCBHX0NBTExCQUNLKG1lZGlh
UGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAKLSNpZm5kZWYgR1NU
X0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgbV9n
c3RHV29ybGQgPSBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChtX3BsYXlCaW4uZ2V0KCkp
OwogICAgIG1fd2Via2l0VmlkZW9TaW5rID0gd2Via2l0VmlkZW9TaW5rTmV3KG1fZ3N0R1dvcmxk
LmdldCgpKTsKICNlbHNlCiAgICAgbV93ZWJraXRWaWRlb1NpbmsgPSB3ZWJraXRWaWRlb1NpbmtO
ZXcoKTsKQEAgLTE4NjksMTkgKzE4OTYsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJraXRW
aWRlb1NpbmssICJyZXBhaW50LXJlcXVlc3RlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2
YXRlUmVwYWludENhbGxiYWNrKSwgdGhpcyk7CiAKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQotICAgIG1fdmlkZW9TaW5rQmluID0gZ3N0X2Jpbl9uZXcoInZpZGVvLXNpbmsiKTsKKyNpZiBV
U0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgLy8gQnVpbGQgYSBuZXcgdmlkZW8gc2lu
ayBjb25zaXN0aW5nIG9mIGEgYmluIGNvbnRhaW5pbmcgYSB0ZWUKKyAgICAvLyAobWVhbnQgdG8g
ZGlzdHJpYnV0ZSBkYXRhIHRvIG11bHRpcGxlIHZpZGVvIHNpbmtzKSBhbmQgb3VyCisgICAgLy8g
aW50ZXJuYWwgdmlkZW8gc2luay4gRm9yIGZ1bGxzY3JlZW4gd2UgY3JlYXRlIGFuIGF1dG92aWRl
b3NpbmsKKyAgICAvLyBhbmQgaW5pdGlhbGx5IGJsb2NrIHRoZSBkYXRhIGZsb3cgdG93YXJkcyBp
dCBhbmQgY29uZmlndXJlIGl0CiAKLSAgICBHc3RFbGVtZW50KiB2aWRlb1RlZSA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSgidGVlIiwgInZpZGVvVGVlIik7Ci0gICAgR3N0RWxlbWVudCogcXVl
dWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgMCk7CisgICAgbV92aWRlb1Np
bmtCaW4gPSBnc3RfYmluX25ldygidmlkZW8tc2luayIpOwogCiAgICAgLy8gVGFrZSBvd25lcnNo
aXAuCiAgICAgZ3N0X29iamVjdF9yZWZfc2luayhtX3ZpZGVvU2lua0Jpbik7CiAKLSAgICAvLyBC
dWlsZCBhIG5ldyB2aWRlbyBzaW5rIGNvbnNpc3Rpbmcgb2YgYSBiaW4gY29udGFpbmluZyBhIHRl
ZQotICAgIC8vIChtZWFudCB0byBkaXN0cmlidXRlIGRhdGEgdG8gbXVsdGlwbGUgdmlkZW8gc2lu
a3MpIGFuZCBvdXIKLSAgICAvLyBpbnRlcm5hbCB2aWRlbyBzaW5rLiBGb3IgZnVsbHNjcmVlbiB3
ZSBjcmVhdGUgYW4gYXV0b3ZpZGVvc2luawotICAgIC8vIGFuZCBpbml0aWFsbHkgYmxvY2sgdGhl
IGRhdGEgZmxvdyB0b3dhcmRzIGl0IGFuZCBjb25maWd1cmUgaXQKKyAgICBHc3RFbGVtZW50KiB2
aWRlb1RlZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidGVlIiwgInZpZGVvVGVlIik7Cisg
ICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwg
MCk7CisKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5r
UGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHZpZGVvVGVlLCAic2lu
ayIpKTsKKyAgICBHU1RfT0JKRUNUX0ZMQUdfU0VUKEdTVF9PQkpFQ1Qoc2lua1BhZC5nZXQoKSks
IEdTVF9QQURfRkxBR19QUk9YWV9BTExPQ0FUSU9OKTsKKyNlbmRpZgogCiAgICAgZ3N0X2Jpbl9h
ZGRfbWFueShHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwgdmlkZW9UZWUsIHF1ZXVlLCBOVUxMKTsK
IApAQCAtMTkxMCw3ICsxOTQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNyZWF0ZUdTVFBsYXlCaW4oKQogCiAgICAgICAgICAgICBpZiAoZ19vYmplY3RfY2xhc3NfZmlu
ZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1MobV9mcHNTaW5rKSwgInZpZGVvLXNpbmsiKSkg
ewogICAgICAgICAgICAgICAgIGdfb2JqZWN0X3NldChtX2Zwc1NpbmssICJ2aWRlby1zaW5rIiwg
bV93ZWJraXRWaWRlb1NpbmssIE5VTEwpOwotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICAgICAgICAgICAgICBnc3RfYmluX2Fk
ZChHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwgbV9mcHNTaW5rKTsKICNlbmRpZgogICAgICAgICAg
ICAgICAgIGFjdHVhbFZpZGVvU2luayA9IG1fZnBzU2luazsKQEAgLTE5MjEsNyArMTk1Myw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAg
ICB9CiAKICAgICBpZiAoIW1fZnBzU2luaykgewotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQor
I2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICAgICAgZ3N0X2Jpbl9hZGQoR1NU
X0JJTihtX3ZpZGVvU2lua0JpbiksIG1fd2Via2l0VmlkZW9TaW5rKTsKICNlbmRpZgogICAgICAg
ICBhY3R1YWxWaWRlb1NpbmsgPSBtX3dlYmtpdFZpZGVvU2luazsKQEAgLTE5MjksNyArMTk2MSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkK
IAogICAgIEFTU0VSVChhY3R1YWxWaWRlb1NpbmspOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIC8vIEZhc3RlciBlbGVt
ZW50cyBsaW5raW5nLgogICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHF1ZXVlLCAic3Jj
IiwgYWN0dWFsVmlkZW9TaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDdl
NWRiZjguLjczOThlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKQEAgLTM5LDYgKzM5LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdz
dEVsZW1lbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmZGVmIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJDbGFzcworY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckNsYXNzOwor
I2VuZGlmCisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBJ
bnRSZWN0OwpAQCAtNzUsMTEgKzc5LDEzIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAg
dm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKTsKIAogICAgICAgICAgICAgdm9pZCBzZXRWb2x1
bWUoZmxvYXQpOworICAgICAgICAgICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7CiAgICAgICAgICAg
ICB2b2lkIHZvbHVtZUNoYW5nZWQoKTsKICAgICAgICAgICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZW
b2x1bWVDaGFuZ2UoKTsKIAogICAgICAgICAgICAgYm9vbCBzdXBwb3J0c011dGluZygpIGNvbnN0
OwogICAgICAgICAgICAgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICAgICAgICAgIGJvb2wgbXV0
ZWQoKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQgbXV0ZUNoYW5nZWQoKTsKICAgICAgICAgICAg
IHZvaWQgbm90aWZ5UGxheWVyT2ZNdXRlKCk7CiAKQEAgLTkzLDYgKzk5LDcgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSB7CiAgICAgICAgICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdDsKICAgICAg
ICAgICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Q7CiAgICAgICAgICAgICB1bnNp
Z25lZCB0b3RhbEJ5dGVzKCkgY29uc3Q7CisgICAgICAgICAgICBmbG9hdCBtYXhUaW1lTG9hZGVk
KCkgY29uc3Q7CiAKICAgICAgICAgICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICAgICAg
ICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CkBAIC0xMTAsNiArMTE3LDEyIEBAIGNs
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2UgewogCiAgICAgICAgICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Q7CiAKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgICAgICAg
ICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgICAgICAgICAgdm9pZCBleGl0RnVsbHNjcmVl
bigpOworICAgICAgICAgICAgYm9vbCBjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisjZW5kaWYKKwogICAgICAgICAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdDsKICAgICAgICAgICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0
OwogCkBAIC0xMjcsNiArMTQwLDggQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
IDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICAgICAgICAgIE1l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdDsKIAorICAgICAg
ICAgICAgTWVkaWFQbGF5ZXIqIG1lZGlhUGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7
IH0KKwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKE1lZGlhUGxheWVyKik7CiAKQEAgLTE0NCw3ICsxNTksNiBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
IHsKIAogICAgICAgICAgICAgdm9pZCBjYWNoZUR1cmF0aW9uKCk7CiAgICAgICAgICAgICB2b2lk
IHVwZGF0ZVN0YXRlcygpOwotICAgICAgICAgICAgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0
OwogCiAgICAgICAgICAgICB2b2lkIGNyZWF0ZUdTVFBsYXlCaW4oKTsKICAgICAgICAgICAgIGJv
b2wgY2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBzdGF0ZSk7CkBAIC0xOTEsOCArMjA1LDEx
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgYm9vbCBtX2RlbGF5aW5nTG9hZDsKICAg
ICAgICAgICAgIGJvb2wgbV9tZWRpYUR1cmF0aW9uS25vd247CiAgICAgICAgICAgICBtdXRhYmxl
IGZsb2F0IG1fbWF4VGltZUxvYWRlZEF0TGFzdERpZExvYWRpbmdQcm9ncmVzczsKLSNpZm5kZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAg
ICAgICAgICBSZWZQdHI8R1N0cmVhbWVyR1dvcmxkPiBtX2dzdEdXb3JsZDsKKyNpZmRlZiBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3MKKyAgICAgICAgICAgIE93blB0cjxGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyQ2xhc3M+IG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKKyNlbmRp
ZgogI2VuZGlmCiAgICAgICAgICAgICBndWludCBtX3ZvbHVtZVRpbWVySGFuZGxlcjsKICAgICAg
ICAgICAgIGd1aW50IG1fbXV0ZVRpbWVySGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dp
bmRvdy5oCmluZGV4IDJmOGQzNjUuLjRhMWJjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9X
aW5kb3cuaApAQCAtMTksNyArMTksNyBAQAogCiAjaWZuZGVmIFBsYXRmb3JtVmlkZW9XaW5kb3df
aAogI2RlZmluZSBQbGF0Zm9ybVZpZGVvV2luZG93X2gKLSNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQog
CiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTYx
LDUgKzYxLDUgQEAgY2xhc3MgUGxhdGZvcm1WaWRlb1dpbmRvdyA6IHB1YmxpYyBSZWZDb3VudGVk
PFBsYXRmb3JtVmlkZW9XaW5kb3c+IHsKICAgICB9OwogfQogCi0jZW5kaWYgLy8gVVNFKEdTVFJF
QU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gVVNFKEdTVFJF
QU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvd0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHAKaW5kZXggYjgzODgxMS4uMGMzNTcyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRm
b3JtVmlkZW9XaW5kb3dHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcApAQCAtMTksNyArMTksNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvdy5o
IgotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQ
SV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKQEAgLTQ4
LDggKzQ4LDcgQEAgUGxhdGZvcm1WaWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygpCiAK
IFBsYXRmb3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKIHsKLSAgICBpZiAo
bV92aWRlb1dpbmRvdyAmJiBtX3dpbmRvdykgewotICAgICAgICBndGtfY29udGFpbmVyX3JlbW92
ZShHVEtfQ09OVEFJTkVSKG1fd2luZG93KSwgbV92aWRlb1dpbmRvdyk7CisgICAgaWYgKG1fdmlk
ZW9XaW5kb3cpIHsKICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fdmlkZW9XaW5kb3cpOwog
ICAgICAgICBtX3ZpZGVvV2luZG93ID0gMDsKICAgICB9CkBAIC02NSw1ICs2NCw1IEBAIFBsYXRm
b3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKIHZvaWQgUGxhdGZvcm1WaWRl
b1dpbmRvdzo6cHJlcGFyZUZvck92ZXJsYXkoR3N0TWVzc2FnZSopCiB7CiB9Ci0jZW5kaWYgLy8g
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dp
bmRvd1ByaXZhdGUuaAppbmRleCBmNDhmZjgzLi45NzJiNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
UGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaApAQCAtMTksNiArMTksNyBAQAogCiAjaWZuZGVm
IFBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlX2gKICNkZWZpbmUgUGxhdGZvcm1WaWRlb1dpbmRv
d1ByaXZhdGVfaAorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCiAjaW5jbHVkZSA8UUV2ZW50PgogI2luY2x1ZGUgPFFU
aW1lcj4KQEAgLTU1LDUgKzU2LDUgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0KKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICNlbmRpZiAvLyBQbGF0Zm9ybVZpZGVvV2luZG93UHJp
dmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCmluZGV4IDExYjZm
YjcuLjFkY2ZkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCkBA
IC0xOSw3ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVZpZGVvV2luZG93LmgiCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAh
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgIkhUTUxW
aWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oIgpA
QCAtMTMwLDQgKzEzMCw0IEBAIFBsYXRmb3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2lu
ZG93KCkKIHZvaWQgUGxhdGZvcm1WaWRlb1dpbmRvdzo6cHJlcGFyZUZvck92ZXJsYXkoR3N0TWVz
c2FnZSopCiB7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYm
IFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggZDg1MjE4NC4uODhhNmNkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RydWN0IF9XZWJL
aXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICNlbmRpZgogCi0j
aWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVP
KQogICAgIFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkOwogI2VuZGlmCiAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5k
ZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgICAgICByZXR1cm4g
R1NUX0ZMT1dfT0s7CiAgICAgfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIC8vIElnbm9yZSBidWZmZXJzIGlmIHRoZSB2
aWRlbyBpcyBhbHJlYWR5IGluIGZ1bGxzY3JlZW4gdXNpbmcKICAgICAvLyBhbm90aGVyIHNpbmsu
CiAgICAgaWYgKHByaXYtPmdzdEdXb3JsZC0+aXNGdWxsc2NyZWVuKCkpIHsKQEAgLTQxOCw3ICs0
MTgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZp
ZGVvU2lua0NsYXNzKiBrbGFzcykKIH0KIAogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisj
aWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogR3N0RWxlbWVudCogd2Via2l0VmlkZW9T
aW5rTmV3KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkKQogewogICAgIEdzdEVs
ZW1lbnQqIGVsZW1lbnQgPSBHU1RfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVklE
RU9fU0lOSywgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oCmluZGV4IDA2MWI2OTQu
LjhjZmQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKQEAgLTIyLDcgKzIyLDcg
QEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIAotI2lmbmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICNpbmNsdWRl
ICJHU3RyZWFtZXJHV29ybGQuaCIKICNlbmRpZgogCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBf
V2ViS2l0VmlkZW9TaW5rQ2xhc3MgewogCiBHVHlwZSB3ZWJraXRfdmlkZW9fc2lua19nZXRfdHlw
ZSgpIEdfR05VQ19DT05TVDsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIEdzdEVsZW1lbnQqIHdlYmtpdFZpZGVvU2lua05ldyhX
ZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQqKTsKICNlbHNlCiBHc3RFbGVtZW50KiB3ZWJraXRWaWRl
b1NpbmtOZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMjExYzExNi4uYWRmZGMyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wMS0yNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gVVNFKE5BVElWRV9GVUxM
U0NSRUVOX1ZJREVPKSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDY3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCdWlsZCBmaXhlcyBmb3IgR1N0cmVhbWVyIE5BVElWRV9GVUxMU0NSRUVO
X1ZJREVPIHN1cHBvcnQuIFNvbWUKKyAgICAgICAgbW9yZSBjaGFuZ2VzIHdpbGwgYmUgbmVlZGVk
IHRvIHVzZSB0aGUgbmV3CisgICAgICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgdGhvdWdo
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OkZ1bGxTY3JlZW5WaWRlb1F0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojp+RnVsbFNjcmVlblZpZGVvUXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVlbkZvck5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmV4aXRGdWxsU2NyZWVu
Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6aXNWYWxpZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvUXQpOgorCiAyMDEzLTAxLTI0ICBI
YWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBUaGVyZSBhcmUg
YSBmZXcgb2Ygd3JvbmcgcmVtb3ZlQWxsQ2hpbGRyZW4oKSBjYWxsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IDUzNzRmNzYu
LjA5NThmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCkBAIC03NSw3ICs3NSw3IEBACiAjaW5jbHVkZSA8cXdpbmRvdy5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAotI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoR1NU
UkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkpIHx8IFVTRShRVF9NVUxUSU1F
RElBKSB8fCBVU0UoUVRLSVQpKQorI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoR1NUUkVBTUVS
KSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pKSB8fCBVU0UoUVRfTVVMVElNRURJQSkg
fHwgVVNFKFFUS0lUKSkKICNpbmNsdWRlICJGdWxsU2NyZWVuVmlkZW9RdC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTEyNiw3ICsx
MjYsNyBAQCBib29sIENocm9tZUNsaWVudFF0OjpkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2tzID0g
ZmFsc2U7CiBDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQoUVdlYlBhZ2VBZGFwdGVyKiB3
ZWJQYWdlQWRhcHRlcikKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlQWRhcHRlcikKICAgICAsIG1f
ZXZlbnRMb29wKDApCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAoKFVTRShHU1RSRUFNRVIpICYmICFk
ZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKSkgfHwgVVNFKFFUX01VTFRJTUVESUEpIHx8IFVTRShR
VEtJVCkpCisjaWYgRU5BQkxFKFZJREVPKSAmJiAoKFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykpIHx8IFVTRShRVF9NVUxUSU1FRElBKSB8fCBVU0UoUVRLSVQp
KQogICAgICwgbV9mdWxsU2NyZWVuVmlkZW8oMCkKICNlbmRpZgogewpAQCAtMTM4LDcgKzEzOCw3
IEBAIENocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50UXQoKQogICAgIGlmIChtX2V2ZW50TG9v
cCkKICAgICAgICAgbV9ldmVudExvb3AtPmV4aXQoKTsKIAotI2lmIEVOQUJMRShWSURFTykgJiYg
KChVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkpIHx8IFVTRShR
VF9NVUxUSU1FRElBKSB8fCBVU0UoUVRLSVQpKQorI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0Uo
R1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pKSB8fCBVU0UoUVRfTVVM
VElNRURJQSkgfHwgVVNFKFFUS0lUKSkKICAgICBkZWxldGUgbV9mdWxsU2NyZWVuVmlkZW87CiAj
ZW5kaWYKIH0KQEAgLTY3Nyw3ICs2NzcsNyBAQCBJbnRSZWN0IENocm9tZUNsaWVudFF0Ojp2aXNp
YmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3QKIH0KICNlbmRpZgogCi0jaWYgRU5B
QkxFKFZJREVPKSAmJiAoKFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKSkgfHwgVVNFKFFUX01VTFRJTUVESUEpIHx8IFVTRShRVEtJVCkpCisjaWYgRU5BQkxFKFZJ
REVPKSAmJiAoKFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykp
IHx8IFVTRShRVF9NVUxUSU1FRElBKSB8fCBVU0UoUVRLSVQpKQogRnVsbFNjcmVlblZpZGVvUXQq
IENocm9tZUNsaWVudFF0OjpmdWxsU2NyZWVuVmlkZW8oKQogewogICAgIGlmICghbV9mdWxsU2Ny
ZWVuVmlkZW8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1
bGxTY3JlZW5WaWRlb1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvUXQuY3BwCmluZGV4IDI1ZTM1N2EuLjg2ZDM1NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwCkBA
IC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShHU1RSRUFN
RVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIFVTRShHU1RSRUFNRVIpICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXI6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQogICAgIDogbV92aWRlb0Vs
ZW1lbnQoMCkKICAgICAsIG1fZnVsbFNjcmVlbldpZGdldCgwKQpAQCAtOTksNyArOTksNyBAQCBG
dWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQoQ2hyb21lQ2xpZW50UXQqIGNocm9t
ZUNsaWVudCkKICAgICAgICAgY29ubmVjdChtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIsIFNJR05B
TChmdWxsU2NyZWVuQ2xvc2VkKCkpLCB0aGlzLCBTTE9UKGFib3V0VG9DbG9zZSgpKSk7CiAjZW5k
aWYKIAotI2lmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2lmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBt
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXIgPSBuZXcgR1N0cmVhbWVyRnVsbFNjcmVl
blZpZGVvSGFuZGxlcjsKICNlbmRpZgogCkBAIC0xMTMsNyArMTEzLDcgQEAgRnVsbFNjcmVlblZp
ZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCgpCiAjaWYgVVNFKFFUX01VTFRJTUVESUEpCiAgICAg
ZGVsZXRlIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcjsKICNlbmRpZgotI2lmIFVTRShHU1RSRUFN
RVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIFVTRShHU1RSRUFNRVIpICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBkZWxldGUgbV9GdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyR1N0cmVhbWVyOwogI2VuZGlmCiAjaWYgVVNFKFFUS0lUKQpAQCAtMTQzLDcgKzE0
Myw3IEBAIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVlbkZvck5vZGUoTm9k
ZSogbm9kZSkKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPmVudGVyRnVsbFNjcmVlbiht
ZWRpYVBsYXllclF0LT5tZWRpYVBsYXllcigpKTsKICNlbmRpZgogCi0jaWYgVVNFKEdTVFJFQU1F
UikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgVVNFKEdTVFJFQU1FUikgJiYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxl
ckdTdHJlYW1lci0+c2V0VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50KTsKICAgICBtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXItPmVudGVyRnVsbFNjcmVlbigpOwogI2VuZGlmCkBA
IC0xNzQsNyArMTc0LDcgQEAgdm9pZCBGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3JlZW5G
b3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUXQqIG1lZGlhUGxheWVy
UXQgPSBtZWRpYVBsYXllcigpOwogICAgIG1lZGlhUGxheWVyUXQtPnJlc3RvcmVWaWRlb0l0ZW0o
KTsKICNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2lmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykK
ICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXItPmV4aXRGdWxsU2NyZWVuKCk7
CiAjZW5kaWYKIApAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgRnVsbFNjcmVlblZpZGVvUXQ6Omlz
VmFsaWQoKSBjb25zdAogI2lmIFVTRShRVF9NVUxUSU1FRElBKQogICAgIHJldHVybiBtX0Z1bGxT
Y3JlZW5WaWRlb0hhbmRsZXI7CiAjZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5l
ZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8pCiAgICAgcmV0dXJuIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJl
YW1lcjsKICNlbGlmIFVTRShRVEtJVCkKICAgICByZXR1cm4gbV9GdWxsU2NyZWVuVmlkZW9IYW5k
bGVyUVRLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1
bGxTY3JlZW5WaWRlb1F0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxT
Y3JlZW5WaWRlb1F0LmgKaW5kZXggODFhMjg4ZC4uNDM4YWIzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaApAQCAtNDMsNyAr
NDMsNyBAQCBjbGFzcyBRVEtpdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CiAjZW5kaWYKIAogLy8g
V2UgZG8gbm90IHVzZSBFTkFCTEUgb3IgVVNFIGJlY2F1c2UgbW9jIGRvZXMgbm90IGV4cGFuZCB0
aGVzZSBtYWNyb3MuCi0jaWYgZGVmaW5lZChXVEZfVVNFX0dTVFJFQU1FUikgJiYgV1RGX1VTRV9H
U1RSRUFNRVIgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgZGVmaW5lZChXVEZf
VVNFX0dTVFJFQU1FUikgJiYgV1RGX1VTRV9HU1RSRUFNRVIgJiYgZGVmaW5lZChXVEZfVVNFX05B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKSAmJiBXVEZfVVNFX05BVElWRV9GVUxMU0NSRUVOX1ZJREVP
CiBjbGFzcyBGdWxsU2NyZWVuVmlkZW9XaW5kb3c7CiAKIGNsYXNzIEdTdHJlYW1lckZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXIgOiBwdWJsaWMgUU9iamVjdCB7CkBAIC05MCw3ICs5MCw3IEBAIHByaXZh
dGU6CiAjaWYgVVNFKFFUX01VTFRJTUVESUEpCiAgICAgUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRs
ZXIqIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcjsKICNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIp
CisjaWYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAg
IEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIqIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxl
ckdTdHJlYW1lcjsKICNlbmRpZgogI2lmIFVTRShRVEtJVCkKLS0gCjEuNy4xMC40
</data>
<flag name="commit-queue"
          id="203747"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184870</attachid>
            <date>2013-01-26 08:48:39 -0800</date>
            <delta_ts>2013-01-28 05:04:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>48664</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3YjNkODlkM2E0ZDhlZTMwY2JhNmM1ZmU5Mjk2MzQyZTlhN2IyMzk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjA2OjUyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDk0ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuY3BwICAgICAgICAgfCAgMTQ2ICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCB8ICAg
NzMgKysrKysrKysrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
ICAgICAgICAgfCAgMTE2ICsrKysrKysrKysrKy0tLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAgNSArLQogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDY4ICsrKysrKy0tLQogLi4uL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgfCAgIDIxICsrLQog
Li4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggICAgICAgfCAgICA0
ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwICB8
ICAgIDcgKy0KIC4uLi9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaCAgICAg
ICAgIHwgICAgMyArLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
UXQuY3BwICAgfCAgICA0ICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJl
YW1lci5jcHAgICAgICB8ICAgIDYgKy0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5r
R1N0cmVhbWVyLmggICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICsrKysKIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIHwgICAgOCArLQogU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oICAgfCAgICAyICstCiAuLi4vV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcCB8ICAgMTIgKy0KIC4uLi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaCAgIHwgICAgNCArLQog
MjAgZmlsZXMgY2hhbmdlZCwgNTI3IGluc2VydGlvbnMoKyksIDc4IGRlbGV0aW9ucygtKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA2YzBiNy4uZDFmNjAz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEzLTAxLTIwICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8gaW4gdGhlIEdTdHJlYW1lciBtZWRpYQorICAgICAgICBwbGF5ZXIuIEEgbmV3IEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIgY2xhc3MgaXMKKyAgICAgICAgaW50cm9k
dWNlZCwgcG9ydHMgaW50ZXJlc3RlZCB0byBpbXBsZW1lbnQgbmF0aXZlIGZ1bGxzY3JlZW4gdmlk
ZW8KKyAgICAgICAgc3VwcG9ydCBzaG91bGQgaW5oZXJpdCBmcm9tIGl0IChzZWUgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckd0aykKKyAgICAgICAgYW5kIGhvb2sgaXQgaW4gdGhlIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lciBiYWNrZW5kLgorCisgICAgICAgIFRoZSBHU3RyZWFtZXJHV29y
bGQgcG9ydCB0byBHU3RyZWFtZXIgMS54IGlzIHBhcnRseSBiYXNlZCBvbiBhCisgICAgICAgIHBh
dGNoIGJ5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9nZUBjb2xsYWJvcmEuY29tPi4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBFbmFibGUgTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8gc3VwcG9ydC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBOZXcKKyAgICAgICAg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcntHU3RyZWFtZXIsR3RrfSBtb2R1bGVzLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayk6IFBsYXliaW4gbm90aWZ5Ojp2b2x1bWUK
KyAgICAgICAgc2lnbmFsIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6cGxheWVyTXV0ZUNo
YW5nZWRDYWxsYmFjayk6IFBsYXliaW4gbm90aWZ5OjptdXRlIHNpZ25hbCBjYWxsYmFjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OkZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdT
dHJlYW1lcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgU3dpdGNoIEdTdHJlYW1lckdXb3Js
ZCB0byBmdWxsIHNjcmVlbiwgaG9vayBpbiB0byBwbGF5YmluJ3MKKyAgICAgICAgbm90aWZ5Ojp2
b2x1bWUgYW5kIG11dGUgc2lnbmFscyBhbmQgaW5pdGlhbGl6ZSB0aGUgZnVsbCBzY3JlZW4gd2lu
ZG93LgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1l
cjo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBEZXN0cm95IHRoZSBmdWxsIHNjcmVlbiB3aW5k
b3csIGRpc2Nvbm5lY3QgZnJvbSBwbGF5YmluIHNpZ25hbHMKKyAgICAgICAgYW5kIHN3aXRjaCBH
U3RyZWFtZXJHV29ybGQgb3V0IG9mIGZ1bGwgc2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZXhpdE9uVXNlclJlcXVlc3QpOgorICAg
ICAgICBUcmlnZ2VyIGV4aXQgZnJvbSBmdWxsIHNjcmVlbiBtb2RlLiBUaGlzIG1ldGhvZCBpcyBt
ZWFudCB0byBiZQorICAgICAgICBjYWxsZWQgd2hlbiB0aGUgdXNlciBleHBsaWNpdGVseSByZXF1
ZXN0cyB0byBleGl0IGZyb20gZnVsbCBzY3JlZW4KKyAgICAgICAgYnkgcHJlc3NpbmcgYSBrZXkg
b3Igc29tZXRoaW5nIHNpbWlsYXIuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyOjp0b2dnbGVQbGF5KTogU3dpdGNoCisgICAgICAgIGJldHdlZW4g
cGxheSBhbmQgcGF1c2Ugc3RhdGVzLiBVc2VmdWwgZm9yIGNoaWxkIGNsYXNzZXMuCisgICAgICAg
IChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbmNyZWFzZVZv
bHVtZSk6CisgICAgICAgIFVzZWZ1bCBmb3IgY2hpbGQgY2xhc3NlcyBhcyB3ZWxsLgorICAgICAg
ICAoV2ViQ29yZTo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6ZGVjcmVhc2VW
b2x1bWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXI6OnNldFZvbHVtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6dGltZVRvU3RyaW5nKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6cGxheVN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IFRvIGJlIGltcGxlbWVudGVkIGJ5IGNoaWxkIGNsYXNzIHRvIHJlZmxlY3QgdGhlIHBsYXllcidz
IHN0YXRlIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyOjp2b2x1bWVDaGFuZ2VkKTogVG8KKyAgICAgICAgYmUgaW1wbGVtZW50ZWQg
YnkgY2hpbGQgY2xhc3MgYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHU3RyZWFtZXI6Om11dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbml0aWFsaXplV2luZG93
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjpkZXN0cm95V2luZG93KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnc3RH
V29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKTogQWRhcHQgZm9yIEdTdHJlYW1lciB2aWRlbworICAg
ICAgICBvdmVybGF5IEFQSSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dv
cmxkOjpHU3RyZWFtZXJHV29ybGQpOgorICAgICAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIg
dGFrZXMgb25lIG1vcmUgYXJndW1lbnQgaW4gR1N0cmVhbWVyIDEueC4KKyAgICAgICAgKFdlYkNv
cmU6OkdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKTogZmZtcGVnY29sb3JzcGFjZSB3
YXMKKyAgICAgICAgcmVuYW1lZCB0byB2aWRlb2NvbnZlcnQgaW4gR1N0cmVhbWVyIDEueCBhbmQg
dGhlIHRlZSBzcmMgcGFkCisgICAgICAgIHRlbXBsYXRlIHdhcyByZW5hbWVkIHRvIHNyY18ldS4g
VGhlcmUgaXMgbm8gbmVlZCB0byBzZW5kIGEgbmV3CisgICAgICAgIHNlZ21lbnQgcXVlcnkgZWl0
aGVyLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpnc3RHV29ybGRQYWRQ
cm9iZUNhbGxiYWNrKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSB2aWRlbworICAgICAgICBzaW5rIGJy
YW5jaCBvbmNlIHRoZSB0ZWUgc291cmNlIHBhZCBzdGFydGluZyBpdCBoYXMgYmVlbiBibG9ja2Vk
LgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbik6IFJl
ZmFjdG9yIHRvIHVzZSBhbgorICAgICAgICBhc3luY2hyb25vdXMgcGFkIHByb2JlLgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpyZW1vdmVQbGF0Zm9ybVZpZGVvU2luayk6IFJl
ZmFjdG9yZWQKKyAgICAgICAgZnJvbSBleGl0RnVsbHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6
OkdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheSk6IEFkYXB0IGZvciBHU3RyZWFtZXIg
dmlkZW8KKyAgICAgICAgb3ZlcmxheSBBUEkgY2hhbmdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAgIChHU3RyZWFtZXJH
V29ybGQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgSG9v
ayBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTyBzdXBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2b2x1bWUpOiBQbGF5YmluIHZvbHVtZQorICAgICAg
ICBxdWVyeSB1c2VkIGJ5IHRoZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIpOiB2b2x1bWUoKSwgbXV0ZWQoKSBhbmQgTWVkaWFQbGF5
ZXIKKyAgICAgICAgYWNjZXNzb3IgbWV0aG9kcyBhZGRlZC4gTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8gbWV0aG9kcyBhZGRlZCBhcyB3ZWxsLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjYW5FbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptZWRpYVBsYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaDogUmUtZW5hYmxl
CisgICAgICAgIG1vZHVsZSBpZiBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTyBpcyB0dXJuZWQgb24u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5k
b3dHdGsuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9TaW5rR1N0cmVhbWVyLmNwcDogUmUtZW5hYmxlCisgICAgICAgIEdTdHJlYW1lckdXb3Js
ZCBzdXBwb3J0LgorICAgICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGUpOgorICAgICAgICAo
d2Via2l0VmlkZW9TaW5rUmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmg6IERpdHRvLgorCiAyMDEzLTAxLTI2ICBKdXN0aW4g
U2NodWggIDxqc2NodWhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDSFJPTUlVTV0gU3VwcHJl
c3MgbW9yZSBjNDI2NyBidWlsZCB3YXJuaW5ncyBmb3IgV2luNjQgdGFyZ2V0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCA5NWEyM2VkLi4wMjJlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
MTYxLDYgKzE2MSw3IEBAIGlmIFVTRV9HU1RSRUFNRVIKIGlmIEVOQUJMRV9ERUJVRwogd2ViY29y
ZV9jcHBmbGFncyArPSAtREdTVF9ESVNBQkxFX0RFUFJFQ0FURUQKIGVuZGlmICMgRU5EIEVOQUJM
RV9ERUJVRword2ViY29yZV9jcHBmbGFncyArPSAtRFdURl9VU0VfTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU89MQogZW5kaWYgIyBFTkQgVVNFX0dTVFJFQU1FUgogZWxzZQogZmVhdHVyZV9kZWZpbmVz
X292ZXJyaWRlcyArPSBFTkFCTEVfVklERU89MCBFTkFCTEVfVklERU9fVFJBQ0s9MApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggM2Q2ZTIzMS4uOTJlOTUzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MDU3LDYgKzYwNTcsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dv
cmxkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjYzMGFlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCisKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCisK
KyNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgPGdzdC9n
c3QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKyNkZWZpbmUgVk9MVU1FX1VQ
X09GRlNFVCAwLjA1IC8vIDUlCisjZGVmaW5lIFZPTFVNRV9ET1dOX09GRlNFVCAwLjA1IC8vIDUl
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJh
Y2soR09iamVjdCAqZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIqIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxlci0+dm9sdW1l
Q2hhbmdlZCgpOworfQorCit2b2lkIHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAq
ZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIqIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxlci0+bXV0ZUNoYW5nZWQoKTsKK30K
KworCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQor
ICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9jbGllbnQocGxheWVyLT5tZWRpYVBsYXll
cigpLT5tZWRpYVBsYXllckNsaWVudCgpKQorICAgICwgbV9nc3RyZWFtZXJHV29ybGQocGxheWVy
LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkKQorICAgICwgbV9wbGF5ZXJW
b2x1bWVTaWduYWxIYW5kbGVyKDApCisgICAgLCBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyKDAp
Cit7Cit9CisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6On5GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKCkKK3sKKyAgICBleGl0RnVsbHNjcmVlbigpOworfQor
Cit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmVudGVyRnVsbHNjcmVl
bigpCit7CisgICAgaWYgKCFtX2dzdHJlYW1lckdXb3JsZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX2dzdHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9nc3RyZWFtZXJHV29ybGQtPnBp
cGVsaW5lKCk7CisgICAgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29u
bmVjdChwaXBlbGluZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhwbGF5ZXJWb2x1bWVD
aGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyID0g
Z19zaWduYWxfY29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0socGxh
eWVyTXV0ZUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOworCisgICAgaW5pdGlhbGl6ZVdpbmRvdygp
OworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmV4aXRGdWxs
c2NyZWVuKCkKK3sKKyAgICBkZXN0cm95V2luZG93KCk7CisKKyAgICBHc3RFbGVtZW50KiBwaXBl
bGluZSA9IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIGlmIChtX3BsYXllclZv
bHVtZVNpZ25hbEhhbmRsZXIpIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0
KHBpcGVsaW5lLCBtX3BsYXllclZvbHVtZVNpZ25hbEhhbmRsZXIpOworICAgICAgICBtX3BsYXll
clZvbHVtZVNpZ25hbEhhbmRsZXIgPSAwOworICAgIH0KKworICAgIGlmIChtX3BsYXllck11dGVT
aWduYWxIYW5kbGVyKSB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwaXBl
bGluZSwgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlcik7CisgICAgICAgIG1fcGxheWVyTXV0ZVNp
Z25hbEhhbmRsZXIgPSAwOworICAgIH0KKworICAgIG1fZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVs
bHNjcmVlbigpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6
OmV4aXRPblVzZXJSZXF1ZXN0KCkKK3sKKyAgICBtX2NsaWVudC0+bWVkaWFQbGF5ZXJFeGl0RnVs
bHNjcmVlbigpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6
OnRvZ2dsZVBsYXkoKQoreworICAgIGlmIChtX2NsaWVudC0+bWVkaWFQbGF5ZXJJc1BhdXNlZCgp
KQorICAgICAgICBtX2NsaWVudC0+bWVkaWFQbGF5ZXJQbGF5KCk7CisgICAgZWxzZQorICAgICAg
ICBtX2NsaWVudC0+bWVkaWFQbGF5ZXJQYXVzZSgpOworICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsK
K30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjppbmNyZWFzZVZv
bHVtZSgpCit7CisgICAgc2V0Vm9sdW1lKG1fcGxheWVyLT52b2x1bWUoKSArIFZPTFVNRV9VUF9P
RkZTRVQpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OmRl
Y3JlYXNlVm9sdW1lKCkKK3sKKyAgICBzZXRWb2x1bWUobV9wbGF5ZXItPnZvbHVtZSgpIC0gVk9M
VU1FX0RPV05fT0ZGU0VUKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIGlmICh2b2x1bWUgPCAwLjAg
fHwgdm9sdW1lID4gMS4wKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsYXllci0+c2V0Vm9s
dW1lKHZvbHVtZSk7Cit9CisKK1N0cmluZyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyOjp0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSkKK3sKKyAgICBpZiAoIWlzZmluaXRlKHRpbWUp
KQorICAgICAgICB0aW1lID0gMDsKKyAgICBpbnQgc2Vjb25kcyA9IGZhYnNmKHRpbWUpOworICAg
IGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7CisgICAgaW50IG1pbnV0ZXMgPSAoc2Vj
b25kcyAvIDYwKSAlIDYwOworICAgIHNlY29uZHMgJT0gNjA7CisKKyAgICBpZiAoaG91cnMpIHsK
KyAgICAgICAgaWYgKGhvdXJzID4gOSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiJXMlMDJkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0
ZXMsIHNlY29uZHMpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAxZDolMDJk
OiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsK
KyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAyZDolMDJkIiwgKHRpbWUg
PCAwID8gIi0iIDogIiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
MWMxYzc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaApAQCAtMCww
ICsxLDczIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCisjZGVmaW5l
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXJfaAorCisjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R1N0cmVhbWVyR1dvcmxkOworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOworY2xh
c3MgTWVkaWFQbGF5ZXJDbGllbnQ7CisKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHU3RyZWFtZXIpOworcHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXIoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CisgICAgdmlydHVhbCB+RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcigpOworCisgICAgdm9pZCBlbnRlckZ1bGxz
Y3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBleGl0T25Vc2Vy
UmVxdWVzdCgpOworCisgICAgdm9pZCB0b2dnbGVQbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHBs
YXlTdGF0ZUNoYW5nZWQoKSB7IH0KKworICAgIHZvaWQgaW5jcmVhc2VWb2x1bWUoKTsKKyAgICB2
b2lkIGRlY3JlYXNlVm9sdW1lKCk7CisgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOworCisgICAg
dmlydHVhbCB2b2lkIHZvbHVtZUNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNo
YW5nZWQoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQg
dGltZSk7CisKKyAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIG1fcGxheWVyOworICAg
IE1lZGlhUGxheWVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBHU3RyZWFtZXJHV29ybGQqIG1fZ3N0
cmVhbWVyR1dvcmxkOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2lu
ZG93KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lXaW5kb3coKSB7IH0KKworICAgIHVu
c2lnbmVkIGxvbmcgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxv
bmcgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlcjsKK307CisKK30KKyNlbmRpZgorCisjZW5kaWYg
Ly8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJH
V29ybGQuY3BwCmluZGV4IGU2YjkwOGUuLmIxZGJiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29y
bGQuY3BwCkBAIC0xOCwxNSArMTgsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisK
ICNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorCisjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAK
ICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lv
bmluZy5oIgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94
b3ZlcmxheS5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KIAorI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvb3ZlcmxheS5oPgorI2Vs
c2UKKyNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgorI2VuZGlmCisKKwogI2lm
IFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaWZkZWYgR0RLX1dJTkRPV0lO
R19YMTEKQEAgLTM0LDYgKzQyLDEyIEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZuZGVmIEdTVF9B
UElfVkVSU0lPTl8xCitzdGF0aWMgY29uc3QgY2hhciogZ1ZpZGVvQ29udmVydE5hbWUgPSAiZmZt
cGVnY29sb3JzcGFjZSI7CisjZWxzZQorc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnRO
YW1lID0gInZpZGVvY29udmVydCI7CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsMTEgKzU3LDE2IEBAIGdib29sZWFuIGdzdEdXb3Js
ZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50
ZXIgZGF0CiAgICAgQVNTRVJUKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NB
R0VfRUxFTUVOVCk7CiAKICAgICBHU3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCA9IHN0YXRpY19j
YXN0PEdTdHJlYW1lckdXb3JsZCo+KGRhdGEpOworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
ICAgIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVj
dHVyZShtZXNzYWdlKTsKIAogICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVy
ZSwgInByZXBhcmUteHdpbmRvdy1pZCIpCiAgICAgICAgIHx8IGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaGF2ZS1ucy12aWV3IikpCiAgICAgICAgIGdzdEdXb3JsZC0+c2V0V2lu
ZG93T3ZlcmxheShtZXNzYWdlKTsKKyNlbHNlCisgICAgaWYgKGdzdF9pc192aWRlb19vdmVybGF5
X3ByZXBhcmVfd2luZG93X2hhbmRsZV9tZXNzYWdlKG1lc3NhZ2UpKQorICAgICAgICBnc3RHV29y
bGQtPnNldFdpbmRvd092ZXJsYXkobWVzc2FnZSk7CisjZW5kaWYKICAgICByZXR1cm4gVFJVRTsK
IH0KIApAQCAtNjEsNyArODAsMTEgQEAgR1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQo
R3N0RWxlbWVudCogcGlwZWxpbmUpCiB7CiAgICAgLy8gWE92ZXJsYXkgbWVzc2FnZXMgbmVlZCB0
byBiZSBoYW5kbGVkIHN5bmNocm9ub3VzbHkuCiAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IHdl
YmtpdEdzdFBpcGVsaW5lR2V0QnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSk7CisjaWZuZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQo
KSwgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzKTsKKyNlbHNlCisgICAgZ3N0X2J1
c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVy
LCB0aGlzLCAwKTsKKyNlbmRpZgogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLmdldCgpLCAic3lu
Yy1tZXNzYWdlOjplbGVtZW50IiwgR19DQUxMQkFDSyhnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxi
YWNrKSwgdGhpcyk7CiB9CiAKQEAgLTgxLDcgKzEwNCw3IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxk
OjplbnRlckZ1bGxzY3JlZW4oKQogICAgICAgICBtX3ZpZGVvV2luZG93ID0gUGxhdGZvcm1WaWRl
b1dpbmRvdzo6Y3JlYXRlV2luZG93KCk7CiAKICAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVv
U2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwbGF0Zm9y
bVZpZGVvU2luayIpOwotICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoImZmbXBlZ2NvbG9yc3BhY2UiLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVs
ZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoZ1ZpZGVvQ29udmVy
dE5hbWUsICJjb2xvcnNwYWNlIik7CiAgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgInF1ZXVlIik7CiAgICAgR3N0RWxlbWVudCogdmlkZW9T
Y2FsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxl
Iik7CiAKQEAgLTk0LDcgKzExNyw2IEBAIGJvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxz
Y3JlZW4oKQogCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jp
bl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKIAot
ICAgIC8vIEFkZCBhbmQgbGluayBhIHF1ZXVlLCBmZm1wZWdjb2xvcnNwYWNlLCB2aWRlb3NjYWxl
IGFuZCBzaW5rIGluIHRoZSBiaW4uCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKHZpZGVv
U2luay5nZXQoKSksIHBsYXRmb3JtVmlkZW9TaW5rLCB2aWRlb1NjYWxlLCBjb2xvcnNwYWNlLCBx
dWV1ZSwgTlVMTCk7CiAKICAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2luZy4KQEAgLTEwMyw3
ICsxMjUsMTEgQEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAg
Z3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwodmlkZW9TY2FsZSwgInNyYyIsIHBsYXRmb3JtVmlk
ZW9TaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKIAogICAgIC8vIExp
bmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyNpZm5kZWYgR1NUX0FQSV9WRVJT
SU9OXzEKICAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksICJzcmMlZCIpKTsKKyNlbHNlCisgICAgR1JlZlB0
cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQo
dGVlLmdldCgpLCAic3JjXyV1IikpOworI2VuZGlmCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQ
YWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIikp
OwogICAgIGdzdF9wYWRfbGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOwogCkBAIC0x
MjEsOSArMTQ3LDkgQEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNvbG9yc3BhY2UsIHN0YXRlKTsKICAgICBnc3RfZWxl
bWVudF9zZXRfc3RhdGUocXVldWUsIHN0YXRlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQogICAgIC8vIFF1ZXJ5IHRoZSBjdXJyZW50IG1lZGlhIHNlZ21lbnQgaW5mb3JtYXRpb25zIGFu
ZCBzZW5kIHRoZW0gdG93YXJkcwogICAgIC8vIHRoZSBuZXcgdGVlIGJyYW5jaCBkb3duc3RyZWFt
LgotCiAgICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWdtZW50KEdTVF9GT1JN
QVRfVElNRSk7CiAgICAgZ2Jvb2xlYW4gcXVlcnlSZXN1bHQgPSBnc3RfZWxlbWVudF9xdWVyeSht
X3BpcGVsaW5lLCBxdWVyeSk7CiAKQEAgLTEzMiw4ICsxNTgsOCBAQCBib29sIEdTdHJlYW1lckdX
b3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgR3N0Rm9ybWF0IGZvcm1hdDsKICAgICBnaW50NjQgcG9zaXRpb247CisgICAgR3N0Rm9ybWF0
IGZvcm1hdDsKICAgICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKG1fcGlwZWxpbmUs
ICZmb3JtYXQsICZwb3NpdGlvbikpCiAgICAgICAgIHBvc2l0aW9uID0gMDsKIApAQCAtMTQ1LDIw
ICsxNzEsNTUgQEAgYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAg
Z3N0X3BhZF9wdXNoX2V2ZW50KHNyY1BhZC5nZXQoKSwgZXZlbnQpOwogCiAgICAgZ3N0X3F1ZXJ5
X3VucmVmKHF1ZXJ5KTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCisjaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBnc3RHV29ybGRQYWRQcm9i
ZUNhbGxiYWNrKEdzdFBhZCogcGFkLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIEdTdHJlYW1lckdX
b3JsZCogZ3N0R1dvcmxkKQoreworICAgIGdzdEdXb3JsZC0+cmVtb3ZlUGxhdGZvcm1WaWRlb1Np
bmsoKTsKKyAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9SRU1PVkU7Cit9CisjZW5kaWYKKwogdm9p
ZCBHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoIW1fZHluYW1p
Y1BhZE5hbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEdldCB2aWRlbyBzaW5rIGJpbiBh
bmQgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZS4KLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVv
U2luazsKICAgICBHc3RFbGVtZW50KiBzaW5rUHRyID0gMDsKKyAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZSwgInZpZGVvLXNpbmsiLCAmc2lua1B0ciwgTlVMTCk7CisgICAgR1JlZlB0cjxHc3RF
bGVtZW50PiB2aWRlb1NpbmsgPSBhZG9wdEdSZWYoc2lua1B0cik7CiAKKyAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHRlZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlk
ZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIikpOworICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQg
PSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFt
aWNQYWROYW1lLmdldCgpKSk7CisKKyAgICAvLyBCbG9jayBkYXRhIGZsb3cgdG93YXJkcyB0aGUg
cGlwZWxpbmUgYnJhbmNoIHRvIHJlbW92ZS4gTm8gbmVlZAorICAgIC8vIGZvciBwYWQgYmxvY2tp
bmcgaWYgdGhlIHBpcGVsaW5lIGlzIHBhdXNlZC4KKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBn
c3RfZWxlbWVudF9nZXRfc3RhdGUobV9waXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKKyNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorICAgIGlmIChzdGF0ZSA+PSBHU1RfU1RBVEVfUExBWUlORykKKyAg
ICAgICAgZ3N0X3BhZF9hZGRfcHJvYmUoc3JjUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVf
SURMRSwgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxiYWNrPihnc3RHV29ybGRQYWRQ
cm9iZUNhbGxiYWNrKSwgdGhpcywgMCk7CisgICAgZWxzZQorI2Vsc2UKKyAgICBpZiAoc3RhdGUg
PCBHU1RfU1RBVEVfUExBWUlORyB8fCBnc3RfcGFkX3NldF9ibG9ja2VkKHNyY1BhZC5nZXQoKSwg
dHJ1ZSkpCisjZW5kaWYKKyAgICAgICAgcmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKKworICAg
IG1fdmlkZW9XaW5kb3cgPSAwOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxh
dGZvcm1WaWRlb1NpbmsoKQoreworICAgIGlmICghbV9keW5hbWljUGFkTmFtZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8g
cmVtb3ZlLgorICAgIEdzdEVsZW1lbnQqIHNpbmtQdHIgPSAwOwogICAgIGdfb2JqZWN0X2dldCht
X3BpcGVsaW5lLCAidmlkZW8tc2luayIsICZzaW5rUHRyLCBOVUxMKTsKLSAgICB2aWRlb1Npbmsg
PSBhZG9wdEdSZWYoc2lua1B0cik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRlb1Npbmsg
PSBhZG9wdEdSZWYoc2lua1B0cik7CiAKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHRlZSA9IGFk
b3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZp
ZGVvVGVlIikpOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gcGxhdGZvcm1WaWRlb1NpbmsgPSBh
ZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJw
bGF0Zm9ybVZpZGVvU2luayIpKTsKQEAgLTE2NiwyOCArMjI3LDE3IEBAIHZvaWQgR1N0cmVhbWVy
R1dvcmxkOjpleGl0RnVsbHNjcmVlbigpCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBjb2xvcnNw
YWNlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0
KCkpLCAiY29sb3JzcGFjZSIpKTsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2NhbGUg
PSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSks
ICJ2aWRlb1NjYWxlIikpOwogCi0gICAgLy8gR2V0IHBhZHMgdG8gdW5saW5rIGFuZCByZW1vdmUu
CiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZCh0ZWUuZ2V0KCksIG1fZHluYW1pY1BhZE5hbWUuZ2V0KCkpKTsKICAgICBHUmVm
UHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3Bh
ZChxdWV1ZS5nZXQoKSwgInNpbmsiKSk7CisgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLmdldCgp
LCBzaW5rUGFkLmdldCgpKTsKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKHRl
ZS5nZXQoKSwgc3JjUGFkLmdldCgpKTsKIAotICAgIC8vIEJsb2NrIGRhdGEgZmxvdyB0b3dhcmRz
IHRoZSBwaXBlbGluZSBicmFuY2ggdG8gcmVtb3ZlLiBObyBuZWVkCi0gICAgLy8gZm9yIHBhZCBi
bG9ja2luZyBpZiB0aGUgcGlwZWxpbmUgaXMgcGF1c2VkLgotICAgIEdzdFN0YXRlIHN0YXRlOwot
ICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BpcGVsaW5lLCAmc3RhdGUsIDAsIDApOwotICAg
IGlmIChzdGF0ZSA8IEdTVF9TVEFURV9QTEFZSU5HIHx8IGdzdF9wYWRfc2V0X2Jsb2NrZWQoc3Jj
UGFkLmdldCgpLCB0cnVlKSkgewotCi0gICAgICAgIC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1
ZXN0IHBhZC4KLSAgICAgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLmdldCgpLCBzaW5rUGFkLmdl
dCgpKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCks
IHNyY1BhZC5nZXQoKSk7Ci0KLSAgICAgICAgLy8gVW5saW5rLCByZW1vdmUgYW5kIGNsZWFudXAg
cXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5kIHNpbmsuCi0gICAgICAgIGdz
dF9lbGVtZW50X3VubGlua19tYW55KHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgpLCB2aWRl
b1NjYWxlLmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7Ci0gICAgICAgIGdz
dF9iaW5fcmVtb3ZlX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZS5nZXQoKSwg
Y29sb3JzcGFjZS5nZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0
KCksIE5VTEwpOwotICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocGxhdGZvcm1WaWRlb1Np
bmsuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KHZpZGVvU2NhbGUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKGNvbG9yc3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICAgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKHF1ZXVlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgfQor
ICAgIGdzdF9lbGVtZW50X3VubGlua19tYW55KHF1ZXVlLmdldCgpLCBjb2xvcnNwYWNlLmdldCgp
LCB2aWRlb1NjYWxlLmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5nZXQoKSwgTlVMTCk7CisgICAg
Z3N0X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksIHF1ZXVlLmdldCgp
LCBjb2xvcnNwYWNlLmdldCgpLCB2aWRlb1NjYWxlLmdldCgpLCBwbGF0Zm9ybVZpZGVvU2luay5n
ZXQoKSwgTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5r
LmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHZpZGVv
U2NhbGUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
Y29sb3JzcGFjZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShxdWV1ZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwogCiAgICAgbV9keW5hbWljUGFkTmFt
ZS5jbGVhcigpOwogfQpAQCAtMTk2LDcgKzI0NiwxMSBAQCB2b2lkIEdTdHJlYW1lckdXb3JsZDo6
c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewogICAgIEdzdE9iamVjdCog
c2luayA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKTsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQogICAgIGlmICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyNlbHNlCisgICAgaWYgKCFH
U1RfSVNfVklERU9fT1ZFUkxBWShzaW5rKSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1Moc2lu
ayksICJmb3JjZS1hc3BlY3QtcmF0aW8iKSkKQEAgLTIwNSw2ICsyNTksNyBAQCB2b2lkIEdTdHJl
YW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIGlm
IChtX3ZpZGVvV2luZG93KSB7CiAgICAgICAgIG1fdmlkZW9XaW5kb3ctPnByZXBhcmVGb3JPdmVy
bGF5KG1lc3NhZ2UpOwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAvLyBnc3RfeF9vdmVy
bGF5X3NldF93aW5kb3dfaGFuZGxlIHdhcyBpbnRyb2R1Y2VkIGluIC1wbHVnaW5zLWJhc2UKIC8v
IDAuMTAuMzEsIGp1c3QgbGlrZSB0aGUgbWFjcm8gZm9yIGNoZWNraW5nIHRoZSB2ZXJzaW9uLgog
I2lmZGVmIEdTVF9DSEVDS19QTFVHSU5TX0JBU0VfVkVSU0lPTgpAQCAtMjEyLDggKzI2NywxMSBA
QCB2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogI2Vsc2UKICAgICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZChHU1RfWF9P
VkVSTEFZKHNpbmspLCBtX3ZpZGVvV2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwogI2VuZGlmCisj
ZWxzZQorICAgICAgICBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZShHU1RfVklE
RU9fT1ZFUkxBWShzaW5rKSwgbV92aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKKyNlbmRp
ZgogICAgIH0KIH0KIAogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyR1dvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyR1dvcmxkLmgKaW5kZXggZGZmNDdiMC4uMjI4MDZiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJHV29ybGQuaApAQCAtMjAsNyArMjAsNyBAQAogCiAjaWZuZGVmIEdTdHJlYW1lckdXb3JsZF9o
CiAjZGVmaW5lIEdTdHJlYW1lckdXb3JsZF9oCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgfkdTdHJlYW1lckdXb3JsZCgpOwogCiAgICAgR3N0RWxl
bWVudCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lOyB9CisgICAgdm9pZCBy
ZW1vdmVQbGF0Zm9ybVZpZGVvU2luaygpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgZnVsbC1zY3Jl
ZW4gd2luZG93IGNyZWF0ZWQKICAgICBib29sIGVudGVyRnVsbHNjcmVlbigpOwpAQCAtNjcsNSAr
NjgsNSBAQCBwcml2YXRlOgogfTsKIAogfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggZDYzMjE2Yi4uNGU1ZGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAg
ICBtX21lZGlhTG9jYXRpb25zID0gMDsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgaWYgKG1fdmlkZW9TaW5r
QmluKSB7CiAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYobV92aWRlb1NpbmtCaW4pOwogICAgICAg
ICBtX3ZpZGVvU2lua0JpbiA9IDA7CkBAIC02NjAsNiArNjYwLDE0IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPih2b2x1bWUpKTsKIH0KIAor
ZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2b2x1bWUoKSBjb25zdAoreworICAg
IGlmICghbV9wbGF5QmluKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBnc3Rfc3Ry
ZWFtX3ZvbHVtZV9nZXRfdm9sdW1lKEdTVF9TVFJFQU1fVk9MVU1FKG1fcGxheUJpbi5nZXQoKSks
IEdTVF9TVFJFQU1fVk9MVU1FX0ZPUk1BVF9DVUJJQyk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZvbHVtZUNoYW5nZSgpCiB7CiAgICAgbV92
b2x1bWVUaW1lckhhbmRsZXIgPSAwOwpAQCAtMTU0Miw2ICsxNTUwLDE2IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRNdXRlZChib29sIG11dGVkKQogICAgIGdfb2JqZWN0
X3NldChtX3BsYXlCaW4uZ2V0KCksICJtdXRlIiwgbXV0ZWQsIE5VTEwpOwogfQogCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bXV0ZWQoKSBjb25zdAoreworICAgIGlmICghbV9w
bGF5QmluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIG11dGVkOworICAgIGdf
b2JqZWN0X2dldChtX3BsYXlCaW4uZ2V0KCksICJtdXRlIiwgJm11dGVkLCBOVUxMKTsKKyAgICBy
ZXR1cm4gbXV0ZWQ7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3Rp
ZnlQbGF5ZXJPZk11dGUoKQogewogICAgIG1fbXV0ZVRpbWVySGFuZGxlciA9IDA7CkBAIC0xNzQw
LDYgKzE3NTgsMTggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjplbnRlckZ1bGxzY3JlZW4oKQoreworICAgIC8vIFRPRE8uCit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgLy8gVE9ETy4KK30K
KyNlbmRpZgorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNGdWxs
c2NyZWVuKCkgY29uc3QKIHsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MApAQCAtMTc1Myw3ICsxNzgz
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzRnVsbHNjcmVl
bigpIGNvbnN0CiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxh
dGZvcm1NZWRpYSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1NZWRpYSBwOwotI2lmbmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBwLnR5
cGUgPSBQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlOwogICAgIHAubWVkaWEuZ3N0
cmVhbWVyR1dvcmxkID0gbV9nc3RHV29ybGQuZ2V0KCk7CiAjZW5kaWYKQEAgLTE4NDMsMTAgKzE4
NzMsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJp
bigpCiAgICAgLy8gd2Ugc2hvdWxkIG5vdCBhZG9wdC4KICAgICBtX3BsYXlCaW4gPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoZ1BsYXliaW5OYW1lLCAicGxheSIpOwogCi0jaWZuZGVmIEdTVF9B
UElfVkVSU0lPTl8xCi0gICAgbV9nc3RHV29ybGQgPSBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdX
b3JsZChtX3BsYXlCaW4uZ2V0KCkpOwotI2VuZGlmCi0KICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVz
ID0gd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkp
OwogICAgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaChidXMuZ2V0KCkpOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3QoYnVzLmdldCgpLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2
YXRlTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CkBAIC0xODU5LDcgKzE4ODUsOCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3BsYXlCaW4uZ2V0KCksICJ2aWRlby1jaGFuZ2VkIiwgR19DQUxMQkFDSyht
ZWRpYVBsYXllclByaXZhdGVWaWRlb0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAiYXVkaW8tY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
bWVkaWFQbGF5ZXJQcml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKIAotI2lmbmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAg
ICBtX2dzdEdXb3JsZCA9IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKG1fcGxheUJpbi5n
ZXQoKSk7CiAgICAgbV93ZWJraXRWaWRlb1NpbmsgPSB3ZWJraXRWaWRlb1NpbmtOZXcobV9nc3RH
V29ybGQuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtpdFZpZGVv
U2lua05ldygpOwpAQCAtMTg2OSwxOSArMTg5NiwyNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX3dl
YmtpdFZpZGVvU2luaywgInJlcGFpbnQtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXll
clByaXZhdGVSZXBhaW50Q2FsbGJhY2spLCB0aGlzKTsKIAogCi0jaWZuZGVmIEdTVF9BUElfVkVS
U0lPTl8xCi0gICAgbV92aWRlb1NpbmtCaW4gPSBnc3RfYmluX25ldygidmlkZW8tc2luayIpOwor
I2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAvLyBCdWlsZCBhIG5ldyB2aWRl
byBzaW5rIGNvbnNpc3Rpbmcgb2YgYSBiaW4gY29udGFpbmluZyBhIHRlZQorICAgIC8vIChtZWFu
dCB0byBkaXN0cmlidXRlIGRhdGEgdG8gbXVsdGlwbGUgdmlkZW8gc2lua3MpIGFuZCBvdXIKKyAg
ICAvLyBpbnRlcm5hbCB2aWRlbyBzaW5rLiBGb3IgZnVsbHNjcmVlbiB3ZSBjcmVhdGUgYW4gYXV0
b3ZpZGVvc2luaworICAgIC8vIGFuZCBpbml0aWFsbHkgYmxvY2sgdGhlIGRhdGEgZmxvdyB0b3dh
cmRzIGl0IGFuZCBjb25maWd1cmUgaXQKIAotICAgIEdzdEVsZW1lbnQqIHZpZGVvVGVlID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKLSAgICBHc3RFbGVtZW50
KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBtX3Zp
ZGVvU2lua0JpbiA9IGdzdF9iaW5fbmV3KCJ2aWRlby1zaW5rIik7CiAKICAgICAvLyBUYWtlIG93
bmVyc2hpcC4KICAgICBnc3Rfb2JqZWN0X3JlZl9zaW5rKG1fdmlkZW9TaW5rQmluKTsKIAotICAg
IC8vIEJ1aWxkIGEgbmV3IHZpZGVvIHNpbmsgY29uc2lzdGluZyBvZiBhIGJpbiBjb250YWluaW5n
IGEgdGVlCi0gICAgLy8gKG1lYW50IHRvIGRpc3RyaWJ1dGUgZGF0YSB0byBtdWx0aXBsZSB2aWRl
byBzaW5rcykgYW5kIG91cgotICAgIC8vIGludGVybmFsIHZpZGVvIHNpbmsuIEZvciBmdWxsc2Ny
ZWVuIHdlIGNyZWF0ZSBhbiBhdXRvdmlkZW9zaW5rCi0gICAgLy8gYW5kIGluaXRpYWxseSBibG9j
ayB0aGUgZGF0YSBmbG93IHRvd2FyZHMgaXQgYW5kIGNvbmZpZ3VyZSBpdAorICAgIEdzdEVsZW1l
bnQqIHZpZGVvVGVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUi
KTsKKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVl
dWUiLCAwKTsKKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR1JlZlB0cjxHc3RQYWQ+
IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodmlkZW9UZWUs
ICJzaW5rIikpOworICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQoR1NUX09CSkVDVChzaW5rUGFkLmdl
dCgpKSwgR1NUX1BBRF9GTEFHX1BST1hZX0FMTE9DQVRJT04pOworI2VuZGlmCiAKICAgICBnc3Rf
YmluX2FkZF9tYW55KEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCB2aWRlb1RlZSwgcXVldWUsIE5V
TEwpOwogCkBAIC0xOTEwLDcgKzE5NDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAKICAgICAgICAgICAgIGlmIChnX29iamVjdF9jbGFz
c19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhtX2Zwc1NpbmspLCAidmlkZW8tc2lu
ayIpKSB7CiAgICAgICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInZpZGVvLXNp
bmsiLCBtX3dlYmtpdFZpZGVvU2luaywgTlVMTCk7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICAgICAgICAgIGdzdF9i
aW5fYWRkKEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCBtX2Zwc1NpbmspOwogI2VuZGlmCiAgICAg
ICAgICAgICAgICAgYWN0dWFsVmlkZW9TaW5rID0gbV9mcHNTaW5rOwpAQCAtMTkyMSw3ICsxOTUz
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4o
KQogICAgIH0KIAogICAgIGlmICghbV9mcHNTaW5rKSB7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICBnc3RfYmluX2Fk
ZChHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwgbV93ZWJraXRWaWRlb1NpbmspOwogI2VuZGlmCiAg
ICAgICAgIGFjdHVhbFZpZGVvU2luayA9IG1fd2Via2l0VmlkZW9TaW5rOwpAQCAtMTkyOSw3ICsx
OTYxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlC
aW4oKQogCiAgICAgQVNTRVJUKGFjdHVhbFZpZGVvU2luayk7CiAKLSNpZm5kZWYgR1NUX0FQSV9W
RVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gRmFzdGVy
IGVsZW1lbnRzIGxpbmtpbmcuCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUs
ICJzcmMiLCBhY3R1YWxWaWRlb1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJ
TkcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5k
ZXggN2U1ZGJmOC4uNzM5OGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaApAQCAtMzksNiArMzksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1l
bnQgR3N0RWxlbWVudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWZkZWYgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckNsYXNzCitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyQ2xh
c3M7CisjZW5kaWYKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIEludFJlY3Q7CkBAIC03NSwxMSArNzksMTMgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAg
ICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCiAgICAgICAgICAgICB2b2lkIHNl
dFZvbHVtZShmbG9hdCk7CisgICAgICAgICAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsKICAgICAg
ICAgICAgIHZvaWQgdm9sdW1lQ2hhbmdlZCgpOwogICAgICAgICAgICAgdm9pZCBub3RpZnlQbGF5
ZXJPZlZvbHVtZUNoYW5nZSgpOwogCiAgICAgICAgICAgICBib29sIHN1cHBvcnRzTXV0aW5nKCkg
Y29uc3Q7CiAgICAgICAgICAgICB2b2lkIHNldE11dGVkKGJvb2wpOworICAgICAgICAgICAgYm9v
bCBtdXRlZCgpIGNvbnN0OwogICAgICAgICAgICAgdm9pZCBtdXRlQ2hhbmdlZCgpOwogICAgICAg
ICAgICAgdm9pZCBub3RpZnlQbGF5ZXJPZk11dGUoKTsKIApAQCAtOTMsNiArOTksNyBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKICAgICAgICAgICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0Owog
ICAgICAgICAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdDsKICAgICAgICAgICAg
IHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25zdDsKKyAgICAgICAgICAgIGZsb2F0IG1heFRpbWVM
b2FkZWQoKSBjb25zdDsKIAogICAgICAgICAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAg
ICAgICAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKQEAgLTExMCw2ICsxMTcsMTIg
QEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICAgICAgICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW4oKSBjb25zdDsKIAorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICAg
ICAgICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICB2b2lkIGV4aXRGdWxs
c2NyZWVuKCk7CisgICAgICAgICAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiAgICAgICAgICAgICBib29sIHN1cHBvcnRzRnVsbHNj
cmVlbigpIGNvbnN0OwogICAgICAgICAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkg
Y29uc3Q7CiAKQEAgLTEyNyw2ICsxNDAsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgICAgICAg
ICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogCisg
ICAgICAgICAgICBNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXllcjsgfQorCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqKTsKIApAQCAtMTQ0LDcgKzE1OSw2IEBAIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UgewogCiAgICAgICAgICAgICB2b2lkIGNhY2hlRHVyYXRpb24oKTsKICAgICAgICAgICAg
IHZvaWQgdXBkYXRlU3RhdGVzKCk7Ci0gICAgICAgICAgICBmbG9hdCBtYXhUaW1lTG9hZGVkKCkg
Y29uc3Q7CiAKICAgICAgICAgICAgIHZvaWQgY3JlYXRlR1NUUGxheUJpbigpOwogICAgICAgICAg
ICAgYm9vbCBjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlIHN0YXRlKTsKQEAgLTE5MSw4ICsy
MDUsMTEgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAgICAgICBib29sIG1fZGVsYXlpbmdMb2Fk
OwogICAgICAgICAgICAgYm9vbCBtX21lZGlhRHVyYXRpb25Lbm93bjsKICAgICAgICAgICAgIG11
dGFibGUgZmxvYXQgbV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzOwotI2lm
bmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykK
ICAgICAgICAgICAgIFJlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0R1dvcmxkOworI2lmZGVm
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJDbGFzcworICAgICAgICAgICAgT3duUHRyPEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJDbGFzcz4gbV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwor
I2VuZGlmCiAjZW5kaWYKICAgICAgICAgICAgIGd1aW50IG1fdm9sdW1lVGltZXJIYW5kbGVyOwog
ICAgICAgICAgICAgZ3VpbnQgbV9tdXRlVGltZXJIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZp
ZGVvV2luZG93LmgKaW5kZXggMmY4ZDM2NS4uNGExYmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvdy5oCkBAIC0xOSw3ICsxOSw3IEBACiAKICNpZm5kZWYgUGxhdGZvcm1WaWRlb1dp
bmRvd19oCiAjZGVmaW5lIFBsYXRmb3JtVmlkZW9XaW5kb3dfaAotI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCiAKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtNjEsNSArNjEsNSBAQCBjbGFzcyBQbGF0Zm9ybVZpZGVvV2luZG93IDogcHVibGljIFJlZkNv
dW50ZWQ8UGxhdGZvcm1WaWRlb1dpbmRvdz4gewogICAgIH07CiB9CiAKLSNlbmRpZiAvLyBVU0Uo
R1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBVU0Uo
R1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcAppbmRleCBiODM4ODExLi4wYzM1NzJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
UGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCkBAIC0xOSw3ICsx
OSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2lu
ZG93LmgiCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChH
U1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApA
QCAtNDgsOCArNDgsNyBAQCBQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93
KCkKIAogUGxhdGZvcm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQogewotICAg
IGlmIChtX3ZpZGVvV2luZG93ICYmIG1fd2luZG93KSB7Ci0gICAgICAgIGd0a19jb250YWluZXJf
cmVtb3ZlKEdUS19DT05UQUlORVIobV93aW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKKyAgICBpZiAo
bV92aWRlb1dpbmRvdykgewogICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV92aWRlb1dpbmRv
dyk7CiAgICAgICAgIG1fdmlkZW9XaW5kb3cgPSAwOwogICAgIH0KQEAgLTY1LDUgKzY0LDUgQEAg
UGxhdGZvcm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQogdm9pZCBQbGF0Zm9y
bVZpZGVvV2luZG93OjpwcmVwYXJlRm9yT3ZlcmxheShHc3RNZXNzYWdlKikKIHsKIH0KLSNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElf
VkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZp
ZGVvV2luZG93UHJpdmF0ZS5oCmluZGV4IGY0OGZmODMuLjk3MmI1MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2lu
ZG93UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNp
Zm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGVfaAogI2RlZmluZSBQbGF0Zm9ybVZpZGVv
V2luZG93UHJpdmF0ZV9oCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBV
U0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAKICNpbmNsdWRlIDxRRXZlbnQ+CiAjaW5jbHVk
ZSA8UVRpbWVyPgpAQCAtNTUsNSArNTYsNSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogI2VuZGlmIC8vIFBsYXRmb3JtVmlkZW9XaW5k
b3dQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKaW5kZXgg
MTFiNmZiNy4uMWRjZmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dRdC5j
cHAKQEAgLTE5LDcgKzE5LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtVmlkZW9XaW5kb3cuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
ICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCiAjaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRl
LmgiCkBAIC0xMzAsNCArMTMwLDQgQEAgUGxhdGZvcm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlk
ZW9XaW5kb3coKQogdm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93OjpwcmVwYXJlRm9yT3ZlcmxheShH
c3RNZXNzYWdlKikKIHsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
U2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBkODUyMTg0Li44OGE2Y2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3Qg
X1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwogI2VuZGlm
CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU8pCiAgICAgV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQ7CiAjZW5kaWYK
IApAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lu
a1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAgIHJl
dHVybiBHU1RfRkxPV19PSzsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNp
ZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgLy8gSWdub3JlIGJ1ZmZlcnMgaWYg
dGhlIHZpZGVvIGlzIGFscmVhZHkgaW4gZnVsbHNjcmVlbiB1c2luZwogICAgIC8vIGFub3RoZXIg
c2luay4KICAgICBpZiAocHJpdi0+Z3N0R1dvcmxkLT5pc0Z1bGxzY3JlZW4oKSkgewpAQCAtNDE4
LDcgKzQxOCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2Vi
S2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogfQogCiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiBHc3RFbGVtZW50KiB3ZWJraXRW
aWRlb1NpbmtOZXcoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQpCiB7CiAgICAg
R3N0RWxlbWVudCogZWxlbWVudCA9IEdTVF9FTEVNRU5UKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9WSURFT19TSU5LLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKaW5kZXggMDYx
YjY5NC4uOGNmZDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaApAQCAtMjIsNyAr
MjIsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaWZuZGVm
IEdTVF9BUElfVkVSU0lPTl8xCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogI2lu
Y2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgogI2VuZGlmCiAKQEAgLTYxLDcgKzYxLDcgQEAgc3Ry
dWN0IF9XZWJLaXRWaWRlb1NpbmtDbGFzcyB7CiAKIEdUeXBlIHdlYmtpdF92aWRlb19zaW5rX2dl
dF90eXBlKCkgR19HTlVDX0NPTlNUOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaWYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5r
TmV3KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCopOwogI2Vsc2UKIEdzdEVsZW1lbnQqIHdlYmtp
dFZpZGVvU2lua05ldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyMTFjMTE2Li5hZGZkYzI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAxLTI2ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBVU0UoTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8pIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeGVzIGZvciBHU3RyZWFtZXIgTkFUSVZFX0ZVTExT
Q1JFRU5fVklERU8gc3VwcG9ydC4gU29tZQorICAgICAgICBtb3JlIGNoYW5nZXMgd2lsbCBiZSBu
ZWVkZWQgdG8gdXNlIHRoZSBuZXcKKyAgICAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciB0
aG91Z2guCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9R
dCk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVu
Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxT
Y3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojppc1Zh
bGlkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChGdWxsU2NyZWVuVmlkZW9RdCk6CisKIDIwMTMtMDEt
MjQgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFRoZXJl
IGFyZSBhIGZldyBvZiB3cm9uZyByZW1vdmVBbGxDaGlsZHJlbigpIGNhbGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggNTM3
NGY3Ni4uMDk1OGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAKICNpbmNsdWRlIDxxd2luZG93
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAoKFVT
RShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKSkgfHwgVVNFKFFUX01V
TFRJTUVESUEpIHx8IFVTRShRVEtJVCkpCisjaWYgRU5BQkxFKFZJREVPKSAmJiAoKFVTRShHU1RS
RUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykpIHx8IFVTRShRVF9NVUxUSU1F
RElBKSB8fCBVU0UoUVRLSVQpKQogI2luY2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1F0LmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMTI2
LDcgKzEyNiw3IEBAIGJvb2wgQ2hyb21lQ2xpZW50UXQ6OmR1bXBWaXNpdGVkTGlua3NDYWxsYmFj
a3MgPSBmYWxzZTsKIENocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdChRV2ViUGFnZUFkYXB0
ZXIqIHdlYlBhZ2VBZGFwdGVyKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2VBZGFwdGVyKQogICAg
ICwgbV9ldmVudExvb3AoMCkKLSNpZiBFTkFCTEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikg
JiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpKSB8fCBVU0UoUVRfTVVMVElNRURJQSkgfHwg
VVNFKFFUS0lUKSkKKyNpZiBFTkFCTEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSkgfHwgVVNFKFFUX01VTFRJTUVESUEpIHx8IFVTRShR
VEtJVCkpCiAgICAgLCBtX2Z1bGxTY3JlZW5WaWRlbygwKQogI2VuZGlmCiB7CkBAIC0xMzgsNyAr
MTM4LDcgQEAgQ2hyb21lQ2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCgpCiAgICAgaWYgKG1fZXZl
bnRMb29wKQogICAgICAgICBtX2V2ZW50TG9vcC0+ZXhpdCgpOwogCi0jaWYgRU5BQkxFKFZJREVP
KSAmJiAoKFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKSkgfHwg
VVNFKFFUX01VTFRJTUVESUEpIHx8IFVTRShRVEtJVCkpCisjaWYgRU5BQkxFKFZJREVPKSAmJiAo
KFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykpIHx8IFVTRShR
VF9NVUxUSU1FRElBKSB8fCBVU0UoUVRLSVQpKQogICAgIGRlbGV0ZSBtX2Z1bGxTY3JlZW5WaWRl
bzsKICNlbmRpZgogfQpAQCAtNjc3LDcgKzY3Nyw3IEBAIEludFJlY3QgQ2hyb21lQ2xpZW50UXQ6
OnZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdAogfQogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpKSB8fCBVU0UoUVRfTVVMVElNRURJQSkgfHwgVVNFKFFUS0lUKSkKKyNpZiBFTkFC
TEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKSkgfHwgVVNFKFFUX01VTFRJTUVESUEpIHx8IFVTRShRVEtJVCkpCiBGdWxsU2NyZWVuVmlk
ZW9RdCogQ2hyb21lQ2xpZW50UXQ6OmZ1bGxTY3JlZW5WaWRlbygpCiB7CiAgICAgaWYgKCFtX2Z1
bGxTY3JlZW5WaWRlbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaAppbmRleCAyMWY1MGJmLi5jZWU5ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0xNjAsNyArMTYwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgeyB9CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShWSURFTykgJiYgKFVTRShHU1RSRUFNRVIpIHx8IFVTRShRVF9N
VUxUSU1FRElBKSB8fCBVU0UoUVRLSVQpKQorI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoR1NU
UkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pKSB8fCBVU0UoUVRfTVVMVElN
RURJQSkgfHwgVVNFKFFUS0lUKSkKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVu
Rm9yTm9kZShjb25zdCBOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZv
ck5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9k
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0LmNwcAppbmRleCAyNWUzNTdhLi44NmQzNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcApAQCAtNDQs
NyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoR1NUUkVBTUVSKSAm
JiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBVU0UoR1NUUkVBTUVSKSAmJiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
OjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKICAgICA6IG1fdmlkZW9FbGVtZW50
KDApCiAgICAgLCBtX2Z1bGxTY3JlZW5XaWRnZXQoMCkKQEAgLTk5LDcgKzk5LDcgQEAgRnVsbFNj
cmVlblZpZGVvUXQ6OkZ1bGxTY3JlZW5WaWRlb1F0KENocm9tZUNsaWVudFF0KiBjaHJvbWVDbGll
bnQpCiAgICAgICAgIGNvbm5lY3QobV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyLCBTSUdOQUwoZnVs
bFNjcmVlbkNsb3NlZCgpKSwgdGhpcywgU0xPVChhYm91dFRvQ2xvc2UoKSkpOwogI2VuZGlmCiAK
LSNpZiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBV
U0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgbV9GdWxs
U2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyID0gbmV3IEdTdHJlYW1lckZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXI7CiAjZW5kaWYKIApAQCAtMTEzLDcgKzExMyw3IEBAIEZ1bGxTY3JlZW5WaWRlb1F0
Ojp+RnVsbFNjcmVlblZpZGVvUXQoKQogI2lmIFVTRShRVF9NVUxUSU1FRElBKQogICAgIGRlbGV0
ZSBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CiAjZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKSAm
JiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBVU0UoR1NUUkVBTUVSKSAmJiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAgZGVsZXRlIG1fRnVsbFNjcmVlblZpZGVvSGFu
ZGxlckdTdHJlYW1lcjsKICNlbmRpZgogI2lmIFVTRShRVEtJVCkKQEAgLTE0Myw3ICsxNDMsNyBA
QCB2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0OjplbnRlckZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqIG5v
ZGUpCiAgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyLT5lbnRlckZ1bGxTY3JlZW4obWVkaWFQ
bGF5ZXJRdC0+bWVkaWFQbGF5ZXIoKSk7CiAjZW5kaWYKIAotI2lmIFVTRShHU1RSRUFNRVIpICYm
ICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIFVTRShHU1RSRUFNRVIpICYmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3Ry
ZWFtZXItPnNldFZpZGVvRWxlbWVudChtX3ZpZGVvRWxlbWVudCk7CiAgICAgbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5lbnRlckZ1bGxTY3JlZW4oKTsKICNlbmRpZgpAQCAtMTc0
LDcgKzE3NCw3IEBAIHZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmV4aXRGdWxsU2NyZWVuRm9yTm9k
ZShOb2RlKiBub2RlKQogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBsYXllclF0ID0g
bWVkaWFQbGF5ZXIoKTsKICAgICBtZWRpYVBsYXllclF0LT5yZXN0b3JlVmlkZW9JdGVtKCk7CiAj
ZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkK
KyNpZiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAgICAg
bV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5leGl0RnVsbFNjcmVlbigpOwogI2Vu
ZGlmCiAKQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIEZ1bGxTY3JlZW5WaWRlb1F0Ojppc1ZhbGlk
KCkgY29uc3QKICNpZiBVU0UoUVRfTVVMVElNRURJQSkKICAgICByZXR1cm4gbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyOwogI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NU
X0FQSV9WRVJTSU9OXzEpCisjaWYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NS
RUVOX1ZJREVPKQogICAgIHJldHVybiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7
CiAjZWxpZiBVU0UoUVRLSVQpCiAgICAgcmV0dXJuIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlclFU
S2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9RdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVu
VmlkZW9RdC5oCmluZGV4IDgxYTI4OGQuLjQzOGFiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmgKQEAgLTQzLDcgKzQzLDcg
QEAgY2xhc3MgUVRLaXRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOwogI2VuZGlmCiAKIC8vIFdlIGRv
IG5vdCB1c2UgRU5BQkxFIG9yIFVTRSBiZWNhdXNlIG1vYyBkb2VzIG5vdCBleHBhbmQgdGhlc2Ug
bWFjcm9zLgotI2lmIGRlZmluZWQoV1RGX1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NUUkVB
TUVSICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIGRlZmluZWQoV1RGX1VTRV9H
U1RSRUFNRVIpICYmIFdURl9VU0VfR1NUUkVBTUVSICYmIGRlZmluZWQoV1RGX1VTRV9OQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykgJiYgV1RGX1VTRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTwogY2xh
c3MgRnVsbFNjcmVlblZpZGVvV2luZG93OwogCiBjbGFzcyBHU3RyZWFtZXJGdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyIDogcHVibGljIFFPYmplY3QgewpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgog
I2lmIFVTRShRVF9NVUxUSU1FRElBKQogICAgIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBt
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CiAjZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKQorI2lm
IFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKICAgICBHU3Ry
ZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3Ry
ZWFtZXI7CiAjZW5kaWYKICNpZiBVU0UoUVRLSVQpCi0tIAoxLjcuMTAuNA==
</data>
<flag name="review"
          id="203748"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>