<?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>130078</bug_id>
          
          <creation_ts>2014-03-11 02:40:04 -0700</creation_ts>
          <short_desc>[GTK] Use GMainLoopSource for idle and timeout sources in WebCore</short_desc>
          <delta_ts>2014-03-31 08:21:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>130027</dependson>
    
    <dependson>130571</dependson>
    
    <dependson>130585</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>agomez</cc>
    
    <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989316</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-11 02:40:04 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989317</commentid>
    <comment_count>1</comment_count>
      <attachid>226404</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-11 02:41:33 -0700</bug_when>
    <thetext>Created attachment 226404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989319</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-11 02:43:01 -0700</bug_when>
    <thetext>Attachment 226404 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:374:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:378:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:388:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:392:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:532:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:551:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:588:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:649:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:682:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:539:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:547:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:689:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:719:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:748:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:218:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992434</commentid>
    <comment_count>3</comment_count>
      <attachid>227270</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-20 01:10:05 -0700</bug_when>
    <thetext>Created attachment 227270
Rebased patch

Updated the the changes in GMainLoopSource and fixed some edge cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992435</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-20 01:11:28 -0700</bug_when>
    <thetext>Attachment 227270 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:374:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:378:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:388:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:392:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:532:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:551:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:588:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:650:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:683:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:536:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:544:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:686:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:716:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:745:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992436</commentid>
    <comment_count>5</comment_count>
      <attachid>227271</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-20 01:28:05 -0700</bug_when>
    <thetext>Created attachment 227271
Try to fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992437</commentid>
    <comment_count>6</comment_count>
      <attachid>227271</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-20 01:33:50 -0700</bug_when>
    <thetext>Comment on attachment 227271
Try to fix the build

Oops, I used the wrong flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992438</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-20 01:34:29 -0700</bug_when>
    <thetext>Attachment 227271 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:370:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:374:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:384:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:388:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:528:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:547:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:584:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:604:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:646:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:679:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:536:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:544:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:686:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:716:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:745:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992447</commentid>
    <comment_count>8</comment_count>
      <attachid>227271</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-03-20 02:01:21 -0700</bug_when>
    <thetext>Comment on attachment 227271
Try to fix the build

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        * platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:

All this can be removed if you don&apos;t plan to comment each change :)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:-145
&gt; -    // Reset pipeline if we are sitting on READY state when timeout is reached

Can this comment be kept in the new code please?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:33
&gt; +#include &lt;wtf/gobject/GMainLoopSource.h&gt;

Can the class be forward-declared instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992473</commentid>
    <comment_count>9</comment_count>
      <attachid>227271</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-20 03:57:28 -0700</bug_when>
    <thetext>Comment on attachment 227271
Try to fix the build

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:-145
&gt;&gt; -    // Reset pipeline if we are sitting on READY state when timeout is reached
&gt; 
&gt; Can this comment be kept in the new code please?

There&apos;s already a comment about this where the new code is, see:

// Create a timer when entering the READY state so that we can free resources                                                                                                             
// if we stay for too long on READY.                                                                                                                                                      
// Also lets remove the timer if we request a state change for any state other than READY.                                                                                                
// See also https://bugs.webkit.org/show_bug.cgi?id=117354

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:33
&gt;&gt; +#include &lt;wtf/gobject/GMainLoopSource.h&gt;
&gt; 
&gt; Can the class be forward-declared instead?

I don&apos;t think so, members are stack allocated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992962</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-21 01:05:35 -0700</bug_when>
    <thetext>Committed r166052: &lt;http://trac.webkit.org/changeset/166052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992966</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-21 01:27:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Committed r166052: &lt;http://trac.webkit.org/changeset/166052&gt;

It broke the EFL build as the EWS noticed it. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992974</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-21 01:49:33 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 130571</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992976</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-21 01:50:39 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Committed r166052: &lt;http://trac.webkit.org/changeset/166052&gt;
&gt; 
&gt; It broke the EFL build as the EWS noticed it. :-/

Yes, I know, as we discussed in bug #130027, tis is due to the gcc version used. I assumed EFL bots had a higer gcc version than the EWS bots. I&apos;m rolling it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993082</commentid>
    <comment_count>14</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2014-03-21 07:21:39 -0700</bug_when>
    <thetext>We need to decide first whether to bump the GCC version or use explicit casts.

Blocking on bug 130585.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995838</commentid>
    <comment_count>15</comment_count>
      <attachid>228175</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-31 05:24:38 -0700</bug_when>
    <thetext>Created attachment 228175
Patch for landing

Let&apos;s try again now that EFL bots have been upgraded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995839</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 05:26:07 -0700</bug_when>
    <thetext>Attachment 228175 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:370:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:374:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:384:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:388:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:528:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:547:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:584:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:604:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:646:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:679:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:536:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:544:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:686:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:716:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:745:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995840</commentid>
    <comment_count>17</comment_count>
      <attachid>228175</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-31 05:27:19 -0700</bug_when>
    <thetext>Comment on attachment 228175
Patch for landing

Oops, no need for r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995841</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-31 05:33:30 -0700</bug_when>
    <thetext>Committed r166496: &lt;http://trac.webkit.org/changeset/166496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995874</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-31 08:21:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Committed r166496: &lt;http://trac.webkit.org/changeset/166496&gt;

It broke the WinCairo build, cc the WinCairo maintainers.

    1&gt;..\platform\graphics\gstreamer\InbandTextTrackPrivateGStreamer.cpp(83): error C2668: &apos;WTF::GMainLoopSource::schedule&apos; : ambiguous call to overloaded function
                 C:\Projects\BuildSlave\win-cairo-release\build\WebKitBuild\Release_WinCairo\include\private\wtf/gobject/GMainLoopSource.h(54): could be &apos;void WTF::GMainLoopSource::schedule(const char *,std::function&lt;bool (void)&gt;,int,std::function&lt;void (void)&gt;,GMainContext *)&apos;
                 C:\Projects\BuildSlave\win-cairo-release\build\WebKitBuild\Release_WinCairo\include\private\wtf/gobject/GMainLoopSource.h(53): or       &apos;void WTF::GMainLoopSource::schedule(const char *,std::function&lt;void (void)&gt;,int,std::function&lt;void (void)&gt;,GMainContext *)&apos;
                 while trying to match the argument list &apos;(const char [62], std::_Bind&lt;true,void,std::_Pmf_wrap&lt;void (__thiscall WebCore::InbandTextTrackPrivateGStreamer::* )(void),void,WebCore::InbandTextTrackPrivateGStreamer,&gt;,WebCore::InbandTextTrackPrivateGStreamer *const &gt;)&apos;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226404</attachid>
            <date>2014-03-11 02:41:33 -0700</date>
            <delta_ts>2014-03-20 01:10:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-g-main-loop-source.diff</filename>
            <type>text/plain</type>
            <size>64706</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNDE5ZGQ4Li4zYzJhZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcg
QEAKKzIwMTQtMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBHTWFpbkxvb3BTb3VyY2UgZm9yIGlkbGUgYW5kIHRpbWVv
dXQgc291cmNlcyBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVC
dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1D
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2Fwc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJP
ZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjps
b2FkaW5nRmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJP
ZlZvbHVtZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjp2b2x1bWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6YWN0aXZlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mQWN0
aXZlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
Ojpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgICh3
ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2spOgorICAgICAgICAod2Via2l0VmlkZW9TaW5r
UmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVk
aWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX3NyY19pbml0KToK
KyAgICAgICAgKHdlYktpdE1lZGlhU3JjRmluYWxpemUpOgorICAgICAgICAod2ViS2l0TWVkaWFW
aWRlb1NyY1N0b3ApOgorICAgICAgICAod2ViS2l0TWVkaWFBdWRpb1NyY1N0b3ApOgorICAgICAg
ICAod2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0KToKKyAgICAgICAgKHdlYktpdE1lZGlhQXVkaW9T
cmNTdGFydCk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0NoYW5nZVN0YXRlKToKKyAgICAgICAg
KHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYik6CisgICAgICAgICh3ZWJLaXRNZWRp
YUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFWaWRlb1NyY05l
ZWREYXRhQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFBdWRpb1NyY05lZWREYXRhQ2IpOgorICAg
ICAgICAod2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2Vi
S2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFW
aWRlb1NyY0Vub3VnaERhdGFDYik6CisgICAgICAgICh3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5vdWdo
RGF0YUNiKToKKyAgICAgICAgKHdlYktpdE1lZGlhVmlkZW9TcmNTZWVrTWFpbkNiKToKKyAgICAg
ICAgKHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrTWFpbkNiKToKKyAgICAgICAgKHdlYktpdE1lZGlh
VmlkZW9TcmNTZWVrRGF0YUNiKToKKyAgICAgICAgKHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrRGF0
YUNiKToKKyAgICAgICAgKE1lZGlhU291cmNlQ2xpZW50R3N0cmVhbWVyOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfc3JjX2luaXQpOgorICAgICAg
ICAod2ViS2l0V2ViU3JjRmluYWxpemUpOgorICAgICAgICAocmVtb3ZlVGltZW91dFNvdXJjZXMp
OgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTdGFy
dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZSk6CisgICAgICAgICh3ZWJLaXRX
ZWJTcmNOZWVkRGF0YU1haW5DYik6CisgICAgICAgICh3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0
V2ViU3JjRW5vdWdoRGF0YUNiKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NlZWtNYWluQ2IpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2Vla0RhdGFDYik6CisgICAgICAgIChTdHJlYW1pbmdDbGll
bnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50Ojpo
YW5kbGVEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3Rp
ZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFn
TGVhdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKToKKwogMjAxNC0wMy0xMCAgRnLDqWTDqXJpYyBXYW5nICA8ZnJlZC53YW5n
QGZyZWUuZnI+CiAKICAgICAgICAgSW1wcm92ZSByZW5kZXJlciBjbGFzc2VzIGZvciBNYXRoTUwg
VG9rZW4gZWxlbWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmlu
ZGV4IGU2ODdlNTcuLmYwZTQ4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCkBAIC0yNywxNCArMjcsMTQgQEAKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNs
dWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4K
ICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWlu
TG9vcFNvdXJjZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8u
aD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0ZpbGVSZWFkZXIgewpAQCAt
MTA4LDEzICsxMDgsNiBAQCBzdGF0aWMgdm9pZCBvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVk
Q2FsbGJhY2soR3N0RWxlbWVudCosIEdzdFBhZCogcGFkLCBBdWRpbwogICAgIHJlYWRlci0+cGx1
Z0RlaW50ZXJsZWF2ZShwYWQpOwogfQogCi1nYm9vbGVhbiBlbnRlcmVkTWFpbkxvb3BDYWxsYmFj
ayhncG9pbnRlciB1c2VyRGF0YSkKLXsKLSAgICBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QXVkaW9GaWxlUmVhZGVyKj4odXNlckRhdGEpOwotICAgIHJlYWRlci0+
ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlvbigpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQogQXVk
aW9GaWxlUmVhZGVyOjpBdWRpb0ZpbGVSZWFkZXIoY29uc3QgY2hhciogZmlsZVBhdGgpCiAgICAg
OiBtX2RhdGEoMCkKICAgICAsIG1fZGF0YVNpemUoMCkKQEAgLTM0MSw5ICszMzQsOCBAQCBQYXNz
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubwogICAgIG1fbG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9u
ZXcoY29udGV4dC5nZXQoKSwgRkFMU0UpKTsKIAogICAgIC8vIFN0YXJ0IHRoZSBwaXBlbGluZSBw
cm9jZXNzaW5nIGp1c3QgYWZ0ZXIgdGhlIGxvb3AgaXMgc3RhcnRlZC4KLSAgICBHUmVmUHRyPEdT
b3VyY2U+IHRpbWVvdXRTb3VyY2UgPSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoMCkp
OwotICAgIGdfc291cmNlX2F0dGFjaCh0aW1lb3V0U291cmNlLmdldCgpLCBjb250ZXh0LmdldCgp
KTsKLSAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sodGltZW91dFNvdXJjZS5nZXQoKSwgcmVpbnRl
cnByZXRfY2FzdDxHU291cmNlRnVuYz4oZW50ZXJlZE1haW5Mb29wQ2FsbGJhY2spLCB0aGlzLCAw
KTsKKyAgICBHTWFpbkxvb3BTb3VyY2Ugc291cmNlOworICAgIHNvdXJjZS5zY2hlZHVsZSgiW1dl
YktpdF0gQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVBdWRpb0ZvckJ1c0NyZWF0aW9uIiwgc3RkOjpi
aW5kKCZBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZUF1ZGlvRm9yQnVzQ3JlYXRpb24sIHRoaXMpLCBH
X1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIGNvbnRleHQuZ2V0KCkpOwogCiAgICAgZ19tYWlu
X2xvb3BfcnVuKG1fbG9vcC5nZXQoKSk7CiAgICAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9k
ZWZhdWx0KGNvbnRleHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGJlZDEwZmEuLjQyMjFmNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTUyLDIyICs1Miw4IEBAIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiB0ZXh0VHJhY2tQcml2YXRl
RXZlbnRDYWxsYmFjayhHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qCiAgICAgcmV0dXJuIEdTVF9Q
QURfUFJPQkVfT0s7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB0ZXh0VHJhY2tQcml2YXRlU2FtcGxl
VGltZW91dENhbGxiYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIqIHRyYWNrKQot
ewotICAgIHRyYWNrLT5ub3RpZnlUcmFja09mU2FtcGxlKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwot
fQotCi1zdGF0aWMgZ2Jvb2xlYW4gdGV4dFRyYWNrUHJpdmF0ZVN0cmVhbVRpbWVvdXRDYWxsYmFj
ayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKiB0cmFjaykKLXsKLSAgICB0cmFjay0+
bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKICAgICA6IEluYmFuZFRleHRU
cmFja1ByaXZhdGUoV2ViVlRUKSwgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRl
eCwgcGFkKQotICAgICwgbV9zYW1wbGVUaW1lckhhbmRsZXIoMCkKLSAgICAsIG1fc3RyZWFtVGlt
ZXJIYW5kbGVyKDApCiB7CiAgICAgbV9ldmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9w
YWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLAogICAgICAgICBy
ZWludGVycHJldF9jYXN0PEdzdFBhZFByb2JlQ2FsbGJhY2s+KHRleHRUcmFja1ByaXZhdGVFdmVu
dENhbGxiYWNrKSwgdGhpcywgMCk7CkBAIC04MiwzNiArNjgsMjggQEAgdm9pZCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkKIAogICAgIGdzdF9wYWRfcmVtb3Zl
X3Byb2JlKG1fcGFkLmdldCgpLCBtX2V2ZW50UHJvYmUpOwogCi0gICAgaWYgKG1fc3RyZWFtVGlt
ZXJIYW5kbGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9zdHJlYW1UaW1lckhhbmRsZXIp
OworICAgIG1fc3RyZWFtVGltZXJIYW5kbGVyLmNhbmNlbCgpOwogCiAgICAgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCgpOwogfQogCiB2b2lkIEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQog
ewotICAgIGlmIChtX3NhbXBsZVRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3Zl
KG1fc2FtcGxlVGltZXJIYW5kbGVyKTsKKyAgICBtX3NhbXBsZVRpbWVySGFuZGxlci5jYW5jZWwo
KTsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9zYW1wbGVNdXRleCk7CiAgICAg
ICAgIG1fcGVuZGluZ1NhbXBsZXMuYXBwZW5kKHNhbXBsZSk7CiAgICAgfQotICAgIG1fc2FtcGxl
VGltZXJIYW5kbGVyID0gZ190aW1lb3V0X2FkZCgwLAotICAgICAgICByZWludGVycHJldF9jYXN0
PEdTb3VyY2VGdW5jPih0ZXh0VHJhY2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKSwgdGhp
cyk7CisgICAgbV9zYW1wbGVUaW1lckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUiLCBzdGQ6OmJpbmQo
JkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUsIHRo
aXMpKTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzdHJlYW1D
aGFuZ2VkKCkKIHsKLSAgICBpZiAobV9zdHJlYW1UaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291
cmNlX3JlbW92ZShtX3N0cmVhbVRpbWVySGFuZGxlcik7Ci0gICAgbV9zdHJlYW1UaW1lckhhbmRs
ZXIgPSBnX3RpbWVvdXRfYWRkKDAsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1
bmM+KHRleHRUcmFja1ByaXZhdGVTdHJlYW1UaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBt
X3N0cmVhbVRpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0gSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQiLCBzdGQ6OmJpbmQoJklu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2Vk
LCB0aGlzKSk7CiB9CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5VHJhY2tPZlNhbXBsZSgpCiB7Ci0gICAgbV9zYW1wbGVUaW1lckhhbmRsZXIgPSAwOwotCiAg
ICAgVmVjdG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+IHNhbXBsZXM7CiAgICAgewogICAgICAgICBN
dXRleExvY2tlciBsb2NrKG1fc2FtcGxlTXV0ZXgpOwpAQCAtMTQyLDggKzEyMCw2IEBAIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiAK
IHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0cmVh
bUNoYW5nZWQoKQogewotICAgIG1fc3RyZWFtVGltZXJIYW5kbGVyID0gMDsKLQogICAgIEdSZWZQ
dHI8R3N0RXZlbnQ+IGV2ZW50ID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudCht
X3BhZC5nZXQoKSwKICAgICAgICAgR1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwogICAgIGlm
ICghZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCAyODVjZDg2Li5hZjAwYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02MSw4ICs2Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcihnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwogCi0gICAgZ3VpbnQg
bV9zYW1wbGVUaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV9zdHJlYW1UaW1lckhhbmRsZXI7Cisg
ICAgR01haW5Mb29wU291cmNlIG1fc2FtcGxlVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNv
dXJjZSBtX3N0cmVhbVRpbWVySGFuZGxlcjsKICAgICBndWxvbmcgbV9ldmVudFByb2JlOwogICAg
IFZlY3RvcjxHUmVmUHRyPEdzdFNhbXBsZT4gPiBtX3BlbmRpbmdTYW1wbGVzOwogICAgIFN0cmlu
ZyBtX3N0cmVhbUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCAwYzRlZGJlLi40YWI2MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNTgsNyArNTgsNyBAQAogCiAvLyBNYXgg
aW50ZXJ2YWwgaW4gc2Vjb25kcyB0byBzdGF5IGluIHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwK
IC8vIHN0YXRlIGNoYW5nZSByZXF1ZXN0cy4KLXN0YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0
ZVRpbWVySW50ZXJ2YWwgPSA2MDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBnUmVhZHlTdGF0ZVRp
bWVySW50ZXJ2YWwgPSA2MDsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVk
aWFfcGxheWVyX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9w
bGF5ZXJfZGVidWcKQEAgLTkyLDQ2ICs5MiwxOCBAQCBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclBy
aXZhdGVBdWRpb0NoYW5nZWRDYWxsYmFjayhHT2JqZWN0KiwgTWVkaWFQbGF5ZXJQcml2YXRlRwog
ICAgIHBsYXllci0+YXVkaW9DaGFuZ2VkKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBs
YXllclByaXZhdGVBdWRpb0NoYW5nZVRpbWVvdXRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikKLXsKLSAgICAvLyBUaGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUg
dGltZW91dCBzb3VyY2UgY3JlYXRlZCBpbiA6OmF1ZGlvQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5v
dGlmeVBsYXllck9mQXVkaW8oKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lk
IHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0
KiBvYmplY3QsIGdjaGFyKiwKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXll
cikKIHsKICAgICBwbGF5ZXItPnNldEF1ZGlvU3RyZWFtUHJvcGVydGllcyhvYmplY3QpOwogfQog
Ci1zdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2Fs
bGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCi17Ci0gICAgLy8gVGhp
cyBpcyB0aGUgY2FsbGJhY2sgb2YgdGhlIHRpbWVvdXQgc291cmNlIGNyZWF0ZWQgaW4gOjp2aWRl
b0NoYW5nZWQuCi0gICAgcGxheWVyLT5ub3RpZnlQbGF5ZXJPZlZpZGVvKCk7Ci0gICAgcmV0dXJu
IEZBTFNFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DYXBz
Q2hhbmdlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVy
KQotewotICAgIC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBj
cmVhdGVkIGluIDo6dmlkZW9DYXBzQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9m
VmlkZW9DYXBzKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogc3RhdGljIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayhH
T2JqZWN0KiwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcGxh
eWVyLT50ZXh0Q2hhbmdlZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2
YXRlVGV4dENoYW5nZVRpbWVvdXRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIq
IHBsYXllcikKLXsKLSAgICAvLyBUaGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUgdGltZW91dCBz
b3VyY2UgY3JlYXRlZCBpbiA6OnRleHRDaGFuZ2VkLgotICAgIHBsYXllci0+bm90aWZ5UGxheWVy
T2ZUZXh0KCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBt
ZWRpYVBsYXllclByaXZhdGVOZXdUZXh0U2FtcGxlQ2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogewogICAgIHBsYXllci0+bmV3VGV4dFNhbXBs
ZSgpOwpAQCAtMTM5LDE0ICsxMTEsNiBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiBtZWRpYVBsYXll
clByaXZhdGVOZXdUZXh0U2FtcGxlQ2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxheQogfQogI2Vu
ZGlmCiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVSZWFkeVN0YXRlVGltZW91
dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotewotICAgIC8v
IFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6
Y2hhbmdlUGlwZWxpbmVTdGF0ZS4KLSAgICAvLyBSZXNldCBwaXBlbGluZSBpZiB3ZSBhcmUgc2l0
dGluZyBvbiBSRUFEWSBzdGF0ZSB3aGVuIHRpbWVvdXQgaXMgcmVhY2hlZAotICAgIHBsYXllci0+
Y2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfTlVMTCk7Ci0gICAgcmV0dXJuIEZBTFNFOwot
fQotCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVQbHVnaW5JbnN0YWxsZXJSZXN1bHRG
dW5jdGlvbihHc3RJbnN0YWxsUGx1Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRh
KQogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7CkBAIC0yNDks
MTEgKzIxMyw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBtX3ZvbHVtZUFuZE11dGVJ
bml0aWFsaXplZChmYWxzZSkKICAgICAsIG1faGFzVmlkZW8oZmFsc2UpCiAgICAgLCBtX2hhc0F1
ZGlvKGZhbHNlKQotICAgICwgbV9hdWRpb1RpbWVySGFuZGxlcigwKQotICAgICwgbV90ZXh0VGlt
ZXJIYW5kbGVyKDApCi0gICAgLCBtX3ZpZGVvVGltZXJIYW5kbGVyKDApCi0gICAgLCBtX3ZpZGVv
Q2Fwc1RpbWVySGFuZGxlcigwKQotICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcigwKQogICAgICwg
bV90b3RhbEJ5dGVzKC0xKQogICAgICwgbV9wcmVzZXJ2ZXNQaXRjaChmYWxzZSkKICAgICAsIG1f
cmVxdWVzdGVkU3RhdGUoR1NUX1NUQVRFX1ZPSURfUEVORElORykKQEAgLTI4NSw4ICsyNDQsNyBA
QCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIoKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpF
Q1QobV9hdXRvQXVkaW9TaW5rLmdldCgpKSwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Z3BvaW50ZXI+KHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKLSAg
ICBpZiAobV9yZWFkeVRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fcmVh
ZHlUaW1lckhhbmRsZXIpOworICAgIG1fcmVhZHlUaW1lckhhbmRsZXIuY2FuY2VsKCk7CiAKICAg
ICBpZiAobV9wbGF5QmluKSB7CiAgICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdS
ZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsK
QEAgLTMwOCwxOCArMjY2LDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyKCkKIAogICAgIEdSZWZQdHI8R3N0UGFkPiB2aWRlb1NpbmtQ
YWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQobV93ZWJraXRWaWRlb1Np
bmsuZ2V0KCksICJzaW5rIikpOwogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlf
ZnVuYyh2aWRlb1NpbmtQYWQuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lZGlh
UGxheWVyUHJpdmF0ZVZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLQotICAg
IGlmIChtX3ZpZGVvVGltZXJIYW5kbGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV92aWRl
b1RpbWVySGFuZGxlcik7Ci0KLSAgICBpZiAobV9hdWRpb1RpbWVySGFuZGxlcikKLSAgICAgICAg
Z19zb3VyY2VfcmVtb3ZlKG1fYXVkaW9UaW1lckhhbmRsZXIpOwotCi0gICAgaWYgKG1fdGV4dFRp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdGV4dFRpbWVySGFuZGxlcik7
Ci0KLSAgICBpZiAobV92aWRlb0NhcHNUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3Jl
bW92ZShtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNDQzLDEyICszODksMTEg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUo
R3N0U3RhdGUgbmV3U3RhdGUpCiAgICAgLy8gaWYgd2Ugc3RheSBmb3IgdG9vIGxvbmcgb24gUkVB
RFkuCiAgICAgLy8gQWxzbyBsZXRzIHJlbW92ZSB0aGUgdGltZXIgaWYgd2UgcmVxdWVzdCBhIHN0
YXRlIGNoYW5nZSBmb3IgYW55IHN0YXRlIG90aGVyIHRoYW4gUkVBRFkuCiAgICAgLy8gU2VlIGFs
c28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzM1NAotICAgIGlm
IChuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkgJiYgIW1fcmVhZHlUaW1lckhhbmRsZXIpIHsK
LSAgICAgICAgbV9yZWFkeVRpbWVySGFuZGxlciA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyhnUmVh
ZHlTdGF0ZVRpbWVySW50ZXJ2YWwsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlh
UGxheWVyUHJpdmF0ZVJlYWR5U3RhdGVUaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQobV9yZWFkeVRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1l
ZGlhUGxheWVyUHJpdmF0ZVJlYWR5U3RhdGVUaW1lb3V0Q2FsbGJhY2siKTsKLSAgICB9IGVsc2Ug
aWYgKG5ld1N0YXRlICE9IEdTVF9TVEFURV9SRUFEWSAmJiBtX3JlYWR5VGltZXJIYW5kbGVyKSB7
Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3JlYWR5VGltZXJIYW5kbGVyKTsKLSAgICAgICAg
bV9yZWFkeVRpbWVySGFuZGxlciA9IDA7CisgICAgaWYgKG5ld1N0YXRlID09IEdTVF9TVEFURV9S
RUFEWSAmJiAhbV9yZWFkeVRpbWVySGFuZGxlci5pc1NjaGVkdWxlZCgpKSB7CisgICAgICAgIG1f
cmVhZHlUaW1lckhhbmRsZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBtZWRpYVBsYXll
clByaXZhdGVSZWFkeVN0YXRlVGltZW91dENhbGxiYWNrIiwgW3RoaXNdKCkgeyBjaGFuZ2VQaXBl
bGluZVN0YXRlKEdTVF9TVEFURV9OVUxMKTsgfSwKKyAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpz
ZWNvbmRzKGdSZWFkeVN0YXRlVGltZXJJbnRlcnZhbCkpOworICAgIH0gZWxzZSBpZiAobmV3U3Rh
dGUgIT0gR1NUX1NUQVRFX1JFQURZICYmIG1fcmVhZHlUaW1lckhhbmRsZXIuaXNTY2hlZHVsZWQo
KSkgeworICAgICAgICBtX3JlYWR5VGltZXJIYW5kbGVyLmNhbmNlbCgpOwogICAgIH0KIAogICAg
IHJldHVybiB0cnVlOwpAQCAtNjY5LDI0ICs2MTQsMTYgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnNlZWtpbmcoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dmlkZW9DaGFuZ2VkKCkKIHsKLSAgICBpZiAobV92aWRlb1RpbWVySGFuZGxlcikK
LSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdmlkZW9UaW1lckhhbmRsZXIpOwotICAgIG1fdmlk
ZW9UaW1lckhhbmRsZXIgPSBnX2lkbGVfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZBVUxULCByZWlu
dGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihtZWRpYVBsYXllclByaXZhdGVWaWRlb0NoYW5nZVRp
bWVvdXRDYWxsYmFjayksIHRoaXMsIDApOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1f
dmlkZW9UaW1lckhhbmRsZXIsICJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVWaWRlb0NoYW5n
ZVRpbWVvdXRDYWxsYmFjayIpOworICAgIG1fdmlkZW9UaW1lckhhbmRsZXIuc2NoZWR1bGUoIltX
ZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9DaGFuZ2VkIiwgc3RkOjpi
aW5kKCZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8sIHRo
aXMpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2Fwc0No
YW5nZWQoKQogewotICAgIGlmIChtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxlcikKLSAgICAgICAgZ19z
b3VyY2VfcmVtb3ZlKG1fdmlkZW9DYXBzVGltZXJIYW5kbGVyKTsKLSAgICBtX3ZpZGVvQ2Fwc1Rp
bWVySGFuZGxlciA9IGdfdGltZW91dF9hZGQoMCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVu
Yz4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrKSwgdGhp
cyk7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQobV92aWRlb0NhcHNUaW1lckhhbmRsZXIs
ICJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVWaWRlb0NhcHNDaGFuZ2VUaW1lb3V0Q2FsbGJh
Y2siKTsKKyAgICBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NhcHNDaGFuZ2VkIiwgc3RkOjpiaW5kKCZN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW9DYXBzLCB0aGlz
KSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJP
ZlZpZGVvKCkKIHsKLSAgICBtX3ZpZGVvVGltZXJIYW5kbGVyID0gMDsKLQogICAgIGdpbnQgbnVt
VHJhY2tzID0gMDsKICAgICBpZiAobV9wbGF5QmluKQogICAgICAgICBnX29iamVjdF9nZXQobV9w
bGF5QmluLmdldCgpLCAibi12aWRlbyIsICZudW1UcmFja3MsIE5VTEwpOwpAQCAtNzI0LDIzICs2
NjEsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9m
VmlkZW8oKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVy
T2ZWaWRlb0NhcHMoKQogewotICAgIG1fdmlkZW9DYXBzVGltZXJIYW5kbGVyID0gMDsKICAgICBt
X3ZpZGVvU2l6ZSA9IEludFNpemUoKTsKICAgICBtX3BsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQo
KS0+bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKG1fcGxheWVyKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1fYXVkaW9U
aW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX2F1ZGlvVGltZXJIYW5kbGVy
KTsKLSAgICBtX2F1ZGlvVGltZXJIYW5kbGVyID0gZ19pZGxlX2FkZF9mdWxsKEdfUFJJT1JJVFlf
REVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obWVkaWFQbGF5ZXJQcml2YXRl
QXVkaW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAwKTsKLSAgICBnX3NvdXJjZV9zZXRf
bmFtZV9ieV9pZChtX2F1ZGlvVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQcml2
YXRlQXVkaW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAgICBtX2F1ZGlvVGltZXJIYW5kbGVy
LnNjaGVkdWxlKCJbV2ViS2l0XSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvQ2hh
bmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZkF1ZGlvLCB0aGlzKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKIHsKLSAgICBtX2F1ZGlvVGltZXJIYW5kbGVyID0gMDsK
LQogICAgIGdpbnQgbnVtVHJhY2tzID0gMDsKICAgICBpZiAobV9wbGF5QmluKQogICAgICAgICBn
X29iamVjdF9nZXQobV9wbGF5QmluLmdldCgpLCAibi1hdWRpbyIsICZudW1UcmFja3MsIE5VTEwp
OwpAQCAtNzc5LDE2ICs3MTAsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mQXVkaW8oKQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0ZXh0Q2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1fdGV4
dFRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdGV4dFRpbWVySGFuZGxl
cik7Ci0gICAgbV90ZXh0VGltZXJIYW5kbGVyID0gZ190aW1lb3V0X2FkZCgwLCByZWludGVycHJl
dF9jYXN0PEdTb3VyY2VGdW5jPihtZWRpYVBsYXllclByaXZhdGVUZXh0Q2hhbmdlVGltZW91dENh
bGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQobV90ZXh0VGltZXJI
YW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZVRpbWVvdXRDYWxs
YmFjayIpOworICAgIG1fdGV4dFRpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0ZXh0Q2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQsIHRoaXMpKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCiB7Ci0g
ICAgbV90ZXh0VGltZXJIYW5kbGVyID0gMDsKLQogICAgIGdpbnQgbnVtVHJhY2tzID0gMDsKICAg
ICBpZiAobV9wbGF5QmluKQogICAgICAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLmdldCgpLCAi
bi10ZXh0IiwgJm51bVRyYWNrcywgTlVMTCk7CkBAIC0xNjQwLDEwICsxNTY2LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZSBlcnJvcikKICAgICB9CiAKICAgICAvLyBMb2FkaW5nIGZhaWxlZCwgcmVtb3Zl
IHJlYWR5IHRpbWVyLgotICAgIGlmIChtX3JlYWR5VGltZXJIYW5kbGVyKSB7Ci0gICAgICAgIGdf
c291cmNlX3JlbW92ZShtX3JlYWR5VGltZXJIYW5kbGVyKTsKLSAgICAgICAgbV9yZWFkeVRpbWVy
SGFuZGxlciA9IDA7Ci0gICAgfQorICAgIG1fcmVhZHlUaW1lckhhbmRsZXIuY2FuY2VsKCk7CiB9
CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWltZVR5cGVDYWNoZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggYTM3MGRhMy4uYzNjZmVmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9p
bnN0YWxsLXBsdWdpbnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
ICNpbmNsdWRlICJNZWRpYVNvdXJjZUdTdHJlYW1lci5oIgpAQCAtMTg5LDExICsxOTAsMTEgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fdm9sdW1lQW5kTXV0ZUluaXRpYWxpemVkOwogICAgIGJvb2wg
bV9oYXNWaWRlbzsKICAgICBib29sIG1faGFzQXVkaW87Ci0gICAgZ3VpbnQgbV9hdWRpb1RpbWVy
SGFuZGxlcjsKLSAgICBndWludCBtX3RleHRUaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV92aWRl
b1RpbWVySGFuZGxlcjsKLSAgICBndWludCBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxlcjsKLSAgICBn
dWludCBtX3JlYWR5VGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX2F1ZGlvVGlt
ZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3RleHRUaW1lckhhbmRsZXI7CisgICAg
R01haW5Mb29wU291cmNlIG1fdmlkZW9UaW1lckhhbmRsZXI7CisgICAgR01haW5Mb29wU291cmNl
IG1fdmlkZW9DYXBzVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3JlYWR5VGlt
ZXJIYW5kbGVyOwogICAgIG11dGFibGUgbG9uZyBtX3RvdGFsQnl0ZXM7CiAgICAgVVJMIG1fdXJs
OwogICAgIGJvb2wgbV9wcmVzZXJ2ZXNQaXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4NWNjMzE1Li4xNWE1ODNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC03MiwyNiArNzIsMTIgQEAgc3RhdGljIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlVm9s
dW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgTWVkaWEKICAgICBwbGF5
ZXItPnZvbHVtZUNoYW5nZWQoKTsKIH0KIAotc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJp
dmF0ZVZvbHVtZUNoYW5nZVRpbWVvdXRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlKiBwbGF5ZXIpCi17Ci0gICAgLy8gVGhpcyBpcyB0aGUgY2FsbGJhY2sgb2YgdGhlIHRp
bWVvdXQgc291cmNlIGNyZWF0ZWQgaW4gOjp2b2x1bWVDaGFuZ2VkLgotICAgIHBsYXllci0+bm90
aWZ5UGxheWVyT2ZWb2x1bWVDaGFuZ2UoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRp
YyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZU11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCosIEdQ
YXJhbVNwZWMqLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXIpCiB7CiAg
ICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiBtX3ZvbHVtZUVsZW1lbnQgcmVjZWl2ZXMgdGhlIG5v
dGlmeTo6bXV0ZSBzaWduYWwuCiAgICAgcGxheWVyLT5tdXRlQ2hhbmdlZCgpOwogfQogCi1zdGF0
aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlTXV0ZUNoYW5nZVRpbWVvdXRDYWxsYmFjayhN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXIpCi17Ci0gICAgLy8gVGhpcyBp
cyB0aGUgY2FsbGJhY2sgb2YgdGhlIHRpbWVvdXQgc291cmNlIGNyZWF0ZWQgaW4gOjptdXRlQ2hh
bmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mTXV0ZSgpOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQogc3RhdGljIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKFdl
YktpdFZpZGVvU2luayosIEdzdEJ1ZmZlciAqYnVmZmVyLCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlKiBwbGF5ZXJQcml2YXRlKQogewogICAgIHBsYXllclByaXZhdGUtPnRyaWdnZXJS
ZXBhaW50KGJ1ZmZlcik7CkBAIC0xMDMsOCArODksNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBw
bAogICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKICAgICAsIG1f
bmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKICAgICAsIG1fYnVmZmVyKDApCi0gICAg
LCBtX3ZvbHVtZVRpbWVySGFuZGxlcigwKQotICAgICwgbV9tdXRlVGltZXJIYW5kbGVyKDApCiAg
ICAgLCBtX3JlcGFpbnRIYW5kbGVyKDApCiAgICAgLCBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIoMCkK
ICAgICAsIG1fbXV0ZVNpZ25hbEhhbmRsZXIoMCkKQEAgLTEzNCwxMiArMTE4LDYgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UoKQogCiAgICAgbV9wbGF5ZXIgPSAwOwogCi0gICAgaWYgKG1fbXV0ZVRpbWVySGFuZGxlcikK
LSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fbXV0ZVRpbWVySGFuZGxlcik7Ci0KLSAgICBpZiAo
bV92b2x1bWVUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3ZvbHVtZVRp
bWVySGFuZGxlcik7Ci0KICAgICBpZiAobV92b2x1bWVTaWduYWxIYW5kbGVyKSB7CiAgICAgICAg
IGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3ZvbHVtZUVsZW1lbnQuZ2V0KCksIG1fdm9s
dW1lU2lnbmFsSGFuZGxlcik7CiAgICAgICAgIG1fdm9sdW1lU2lnbmFsSGFuZGxlciA9IDA7CkBA
IC0yMzEsOCArMjA5LDYgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
dm9sdW1lKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpu
b3RpZnlQbGF5ZXJPZlZvbHVtZUNoYW5nZSgpCiB7Ci0gICAgbV92b2x1bWVUaW1lckhhbmRsZXIg
PSAwOwotCiAgICAgaWYgKCFtX3BsYXllciB8fCAhbV92b2x1bWVFbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAgICAgZG91YmxlIHZvbHVtZTsKQEAgLTI0NiwxMCArMjIyLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJPZlZvbHVtZUNoYW5nZSgp
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dm9sdW1lQ2hhbmdlZCgp
CiB7Ci0gICAgaWYgKG1fdm9sdW1lVGltZXJIYW5kbGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1v
dmUobV92b2x1bWVUaW1lckhhbmRsZXIpOwotICAgIG1fdm9sdW1lVGltZXJIYW5kbGVyID0gZ19p
ZGxlX2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNl
RnVuYz4obWVkaWFQbGF5ZXJQcml2YXRlVm9sdW1lQ2hhbmdlVGltZW91dENhbGxiYWNrKSwgdGhp
cywgMCk7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQobV92b2x1bWVUaW1lckhhbmRsZXIs
ICJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVWb2x1bWVDaGFuZ2VUaW1lb3V0Q2FsbGJhY2si
KTsKKyAgICBtX3ZvbHVtZVRpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0gTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dm9sdW1lQ2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFuZ2UsIHRo
aXMpKTsKIH0KIAogTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuZXR3b3JrU3RhdGUoKSBjb25zdApAQCAtMjg3LDggKzI2MCw2IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZWQoKSBjb25zdAogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSgpCiB7
Ci0gICAgbV9tdXRlVGltZXJIYW5kbGVyID0gMDsKLQogICAgIGlmICghbV9wbGF5ZXIgfHwgIW1f
dm9sdW1lRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksMTMgKzI3MCw5IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZNdXRlKCkK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCgpCiB7
Ci0gICAgaWYgKG1fbXV0ZVRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1f
bXV0ZVRpbWVySGFuZGxlcik7Ci0gICAgbV9tdXRlVGltZXJIYW5kbGVyID0gZ19pZGxlX2FkZF9m
dWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obWVk
aWFQbGF5ZXJQcml2YXRlTXV0ZUNoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMsIDApOwotICAg
IGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fbXV0ZVRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1l
ZGlhUGxheWVyUHJpdmF0ZU11dGVDaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAgICBtX211dGVU
aW1lckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6Om11dGVDaGFuZ2VkIiwgc3RkOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpub3RpZnlQbGF5ZXJPZk11dGUsIHRoaXMpKTsKIH0KIAotCiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0
dXJlKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA3YzM4YmQ4Li4xM2NhNmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogCiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCkBAIC0xMTksOCArMTIwLDgg
QEAgcHJvdGVjdGVkOgogICAgIEludFNpemUgbV9zaXplOwogICAgIEdNdXRleCogbV9idWZmZXJN
dXRleDsKICAgICBHc3RCdWZmZXIqIG1fYnVmZmVyOwotICAgIHVuc2lnbmVkIGxvbmcgbV92b2x1
bWVUaW1lckhhbmRsZXI7Ci0gICAgdW5zaWduZWQgbG9uZyBtX211dGVUaW1lckhhbmRsZXI7Cisg
ICAgR01haW5Mb29wU291cmNlIG1fdm9sdW1lVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNv
dXJjZSBtX211dGVUaW1lckhhbmRsZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX3JlcGFpbnRIYW5k
bGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV92b2x1bWVTaWduYWxIYW5kbGVyOwogICAgIHVuc2ln
bmVkIGxvbmcgbV9tdXRlU2lnbmFsSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZh
dGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCAxNmJkNDk0Li5lYWJkODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC01MSwyNCArNTEsMTAgQEAg
c3RhdGljIHZvaWQgdHJhY2tQcml2YXRlVGFnc0NoYW5nZWRDYWxsYmFjayhHT2JqZWN0KiwgR1Bh
cmFtU3BlYyosIFRyYWNrUHJpdmF0ZUIKICAgICB0cmFjay0+dGFnc0NoYW5nZWQoKTsKIH0KIAot
c3RhdGljIGdib29sZWFuIHRyYWNrUHJpdmF0ZUFjdGl2ZUNoYW5nZVRpbWVvdXRDYWxsYmFjayhU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKiB0cmFjaykKLXsKLSAgICB0cmFjay0+bm90aWZ5VHJh
Y2tPZkFjdGl2ZUNoYW5nZWQoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBnYm9v
bGVhbiB0cmFja1ByaXZhdGVUYWdzQ2hhbmdlVGltZW91dENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIqIHRyYWNrKQotewotICAgIHRyYWNrLT5ub3RpZnlUcmFja09mVGFnc0NoYW5n
ZWQoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZSogb3duZXIsIGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCiAgICAgOiBtX2luZGV4KGluZGV4KQogICAgICwg
bV9wYWQocGFkKQogICAgICwgbV9vd25lcihvd25lcikKLSAgICAsIG1fYWN0aXZlVGltZXJIYW5k
bGVyKDApCi0gICAgLCBtX3RhZ1RpbWVySGFuZGxlcigwKQogewogICAgIEFTU0VSVChtX3BhZCk7
CiAKQEAgLTk1LDEzICs4MSw4IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6ZGlz
Y29ubmVjdCgpCiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGFk
LmdldCgpLAogICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih0cmFja1ByaXZhdGVU
YWdzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAobV9hY3RpdmVUaW1lckhhbmRs
ZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX2FjdGl2ZVRpbWVySGFuZGxlcik7Ci0gICAg
bV9hY3RpdmVUaW1lckhhbmRsZXIgPSAwOwotCi0gICAgaWYgKG1fdGFnVGltZXJIYW5kbGVyKQot
ICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV90YWdUaW1lckhhbmRsZXIpOwotICAgIG1fdGFnVGlt
ZXJIYW5kbGVyID0gMDsKKyAgICBtX2FjdGl2ZVRpbWVySGFuZGxlci5jYW5jZWwoKTsKKyAgICBt
X3RhZ1RpbWVySGFuZGxlci5jYW5jZWwoKTsKIAogICAgIG1fcGFkLmNsZWFyKCk7CiAgICAgbV90
YWdzLmNsZWFyKCk7CkBAIC0xMDksMTcgKzkwLDEyIEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcjo6ZGlzY29ubmVjdCgpCiAKIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
YWN0aXZlQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1fYWN0aXZlVGltZXJIYW5kbGVyKQotICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUobV9hY3RpdmVUaW1lckhhbmRsZXIpOwotICAgIG1fYWN0aXZlVGlt
ZXJIYW5kbGVyID0gZ190aW1lb3V0X2FkZCgwLAotICAgICAgICByZWludGVycHJldF9jYXN0PEdT
b3VyY2VGdW5jPih0cmFja1ByaXZhdGVBY3RpdmVDaGFuZ2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlz
KTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX2FjdGl2ZVRpbWVySGFuZGxlciwgIltX
ZWJLaXRdIHRyYWNrUHJpdmF0ZUFjdGl2ZUNoYW5nZVRpbWVvdXRDYWxsYmFjayIpOworICAgIG1f
YWN0aXZlVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpub3RpZnlUcmFja09mQWN0aXZlQ2hhbmdlZCIsIHN0ZDo6YmluZCgmVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZkFjdGl2ZUNoYW5nZWQsIHRoaXMpKTsKIH0K
IAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbmdlZCgpCiB7Ci0gICAg
aWYgKG1fdGFnVGltZXJIYW5kbGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV90YWdUaW1l
ckhhbmRsZXIpOworICAgIG1fdGFnVGltZXJIYW5kbGVyLmNhbmNlbCgpOwogCiAgICAgR1JlZlB0
cjxHc3RUYWdMaXN0PiB0YWdzOwogICAgIGdfb2JqZWN0X2dldChtX3BhZC5nZXQoKSwgInRhZ3Mi
LCAmdGFncy5vdXRQdHIoKSwgTlVMTCk7CkBAIC0xMjgsMTQgKzEwNCwxMSBAQCB2b2lkIFRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKICAgICAgICAgbV90YWdzLnN3YXAo
dGFncyk7CiAgICAgfQogCi0gICAgbV90YWdUaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRfYWRkKDAs
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRyYWNrUHJpdmF0ZVRhZ3ND
aGFuZ2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9p
ZChtX3RhZ1RpbWVySGFuZGxlciwgIltXZWJLaXRdIHRyYWNrUHJpdmF0ZVRhZ3NDaGFuZ2VUaW1l
b3V0Q2FsbGJhY2siKTsKKyAgICBtX3RhZ1RpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0g
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkIiwgc3Rk
OjpiaW5kKCZUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5n
ZWQsIHRoaXMpKTsKIH0KIAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlU
cmFja09mQWN0aXZlQ2hhbmdlZCgpCiB7Ci0gICAgbV9hY3RpdmVUaW1lckhhbmRsZXIgPSAwOwog
ICAgIGlmICghbV9wYWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5LDcgKzEzMiw2IEBAIGJv
b2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNv
bnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAKIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCkKIHsKLSAgICBtX3RhZ1RpbWVySGFuZGxlciA9IDA7
CiAgICAgaWYgKCFtX3BhZCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAppbmRleCAxZTNiOGM4Li4zMDNlZDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
Niw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBnZXRUYWcoR3N0VGFnTGlzdCogdGFncywg
Y29uc3QgZ2NoYXIqIHRhZ05hbWUsIFN0cmluZyYgdmFsdWUpOwogCiAgICAgVHJhY2tQcml2YXRl
QmFzZSogbV9vd25lcjsKLSAgICBndWludCBtX2FjdGl2ZVRpbWVySGFuZGxlcjsKLSAgICBndWlu
dCBtX3RhZ1RpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9hY3RpdmVUaW1lckhh
bmRsZXI7CisgICAgR01haW5Mb29wU291cmNlIG1fdGFnVGltZXJIYW5kbGVyOwogCiAgICAgTXV0
ZXggbV90YWdNdXRleDsKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+IG1fdGFnczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggMTdkMGFlZi4uZDgxMDc5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTXV0ZXhMb2NrZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC03NCw3ICs3NSw3IEBAIHN0YXRpYyBndWludCB3ZWJraXRWaWRlb1NpbmtT
aWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQ
cml2YXRlIHsKICAgICBHc3RCdWZmZXIqIGJ1ZmZlcjsKLSAgICBndWludCB0aW1lb3V0SWQ7Cisg
ICAgR01haW5Mb29wU291cmNlIHRpbWVvdXRTb3VyY2U7CiAgICAgR011dGV4KiBidWZmZXJNdXRl
eDsKICAgICBHQ29uZCogZGF0YUNvbmRpdGlvbjsKIApAQCAtMTEzLDI2ICsxMTQsMjIgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfaW5pdChXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiAg
ICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmc2luay0+cHJpdi0+aW5mbyk7CiB9CiAKLXN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKK3N0
YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayhXZWJLaXRWaWRlb1Npbmsq
IHNpbmspCiB7Ci0gICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5rID0gcmVpbnRlcnByZXRfY2FzdDxX
ZWJLaXRWaWRlb1NpbmsqPihkYXRhKTsKICAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2
ID0gc2luay0+cHJpdjsKIAogICAgIEdNdXRleExvY2tlciBsb2NrKHByaXYtPmJ1ZmZlck11dGV4
KTsKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IHByaXYtPmJ1ZmZlcjsKICAgICBwcml2LT5idWZm
ZXIgPSAwOwotICAgIHByaXYtPnRpbWVvdXRJZCA9IDA7CiAKICAgICBpZiAoIWJ1ZmZlciB8fCBw
cml2LT51bmxvY2tlZCB8fCBVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihidWZmZXIpKSkgewogICAg
ICAgICBnX2NvbmRfc2lnbmFsKHByaXYtPmRhdGFDb25kaXRpb24pOwotICAgICAgICByZXR1cm4g
RkFMU0U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0KHNpbmss
IHdlYmtpdFZpZGVvU2lua1NpZ25hbHNbUkVQQUlOVF9SRVFVRVNURURdLCAwLCBidWZmZXIpOwog
ICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKICAgICBnX2NvbmRfc2lnbmFsKHByaXYtPmRh
dGFDb25kaXRpb24pOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgR3N0Rmxvd1Jl
dHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZm
ZXIqIGJ1ZmZlcikKQEAgLTIxNiw5ICsyMTMsOSBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJr
aXRWaWRlb1NpbmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1Zgog
ICAgIC8vIFRoaXMgc2hvdWxkIGxpa2VseSB1c2UgYSBsb3dlciBwcmlvcml0eSwgYnV0IGdsaWIg
Y3VycmVudGx5IHN0YXJ2ZXMKICAgICAvLyBsb3dlciBwcmlvcml0eSBzb3VyY2VzLgogICAgIC8v
IFNlZTogaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDgzMC4K
LSAgICBwcml2LT50aW1lb3V0SWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZB
VUxULCAwLCB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnc3Rfb2JqZWN0X3JlZihzaW5rKSwgcmVpbnRlcnBy
ZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ3N0X29iamVjdF91bnJlZikpOwotICAgIGdfc291cmNl
X3NldF9uYW1lX2J5X2lkKHByaXYtPnRpbWVvdXRJZCwgIltXZWJLaXRdIHdlYmtpdFZpZGVvU2lu
a1RpbWVvdXRDYWxsYmFjayIpOworICAgIGdzdF9vYmplY3RfcmVmKHNpbmspOworICAgIHByaXYt
PnRpbWVvdXRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRD
YWxsYmFjayIsIHN0ZDo6YmluZCh3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2ssIHNpbmsp
LCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzaW5rXSgpIHsgZ3N0X29iamVjdF91bnJl
ZihzaW5rKTsgfSk7CiAKICAgICBnX2NvbmRfd2FpdChwcml2LT5kYXRhQ29uZGl0aW9uLCBwcml2
LT5idWZmZXJNdXRleCk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggODNiMTM3Zi4uNjRmYTY2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDMs
MTEgKzQ0LDExIEBAIHR5cGVkZWYgc3RydWN0IF9Tb3VyY2UgewogICAgIGd1aW50NjQgc2l6ZTsK
ICAgICBnYm9vbGVhbiBwYXVzZWQ7CiAKLSAgICBndWludCBzdGFydElkOwotICAgIGd1aW50IHN0
b3BJZDsKLSAgICBndWludCBuZWVkRGF0YUlkOwotICAgIGd1aW50IGVub3VnaERhdGFJZDsKLSAg
ICBndWludCBzZWVrSWQ7CisgICAgR01haW5Mb29wU291cmNlIHN0YXJ0OworICAgIEdNYWluTG9v
cFNvdXJjZSBzdG9wOworICAgIEdNYWluTG9vcFNvdXJjZSBuZWVkRGF0YTsKKyAgICBHTWFpbkxv
b3BTb3VyY2UgZW5vdWdoRGF0YTsKKyAgICBHTWFpbkxvb3BTb3VyY2Ugc2VlazsKIAogICAgIGd1
aW50NjQgcmVxdWVzdGVkT2Zmc2V0OwogfSBTb3VyY2U7CkBAIC0xNzIsNiArMTczLDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X21lZGlhX3NyY19pbml0KFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAg
ICAgV2ViS2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX1NSQ19HRVRfUFJJ
VkFURShzcmMpOwogICAgIHNyYy0+cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSBXZWJLaXRN
ZWRpYVNyY1ByaXZhdGUoKTsKIAogICAgIHByaXYtPnNvdXJjZVZpZGVvLmFwcHNyYyA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgiYXBwc3JjIiwgInZpZGVvYXBwc3JjIik7CiAgICAgZ3N0X2Fw
cF9zcmNfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NSQyhwcml2LT5zb3VyY2VWaWRlby5hcHBzcmMp
LCAmYXBwc3JjQ2FsbGJhY2tzVmlkZW8sIHNyYywgMCk7CkBAIC0xODgsNiArMTkwLDcgQEAgc3Rh
dGljIHZvaWQgd2ViS2l0TWVkaWFTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2Vi
S2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgZ19mcmVlKHByaXYt
PnVyaSk7CisgICAgcHJpdi0+fldlYktpdE1lZGlhU3JjUHJpdmF0ZSgpOwogCiAgICAgR1NUX0NB
TExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKG9iamVjdCkpOwogfQpAQCAtMjIz
LDM1ICsyMjYsMjMgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWwKIH0KIAogLy8gbXVzdCBiZSBj
YWxsZWQgb24gbWFpbiB0aHJlYWQgYW5kIHdpdGggb2JqZWN0IHVubG9ja2VkCi1zdGF0aWMgZ2Jv
b2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0YXRp
YyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNTdG9wKFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAg
ICAgV2ViS2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogICAgIGdib29sZWFu
IHNlZWtpbmc7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKIAotICAgIHNlZWtpbmcgPSBw
cml2LT5zb3VyY2VWaWRlby5zZWVrSWQ7CisgICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZVZpZGVv
LnNlZWsuaXNTY2hlZHVsZWQoKTsKIAotICAgIGlmIChwcml2LT5zb3VyY2VWaWRlby5zdGFydElk
KSB7Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VWaWRlby5zdGFydElkKTsK
LSAgICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnRJZCA9IDA7Ci0gICAgfQorICAgIHByaXYt
PnNvdXJjZVZpZGVvLnN0YXJ0LmNhbmNlbCgpOwogCiAgICAgcHJpdi0+cGxheWVyID0gMDsKICAg
ICBwcml2LT5wbGF5YmluID0gMDsKIAotICAgIGlmIChwcml2LT5zb3VyY2VWaWRlby5uZWVkRGF0
YUlkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJ
ZCk7Ci0gICAgcHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJZCA9IDA7Ci0KLSAgICBpZiAocHJp
di0+c291cmNlVmlkZW8uZW5vdWdoRGF0YUlkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJp
di0+c291cmNlVmlkZW8uZW5vdWdoRGF0YUlkKTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5lbm91
Z2hEYXRhSWQgPSAwOwotCi0gICAgaWYgKHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCkKLSAgICAg
ICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCk7Ci0KLSAgICBwcml2
LT5zb3VyY2VWaWRlby5zZWVrSWQgPSAwOworICAgIHByaXYtPnNvdXJjZVZpZGVvLm5lZWREYXRh
LmNhbmNlbCgpOworICAgIHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGEuY2FuY2VsKCk7Cisg
ICAgcHJpdi0+c291cmNlVmlkZW8uc2Vlay5jYW5jZWwoKTsKIAogICAgIHByaXYtPnNvdXJjZVZp
ZGVvLnBhdXNlZCA9IEZBTFNFOwogICAgIHByaXYtPnNvdXJjZVZpZGVvLm9mZnNldCA9IDA7CkBA
IC0yNjAsNyArMjUxLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhVmlkZW9TcmNTdG9w
KFdlYktpdE1lZGlhU3JjKiBzcmMpCiAgICAgcHJpdi0+ZHVyYXRpb24gPSAwOwogICAgIHByaXYt
Pm5iU291cmNlID0gMDsKIAotICAgIHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCA9IDA7CisgICAg
cHJpdi0+c291cmNlVmlkZW8uc3RvcC5jYW5jZWwoKTsKIAogICAgIEdTVF9PQkpFQ1RfVU5MT0NL
KHNyYyk7CiAKQEAgLTI3MSw0MCArMjYyLDI2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRp
YVZpZGVvU3JjU3RvcChXZWJLaXRNZWRpYVNyYyogc3JjKQogICAgIH0KIAogICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiU3RvcHBlZCByZXF1ZXN0Iik7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RvcChXZWJLaXRNZWRpYVNy
Yyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY1N0b3AoV2ViS2l0TWVkaWFT
cmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7
CiAgICAgZ2Jvb2xlYW4gc2Vla2luZzsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwogCi0g
ICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZUF1ZGlvLnNlZWtJZDsKKyAgICBzZWVraW5nID0gcHJp
di0+c291cmNlQXVkaW8uc2Vlay5pc1NjaGVkdWxlZCgpOwogCi0gICAgaWYgKHByaXYtPnNvdXJj
ZUF1ZGlvLnN0YXJ0SWQpIHsKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNvdXJjZUF1
ZGlvLnN0YXJ0SWQpOwotICAgICAgICBwcml2LT5zb3VyY2VBdWRpby5zdGFydElkID0gMDsKLSAg
ICB9CisgICAgcHJpdi0+c291cmNlQXVkaW8uc3RhcnQuY2FuY2VsKCk7CiAKICAgICBwcml2LT5w
bGF5ZXIgPSAwOwogCiAgICAgcHJpdi0+cGxheWJpbiA9IDA7CiAKLSAgICBpZiAocHJpdi0+c291
cmNlQXVkaW8ubmVlZERhdGFJZCkKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNvdXJj
ZUF1ZGlvLm5lZWREYXRhSWQpOwotICAgIHByaXYtPnNvdXJjZUF1ZGlvLm5lZWREYXRhSWQgPSAw
OwotCi0gICAgaWYgKHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGFJZCkKLSAgICAgICAgZ19z
b3VyY2VfcmVtb3ZlKHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGFJZCk7Ci0gICAgcHJpdi0+
c291cmNlQXVkaW8uZW5vdWdoRGF0YUlkID0gMDsKLQotICAgIGlmIChwcml2LT5zb3VyY2VBdWRp
by5zZWVrSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5zZWVr
SWQpOwotCi0gICAgcHJpdi0+c291cmNlQXVkaW8uc2Vla0lkID0gMDsKKyAgICBwcml2LT5zb3Vy
Y2VBdWRpby5uZWVkRGF0YS5jYW5jZWwoKTsKKyAgICBwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hE
YXRhLmNhbmNlbCgpOworICAgIHByaXYtPnNvdXJjZUF1ZGlvLnNlZWsuY2FuY2VsKCk7CiAKICAg
ICBwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQgPSBGQUxTRTsKIApAQCAtMzE1LDcgKzI5Miw3IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RvcChXZWJLaXRNZWRpYVNyYyog
c3JjKQogICAgIHByaXYtPmR1cmF0aW9uID0gMDsKICAgICBwcml2LT5uYlNvdXJjZSA9IDA7CiAK
LSAgICBwcml2LT5zb3VyY2VBdWRpby5zdG9wSWQgPSAwOworICAgIHByaXYtPnNvdXJjZUF1ZGlv
LnN0b3AuY2FuY2VsKCk7CiAKICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogCkBAIC0zMjYs
MTIgKzMwMywxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1NyY1N0b3AoV2Vi
S2l0TWVkaWFTcmMqIHNyYykKICAgICB9CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0
b3BwZWQgcmVxdWVzdCIpOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiAvLyBtdXN0IGJlIGNh
bGxlZCBvbiBtYWluIHRocmVhZCBhbmQgd2l0aCBvYmplY3QgdW5sb2NrZWQKLXN0YXRpYyBnYm9v
bGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0YXRp
YyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNTdGFydChXZWJLaXRNZWRpYVNyYyogc3JjKQogewog
ICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIApAQCAtMzQwLDE3
ICszMTUsMTUgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhVmlkZW9TcmNTdGFydChXZWJL
aXRNZWRpYVNyYyogc3JjKQogICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIk5vIFVSSSBw
cm92aWRlZCIpOwogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICB3ZWJL
aXRNZWRpYVZpZGVvU3JjU3RvcChzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1Qoc3JjLCAiU3RhcnRlZCByZXF1ZXN0Iik7Ci0KLSAgICByZXR1cm4gRkFMU0U7
CiB9CiAKIC8vIG11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkIGFuZCB3aXRoIG9iamVjdCB1
bmxvY2tlZAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9TcmNTdGFydChXZWJLaXRN
ZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY1N0YXJ0KFdlYktp
dE1lZGlhU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0gc3Jj
LT5wcml2OwogCkBAIC0zNTksMTMgKzMzMiwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVk
aWFBdWRpb1NyY1N0YXJ0KFdlYktpdE1lZGlhU3JjKiBzcmMpCiAgICAgICAgIEdTVF9FUlJPUl9P
QkpFQ1Qoc3JjLCAiTm8gVVJJIHByb3ZpZGVkIik7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NL
KHNyYyk7CiAgICAgICAgIHdlYktpdE1lZGlhQXVkaW9TcmNTdG9wKHNyYyk7Ci0gICAgICAgIHJl
dHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEdTVF9PQkpFQ1RfVU5M
T0NLKHNyYyk7CiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdGFydGVkIHJlcXVlc3QiKTsK
LQotICAgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdl
YktpdE1lZGlhU3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFu
Z2UgdHJhbnNpdGlvbikKQEAgLTM5NywxOSArMzY4LDI5IEBAIHN0YXRpYyBHc3RTdGF0ZUNoYW5n
ZVJldHVybiB3ZWJLaXRNZWRpYVNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdz
dFN0CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKICAgICAgICAg
R1NUX0RFQlVHX09CSkVDVChzcmMsICJSRUFEWS0+UEFVU0VEIik7CiAgICAgICAgIEdTVF9PQkpF
Q1RfTE9DSyhzcmMpOwotICAgICAgICBwcml2LT5zb3VyY2VWaWRlby5zdGFydElkID0gZ190aW1l
b3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRN
ZWRpYVZpZGVvU3JjU3RhcnQsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkg
Z3N0X29iamVjdF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYt
PnNvdXJjZVZpZGVvLnN0YXJ0SWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQi
KTsKLSAgICAgICAgcHJpdi0+c291cmNlQXVkaW8uc3RhcnRJZCA9IGdfdGltZW91dF9hZGRfZnVs
bChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRpb1Ny
Y1N0YXJ0LCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3Rf
dW5yZWYpOwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VBdWRp
by5zdGFydElkLCAiW1dlYktpdF0gd2ViS2l0TWVkaWFBdWRpb1NyY1N0YXJ0Iik7CisKKyAgICAg
ICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnQu
c2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhVmlkZW9TcmNTdGFydCIsIHN0ZDo6YmluZCh3
ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAg
ICAgICAgIFtzcmNdKCkgeyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOworCisgICAgICAgIGdz
dF9vYmplY3RfcmVmKHNyYyk7CisgICAgICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0YXJ0LnNjaGVk
dWxlKCJbV2ViS2l0XSB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RhcnQiLCBzdGQ6OmJpbmQod2ViS2l0
TWVkaWFBdWRpb1NyY1N0YXJ0LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAg
ICBbc3JjXSgpIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAgICAgICBHU1RfT0JK
RUNUX1VOTE9DSyhzcmMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFO
R0VfUEFVU0VEX1RPX1JFQURZOgogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBBVVNF
RC0+UkVBRFkiKTsKICAgICAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0gICAgICAgIHByaXYt
PnNvdXJjZVZpZGVvLnN0b3BJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFV
TFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AsIGdzdF9vYmplY3Rf
cmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAgICAgIGdf
c291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCwgIltXZWJLaXRd
IHdlYktpdE1lZGlhVmlkZW9TcmNTdG9wIik7Ci0gICAgICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0
b3BJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNl
RnVuYykgd2ViS2l0TWVkaWFBdWRpb1NyY1N0b3AsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVz
dHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1l
X2J5X2lkKHByaXYtPnNvdXJjZUF1ZGlvLnN0b3BJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVk
aW9TcmNTdG9wIik7CisKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJp
di0+c291cmNlVmlkZW8uc3RvcC5zY2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1Ny
Y1N0b3AiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AsIHNyYyksIEdfUFJJT1JJ
VFlfREVGQVVMVCwKKyAgICAgICAgICAgIFtzcmNdKCkgeyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7
IH0pOworCisgICAgICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgICAgIHByaXYtPnNvdXJj
ZUF1ZGlvLnN0b3Auc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTdG9wIiwg
c3RkOjpiaW5kKHdlYktpdE1lZGlhQXVkaW9TcmNTdG9wLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFV
TFQsCisgICAgICAgICAgICBbc3JjXSgpIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwog
ICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgpAQCAtNTE1LDQwICs0OTYsMjIgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNVcmlI
YW5kbGVySW5pdChncG9pbnRlciBnSWZhY2UsIGdwb2ludGVyKQogfQogCiAvLyBhcHBzcmMgY2Fs
bGJhY2tzCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY05lZWREYXRhTWFpbkNi
KFdlYktpdE1lZGlhU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVZpZGVvU3JjTmVl
ZERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAg
ICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBpZiAoIXByaXYtPnNvdXJjZVZpZGVvLm5lZWREYXRh
SWQpIHsKLSAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKLSAgICAgICAgcmV0dXJuIEZB
TFNFOwotICAgIH0KLQogICAgIHByaXYtPnNvdXJjZVZpZGVvLnBhdXNlZCA9IEZBTFNFOwotICAg
IHByaXYtPnNvdXJjZVZpZGVvLm5lZWREYXRhSWQgPSAwOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NL
KHNyYyk7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2
b2lkIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5DYihXZWJLaXRNZWRpYVNyYyogc3Jj
KQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAg
IEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIC8vIGFscmVhZHkgc3RvcHBlZAotICAgIGlmICgh
cHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNUX1VOTE9D
SyhzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+c291cmNl
QXVkaW8ucGF1c2VkID0gRkFMU0U7Ci0gICAgcHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGFJZCA9
IDA7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKLQotICAgIHJldHVybiBGQUxTRTsKIH0K
IAogc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY05lZWREYXRhQ2IoR3N0QXBwU3JjKiwg
Z3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2VyRGF0YSkKQEAgLTU1OSwxMyArNTIyLDE0IEBAIHN0
YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YUNiKEdzdEFwcFNyYyosIGd1aW50
IGxlbmd0aCwgZ3BvaW50ZXIgdXNlCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJOZWVkIG1v
cmUgZGF0YTogJXUiLCBsZW5ndGgpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0gICAg
aWYgKHByaXYtPnNvdXJjZVZpZGVvLm5lZWREYXRhSWQgfHwgIXByaXYtPnNvdXJjZVZpZGVvLnBh
dXNlZCkgeworICAgIGlmIChwcml2LT5zb3VyY2VWaWRlby5uZWVkRGF0YS5pc1NjaGVkdWxlZCgp
IHx8ICFwcml2LT5zb3VyY2VWaWRlby5wYXVzZWQpIHsKICAgICAgICAgR1NUX09CSkVDVF9VTkxP
Q0soc3JjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByaXYtPnNvdXJjZVZpZGVv
Lm5lZWREYXRhSWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZBVUxULCAwLCAo
R1NvdXJjZUZ1bmMpIHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYiwgZ3N0X29iamVj
dF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKLSAgICBnX3Nv
dXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRlby5uZWVkRGF0YUlkLCAiW1dlYktp
dF0gd2ViS2l0TWVkaWFWaWRlb1NyY05lZWREYXRhTWFpbkNiIik7CisgICAgZ3N0X29iamVjdF9y
ZWYoc3JjKTsKKyAgICBwcml2LT5zb3VyY2VWaWRlby5uZWVkRGF0YS5zY2hlZHVsZSgiW1dlYktp
dF0gd2ViS2l0TWVkaWFWaWRlb1NyY05lZWREYXRhTWFpbkNiIiwgc3RkOjpiaW5kKHdlYktpdE1l
ZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAg
ICAgICBbc3JjXSgpIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzcmMpOwogfQogCkBAIC01NzcsNTAgKzU0MSwzMyBAQCBzdGF0aWMgdm9pZCB3ZWJL
aXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2lu
dGVyIHVzZQogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiTmVlZCBtb3JlIGRhdGE6ICV1Iiwg
bGVuZ3RoKTsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIGlmIChwcml2LT5zb3Vy
Y2VBdWRpby5uZWVkRGF0YUlkIHx8ICFwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQpIHsKKyAgICBp
ZiAocHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEuaXNTY2hlZHVsZWQoKSB8fCAhcHJpdi0+c291
cmNlQXVkaW8ucGF1c2VkKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkID0g
Z190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3
ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChH
RGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVf
YnlfaWQocHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGFJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlh
QXVkaW9TcmNOZWVkRGF0YU1haW5DYiIpOworICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAg
cHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdE1lZGlh
QXVkaW9TcmNOZWVkRGF0YU1haW5DYiIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVl
ZERhdGFNYWluQ2IsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10oKSB7
IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsK
IH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhVmlkZW9TcmNFbm91Z2hEYXRhTWFpbkNi
KFdlYktpdE1lZGlhU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVZpZGVvU3JjRW5v
dWdoRGF0YU1haW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3Jj
UHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwot
ICAgIC8vIGFscmVhZHkgc3RvcHBlZAotICAgIGlmICghcHJpdi0+c291cmNlVmlkZW8uZW5vdWdo
RGF0YUlkKSB7Ci0gICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7Ci0gICAgICAgIHJldHVy
biBGQUxTRTsKLSAgICB9Ci0KICAgICBwcml2LT5zb3VyY2VWaWRlby5wYXVzZWQgPSBUUlVFOwot
ICAgIHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCA9IDA7CiAgICAgR1NUX09CSkVDVF9V
TkxPQ0soc3JjKTsKLQotICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdl
YktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiKFdlYktpdE1lZGlhU3JjKiBzcmMpCitz
dGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRNZWRp
YVNyYyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJp
djsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIC8vIGFscmVhZHkgc3RvcHBlZAot
ICAgIGlmICghcHJpdi0+c291cmNlQXVkaW8uZW5vdWdoRGF0YUlkKSB7Ci0gICAgICAgIEdTVF9P
QkpFQ1RfVU5MT0NLKHNyYyk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0KICAgICBw
cml2LT5zb3VyY2VBdWRpby5wYXVzZWQgPSBUUlVFOwotICAgIHByaXYtPnNvdXJjZUF1ZGlvLmVu
b3VnaERhdGFJZCA9IDA7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKLQotICAgIHJldHVy
biBGQUxTRTsKIH0KIAogc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFD
YihHc3RBcHBTcmMqLCBncG9pbnRlciB1c2VyRGF0YSkKQEAgLTYzMSwxMyArNTc4LDE1IEBAIHN0
YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3Bv
aW50ZXIgdXNlckRhdGEpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJIYXZlIGVub3VnaCBk
YXRhIik7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICBpZiAocHJpdi0+c291cmNl
VmlkZW8uZW5vdWdoRGF0YUlkIHx8IHByaXYtPnNvdXJjZVZpZGVvLnBhdXNlZCkgeworICAgIGlm
IChwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhLmlzU2NoZWR1bGVkKCkgfHwgcHJpdi0+c291
cmNlVmlkZW8ucGF1c2VkKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhSWQg
PSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZBVUxULCAwLCAoR1NvdXJjZUZ1bmMp
IHdlYktpdE1lZGlhVmlkZW9TcmNFbm91Z2hEYXRhTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMp
LCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOwotICAgIGdfc291cmNlX3NldF9u
YW1lX2J5X2lkKHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCwgIltXZWJLaXRdIHdlYktp
dE1lZGlhVmlkZW9TcmNFbm91Z2hEYXRhTWFpbkNiIik7CisgICAgZ3N0X29iamVjdF9yZWYoc3Jj
KTsKKyAgICBwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhLnNjaGVkdWxlKCJbV2ViS2l0XSB3
ZWJLaXRNZWRpYVZpZGVvU3JjRW5vdWdoRGF0YU1haW5DYiIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRp
YVZpZGVvU3JjRW5vdWdoRGF0YU1haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAg
ICAgICBbc3JjXSgpIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAgIEdTVF9PQkpF
Q1RfVU5MT0NLKHNyYyk7CiB9CiAKQEAgLTY0OSwyNiArNTk4LDI2IEBAIHN0YXRpYyB2b2lkIHdl
YktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRh
dGEpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJIYXZlIGVub3VnaCBkYXRhIik7CiAKICAg
ICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICBpZiAocHJpdi0+c291cmNlQXVkaW8uZW5vdWdo
RGF0YUlkIHx8IHByaXYtPnNvdXJjZUF1ZGlvLnBhdXNlZCkgeworICAgIGlmIChwcml2LT5zb3Vy
Y2VBdWRpby5lbm91Z2hEYXRhLmlzU2NoZWR1bGVkKCkgfHwgcHJpdi0+c291cmNlQXVkaW8ucGF1
c2VkKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhSWQgPSBnX3RpbWVvdXRf
YWRkX2Z1bGwoR19QUklPUklUWV9ERUZBVUxULCAwLCAoR1NvdXJjZUZ1bmMpIHdlYktpdE1lZGlh
QXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lO
b3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHBy
aXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGFJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9T
cmNFbm91Z2hEYXRhTWFpbkNiIik7CisgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICBwcml2
LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhLnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJLaXRNZWRpYUF1
ZGlvU3JjRW5vdWdoRGF0YU1haW5DYiIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5v
dWdoRGF0YU1haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICBbc3JjXSgp
IHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNy
Yyk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla01haW5DYihX
ZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtN
YWluQ2IoV2ViS2l0TWVkaWFTcmMqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1NyY1NlZWtN
YWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhQXVkaW9T
cmNTZWVrTWFpbkNiKFdlYktpdE1lZGlhU3JjKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhVmlkZW9T
cmNTZWVrRGF0YUNiKEdzdEFwcFNyYyosIGd1aW50NjQgb2Zmc2V0LCBncG9pbnRlciB1c2VyRGF0
YSkKQEAgLTY5NSwxMCArNjQ0LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVv
U3JjU2Vla0RhdGFDYihHc3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50CiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJEb2luZyByYW5nZS1yZXF1ZXN0IHNlZWsiKTsKICAgICBwcml2
LT5zb3VyY2VWaWRlby5yZXF1ZXN0ZWRPZmZzZXQgPSBvZmZzZXQ7CiAKLSAgICBpZiAocHJpdi0+
c291cmNlVmlkZW8uc2Vla0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c291cmNl
VmlkZW8uc2Vla0lkKTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5zZWVrSWQgPSBnX3RpbWVvdXRf
YWRkX2Z1bGwoR19QUklPUklUWV9ERUZBVUxULCAwLCAoR1NvdXJjZUZ1bmMpIHdlYktpdE1lZGlh
VmlkZW9TcmNTZWVrTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkp
IGdzdF9vYmplY3RfdW5yZWYpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYtPnNv
dXJjZVZpZGVvLnNlZWtJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhVmlkZW9TcmNTZWVrTWFpbkNi
Iik7CisgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICBwcml2LT5zb3VyY2VWaWRlby5zZWVr
LnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla01haW5DYiIsIHN0ZDo6
YmluZCh3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla01haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZB
VUxULAorICAgICAgICBbc3JjXSgpIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAg
IEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAKICAgICByZXR1cm4gVFJVRTsKQEAgLTcyOCwxMCAr
Njc3LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUF1ZGlvU3JjU2Vla0RhdGFDYihH
c3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50CiAgICAgR1NUX0RFQlVHX09CSkVDVChz
cmMsICJEb2luZyByYW5nZS1yZXF1ZXN0IHNlZWsiKTsKICAgICBwcml2LT5zb3VyY2VBdWRpby5y
ZXF1ZXN0ZWRPZmZzZXQgPSBvZmZzZXQ7CiAKLSAgICBpZiAocHJpdi0+c291cmNlQXVkaW8uc2Vl
a0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c291cmNlQXVkaW8uc2Vla0lkKTsK
LSAgICBwcml2LT5zb3VyY2VBdWRpby5zZWVrSWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklP
UklUWV9ERUZBVUxULCAwLCAoR1NvdXJjZUZ1bmMpIHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrTWFp
bkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5y
ZWYpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYtPnNvdXJjZUF1ZGlvLnNlZWtJ
ZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrTWFpbkNiIik7CisgICAgZ3N0X29i
amVjdF9yZWYoc3JjKTsKKyAgICBwcml2LT5zb3VyY2VBdWRpby5zZWVrLnNjaGVkdWxlKCJbV2Vi
S2l0XSB3ZWJLaXRNZWRpYUF1ZGlvU3JjU2Vla01haW5DYiIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRp
YUF1ZGlvU3JjU2Vla01haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICBb
c3JjXSgpIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAgIEdTVF9PQkpFQ1RfVU5M
T0NLKHNyYyk7CiAKICAgICByZXR1cm4gVFJVRTsKQEAgLTgxNiwxNCArNzY1LDE0IEBAIHZvaWQg
TWVkaWFTb3VyY2VDbGllbnRHc3RyZWFtZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlKQogICAg
IEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJIYXZlIEVPUyIpOwogCiAgICAgR1NUX09CSkVDVF9M
T0NLKG1fc3JjKTsKLSAgICBpZiAoIXByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCkgeworICAgIGlm
ICghcHJpdi0+c291cmNlVmlkZW8uc2Vlay5pc1NjaGVkdWxlZCgpKSB7CiAgICAgICAgIEdTVF9P
QkpFQ1RfVU5MT0NLKG1fc3JjKTsKICAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShH
U1RfQVBQX1NSQyhwcml2LT5zb3VyY2VWaWRlby5hcHBzcmMpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgR1NUX09CSkVDVF9VTkxPQ0sobV9zcmMpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fc3Jj
KTsKLSAgICBpZiAoIXByaXYtPnNvdXJjZUF1ZGlvLnNlZWtJZCkgeworICAgIGlmICghcHJpdi0+
c291cmNlQXVkaW8uc2Vlay5pc1NjaGVkdWxlZCgpKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5M
T0NLKG1fc3JjKTsKICAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShHU1RfQVBQX1NS
Qyhwcml2LT5zb3VyY2VBdWRpby5hcHBzcmMpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggMzAxN2YxZC4uZTVmYjg2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2lu
Zy1wbHVnaW5zLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR011dGV4
TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KQEAgLTEyNiwxMSArMTI3LDExIEBAIHN0cnVjdCBfV2Vi
S2l0V2ViU3JjUHJpdmF0ZSB7CiAKICAgICBndWludDY0IHJlcXVlc3RlZE9mZnNldDsKIAotICAg
IGd1aW50IHN0YXJ0SUQ7Ci0gICAgZ3VpbnQgc3RvcElEOwotICAgIGd1aW50IG5lZWREYXRhSUQ7
Ci0gICAgZ3VpbnQgZW5vdWdoRGF0YUlEOwotICAgIGd1aW50IHNlZWtJRDsKKyAgICBHTWFpbkxv
b3BTb3VyY2Ugc3RhcnRTb3VyY2U7CisgICAgR01haW5Mb29wU291cmNlIHN0b3BTb3VyY2U7Cisg
ICAgR01haW5Mb29wU291cmNlIG5lZWREYXRhU291cmNlOworICAgIEdNYWluTG9vcFNvdXJjZSBl
bm91Z2hEYXRhU291cmNlOworICAgIEdNYWluTG9vcFNvdXJjZSBzZWVrU291cmNlOwogCiAgICAg
R1JlZlB0cjxHc3RCdWZmZXI+IGJ1ZmZlcjsKIApAQCAtMjUzLDYgKzI1NCw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc3JjX2luaXQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgV2ViS2l0V2Vi
U3JjUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfU1JDX0dFVF9QUklWQVRFKHNyYyk7CiAKICAg
ICBzcmMtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0V2ViU3JjUHJpdmF0ZSgp
OwogCiAgICAgcHJpdi0+YXBwc3JjID0gR1NUX0FQUF9TUkMoZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJhcHBzcmMiLCAwKSk7CiAgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKQEAgLTMxNCw2ICsz
MTYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIGdfZnJl
ZShwcml2LT51cmkpOworICAgIHByaXYtPn5XZWJLaXRXZWJTcmNQcml2YXRlKCk7CiAKICAgICBH
U1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CiB9CkBA
IC0zNjQsMjQgKzM2NywxMyBAQCBzdGF0aWMgdm9pZCByZW1vdmVUaW1lb3V0U291cmNlcyhXZWJL
aXRXZWJTcmMqIHNyYykKIHsKICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5w
cml2OwogCi0gICAgaWYgKHByaXYtPnN0YXJ0SUQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShw
cml2LT5zdGFydElEKTsKLSAgICBwcml2LT5zdGFydElEID0gMDsKLQotICAgIGlmIChwcml2LT5u
ZWVkRGF0YUlEKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+bmVlZERhdGFJRCk7Ci0g
ICAgcHJpdi0+bmVlZERhdGFJRCA9IDA7Ci0KLSAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlEKQot
ICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+ZW5vdWdoRGF0YUlEKTsKLSAgICBwcml2LT5l
bm91Z2hEYXRhSUQgPSAwOwotCi0gICAgaWYgKHByaXYtPnNlZWtJRCkKLSAgICAgICAgZ19zb3Vy
Y2VfcmVtb3ZlKHByaXYtPnNlZWtJRCk7Ci0gICAgcHJpdi0+c2Vla0lEID0gMDsKKyAgICBwcml2
LT5zdGFydFNvdXJjZS5jYW5jZWwoKTsKKyAgICBwcml2LT5uZWVkRGF0YVNvdXJjZS5jYW5jZWwo
KTsKKyAgICBwcml2LT5lbm91Z2hEYXRhU291cmNlLmNhbmNlbCgpOworICAgIHByaXYtPnNlZWtT
b3VyY2UuY2FuY2VsKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKFdl
YktpdFdlYlNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RvcChXZWJLaXRXZWJT
cmMqIHNyYykKIHsKICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2Owog
CkBAIC0zODksMTAgKzM4MSwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3RvcChX
ZWJLaXRXZWJTcmMqIHNyYykKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9H
RVRfTE9DSyhzcmMpKTsKIAotICAgIGJvb2wgc2Vla2luZyA9IHByaXYtPnNlZWtJRDsKKyAgICBi
b29sIHNlZWtpbmcgPSBwcml2LT5zZWVrU291cmNlLmlzU2NoZWR1bGVkKCk7CiAKICAgICByZW1v
dmVUaW1lb3V0U291cmNlcyhzcmMpOwotICAgIHByaXYtPnN0b3BJRCA9IDA7CisgICAgcHJpdi0+
c3RvcFNvdXJjZS5jYW5jZWwoKTsKIAogICAgIGlmIChwcml2LT5jbGllbnQpIHsKICAgICAgICAg
ZGVsZXRlIHByaXYtPmNsaWVudDsKQEAgLTQzNiwxMSArNDI4LDkgQEAgc3RhdGljIGdib29sZWFu
IHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQogCiAgICAgR1NUX0RF
QlVHX09CSkVDVChzcmMsICJTdG9wcGVkIHJlcXVlc3QiKTsKLQotICAgIHJldHVybiBGQUxTRTsK
IH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3Jj
KQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiB7CiAg
ICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIApAQCAtNDQ4LDEzICs0
MzgsMTMgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyog
c3JjKQogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykp
OwogCi0gICAgcHJpdi0+c3RhcnRJRCA9IDA7CisgICAgcHJpdi0+c3RhcnRTb3VyY2UuY2FuY2Vs
KCk7CiAKICAgICBpZiAoIXByaXYtPnVyaSkgewogICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNy
YywgIk5vIFVSSSBwcm92aWRlZCIpOwogICAgICAgICBsb2NrZXIudW5sb2NrKCk7CiAgICAgICAg
IHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKCFwcml2LT5jbGllbnQpOwpAQCAtNTEwLDEwICs1
MDAsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBz
cmMpCiAgICAgICAgIH0KICAgICAgICAgbG9ja2VyLnVubG9jaygpOwogICAgICAgICB3ZWJLaXRX
ZWJTcmNTdG9wKHNyYyk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0YXJ0ZWQgcmVxdWVzdCIpOwotICAg
IHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdl
YlNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5z
aXRpb24pCkBAIC01NDUsMTMgKzUzNCwxNyBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4g
d2ViS2l0V2ViU3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdAogICAg
IHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9U
T19QQVVTRUQ6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIp
OwotICAgICAgICBwcml2LT5zdGFydElEID0gZ19pZGxlX2FkZF9mdWxsKEdfUFJJT1JJVFlfREVG
QVVMVCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRXZWJTcmNTdGFydCwgZ3N0X29iamVjdF9yZWYoc3Jj
KSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgICAgICAgZ3N0X29iamVj
dF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c3RhcnRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRd
IHdlYktpdFdlYlNyY1N0YXJ0Iiwgc3RkOjpiaW5kKHdlYktpdFdlYlNyY1N0YXJ0LCBzcmMpLCBH
X1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAgICBbc3JjXSgpIHsgZ3N0X29iamVjdF91bnJl
ZihzcmMpOyB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BB
VVNFRF9UT19SRUFEWToKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQQVVTRUQtPlJF
QURZIik7CiAgICAgICAgIC8vIGNhbmNlbCBwZW5kaW5nIHNvdXJjZXMKICAgICAgICAgcmVtb3Zl
VGltZW91dFNvdXJjZXMoc3JjKTsKLSAgICAgICAgcHJpdi0+c3RvcElEID0gZ19pZGxlX2FkZF9m
dWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRXZWJTcmNTdG9wLCBn
c3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOwor
ICAgICAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgICAgICBwcml2LT5zdG9wU291cmNlLnNj
aGVkdWxlKCJbV2ViS2l0XSB3ZWJLaXRXZWJTcmNTdG9wIiwgc3RkOjpiaW5kKHdlYktpdFdlYlNy
Y1N0b3AsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgICAgIFtzcmNdKCkgeyBn
c3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKQEAgLTY2NiwyNCArNjU5LDE4IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdl
YlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIpCiAKIC8vIGFwcHNy
YyBjYWxsYmFja3MKIAotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY05lZWREYXRhTWFpbkNi
KFdlYktpdFdlYlNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGFNYWlu
Q2IoV2ViS2l0V2ViU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IHNyYy0+cHJpdjsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBHTXV0ZXhM
b2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7Ci0gICAgLy8gYWxyZWFkeSBz
dG9wcGVkCi0gICAgaWYgKCFwcml2LT5uZWVkRGF0YUlEKQotICAgICAgICByZXR1cm4gRkFMU0U7
Ci0KICAgICBwcml2LT5wYXVzZWQgPSBGQUxTRTsKLSAgICBwcml2LT5uZWVkRGF0YUlEID0gMDsK
ICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBpZiAocHJpdi0+Y2xpZW50KQogICAgICAgICBw
cml2LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmcoZmFsc2UpOwotICAgIHJldHVybiBGQUxTRTsK
IH0KIAogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWlu
dCBsZW5ndGgsIGdwb2ludGVyIHVzZXJEYXRhKQpAQCAtNjk0LDMxICs2ODEsMjYgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdw
b2ludGVyIHVzZXJEYXRhKQogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiTmVlZCBtb3JlIGRh
dGE6ICV1IiwgbGVuZ3RoKTsKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9H
RVRfTE9DSyhzcmMpKTsKLSAgICBpZiAocHJpdi0+bmVlZERhdGFJRCB8fCAhcHJpdi0+cGF1c2Vk
KSB7CisgICAgaWYgKHByaXYtPm5lZWREYXRhU291cmNlLmlzU2NoZWR1bGVkKCkgfHwgIXByaXYt
PnBhdXNlZCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHByaXYtPm5lZWREYXRhSUQg
PSBnX2lkbGVfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZBVUxULCAoR1NvdXJjZUZ1bmMpIHdlYktp
dFdlYlNyY05lZWREYXRhTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3Rp
ZnkpIGdzdF9vYmplY3RfdW5yZWYpOworICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJp
di0+bmVlZERhdGFTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY05lZWREYXRh
TWFpbkNiIiwgc3RkOjpiaW5kKHdlYktpdFdlYlNyY05lZWREYXRhTWFpbkNiLCBzcmMpLCBHX1BS
SU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdKCkgeyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7
IH0pOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYihX
ZWJLaXRXZWJTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWlu
Q2IoV2ViS2l0V2ViU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IHNyYy0+cHJpdjsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBHTXV0ZXhM
b2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7Ci0gICAgLy8gYWxyZWFkeSBz
dG9wcGVkCi0gICAgaWYgKCFwcml2LT5lbm91Z2hEYXRhSUQpCi0gICAgICAgIHJldHVybiBGQUxT
RTsKLQogICAgIHByaXYtPnBhdXNlZCA9IFRSVUU7Ci0gICAgcHJpdi0+ZW5vdWdoRGF0YUlEID0g
MDsKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBpZiAocHJpdi0+Y2xpZW50KQogICAgICAg
ICBwcml2LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7Ci0gICAgcmV0dXJuIEZBTFNF
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwg
Z3BvaW50ZXIgdXNlckRhdGEpCkBAIC03MjksMjkgKzcxMSwyMCBAQCBzdGF0aWMgdm9pZCB3ZWJL
aXRXZWJTcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAg
R1NUX0RFQlVHX09CSkVDVChzcmMsICJIYXZlIGVub3VnaCBkYXRhIik7CiAKICAgICBHTXV0ZXhM
b2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7Ci0gICAgaWYgKHByaXYtPmVu
b3VnaERhdGFJRCB8fCBwcml2LT5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YVNv
dXJjZS5pc1NjaGVkdWxlZCgpIHx8IHByaXYtPnBhdXNlZCkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAotICAgIHByaXYtPmVub3VnaERhdGFJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZ
X0RFRkFVTFQsIChHU291cmNlRnVuYykgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYiwgZ3N0
X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAg
ICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPmVub3VnaERhdGFTb3VyY2Uuc2NoZWR1
bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IiLCBzdGQ6OmJpbmQod2Vi
S2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAg
ICAgICBbc3JjXSgpIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKIH0KIAotc3RhdGljIGdi
b29sZWFuIHdlYktpdFdlYlNyY1NlZWtNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCitzdGF0aWMg
dm9pZCB3ZWJLaXRXZWJTcmNTZWVrTWFpbkNiKFdlYktpdFdlYlNyYyogc3JjKQogewotICAgIFdl
YktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0KICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NL
KHNyYykpOwotICAgIC8vIGFscmVhZHkgc3RvcHBlZAotICAgIGlmICghcHJpdi0+c2Vla0lEKQot
ICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgbG9ja2VyLnVubG9jaygpOwotCiAgICAgd2ViS2l0
V2ViU3JjU3RvcChzcmMpOwogICAgIHdlYktpdFdlYlNyY1N0YXJ0KHNyYyk7Ci0KLSAgICByZXR1
cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZWVrRGF0YUNiKEdz
dEFwcFNyYyosIGd1aW50NjQgb2Zmc2V0LCBncG9pbnRlciB1c2VyRGF0YSkKQEAgLTc3MCw5ICs3
NDMsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU2Vla0RhdGFDYihHc3RBcHBTcmMq
LCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlcgogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Jj
LCAiRG9pbmcgcmFuZ2UtcmVxdWVzdCBzZWVrIik7CiAgICAgcHJpdi0+cmVxdWVzdGVkT2Zmc2V0
ID0gb2Zmc2V0OwogCi0gICAgaWYgKHByaXYtPnNlZWtJRCkKLSAgICAgICAgZ19zb3VyY2VfcmVt
b3ZlKHByaXYtPnNlZWtJRCk7Ci0gICAgcHJpdi0+c2Vla0lEID0gZ19pZGxlX2FkZF9mdWxsKEdf
UFJJT1JJVFlfREVGQVVMVCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRXZWJTcmNTZWVrTWFpbkNiLCBn
c3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOwor
ICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c2Vla1NvdXJjZS5zY2hlZHVsZSgi
W1dlYktpdF0gd2ViS2l0V2ViU3JjU2Vla01haW5DYiIsIHN0ZDo6YmluZCh3ZWJLaXRXZWJTcmNT
ZWVrTWFpbkNiLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdKCkgeyBn
c3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwogICAgIHJldHVybiBUUlVFOwogfQogCkBAIC04Mjgs
NyArODAxLDcgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBHTXV0ZXhMb2NrZXIgbG9j
a2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7CiAKLSAgICBpZiAocHJpdi0+c2Vla0lEKSB7
CisgICAgaWYgKHByaXYtPnNlZWtTb3VyY2UuaXNTY2hlZHVsZWQoKSkgewogICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlNlZWsgaW4gcHJvZ3Jlc3MsIGlnbm9yaW5nIHJlc3BvbnNlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05MzIsNyArOTA1LDcgQEAgdm9pZCBTdHJlYW1p
bmdDbGllbnQ6OmhhbmRsZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQogICAgIGlmIChwcml2LT5idWZmZXIpCiAgICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1
ZmZlci5nZXQoKSk7CiAKLSAgICBpZiAocHJpdi0+c2Vla0lEKSB7CisgICAgaWYgKHByaXYtPnNl
ZWtTb3VyY2UuaXNTY2hlZHVsZWQoKSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IlNlZWsgaW4gcHJvZ3Jlc3MsIGlnbm9yaW5nIGRhdGEiKTsKICAgICAgICAgcHJpdi0+YnVmZmVy
LmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTk5Myw3ICs5NjYsNyBAQCB2b2lkIFN0cmVh
bWluZ0NsaWVudDo6aGFuZGxlTm90aWZ5RmluaXNoZWQoKQogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiSGF2ZSBFT1MiKTsKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9H
RVRfTE9DSyhzcmMpKTsKLSAgICBpZiAoIXByaXYtPnNlZWtJRCkgeworICAgIGlmICghcHJpdi0+
c2Vla1NvdXJjZS5pc1NjaGVkdWxlZCgpKSB7CiAgICAgICAgIGxvY2tlci51bmxvY2soKTsKICAg
ICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShwcml2LT5hcHBzcmMpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIu
Y3BwCmluZGV4IGQ0OWMzNTI4Li44MGZiZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5o
IgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BT
b3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02OCwxOCArNjksNiBAQCB2b2lk
IEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVHZXREcmFnRGF0YShHZGtEcmFnQ29udGV4dCog
Y29udGV4dCwgR3RrU2VsZWN0aQogICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJv
YXJkSGVscGVyKCktPmZpbGxTZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRhdGEsIGluZm8sIGRhdGFP
YmplY3QpOwogfQogCi1zdHJ1Y3QgSGFuZGxlRHJhZ0xhdGVyRGF0YSB7Ci0gICAgRHJvcHBpbmdD
b250ZXh0KiBjb250ZXh0OwotICAgIEd0a0RyYWdBbmREcm9wSGVscGVyKiBnbHVlOwotfTsKLQot
c3RhdGljIGdib29sZWFuIGhhbmRsZURyYWdMZWF2ZUxhdGVyQ2FsbGJhY2soSGFuZGxlRHJhZ0xh
dGVyRGF0YSogZGF0YSkKLXsKLSAgICBkYXRhLT5nbHVlLT5oYW5kbGVEcmFnTGVhdmVMYXRlcihk
YXRhLT5jb250ZXh0KTsKLSAgICBkZWxldGUgZGF0YTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0K
IHZvaWQgR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdMZWF2ZUxhdGVyKERyb3BwaW5n
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9kcm9wcGluZ0NvbnRl
eHRzLmZpbmQoY29udGV4dC0+Z2RrQ29udGV4dCk7CkBAIC0xMDksMTEgKzk4LDggQEAgdm9pZCBH
dGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0xlYXZlKEdka0RyYWdDb250ZXh0KiBnZGtD
b250ZXh0LCBEcmFnRXhpdGUKICAgICAvLyBEdXJpbmcgYSBkcm9wIEdUSysgd2lsbCBmaXJlIGEg
ZHJhZy1sZWF2ZSBzaWduYWwgcmlnaHQgYmVmb3JlIGZpcmluZwogICAgIC8vIHRoZSBkcmFnLWRy
b3Agc2lnbmFsLiBXZSB3YW50IHRoZSBhY3Rpb25zIGZvciBkcmFnLWxlYXZlIHRvIGhhcHBlbiBh
ZnRlcgogICAgIC8vIHRob3NlIGZvciBkcmFnLWRyb3AsIHNvIHNjaGVkdWxlIHRoZW0gdG8gaGFw
cGVuIGFzeW5jaHJvbm91c2x5IGhlcmUuCi0gICAgSGFuZGxlRHJhZ0xhdGVyRGF0YSogZGF0YSA9
IG5ldyBIYW5kbGVEcmFnTGF0ZXJEYXRhOwotICAgIGRhdGEtPmNvbnRleHQgPSBjb250ZXh0Owot
ICAgIGRhdGEtPmNvbnRleHQtPmV4aXRlZENhbGxiYWNrID0gZXhpdGVkQ2FsbGJhY2s7Ci0gICAg
ZGF0YS0+Z2x1ZSA9IHRoaXM7Ci0gICAgZ19pZGxlX2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVM
VCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oaGFuZGxlRHJhZ0xlYXZlTGF0ZXJDYWxs
YmFjayksIGRhdGEsIDApOworICAgIGNvbnRleHQtPmV4aXRlZENhbGxiYWNrID0gZXhpdGVkQ2Fs
bGJhY2s7CisgICAgR01haW5Mb29wU291cmNlOjpjcmVhdGUoKS5zY2hlZHVsZSgiW1dlYktpdF0g
aGFuZGxlRHJhZ0xlYXZlTGF0ZXIiLCBzdGQ6OmJpbmQoJkd0a0RyYWdBbmREcm9wSGVscGVyOjpo
YW5kbGVEcmFnTGVhdmVMYXRlciwgdGhpcywgY29udGV4dCkpOwogfQogCiBzdGF0aWMgdm9pZCBx
dWVyeU5ld0Ryb3BDb250ZXh0RGF0YShEcm9wcGluZ0NvbnRleHQqIGRyb3BDb250ZXh0LCBHdGtX
aWRnZXQqIHdpZGdldCwgZ3VpbnQgdGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2hhcmVkVGltZXJHdGsuY3BwCmluZGV4IGI2OWE5YjguLjhlZTVmNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcApAQCAtMjgsNDcgKzI4
LDMyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKIAot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgotI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgZ3VpbnQgc2hhcmVkVGltZXI7CitzdGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFyZWRUaW1l
cjsKIHN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwogCiB2b2lkIHNl
dFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKIHsKICAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gc2hhcmVkVGltZXJUaW1l
b3V0Q2FsbGJhY2soZ3BvaW50ZXIpCi17Ci0gICAgaWYgKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlv
bikKLSAgICAgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7Ci0gICAgcmV0dXJuIEZBTFNF
OworICAgIGlmICghc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQorICAgICAgICBnU2hhcmVkVGlt
ZXIuY2FuY2VsKCk7CiB9CiAKIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKQogewogICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOwogCi0g
ICAgZ3VpbnQgaW50ZXJ2YWxJbk1TID0gc3RhdGljX2Nhc3Q8Z3VpbnQ+KGludGVydmFsICogMTAw
MCk7Ci0KLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICBzaGFyZWRUaW1lciA9IGdfdGltZW91
dF9hZGRfZnVsbChHREtfUFJJT1JJVFlfUkVEUkFXLCBpbnRlcnZhbEluTVMsIHNoYXJlZFRpbWVy
VGltZW91dENhbGxiYWNrLCAwLCAwKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChzaGFy
ZWRUaW1lciwgIltXZWJLaXRdIHNoYXJlZFRpbWVyVGltZW91dENhbGxiYWNrIik7CisgICAgZ1No
YXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJUaW1lb3V0
Q2FsbGJhY2siLCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24sCisgICAgICAgIHN0ZDo6Y2hyb25v
OjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbjxkb3VibGU+KGludGVydmFsKSksIEdES19QUklPUklUWV9SRURSQVcpOwogfQogCiB2
b2lkIHN0b3BTaGFyZWRUaW1lcigpCiB7Ci0gICAgaWYgKHNoYXJlZFRpbWVyID09IDApCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdib29sZWFuIHJlbW92ZWRTb3VyY2UgPSBnX3NvdXJjZV9yZW1v
dmUoc2hhcmVkVGltZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFNvdXJjZSwgcmVtb3Zl
ZFNvdXJjZSk7Ci0gICAgc2hhcmVkVGltZXIgPSAwOworICAgIGdTaGFyZWRUaW1lci5jYW5jZWwo
KTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227270</attachid>
            <date>2014-03-20 01:10:05 -0700</date>
            <delta_ts>2014-03-20 01:28:05 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wcore-gmain-loop-source.diff</filename>
            <type>text/plain</type>
            <size>66043</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZDM1MGMyLi41N2QyYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcg
QEAKKzIwMTQtMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBHTWFpbkxvb3BTb3VyY2UgZm9yIGlkbGUgYW5kIHRpbWVv
dXQgc291cmNlcyBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVC
dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1D
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2Fwc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJP
ZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjps
b2FkaW5nRmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJP
ZlZvbHVtZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjp2b2x1bWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6YWN0aXZlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mQWN0
aXZlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
Ojpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgICh3
ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2spOgorICAgICAgICAod2Via2l0VmlkZW9TaW5r
UmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVk
aWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX3NyY19pbml0KToK
KyAgICAgICAgKHdlYktpdE1lZGlhU3JjRmluYWxpemUpOgorICAgICAgICAod2ViS2l0TWVkaWFW
aWRlb1NyY1N0b3ApOgorICAgICAgICAod2ViS2l0TWVkaWFBdWRpb1NyY1N0b3ApOgorICAgICAg
ICAod2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0KToKKyAgICAgICAgKHdlYktpdE1lZGlhQXVkaW9T
cmNTdGFydCk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0NoYW5nZVN0YXRlKToKKyAgICAgICAg
KHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYik6CisgICAgICAgICh3ZWJLaXRNZWRp
YUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFWaWRlb1NyY05l
ZWREYXRhQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFBdWRpb1NyY05lZWREYXRhQ2IpOgorICAg
ICAgICAod2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2Vi
S2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFW
aWRlb1NyY0Vub3VnaERhdGFDYik6CisgICAgICAgICh3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5vdWdo
RGF0YUNiKToKKyAgICAgICAgKHdlYktpdE1lZGlhVmlkZW9TcmNTZWVrTWFpbkNiKToKKyAgICAg
ICAgKHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrTWFpbkNiKToKKyAgICAgICAgKHdlYktpdE1lZGlh
VmlkZW9TcmNTZWVrRGF0YUNiKToKKyAgICAgICAgKHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrRGF0
YUNiKToKKyAgICAgICAgKE1lZGlhU291cmNlQ2xpZW50R3N0cmVhbWVyOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfc3JjX2luaXQpOgorICAgICAg
ICAod2ViS2l0V2ViU3JjRmluYWxpemUpOgorICAgICAgICAocmVtb3ZlVGltZW91dFNvdXJjZXMp
OgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTdGFy
dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZSk6CisgICAgICAgICh3ZWJLaXRX
ZWJTcmNOZWVkRGF0YU1haW5DYik6CisgICAgICAgICh3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0
V2ViU3JjRW5vdWdoRGF0YUNiKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NlZWtNYWluQ2IpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2Vla0RhdGFDYik6CisgICAgICAgIChTdHJlYW1pbmdDbGll
bnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50Ojpo
YW5kbGVEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3Rp
ZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFn
TGVhdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKToKKwogMjAxNC0wMy0yMCAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVmaW5lIEJhdHRlcnlTdGF0dXMgbW9kdWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGU2ODdlNTcuLmYwZTQ4OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yNywxNCArMjcs
MTQgQEAKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNp
bmsuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVl
UHRyLmg+CiAKLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBdWRpb0ZpbGVSZWFkZXIgewpAQCAtMTA4LDEzICsxMDgsNiBAQCBzdGF0
aWMgdm9pZCBvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2soR3N0RWxlbWVudCos
IEdzdFBhZCogcGFkLCBBdWRpbwogICAgIHJlYWRlci0+cGx1Z0RlaW50ZXJsZWF2ZShwYWQpOwog
fQogCi1nYm9vbGVhbiBlbnRlcmVkTWFpbkxvb3BDYWxsYmFjayhncG9pbnRlciB1c2VyRGF0YSkK
LXsKLSAgICBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9G
aWxlUmVhZGVyKj4odXNlckRhdGEpOwotICAgIHJlYWRlci0+ZGVjb2RlQXVkaW9Gb3JCdXNDcmVh
dGlvbigpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQogQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0Zp
bGVSZWFkZXIoY29uc3QgY2hhciogZmlsZVBhdGgpCiAgICAgOiBtX2RhdGEoMCkKICAgICAsIG1f
ZGF0YVNpemUoMCkKQEAgLTM0MSw5ICszMzQsOCBAQCBQYXNzUmVmUHRyPEF1ZGlvQnVzPiBBdWRp
b0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwog
ICAgIG1fbG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoY29udGV4dC5nZXQoKSwgRkFM
U0UpKTsKIAogICAgIC8vIFN0YXJ0IHRoZSBwaXBlbGluZSBwcm9jZXNzaW5nIGp1c3QgYWZ0ZXIg
dGhlIGxvb3AgaXMgc3RhcnRlZC4KLSAgICBHUmVmUHRyPEdTb3VyY2U+IHRpbWVvdXRTb3VyY2Ug
PSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoMCkpOwotICAgIGdfc291cmNlX2F0dGFj
aCh0aW1lb3V0U291cmNlLmdldCgpLCBjb250ZXh0LmdldCgpKTsKLSAgICBnX3NvdXJjZV9zZXRf
Y2FsbGJhY2sodGltZW91dFNvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVu
Yz4oZW50ZXJlZE1haW5Mb29wQ2FsbGJhY2spLCB0aGlzLCAwKTsKKyAgICBHTWFpbkxvb3BTb3Vy
Y2Ugc291cmNlOworICAgIHNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gQXVkaW9GaWxlUmVhZGVy
OjpkZWNvZGVBdWRpb0ZvckJ1c0NyZWF0aW9uIiwgc3RkOjpiaW5kKCZBdWRpb0ZpbGVSZWFkZXI6
OmRlY29kZUF1ZGlvRm9yQnVzQ3JlYXRpb24sIHRoaXMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51
bGxwdHIsIGNvbnRleHQuZ2V0KCkpOwogCiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbG9vcC5nZXQo
KSk7CiAgICAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0KGNvbnRleHQuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGJlZDEwZmEuLjQyMjFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTUyLDIyICs1Miw4IEBAIHN0YXRp
YyBHc3RQYWRQcm9iZVJldHVybiB0ZXh0VHJhY2tQcml2YXRlRXZlbnRDYWxsYmFjayhHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qCiAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiB9CiAKLXN0
YXRpYyBnYm9vbGVhbiB0ZXh0VHJhY2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIqIHRyYWNrKQotewotICAgIHRyYWNrLT5ub3RpZnlU
cmFja09mU2FtcGxlKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4g
dGV4dFRyYWNrUHJpdmF0ZVN0cmVhbVRpbWVvdXRDYWxsYmFjayhJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKiB0cmFjaykKLXsKLSAgICB0cmFjay0+bm90aWZ5VHJhY2tPZlN0cmVhbUNo
YW5nZWQoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUoV2ViVlRUKSwg
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFkKQotICAgICwgbV9zYW1w
bGVUaW1lckhhbmRsZXIoMCkKLSAgICAsIG1fc3RyZWFtVGltZXJIYW5kbGVyKDApCiB7CiAgICAg
bV9ldmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9wYWQuZ2V0KCksIEdTVF9QQURfUFJP
QkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLAogICAgICAgICByZWludGVycHJldF9jYXN0PEdzdFBh
ZFByb2JlQ2FsbGJhY2s+KHRleHRUcmFja1ByaXZhdGVFdmVudENhbGxiYWNrKSwgdGhpcywgMCk7
CkBAIC04MiwzNiArNjgsMjggQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpkaXNjb25uZWN0KCkKIAogICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKG1fcGFkLmdldCgpLCBt
X2V2ZW50UHJvYmUpOwogCi0gICAgaWYgKG1fc3RyZWFtVGltZXJIYW5kbGVyKQotICAgICAgICBn
X3NvdXJjZV9yZW1vdmUobV9zdHJlYW1UaW1lckhhbmRsZXIpOworICAgIG1fc3RyZWFtVGltZXJI
YW5kbGVyLmNhbmNlbCgpOwogCiAgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6ZGlzY29u
bmVjdCgpOwogfQogCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewotICAgIGlmIChtX3NhbXBsZVRp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fc2FtcGxlVGltZXJIYW5kbGVy
KTsKKyAgICBtX3NhbXBsZVRpbWVySGFuZGxlci5jYW5jZWwoKTsKICAgICB7CiAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2sobV9zYW1wbGVNdXRleCk7CiAgICAgICAgIG1fcGVuZGluZ1NhbXBsZXMu
YXBwZW5kKHNhbXBsZSk7CiAgICAgfQotICAgIG1fc2FtcGxlVGltZXJIYW5kbGVyID0gZ190aW1l
b3V0X2FkZCgwLAotICAgICAgICByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih0ZXh0VHJh
Y2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9zYW1wbGVUaW1l
ckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUiLCBzdGQ6OmJpbmQoJkluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUsIHRoaXMpKTsKIH0KIAogdm9pZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKCkKIHsKLSAgICBpZiAo
bV9zdHJlYW1UaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3N0cmVhbVRp
bWVySGFuZGxlcik7Ci0gICAgbV9zdHJlYW1UaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRfYWRkKDAs
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRleHRUcmFja1ByaXZhdGVT
dHJlYW1UaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX3N0cmVhbVRpbWVySGFuZGxlci5z
Y2hlZHVsZSgiW1dlYktpdF0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5
VHJhY2tPZlN0cmVhbUNoYW5nZWQiLCBzdGQ6OmJpbmQoJkluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkLCB0aGlzKSk7CiB9CiAKIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7
Ci0gICAgbV9zYW1wbGVUaW1lckhhbmRsZXIgPSAwOwotCiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0
U2FtcGxlPiA+IHNhbXBsZXM7CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2Ft
cGxlTXV0ZXgpOwpAQCAtMTQyLDggKzEyMCw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQogewotICAgIG1f
c3RyZWFtVGltZXJIYW5kbGVyID0gMDsKLQogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50ID0g
YWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwKICAgICAgICAg
R1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwogICAgIGlmICghZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAyODVjZDg2
Li5hZjAwYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVy
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BT
b3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw4ICs2Miw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihnaW50IGlu
ZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwogCi0gICAgZ3VpbnQgbV9zYW1wbGVUaW1lckhhbmRsZXI7
Ci0gICAgZ3VpbnQgbV9zdHJlYW1UaW1lckhhbmRsZXI7CisgICAgR01haW5Mb29wU291cmNlIG1f
c2FtcGxlVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3N0cmVhbVRpbWVySGFu
ZGxlcjsKICAgICBndWxvbmcgbV9ldmVudFByb2JlOwogICAgIFZlY3RvcjxHUmVmUHRyPEdzdFNh
bXBsZT4gPiBtX3BlbmRpbmdTYW1wbGVzOwogICAgIFN0cmluZyBtX3N0cmVhbUlkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0NGJlYTMy
Li5hYzYwY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtNTgsNyArNTgsNyBAQAogCiAvLyBNYXggaW50ZXJ2YWwgaW4gc2Vjb25kcyB0
byBzdGF5IGluIHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwKIC8vIHN0YXRlIGNoYW5nZSByZXF1
ZXN0cy4KLXN0YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsKIAog
R1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNk
ZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcKQEAgLTkyLDQ2
ICs5MiwxOCBAQCBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5nZWRDYWxs
YmFjayhHT2JqZWN0KiwgTWVkaWFQbGF5ZXJQcml2YXRlRwogICAgIHBsYXllci0+YXVkaW9DaGFu
Z2VkKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5n
ZVRpbWVvdXRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKLXsK
LSAgICAvLyBUaGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUgdGltZW91dCBzb3VyY2UgY3JlYXRl
ZCBpbiA6OmF1ZGlvQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mQXVkaW8oKTsK
LSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVy
dGllc0NhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3QsIGdjaGFyKiwKICAg
ICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPnNl
dEF1ZGlvU3RyZWFtUHJvcGVydGllcyhvYmplY3QpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gbWVk
aWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCi17Ci0gICAgLy8gVGhpcyBpcyB0aGUgY2FsbGJhY2sgb2Yg
dGhlIHRpbWVvdXQgc291cmNlIGNyZWF0ZWQgaW4gOjp2aWRlb0NoYW5nZWQuCi0gICAgcGxheWVy
LT5ub3RpZnlQbGF5ZXJPZlZpZGVvKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMg
Z2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNr
KE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMg
dGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6dmlkZW9DYXBz
Q2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCk7Ci0gICAgcmV0
dXJuIEZBTFNFOwotfQotCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogc3RhdGljIHZvaWQgbWVk
aWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayhHT2JqZWN0KiwgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcGxheWVyLT50ZXh0Q2hhbmdlZCgpOwog
fQogCi1zdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZVRpbWVvdXRD
YWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKLXsKLSAgICAvLyBU
aGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUgdGltZW91dCBzb3VyY2UgY3JlYXRlZCBpbiA6OnRl
eHRDaGFuZ2VkLgotICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZUZXh0KCk7Ci0gICAgcmV0dXJu
IEZBTFNFOwotfQotCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBtZWRpYVBsYXllclByaXZhdGVOZXdU
ZXh0U2FtcGxlQ2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciog
cGxheWVyKQogewogICAgIHBsYXllci0+bmV3VGV4dFNhbXBsZSgpOwpAQCAtMTM5LDE0ICsxMTEs
NiBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiBtZWRpYVBsYXllclByaXZhdGVOZXdUZXh0U2FtcGxl
Q2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxheQogfQogI2VuZGlmCiAKLXN0YXRpYyBnYm9vbGVh
biBtZWRpYVBsYXllclByaXZhdGVSZWFkeVN0YXRlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNr
IG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6Y2hhbmdlUGlwZWxpbmVTdGF0ZS4K
LSAgICAvLyBSZXNldCBwaXBlbGluZSBpZiB3ZSBhcmUgc2l0dGluZyBvbiBSRUFEWSBzdGF0ZSB3
aGVuIHRpbWVvdXQgaXMgcmVhY2hlZAotICAgIHBsYXllci0+Y2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfTlVMTCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgdm9pZCBtZWRp
YVBsYXllclByaXZhdGVQbHVnaW5JbnN0YWxsZXJSZXN1bHRGdW5jdGlvbihHc3RJbnN0YWxsUGx1
Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogcGxheWVyID0gcmVpbnRlcnByZXRfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7CkBAIC0yNDksMTEgKzIxMyw2IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpCiAgICAgLCBtX3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKICAg
ICAsIG1faGFzVmlkZW8oZmFsc2UpCiAgICAgLCBtX2hhc0F1ZGlvKGZhbHNlKQotICAgICwgbV9h
dWRpb1RpbWVySGFuZGxlcigwKQotICAgICwgbV90ZXh0VGltZXJIYW5kbGVyKDApCi0gICAgLCBt
X3ZpZGVvVGltZXJIYW5kbGVyKDApCi0gICAgLCBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxlcigwKQot
ICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcigwKQogICAgICwgbV90b3RhbEJ5dGVzKC0xKQogICAg
ICwgbV9wcmVzZXJ2ZXNQaXRjaChmYWxzZSkKICAgICAsIG1fcmVxdWVzdGVkU3RhdGUoR1NUX1NU
QVRFX1ZPSURfUEVORElORykKQEAgLTI4NSw4ICsyNDQsNyBAQCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QobV9hdXRvQXVkaW9TaW5rLmdl
dCgpKSwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHNldEF1ZGlvU3Ry
ZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAobV9yZWFkeVRpbWVySGFu
ZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fcmVhZHlUaW1lckhhbmRsZXIpOworICAg
IG1fcmVhZHlUaW1lckhhbmRsZXIuY2FuY2VsKCk7CiAKICAgICBpZiAobV9wbGF5QmluKSB7CiAg
ICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9i
dXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsKQEAgLTMwOCwxOCArMjY2LDYgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
KCkKIAogICAgIEdSZWZQdHI8R3N0UGFkPiB2aWRlb1NpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksICJzaW5rIikpOwog
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh2aWRlb1NpbmtQYWQuZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lZGlhUGxheWVyUHJpdmF0ZVZpZGVvU2lu
a0NhcHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLQotICAgIGlmIChtX3ZpZGVvVGltZXJIYW5k
bGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV92aWRlb1RpbWVySGFuZGxlcik7Ci0KLSAg
ICBpZiAobV9hdWRpb1RpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fYXVk
aW9UaW1lckhhbmRsZXIpOwotCi0gICAgaWYgKG1fdGV4dFRpbWVySGFuZGxlcikKLSAgICAgICAg
Z19zb3VyY2VfcmVtb3ZlKG1fdGV4dFRpbWVySGFuZGxlcik7Ci0KLSAgICBpZiAobV92aWRlb0Nh
cHNUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3ZpZGVvQ2Fwc1RpbWVy
SGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKGNv
bnN0IFN0cmluZyYgdXJsKQpAQCAtNDQzLDEyICszODksMTEgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCiAg
ICAgLy8gaWYgd2Ugc3RheSBmb3IgdG9vIGxvbmcgb24gUkVBRFkuCiAgICAgLy8gQWxzbyBsZXRz
IHJlbW92ZSB0aGUgdGltZXIgaWYgd2UgcmVxdWVzdCBhIHN0YXRlIGNoYW5nZSBmb3IgYW55IHN0
YXRlIG90aGVyIHRoYW4gUkVBRFkuCiAgICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzM1NAotICAgIGlmIChuZXdTdGF0ZSA9PSBHU1RfU1RB
VEVfUkVBRFkgJiYgIW1fcmVhZHlUaW1lckhhbmRsZXIpIHsKLSAgICAgICAgbV9yZWFkeVRpbWVy
SGFuZGxlciA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyhnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWws
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZVJlYWR5U3Rh
dGVUaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlf
aWQobV9yZWFkeVRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1lZGlhUGxheWVyUHJpdmF0ZVJlYWR5
U3RhdGVUaW1lb3V0Q2FsbGJhY2siKTsKLSAgICB9IGVsc2UgaWYgKG5ld1N0YXRlICE9IEdTVF9T
VEFURV9SRUFEWSAmJiBtX3JlYWR5VGltZXJIYW5kbGVyKSB7Ci0gICAgICAgIGdfc291cmNlX3Jl
bW92ZShtX3JlYWR5VGltZXJIYW5kbGVyKTsKLSAgICAgICAgbV9yZWFkeVRpbWVySGFuZGxlciA9
IDA7CisgICAgaWYgKG5ld1N0YXRlID09IEdTVF9TVEFURV9SRUFEWSAmJiAhbV9yZWFkeVRpbWVy
SGFuZGxlci5pc1NjaGVkdWxlZCgpKSB7CisgICAgICAgIG1fcmVhZHlUaW1lckhhbmRsZXIuc2No
ZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVSZWFkeVN0YXRlVGlt
ZW91dENhbGxiYWNrIiwgW3RoaXNdIHsgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfTlVM
TCk7IH0sCisgICAgICAgICAgICBzdGQ6OmNocm9ubzo6c2Vjb25kcyhnUmVhZHlTdGF0ZVRpbWVy
SW50ZXJ2YWwpKTsKKyAgICB9IGVsc2UgaWYgKG5ld1N0YXRlICE9IEdTVF9TVEFURV9SRUFEWSAm
JiBtX3JlYWR5VGltZXJIYW5kbGVyLmlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgbV9yZWFkeVRp
bWVySGFuZGxlci5jYW5jZWwoKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2OSwy
NCArNjE0LDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVraW5nKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCgp
CiB7Ci0gICAgaWYgKG1fdmlkZW9UaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX3ZpZGVvVGltZXJIYW5kbGVyKTsKLSAgICBtX3ZpZGVvVGltZXJIYW5kbGVyID0gZ19pZGxl
X2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVu
Yz4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAw
KTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX3ZpZGVvVGltZXJIYW5kbGVyLCAiW1dl
YktpdF0gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAg
ICBtX3ZpZGVvVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvLCB0aGlzKSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NhcHNDaGFuZ2VkKCkKIHsKLSAgICBpZiAobV92
aWRlb0NhcHNUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3ZpZGVvQ2Fw
c1RpbWVySGFuZGxlcik7Ci0gICAgbV92aWRlb0NhcHNUaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRf
YWRkKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZVZp
ZGVvQ2Fwc0NoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc291cmNlX3NldF9u
YW1lX2J5X2lkKG1fdmlkZW9DYXBzVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQ
cml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV92aWRlb0NhcHNU
aW1lckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dmlkZW9DYXBzQ2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvQ2FwcywgdGhpcykpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiB7Ci0gICAgbV92aWRl
b1RpbWVySGFuZGxlciA9IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9IDA7CiAgICAgaWYgKG1f
cGxheUJpbikKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgIm4tdmlkZW8i
LCAmbnVtVHJhY2tzLCBOVUxMKTsKQEAgLTcyNCwyMyArNjYxLDE3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCkKIHsKLSAgICBt
X3ZpZGVvQ2Fwc1RpbWVySGFuZGxlciA9IDA7CiAgICAgbV92aWRlb1NpemUgPSBJbnRTaXplKCk7
CiAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRW5naW5lVXBk
YXRlZChtX3BsYXllcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjph
dWRpb0NoYW5nZWQoKQogewotICAgIGlmIChtX2F1ZGlvVGltZXJIYW5kbGVyKQotICAgICAgICBn
X3NvdXJjZV9yZW1vdmUobV9hdWRpb1RpbWVySGFuZGxlcik7Ci0gICAgbV9hdWRpb1RpbWVySGFu
ZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIHJlaW50ZXJwcmV0X2Nh
c3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENhbGxi
YWNrKSwgdGhpcywgMCk7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQobV9hdWRpb1RpbWVy
SGFuZGxlciwgIltXZWJLaXRdIG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENh
bGxiYWNrIik7CisgICAgbV9hdWRpb1RpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbywgdGhpcykpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiB7Ci0gICAgbV9hdWRpb1RpbWVySGFuZGxlciA9IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9
IDA7CiAgICAgaWYgKG1fcGxheUJpbikKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5n
ZXQoKSwgIm4tYXVkaW8iLCAmbnVtVHJhY2tzLCBOVUxMKTsKQEAgLTc3OSwxNiArNzEwLDExIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dGV4dENoYW5nZWQoKQogewotICAgIGlmIChtX3RleHRUaW1lckhhbmRsZXIpCi0gICAgICAg
IGdfc291cmNlX3JlbW92ZShtX3RleHRUaW1lckhhbmRsZXIpOwotICAgIG1fdGV4dFRpbWVySGFu
ZGxlciA9IGdfdGltZW91dF9hZGQoMCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obWVk
aWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdf
c291cmNlX3NldF9uYW1lX2J5X2lkKG1fdGV4dFRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1lZGlh
UGxheWVyUHJpdmF0ZVRleHRDaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAgICBtX3RleHRUaW1l
ckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
dGV4dENoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5UGxheWVyT2ZUZXh0LCB0aGlzKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogewotICAgIG1fdGV4dFRpbWVySGFuZGxlciA9
IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9IDA7CiAgICAgaWYgKG1fcGxheUJpbikKICAgICAg
ICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgIm4tdGV4dCIsICZudW1UcmFja3MsIE5V
TEwpOwpAQCAtMTY0MCwxMCArMTU2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IpCiAgICAg
fQogCiAgICAgLy8gTG9hZGluZyBmYWlsZWQsIHJlbW92ZSByZWFkeSB0aW1lci4KLSAgICBpZiAo
bV9yZWFkeVRpbWVySGFuZGxlcikgewotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9yZWFkeVRp
bWVySGFuZGxlcik7Ci0gICAgICAgIG1fcmVhZHlUaW1lckhhbmRsZXIgPSAwOwotICAgIH0KKyAg
ICBtX3JlYWR5VGltZXJIYW5kbGVyLmNhbmNlbCgpOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJp
bmc+IG1pbWVUeXBlQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGEzNzBkYTMuLmMzY2ZlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvaW5zdGFsbC1wbHVnaW5zLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3Vy
Y2UuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VH
U3RyZWFtZXIuaCIKQEAgLTE4OSwxMSArMTkwLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Zv
bHVtZUFuZE11dGVJbml0aWFsaXplZDsKICAgICBib29sIG1faGFzVmlkZW87CiAgICAgYm9vbCBt
X2hhc0F1ZGlvOwotICAgIGd1aW50IG1fYXVkaW9UaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV90
ZXh0VGltZXJIYW5kbGVyOwotICAgIGd1aW50IG1fdmlkZW9UaW1lckhhbmRsZXI7Ci0gICAgZ3Vp
bnQgbV92aWRlb0NhcHNUaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV9yZWFkeVRpbWVySGFuZGxl
cjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9hdWRpb1RpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxv
b3BTb3VyY2UgbV90ZXh0VGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3ZpZGVv
VGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxl
cjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9yZWFkeVRpbWVySGFuZGxlcjsKICAgICBtdXRhYmxl
IGxvbmcgbV90b3RhbEJ5dGVzOwogICAgIFVSTCBtX3VybDsKICAgICBib29sIG1fcHJlc2VydmVz
UGl0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKaW5kZXggODVjYzMxNS4uMTVhNTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzIsMjYgKzcyLDEyIEBA
IHN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2Jq
ZWN0KiwgR1BhcmFtU3BlYyosIE1lZGlhCiAgICAgcGxheWVyLT52b2x1bWVDaGFuZ2VkKCk7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVWb2x1bWVDaGFuZ2VUaW1lb3V0
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQotewotICAg
IC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGlu
IDo6dm9sdW1lQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdl
KCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZh
dGVNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQogewogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdo
ZW4gbV92b2x1bWVFbGVtZW50IHJlY2VpdmVzIHRoZSBub3RpZnk6Om11dGUgc2lnbmFsLgogICAg
IHBsYXllci0+bXV0ZUNoYW5nZWQoKTsKIH0KIAotc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVy
UHJpdmF0ZU11dGVDaGFuZ2VUaW1lb3V0Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZSogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0
aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6bXV0ZUNoYW5nZWQuCi0gICAgcGxheWVyLT5ub3Rp
ZnlQbGF5ZXJPZk11dGUoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIG1l
ZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RCdWZm
ZXIgKmJ1ZmZlciwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyUHJpdmF0
ZSkKIHsKICAgICBwbGF5ZXJQcml2YXRlLT50cmlnZ2VyUmVwYWludChidWZmZXIpOwpAQCAtMTAz
LDggKzg5LDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fcmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXll
cjo6RW1wdHkpCiAgICAgLCBtX2J1ZmZlcigwKQotICAgICwgbV92b2x1bWVUaW1lckhhbmRsZXIo
MCkKLSAgICAsIG1fbXV0ZVRpbWVySGFuZGxlcigwKQogICAgICwgbV9yZXBhaW50SGFuZGxlcigw
KQogICAgICwgbV92b2x1bWVTaWduYWxIYW5kbGVyKDApCiAgICAgLCBtX211dGVTaWduYWxIYW5k
bGVyKDApCkBAIC0xMzQsMTIgKzExOCw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKIAogICAgIG1fcGxheWVyID0g
MDsKIAotICAgIGlmIChtX211dGVUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX211dGVUaW1lckhhbmRsZXIpOwotCi0gICAgaWYgKG1fdm9sdW1lVGltZXJIYW5kbGVyKQot
ICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV92b2x1bWVUaW1lckhhbmRsZXIpOwotCiAgICAgaWYg
KG1fdm9sdW1lU2lnbmFsSGFuZGxlcikgewogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nv
bm5lY3QobV92b2x1bWVFbGVtZW50LmdldCgpLCBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIpOwogICAg
ICAgICBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIgPSAwOwpAQCAtMjMxLDggKzIwOSw2IEBAIGZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZSgpIGNvbnN0CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFu
Z2UoKQogewotICAgIG1fdm9sdW1lVGltZXJIYW5kbGVyID0gMDsKLQogICAgIGlmICghbV9wbGF5
ZXIgfHwgIW1fdm9sdW1lRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGRvdWJsZSB2b2x1
bWU7CkBAIC0yNDYsMTAgKzIyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFuZ2UoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZUNoYW5nZWQoKQogewotICAgIGlmIChtX3ZvbHVtZVRp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdm9sdW1lVGltZXJIYW5kbGVy
KTsKLSAgICBtX3ZvbHVtZVRpbWVySGFuZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZ
X0RFRkFVTFQsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0
ZVZvbHVtZUNoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMsIDApOwotICAgIGdfc291cmNlX3Nl
dF9uYW1lX2J5X2lkKG1fdm9sdW1lVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQ
cml2YXRlVm9sdW1lQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV92b2x1bWVUaW1lckhh
bmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnZvbHVtZUNoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6Om5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlLCB0aGlzKSk7CiB9CiAKIE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmV0d29ya1N0
YXRlKCkgY29uc3QKQEAgLTI4Nyw4ICsyNjAsNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om11dGVkKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJPZk11dGUoKQogewotICAgIG1fbXV0ZVRpbWVySGFuZGxl
ciA9IDA7Ci0KICAgICBpZiAoIW1fcGxheWVyIHx8ICFtX3ZvbHVtZUVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMjk5LDEzICsyNzAsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWQoKQogewotICAgIGlmIChtX211dGVUaW1lckhh
bmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX211dGVUaW1lckhhbmRsZXIpOwotICAg
IG1fbXV0ZVRpbWVySGFuZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQs
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZU11dGVDaGFu
Z2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAwKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9p
ZChtX211dGVUaW1lckhhbmRsZXIsICJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVNdXRlQ2hh
bmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV9tdXRlVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJb
V2ViS2l0XSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCIsIHN0
ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZN
dXRlLCB0aGlzKSk7CiB9CiAKLQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKaW5kZXggN2MzOGJkOC4uMTNjYTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSA8Z2xpYi5oPgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oIgpAQCAtMTE5LDggKzEyMCw4IEBAIHByb3RlY3RlZDoKICAgICBJbnRT
aXplIG1fc2l6ZTsKICAgICBHTXV0ZXgqIG1fYnVmZmVyTXV0ZXg7CiAgICAgR3N0QnVmZmVyKiBt
X2J1ZmZlcjsKLSAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lVGltZXJIYW5kbGVyOwotICAgIHVu
c2lnbmVkIGxvbmcgbV9tdXRlVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3Zv
bHVtZVRpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9tdXRlVGltZXJIYW5kbGVy
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9yZXBhaW50SGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25n
IG1fdm9sdW1lU2lnbmFsSGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fbXV0ZVNpZ25hbEhh
bmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5k
ZXggMGVlOGE3Yi4uYTI5OWQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKQEAgLTUzLDI0ICs1MywxMCBAQCBzdGF0aWMgdm9pZCB0cmFja1ByaXZh
dGVUYWdzQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgVHJhY2tQcml2YXRl
QgogICAgIHRyYWNrLT50YWdzQ2hhbmdlZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gdHJhY2tQ
cml2YXRlQWN0aXZlQ2hhbmdlVGltZW91dENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIqIHRyYWNrKQotewotICAgIHRyYWNrLT5ub3RpZnlUcmFja09mQWN0aXZlQ2hhbmdlZCgpOwot
ICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHRyYWNrUHJpdmF0ZVRhZ3ND
aGFuZ2VUaW1lb3V0Q2FsbGJhY2soVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciogdHJhY2spCi17
Ci0gICAgdHJhY2stPm5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
IHBhZCkKICAgICA6IG1faW5kZXgoaW5kZXgpCiAgICAgLCBtX3BhZChwYWQpCiAgICAgLCBtX293
bmVyKG93bmVyKQotICAgICwgbV9hY3RpdmVUaW1lckhhbmRsZXIoMCkKLSAgICAsIG1fdGFnVGlt
ZXJIYW5kbGVyKDApCiB7CiAgICAgQVNTRVJUKG1fcGFkKTsKIApAQCAtOTcsMTMgKzgzLDggQEAg
dm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkKICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wYWQuZ2V0KCksCiAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHRyYWNrUHJpdmF0ZVRhZ3NDaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKIAotICAgIGlmIChtX2FjdGl2ZVRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2Vf
cmVtb3ZlKG1fYWN0aXZlVGltZXJIYW5kbGVyKTsKLSAgICBtX2FjdGl2ZVRpbWVySGFuZGxlciA9
IDA7Ci0KLSAgICBpZiAobV90YWdUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX3RhZ1RpbWVySGFuZGxlcik7Ci0gICAgbV90YWdUaW1lckhhbmRsZXIgPSAwOworICAgIG1f
YWN0aXZlVGltZXJIYW5kbGVyLmNhbmNlbCgpOworICAgIG1fdGFnVGltZXJIYW5kbGVyLmNhbmNl
bCgpOwogCiAgICAgbV9wYWQuY2xlYXIoKTsKICAgICBtX3RhZ3MuY2xlYXIoKTsKQEAgLTExMSwx
NyArOTIsMTIgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkK
IAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjphY3RpdmVDaGFuZ2VkKCkKIHsKLSAg
ICBpZiAobV9hY3RpdmVUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX2Fj
dGl2ZVRpbWVySGFuZGxlcik7Ci0gICAgbV9hY3RpdmVUaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRf
YWRkKDAsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRyYWNrUHJpdmF0
ZUFjdGl2ZUNoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc291cmNlX3NldF9u
YW1lX2J5X2lkKG1fYWN0aXZlVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gdHJhY2tQcml2YXRlQWN0
aXZlQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV9hY3RpdmVUaW1lckhhbmRsZXIuc2No
ZWR1bGUoIltXZWJLaXRdIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZB
Y3RpdmVDaGFuZ2VkIiwgc3RkOjpiaW5kKCZUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mQWN0aXZlQ2hhbmdlZCwgdGhpcykpOwogfQogCiB2b2lkIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKIHsKLSAgICBpZiAobV90YWdUaW1lckhhbmRsZXIp
Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3RhZ1RpbWVySGFuZGxlcik7CisgICAgbV90YWdU
aW1lckhhbmRsZXIuY2FuY2VsKCk7CiAKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+IHRhZ3M7CiAg
ICAgZ19vYmplY3RfZ2V0KG1fcGFkLmdldCgpLCAidGFncyIsICZ0YWdzLm91dFB0cigpLCBOVUxM
KTsKQEAgLTEzMCwxNCArMTA2LDExIEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
dGFnc0NoYW5nZWQoKQogICAgICAgICBtX3RhZ3Muc3dhcCh0YWdzKTsKICAgICB9CiAKLSAgICBt
X3RhZ1RpbWVySGFuZGxlciA9IGdfdGltZW91dF9hZGQoMCwKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxHU291cmNlRnVuYz4odHJhY2tQcml2YXRlVGFnc0NoYW5nZVRpbWVvdXRDYWxsYmFjayks
IHRoaXMpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fdGFnVGltZXJIYW5kbGVyLCAi
W1dlYktpdF0gdHJhY2tQcml2YXRlVGFnc0NoYW5nZVRpbWVvdXRDYWxsYmFjayIpOworICAgIG1f
dGFnVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQiLCBzdGQ6OmJpbmQoJlRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCwgdGhpcykpOwogfQogCiB2b2lk
IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCkK
IHsKLSAgICBtX2FjdGl2ZVRpbWVySGFuZGxlciA9IDA7CiAgICAgaWYgKCFtX3BhZCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNzUsNyArMTQ4LDYgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMK
IAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5n
ZWQoKQogewotICAgIG1fdGFnVGltZXJIYW5kbGVyID0gMDsKICAgICBpZiAoIW1fcGFkKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5o
CmluZGV4IGM4MWVkOWEuLmUyMDAwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDggKzY4LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwg
U3RyaW5nJiB2YWx1ZSk7CiAKICAgICBUcmFja1ByaXZhdGVCYXNlKiBtX293bmVyOwotICAgIGd1
aW50IG1fYWN0aXZlVGltZXJIYW5kbGVyOwotICAgIGd1aW50IG1fdGFnVGltZXJIYW5kbGVyOwor
ICAgIEdNYWluTG9vcFNvdXJjZSBtX2FjdGl2ZVRpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxvb3BT
b3VyY2UgbV90YWdUaW1lckhhbmRsZXI7CiAKICAgICBNdXRleCBtX3RhZ011dGV4OwogICAgIEdS
ZWZQdHI8R3N0VGFnTGlzdD4gbV90YWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cAppbmRleCAxN2QwYWVmLi4zOGU3ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxn
c3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dNdXRleExvY2tlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTc0LDcgKzc1
LDcgQEAgc3RhdGljIGd1aW50IHdlYmtpdFZpZGVvU2lua1NpZ25hbHNbTEFTVF9TSUdOQUxdID0g
eyAwLCB9OwogCiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAgIEdzdEJ1ZmZl
ciogYnVmZmVyOwotICAgIGd1aW50IHRpbWVvdXRJZDsKKyAgICBHTWFpbkxvb3BTb3VyY2UgdGlt
ZW91dFNvdXJjZTsKICAgICBHTXV0ZXgqIGJ1ZmZlck11dGV4OwogICAgIEdDb25kKiBkYXRhQ29u
ZGl0aW9uOwogCkBAIC0xMDAsNiArMTAxLDcgQEAgR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2Vi
S2l0VmlkZW9TaW5rLCB3ZWJraXRfdmlkZW9fc2luaywgR1NUX1RZUEVfVklERU9fU0lOSywKIHN0
YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2luaXQoV2ViS2l0VmlkZW9TaW5rKiBzaW5rKQog
ewogICAgIHNpbmstPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2luaywgV0VC
S0lUX1RZUEVfVklERU9fU0lOSywgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk7CisgICAgbmV3IChz
aW5rLT5wcml2KSBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKCk7CiAjaWYgR0xJQl9DSEVDS19WRVJT
SU9OKDIsIDMxLCAwKQogICAgIHNpbmstPnByaXYtPmRhdGFDb25kaXRpb24gPSBuZXcgR0NvbmQ7
CiAgICAgZ19jb25kX2luaXQoc2luay0+cHJpdi0+ZGF0YUNvbmRpdGlvbik7CkBAIC0xMTMsMjYg
KzExNSwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19pbml0KFdlYktpdFZpZGVv
U2luayogc2luaykKICAgICBnc3RfdmlkZW9faW5mb19pbml0KCZzaW5rLT5wcml2LT5pbmZvKTsK
IH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayhncG9p
bnRlciBkYXRhKQorc3RhdGljIHZvaWQgd2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrKFdl
YktpdFZpZGVvU2luayogc2luaykKIHsKLSAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSByZWlu
dGVycHJldF9jYXN0PFdlYktpdFZpZGVvU2luayo+KGRhdGEpOwogICAgIFdlYktpdFZpZGVvU2lu
a1ByaXZhdGUqIHByaXYgPSBzaW5rLT5wcml2OwogCiAgICAgR011dGV4TG9ja2VyIGxvY2socHJp
di0+YnVmZmVyTXV0ZXgpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gcHJpdi0+YnVmZmVyOwog
ICAgIHByaXYtPmJ1ZmZlciA9IDA7Ci0gICAgcHJpdi0+dGltZW91dElkID0gMDsKIAogICAgIGlm
ICghYnVmZmVyIHx8IHByaXYtPnVubG9ja2VkIHx8IFVOTElLRUxZKCFHU1RfSVNfQlVGRkVSKGJ1
ZmZlcikpKSB7CiAgICAgICAgIGdfY29uZF9zaWduYWwocHJpdi0+ZGF0YUNvbmRpdGlvbik7Ci0g
ICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdfc2ln
bmFsX2VtaXQoc2luaywgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tSRVBBSU5UX1JFUVVFU1RFRF0s
IDAsIGJ1ZmZlcik7CiAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwogICAgIGdfY29uZF9z
aWduYWwocHJpdi0+ZGF0YUNvbmRpdGlvbik7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0
YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFz
ZVNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQpAQCAtMjE2LDkgKzIxNCw5IEBAIHN0YXRpYyBHc3RG
bG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdz
dEJ1ZmZlciogYnVmCiAgICAgLy8gVGhpcyBzaG91bGQgbGlrZWx5IHVzZSBhIGxvd2VyIHByaW9y
aXR5LCBidXQgZ2xpYiBjdXJyZW50bHkgc3RhcnZlcwogICAgIC8vIGxvd2VyIHByaW9yaXR5IHNv
dXJjZXMuCiAgICAgLy8gU2VlOiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjEwODMwLgotICAgIHByaXYtPnRpbWVvdXRJZCA9IGdfdGltZW91dF9hZGRfZnVsbChH
X1BSSU9SSVRZX0RFRkFVTFQsIDAsIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzdF9vYmplY3RfcmVmKHNp
bmspLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7
Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+dGltZW91dElkLCAiW1dlYktpdF0g
d2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrIik7CisgICAgZ3N0X29iamVjdF9yZWYoc2lu
ayk7CisgICAgcHJpdi0+dGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2Via2l0Vmlk
ZW9TaW5rVGltZW91dENhbGxiYWNrIiwgc3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRD
YWxsYmFjaywgc2luayksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NpbmtdIHsgZ3N0
X29iamVjdF91bnJlZihzaW5rKTsgfSk7CiAKICAgICBnX2NvbmRfd2FpdChwcml2LT5kYXRhQ29u
ZGl0aW9uLCBwcml2LT5idWZmZXJNdXRleCk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAt
MjUyLDYgKzI1MCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtEaXNwb3NlKEdPYmpl
Y3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9i
amVjdCk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua0ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBXRUJLSVRfVklERU9fU0lOSyhvYmplY3QpLT5wcml2LT5+V2ViS2l0
VmlkZW9TaW5rUHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHBhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcGFyYW1ldGVyU3BlYykKIHsKICAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBX
RUJLSVRfVklERU9fU0lOSyhvYmplY3QpOwpAQCAtMzc2LDYgKzM4MCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNz
KQogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFZpZGVv
U2lua1ByaXZhdGUpKTsKIAogICAgIGdvYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFZpZGVv
U2lua0Rpc3Bvc2U7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFZpZGVvU2lu
a0ZpbmFsaXplOwogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0VmlkZW9T
aW5rR2V0UHJvcGVydHk7CiAKICAgICBiYXNlU2lua0NsYXNzLT51bmxvY2sgPSB3ZWJraXRWaWRl
b1NpbmtVbmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCA0MTJhOGQ3Li5kNjhiZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRN
ZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNyYy5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1
dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BT
b3VyY2UuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00MywxMSArNDQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X1NvdXJjZSB7CiAgICAgZ3VpbnQ2NCBzaXplOwogICAgIGdib29sZWFuIHBhdXNlZDsKIAotICAg
IGd1aW50IHN0YXJ0SWQ7Ci0gICAgZ3VpbnQgc3RvcElkOwotICAgIGd1aW50IG5lZWREYXRhSWQ7
Ci0gICAgZ3VpbnQgZW5vdWdoRGF0YUlkOwotICAgIGd1aW50IHNlZWtJZDsKKyAgICBHTWFpbkxv
b3BTb3VyY2Ugc3RhcnQ7CisgICAgR01haW5Mb29wU291cmNlIHN0b3A7CisgICAgR01haW5Mb29w
U291cmNlIG5lZWREYXRhOworICAgIEdNYWluTG9vcFNvdXJjZSBlbm91Z2hEYXRhOworICAgIEdN
YWluTG9vcFNvdXJjZSBzZWVrOwogCiAgICAgZ3VpbnQ2NCByZXF1ZXN0ZWRPZmZzZXQ7CiB9IFNv
dXJjZTsKQEAgLTE3Miw2ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3JjX2lu
aXQoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfTUVESUFfU1JDX0dFVF9QUklWQVRFKHNyYyk7CiAgICAgc3JjLT5wcml2ID0g
cHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSgpOwogCiAgICAgcHJp
di0+c291cmNlVmlkZW8uYXBwc3JjID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzcmMi
LCAidmlkZW9hcHBzcmMiKTsKICAgICBnc3RfYXBwX3NyY19zZXRfY2FsbGJhY2tzKEdTVF9BUFBf
U1JDKHByaXYtPnNvdXJjZVZpZGVvLmFwcHNyYyksICZhcHBzcmNDYWxsYmFja3NWaWRlbywgc3Jj
LCAwKTsKQEAgLTE4OCw2ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBwcml2LT5+V2ViS2l0TWVk
aWFTcmNQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZp
bmFsaXplLCAob2JqZWN0KSk7CiB9CkBAIC0yMjMsMzUgKzIyNiwyMyBAQCBzdGF0aWMgdm9pZCB3
ZWJLaXRNZWRpYVNyY0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBH
VmFsdWUqIHZhbAogfQogCiAvLyBtdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZCBhbmQgd2l0
aCBvYmplY3QgdW5sb2NrZWQKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU3Rv
cChXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY1N0
b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHBy
aXYgPSBzcmMtPnByaXY7CiAgICAgZ2Jvb2xlYW4gc2Vla2luZzsKIAogICAgIEdTVF9PQkpFQ1Rf
TE9DSyhzcmMpOwogCi0gICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZDsKKyAg
ICBzZWVraW5nID0gcHJpdi0+c291cmNlVmlkZW8uc2Vlay5pc0FjdGl2ZSgpOwogCi0gICAgaWYg
KHByaXYtPnNvdXJjZVZpZGVvLnN0YXJ0SWQpIHsKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHBy
aXYtPnNvdXJjZVZpZGVvLnN0YXJ0SWQpOwotICAgICAgICBwcml2LT5zb3VyY2VWaWRlby5zdGFy
dElkID0gMDsKLSAgICB9CisgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnQuY2FuY2VsKCk7CiAK
ICAgICBwcml2LT5wbGF5ZXIgPSAwOwogICAgIHByaXYtPnBsYXliaW4gPSAwOwogCi0gICAgaWYg
KHByaXYtPnNvdXJjZVZpZGVvLm5lZWREYXRhSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShw
cml2LT5zb3VyY2VWaWRlby5uZWVkRGF0YUlkKTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5uZWVk
RGF0YUlkID0gMDsKLQotICAgIGlmIChwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhSWQpCi0g
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhSWQpOwot
ICAgIHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCA9IDA7Ci0KLSAgICBpZiAocHJpdi0+
c291cmNlVmlkZW8uc2Vla0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c291cmNl
VmlkZW8uc2Vla0lkKTsKLQotICAgIHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCA9IDA7CisgICAg
cHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGEuY2FuY2VsKCk7CisgICAgcHJpdi0+c291cmNlVmlk
ZW8uZW5vdWdoRGF0YS5jYW5jZWwoKTsKKyAgICBwcml2LT5zb3VyY2VWaWRlby5zZWVrLmNhbmNl
bCgpOwogCiAgICAgcHJpdi0+c291cmNlVmlkZW8ucGF1c2VkID0gRkFMU0U7CiAgICAgcHJpdi0+
c291cmNlVmlkZW8ub2Zmc2V0ID0gMDsKQEAgLTI2MCw4ICsyNTEsNiBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICBwcml2
LT5kdXJhdGlvbiA9IDA7CiAgICAgcHJpdi0+bmJTb3VyY2UgPSAwOwogCi0gICAgcHJpdi0+c291
cmNlVmlkZW8uc3RvcElkID0gMDsKLQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAKICAg
ICBpZiAocHJpdi0+c291cmNlVmlkZW8uYXBwc3JjKSB7CkBAIC0yNzEsNDAgKzI2MCwyNiBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNy
YykKICAgICB9CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIp
OwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFB
dWRpb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlh
QXVkaW9TcmNTdG9wKFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogICAgIGdib29sZWFuIHNlZWtpbmc7CiAKICAgICBH
U1RfT0JKRUNUX0xPQ0soc3JjKTsKIAotICAgIHNlZWtpbmcgPSBwcml2LT5zb3VyY2VBdWRpby5z
ZWVrSWQ7CisgICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZUF1ZGlvLnNlZWsuaXNBY3RpdmUoKTsK
IAotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5zdGFydElkKSB7Ci0gICAgICAgIGdfc291cmNl
X3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5zdGFydElkKTsKLSAgICAgICAgcHJpdi0+c291cmNl
QXVkaW8uc3RhcnRJZCA9IDA7Ci0gICAgfQorICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0YXJ0LmNh
bmNlbCgpOwogCiAgICAgcHJpdi0+cGxheWVyID0gMDsKIAogICAgIHByaXYtPnBsYXliaW4gPSAw
OwogCi0gICAgaWYgKHByaXYtPnNvdXJjZUF1ZGlvLm5lZWREYXRhSWQpCi0gICAgICAgIGdfc291
cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkKTsKLSAgICBwcml2LT5zb3Vy
Y2VBdWRpby5uZWVkRGF0YUlkID0gMDsKLQotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5lbm91
Z2hEYXRhSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5lbm91
Z2hEYXRhSWQpOwotICAgIHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGFJZCA9IDA7Ci0KLSAg
ICBpZiAocHJpdi0+c291cmNlQXVkaW8uc2Vla0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUo
cHJpdi0+c291cmNlQXVkaW8uc2Vla0lkKTsKLQotICAgIHByaXYtPnNvdXJjZUF1ZGlvLnNlZWtJ
ZCA9IDA7CisgICAgcHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEuY2FuY2VsKCk7CisgICAgcHJp
di0+c291cmNlQXVkaW8uZW5vdWdoRGF0YS5jYW5jZWwoKTsKKyAgICBwcml2LT5zb3VyY2VBdWRp
by5zZWVrLmNhbmNlbCgpOwogCiAgICAgcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkID0gRkFMU0U7
CiAKQEAgLTMxNSw4ICsyOTAsNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1Ny
Y1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICBwcml2LT5kdXJhdGlvbiA9IDA7CiAgICAg
cHJpdi0+bmJTb3VyY2UgPSAwOwogCi0gICAgcHJpdi0+c291cmNlQXVkaW8uc3RvcElkID0gMDsK
LQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAKICAgICBpZiAocHJpdi0+c291cmNlQXVk
aW8uYXBwc3JjKSB7CkBAIC0zMjYsMTIgKzI5OSwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
TWVkaWFBdWRpb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICB9CiAKICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIpOwotCi0gICAgcmV0dXJuIEZBTFNF
OwogfQogCiAvLyBtdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZCBhbmQgd2l0aCBvYmplY3Qg
dW5sb2NrZWQKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQoV2ViS2l0
TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNTdGFydChXZWJL
aXRNZWRpYVNyYyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNy
Yy0+cHJpdjsKIApAQCAtMzQwLDE5ICszMTEsMTcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1l
ZGlhVmlkZW9TcmNTdGFydChXZWJLaXRNZWRpYVNyYyogc3JjKQogICAgICAgICBHU1RfRVJST1Jf
T0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOwogICAgICAgICBHU1RfT0JKRUNUX1VOTE9D
SyhzcmMpOwogICAgICAgICB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RvcChzcmMpOwotICAgICAgICBy
ZXR1cm4gRkFMU0U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBwcml2LT5zb3VyY2VW
aWRlby5zdGFydElkID0gMDsKIAogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJTdGFydGVkIHJlcXVlc3QiKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAogLy8gbXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQgYW5kIHdpdGggb2JqZWN0
IHVubG9ja2VkCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1NyY1N0YXJ0KFdlYktp
dE1lZGlhU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RhcnQoV2Vi
S2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKQEAgLTM2MSwxNSArMzMwLDEzIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYUF1ZGlvU3JjU3RhcnQoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICAgICAgR1NUX0VSUk9S
X09CSkVDVChzcmMsICJObyBVUkkgcHJvdmlkZWQiKTsKICAgICAgICAgR1NUX09CSkVDVF9VTkxP
Q0soc3JjKTsKICAgICAgICAgd2ViS2l0TWVkaWFBdWRpb1NyY1N0b3Aoc3JjKTsKLSAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgcHJpdi0+c291cmNl
QXVkaW8uc3RhcnRJZCA9IDA7CiAKICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhcnRlZCByZXF1ZXN0Iik7Ci0KLSAgICByZXR1cm4gRkFM
U0U7CiB9CiAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRNZWRpYVNyY0NoYW5n
ZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCkBA
IC00MDEsMTkgKzM2OCwyOSBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVk
aWFTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RTdAogICAgIGNhc2UgR1NU
X1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUkVBRFktPlBBVVNFRCIpOwogICAgICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAg
ICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnRJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BS
SU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0
LCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYp
OwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRlby5zdGFy
dElkLCAiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0Iik7Ci0gICAgICAgIHByaXYt
PnNvdXJjZUF1ZGlvLnN0YXJ0SWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZB
VUxULCAwLCAoR1NvdXJjZUZ1bmMpIHdlYktpdE1lZGlhQXVkaW9TcmNTdGFydCwgZ3N0X29iamVj
dF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKLSAgICAgICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uc3RhcnRJZCwgIltXZWJL
aXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTdGFydCIpOworCisgICAgICAgIGdzdF9vYmplY3RfcmVm
KHNyYyk7CisgICAgICAgIHByaXYtPnNvdXJjZVZpZGVvLnN0YXJ0LnNjaGVkdWxlKCJbV2ViS2l0
XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1Ny
Y1N0YXJ0LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAgICBbc3JjXSB7IGdz
dF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CisKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsK
KyAgICAgICAgcHJpdi0+c291cmNlQXVkaW8uc3RhcnQuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktp
dE1lZGlhQXVkaW9TcmNTdGFydCIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RhcnQs
IHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgICAgIFtzcmNdIHsgZ3N0X29iamVj
dF91bnJlZihzcmMpOyB9KTsKKwogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgog
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBBVVNFRC0+UkVBRFkiKTsKICAgICAgICAg
R1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0gICAgICAgIHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCA9
IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykg
d2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5v
dGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lk
KHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhVmlkZW9TcmNT
dG9wIik7Ci0gICAgICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0b3BJZCA9IGdfdGltZW91dF9hZGRf
ZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRp
b1NyY1N0b3AsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVj
dF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYtPnNvdXJjZUF1
ZGlvLnN0b3BJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTdG9wIik7CisKKyAgICAg
ICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RvcC5z
Y2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AiLCBzdGQ6OmJpbmQod2Vi
S2l0TWVkaWFWaWRlb1NyY1N0b3AsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAg
ICAgIFtzcmNdIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKworICAgICAgICBnc3Rfb2Jq
ZWN0X3JlZihzcmMpOworICAgICAgICBwcml2LT5zb3VyY2VBdWRpby5zdG9wLnNjaGVkdWxlKCJb
V2ViS2l0XSB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RvcCIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1
ZGlvU3JjU3RvcCwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICAgICAgW3NyY10g
eyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOworCiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NL
KHNyYyk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC01MTksNDAgKzQ5NiwyMiBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFj
ZSwgZ3BvaW50ZXIpCiB9CiAKIC8vIGFwcHNyYyBjYWxsYmFja3MKLXN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRNZWRpYVZpZGVvU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0
YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYihXZWJLaXRNZWRpYVNy
Yyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsK
IAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIC8vIGFscmVhZHkgc3RvcHBlZAotICAg
IGlmICghcHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+
c291cmNlVmlkZW8ucGF1c2VkID0gRkFMU0U7Ci0gICAgcHJpdi0+c291cmNlVmlkZW8ubmVlZERh
dGFJZCA9IDA7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5D
YihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY05l
ZWREYXRhTWFpbkNiKFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0g
ICAgLy8gYWxyZWFkeSBzdG9wcGVkCi0gICAgaWYgKCFwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0
YUlkKSB7Ci0gICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7Ci0gICAgICAgIHJldHVybiBG
QUxTRTsKLSAgICB9Ci0KICAgICBwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQgPSBGQUxTRTsKLSAg
ICBwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkID0gMDsKICAgICBHU1RfT0JKRUNUX1VOTE9D
SyhzcmMpOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRp
YVZpZGVvU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVz
ZXJEYXRhKQpAQCAtNTYzLDEzICs1MjIsMTQgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRl
b1NyY05lZWREYXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2UKICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIk5lZWQgbW9yZSBkYXRhOiAldSIsIGxlbmd0aCk7CiAK
ICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICBpZiAocHJpdi0+c291cmNlVmlkZW8ubmVl
ZERhdGFJZCB8fCAhcHJpdi0+c291cmNlVmlkZW8ucGF1c2VkKSB7CisgICAgaWYgKHByaXYtPnNv
dXJjZVZpZGVvLm5lZWREYXRhLmlzU2NoZWR1bGVkKCkgfHwgIXByaXYtPnNvdXJjZVZpZGVvLnBh
dXNlZCkgewogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJZCA9IGdfdGltZW91dF9h
ZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFW
aWRlb1NyY05lZWREYXRhTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3Rp
ZnkpIGdzdF9vYmplY3RfdW5yZWYpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYt
PnNvdXJjZVZpZGVvLm5lZWREYXRhSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjTmVl
ZERhdGFNYWluQ2IiKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNvdXJj
ZVZpZGVvLm5lZWREYXRhLnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjTmVl
ZERhdGFNYWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1NyY05lZWREYXRhTWFpbkNi
LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0X29iamVjdF91
bnJlZihzcmMpOyB9KTsKICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogfQogCkBAIC01ODEs
NTAgKzU0MSwzMyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFDYihH
c3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZQogICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiTmVlZCBtb3JlIGRhdGE6ICV1IiwgbGVuZ3RoKTsKIAogICAgIEdTVF9PQkpFQ1Rf
TE9DSyhzcmMpOwotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkIHx8ICFwcml2
LT5zb3VyY2VBdWRpby5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+c291cmNlQXVkaW8ubmVlZERh
dGEuaXNTY2hlZHVsZWQoKSB8fCAhcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkKSB7CiAgICAgICAg
IEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBw
cml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJ
VFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFN
YWluQ2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91
bnJlZik7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8ubmVl
ZERhdGFJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5DYiIpOwor
ICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEu
c2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5DYiIsIHN0
ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IsIHNyYyksIEdfUFJJT1JJ
VFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwog
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYVZpZGVvU3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGlj
IHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMq
IHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAK
ICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBp
ZiAoIXByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+
c291cmNlVmlkZW8ucGF1c2VkID0gVFJVRTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hE
YXRhSWQgPSAwOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7Ci0KLSAgICByZXR1cm4gRkFM
U0U7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5vdWdoRGF0YU1h
aW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1Ny
Y0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRp
YVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0soc3Jj
KTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBpZiAoIXByaXYtPnNvdXJjZUF1ZGlvLmVu
b3VnaERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwotICAgICAgICBy
ZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkID0gVFJV
RTsKLSAgICBwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhSWQgPSAwOwogICAgIEdTVF9PQkpF
Q1RfVU5MT0NLKHNyYyk7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyB2b2lkIHdl
YktpdE1lZGlhVmlkZW9TcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRh
dGEpCkBAIC02MzUsMTMgKzU3OCwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVZpZGVvU3Jj
RW5vdWdoRGF0YUNiKEdzdEFwcFNyYyosIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiSGF2ZSBlbm91Z2ggZGF0YSIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NL
KHNyYyk7Ci0gICAgaWYgKHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCB8fCBwcml2LT5z
b3VyY2VWaWRlby5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+c291cmNlVmlkZW8uZW5vdWdoRGF0
YS5pc1NjaGVkdWxlZCgpIHx8IHByaXYtPnNvdXJjZVZpZGVvLnBhdXNlZCkgewogICAgICAgICBH
U1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJp
di0+c291cmNlVmlkZW8uZW5vdWdoRGF0YUlkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJ
VFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYVZpZGVvU3JjRW5vdWdoRGF0
YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0
X3VucmVmKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRlby5l
bm91Z2hEYXRhSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjRW5vdWdoRGF0YU1haW5D
YiIpOworICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlVmlkZW8uZW5v
dWdoRGF0YS5zY2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFN
YWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IsIHNy
YyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVm
KHNyYyk7IH0pOworCiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKIH0KIApAQCAtNjUzLDI4
ICs1OTgsMjcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFDYihH
c3RBcHBTcmMqLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IkhhdmUgZW5vdWdoIGRhdGEiKTsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIGlm
IChwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhSWQgfHwgcHJpdi0+c291cmNlQXVkaW8ucGF1
c2VkKSB7CisgICAgaWYgKHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGEuaXNTY2hlZHVsZWQo
KSB8fCBwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQpIHsKICAgICAgICAgR1NUX09CSkVDVF9VTkxP
Q0soc3JjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByaXYtPnNvdXJjZUF1ZGlv
LmVub3VnaERhdGFJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAs
IChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IsIGdzdF9v
YmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uZW5vdWdoRGF0YUlkLCAi
W1dlYktpdF0gd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IiKTsKKyAgICBnc3Rf
b2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGEuc2NoZWR1
bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiIiwgc3RkOjpi
aW5kKHdlYktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiLCBzcmMpLCBHX1BSSU9SSVRZ
X0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwog
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYVZpZGVvU3JjU2Vla01haW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQg
d2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IoV2ViS2l0TWVkaWFTcmMqKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgc3JjLT5wcml2LT5zb3VyY2VWaWRlby5zZWVrSWQgPSAwOwot
ICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9T
cmNTZWVrTWFpbkNiKFdlYktpdE1lZGlhU3JjKiBzcmMpCisKK3N0YXRpYyB2b2lkIHdlYktpdE1l
ZGlhQXVkaW9TcmNTZWVrTWFpbkNiKFdlYktpdE1lZGlhU3JjKikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHNyYy0+cHJpdi0+c291cmNlQXVkaW8uc2Vla0lkID0gMDsKLSAgICByZXR1
cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla0Rh
dGFDYihHc3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03
MDEsMTAgKzY0NSwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtE
YXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiRG9pbmcgcmFuZ2UtcmVxdWVzdCBzZWVrIik7CiAgICAgcHJpdi0+c291cmNl
VmlkZW8ucmVxdWVzdGVkT2Zmc2V0ID0gb2Zmc2V0OwogCi0gICAgaWYgKHByaXYtPnNvdXJjZVZp
ZGVvLnNlZWtJZCkKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNvdXJjZVZpZGVvLnNl
ZWtJZCk7Ci0gICAgcHJpdi0+c291cmNlVmlkZW8uc2Vla0lkID0gZ190aW1lb3V0X2FkZF9mdWxs
KEdfUFJJT1JJVFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYVZpZGVvU3Jj
U2Vla01haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2Jq
ZWN0X3VucmVmKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRl
by5zZWVrSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla01haW5DYiIpOworICAg
IGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlVmlkZW8uc2Vlay5zY2hlZHVs
ZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IiLCBzdGQ6OmJpbmQod2Vi
S2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAg
ICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOworCiAgICAgR1NUX09CSkVD
VF9VTkxPQ0soc3JjKTsKIAogICAgIHJldHVybiBUUlVFOwpAQCAtNzM0LDEwICs2NzgsMTAgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrRGF0YUNiKEdzdEFwcFNyYyos
IGd1aW50NjQgb2Zmc2V0LCBncG9pbnQKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkRvaW5n
IHJhbmdlLXJlcXVlc3Qgc2VlayIpOwogICAgIHByaXYtPnNvdXJjZUF1ZGlvLnJlcXVlc3RlZE9m
ZnNldCA9IG9mZnNldDsKIAotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5zZWVrSWQpCi0gICAg
ICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5zZWVrSWQpOwotICAgIHByaXYt
PnNvdXJjZUF1ZGlvLnNlZWtJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFV
TFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRpb1NyY1NlZWtNYWluQ2IsIGdzdF9v
YmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uc2Vla0lkLCAiW1dlYktp
dF0gd2ViS2l0TWVkaWFBdWRpb1NyY1NlZWtNYWluQ2IiKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihz
cmMpOworICAgIHByaXYtPnNvdXJjZUF1ZGlvLnNlZWsuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktp
dE1lZGlhQXVkaW9TcmNTZWVrTWFpbkNiIiwgc3RkOjpiaW5kKHdlYktpdE1lZGlhQXVkaW9TcmNT
ZWVrTWFpbkNiLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0
X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAK
ICAgICByZXR1cm4gVFJVRTsKQEAgLTgyMiwxNCArNzY2LDE0IEBAIHZvaWQgTWVkaWFTb3VyY2VD
bGllbnRHc3RyZWFtZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlKQogICAgIEdTVF9ERUJVR19P
QkpFQ1QobV9zcmMsICJIYXZlIEVPUyIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fc3JjKTsK
LSAgICBpZiAoIXByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCkgeworICAgIGlmICghcHJpdi0+c291
cmNlVmlkZW8uc2Vlay5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKG1f
c3JjKTsKICAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShHU1RfQVBQX1NSQyhwcml2
LT5zb3VyY2VWaWRlby5hcHBzcmMpKTsKICAgICB9IGVsc2UKICAgICAgICAgR1NUX09CSkVDVF9V
TkxPQ0sobV9zcmMpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fc3JjKTsKLSAgICBpZiAoIXBy
aXYtPnNvdXJjZUF1ZGlvLnNlZWtJZCkgeworICAgIGlmICghcHJpdi0+c291cmNlQXVkaW8uc2Vl
ay5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKG1fc3JjKTsKICAgICAg
ICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShHU1RfQVBQX1NSQyhwcml2LT5zb3VyY2VBdWRp
by5hcHBzcmMpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggOGNiOGE0ZC4uMjhiOTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29w
U291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR011dGV4TG9ja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KQEAgLTEyNiwxMSArMTI3LDExIEBAIHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7
CiAKICAgICBndWludDY0IHJlcXVlc3RlZE9mZnNldDsKIAotICAgIGd1aW50IHN0YXJ0SUQ7Ci0g
ICAgZ3VpbnQgc3RvcElEOwotICAgIGd1aW50IG5lZWREYXRhSUQ7Ci0gICAgZ3VpbnQgZW5vdWdo
RGF0YUlEOwotICAgIGd1aW50IHNlZWtJRDsKKyAgICBHTWFpbkxvb3BTb3VyY2Ugc3RhcnRTb3Vy
Y2U7CisgICAgR01haW5Mb29wU291cmNlIHN0b3BTb3VyY2U7CisgICAgR01haW5Mb29wU291cmNl
IG5lZWREYXRhU291cmNlOworICAgIEdNYWluTG9vcFNvdXJjZSBlbm91Z2hEYXRhU291cmNlOwor
ICAgIEdNYWluTG9vcFNvdXJjZSBzZWVrU291cmNlOwogCiAgICAgR1JlZlB0cjxHc3RCdWZmZXI+
IGJ1ZmZlcjsKIApAQCAtMjUzLDYgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X2luaXQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfU1JDX0dFVF9QUklWQVRFKHNyYyk7CiAKICAgICBzcmMtPnByaXYgPSBwcml2
OworICAgIG5ldyAocHJpdikgV2ViS2l0V2ViU3JjUHJpdmF0ZSgpOwogCiAgICAgcHJpdi0+YXBw
c3JjID0gR1NUX0FQUF9TUkMoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzcmMiLCAwKSk7
CiAgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKQEAgLTMxNCw2ICszMTYsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViU3Jj
UHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIGdfZnJlZShwcml2LT51cmkpOworICAg
IHByaXYtPn5XZWJLaXRXZWJTcmNQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19P
QkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CiB9CkBAIC0zNjQsMjQgKzM2NywxMyBA
QCBzdGF0aWMgdm9pZCByZW1vdmVUaW1lb3V0U291cmNlcyhXZWJLaXRXZWJTcmMqIHNyYykKIHsK
ICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0gICAgaWYgKHBy
aXYtPnN0YXJ0SUQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zdGFydElEKTsKLSAg
ICBwcml2LT5zdGFydElEID0gMDsKLQotICAgIGlmIChwcml2LT5uZWVkRGF0YUlEKQotICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+bmVlZERhdGFJRCk7Ci0gICAgcHJpdi0+bmVlZERhdGFJ
RCA9IDA7Ci0KLSAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlEKQotICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUocHJpdi0+ZW5vdWdoRGF0YUlEKTsKLSAgICBwcml2LT5lbm91Z2hEYXRhSUQgPSAwOwot
Ci0gICAgaWYgKHByaXYtPnNlZWtJRCkKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNl
ZWtJRCk7Ci0gICAgcHJpdi0+c2Vla0lEID0gMDsKKyAgICBwcml2LT5zdGFydFNvdXJjZS5jYW5j
ZWwoKTsKKyAgICBwcml2LT5uZWVkRGF0YVNvdXJjZS5jYW5jZWwoKTsKKyAgICBwcml2LT5lbm91
Z2hEYXRhU291cmNlLmNhbmNlbCgpOworICAgIHByaXYtPnNlZWtTb3VyY2UuY2FuY2VsKCk7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQor
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RvcChXZWJLaXRXZWJTcmMqIHNyYykKIHsKICAgICBX
ZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCkBAIC0zODksMTAgKzM4MSw5
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQog
CiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwogCi0g
ICAgYm9vbCBzZWVraW5nID0gcHJpdi0+c2Vla0lEOworICAgIGJvb2wgc2Vla2luZyA9IHByaXYt
PnNlZWtTb3VyY2UuaXNBY3RpdmUoKTsKIAogICAgIHJlbW92ZVRpbWVvdXRTb3VyY2VzKHNyYyk7
Ci0gICAgcHJpdi0+c3RvcElEID0gMDsKIAogICAgIGlmIChwcml2LT5jbGllbnQpIHsKICAgICAg
ICAgZGVsZXRlIHByaXYtPmNsaWVudDsKQEAgLTQzNiwxMSArNDI3LDkgQEAgc3RhdGljIGdib29s
ZWFuIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQogCiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJTdG9wcGVkIHJlcXVlc3QiKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyog
c3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiB7
CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIApAQCAtNDQ4LDEz
ICs0MzcsMTEgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNy
Yyogc3JjKQogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNy
YykpOwogCi0gICAgcHJpdi0+c3RhcnRJRCA9IDA7Ci0KICAgICBpZiAoIXByaXYtPnVyaSkgewog
ICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOwogICAgICAg
ICBsb2NrZXIudW5sb2NrKCk7CiAgICAgICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKLSAgICAg
ICAgcmV0dXJuIEZBTFNFOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKCFw
cml2LT5jbGllbnQpOwpAQCAtNTEwLDEwICs0OTcsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgICAgIH0KICAgICAgICAgbG9ja2Vy
LnVubG9jaygpOwogICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7Ci0gICAgICAgIHJldHVy
biBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBHU1RfREVCVUdfT0JKRUNUKHNy
YywgIlN0YXJ0ZWQgcmVxdWVzdCIpOwotICAgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIEdz
dFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVs
ZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCkBAIC01NDUsMTMgKzUzMSwxNyBAQCBz
dGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViU3JjQ2hhbmdlU3RhdGUoR3N0RWxl
bWVudCogZWxlbWVudCwgR3N0U3RhdAogICAgIHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CiAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIpOwotICAgICAgICBwcml2LT5zdGFydElEID0gZ19p
ZGxlX2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRXZWJT
cmNTdGFydCwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0
X3VucmVmKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c3Rh
cnRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY1N0YXJ0Iiwgc3RkOjpiaW5k
KHdlYktpdFdlYlNyY1N0YXJ0LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAg
ICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CiAgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiUEFVU0VELT5SRUFEWSIpOwogICAgICAgICAvLyBjYW5jZWwgcGVuZGlu
ZyBzb3VyY2VzCiAgICAgICAgIHJlbW92ZVRpbWVvdXRTb3VyY2VzKHNyYyk7Ci0gICAgICAgIHBy
aXYtPnN0b3BJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNl
RnVuYykgd2ViS2l0V2ViU3JjU3RvcCwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90
aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAg
ICAgICAgcHJpdi0+c3RvcFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0V2ViU3JjU3Rv
cCIsIHN0ZDo6YmluZCh3ZWJLaXRXZWJTcmNTdG9wLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQs
CisgICAgICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNjY2LDI0ICs2NTYsMTgg
QEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3BvaW50ZXIgZ0lmYWNl
LCBncG9pbnRlcikKIAogLy8gYXBwc3JjIGNhbGxiYWNrcwogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
S2l0V2ViU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNOZWVkRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKIHsKICAgICBXZWJL
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhz
cmMpKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBpZiAoIXByaXYtPm5lZWREYXRhSUQp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQogICAgIHByaXYtPnBhdXNlZCA9IEZBTFNFOwotICAg
IHByaXYtPm5lZWREYXRhSUQgPSAwOwogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAgIGlmIChw
cml2LT5jbGllbnQpCiAgICAgICAgIHByaXYtPmNsaWVudC0+c2V0RGVmZXJzTG9hZGluZyhmYWxz
ZSk7Ci0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVk
RGF0YUNiKEdzdEFwcFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC02
OTQsMzEgKzY3OCwyNiBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKEdzdEFw
cFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJOZWVkIG1vcmUgZGF0YTogJXUiLCBsZW5ndGgpOwogCiAgICAgR011dGV4TG9j
a2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAgIGlmIChwcml2LT5uZWVk
RGF0YUlEIHx8ICFwcml2LT5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+bmVlZERhdGFTb3VyY2Uu
aXNTY2hlZHVsZWQoKSB8fCAhcHJpdi0+cGF1c2VkKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
Ci0gICAgcHJpdi0+bmVlZERhdGFJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFV
TFQsIChHU291cmNlRnVuYykgd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IsIGdzdF9vYmplY3Rf
cmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7CisgICAgZ3N0X29i
amVjdF9yZWYoc3JjKTsKKyAgICBwcml2LT5uZWVkRGF0YVNvdXJjZS5zY2hlZHVsZSgiW1dlYktp
dF0gd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0V2ViU3JjTmVl
ZERhdGFNYWluQ2IsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBn
c3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2Vi
U3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0
V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3Jj
KSk7Ci0gICAgLy8gYWxyZWFkeSBzdG9wcGVkCi0gICAgaWYgKCFwcml2LT5lbm91Z2hEYXRhSUQp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQogICAgIHByaXYtPnBhdXNlZCA9IFRSVUU7Ci0gICAg
cHJpdi0+ZW5vdWdoRGF0YUlEID0gMDsKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBpZiAo
cHJpdi0+Y2xpZW50KQogICAgICAgICBwcml2LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmcodHJ1
ZSk7Ci0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91
Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03MjksMjkgKzcwOCwy
MCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3Bv
aW50ZXIgdXNlckRhdGEpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJIYXZlIGVub3VnaCBk
YXRhIik7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3Jj
KSk7Ci0gICAgaWYgKHByaXYtPmVub3VnaERhdGFJRCB8fCBwcml2LT5wYXVzZWQpIHsKKyAgICBp
ZiAocHJpdi0+ZW5vdWdoRGF0YVNvdXJjZS5pc1NjaGVkdWxlZCgpIHx8IHByaXYtPnBhdXNlZCkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHByaXYtPmVub3VnaERhdGFJRCA9IGdfaWRs
ZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNlRnVuYykgd2ViS2l0V2ViU3Jj
RW5vdWdoRGF0YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBn
c3Rfb2JqZWN0X3VucmVmKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPmVu
b3VnaERhdGFTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY0Vub3VnaERhdGFN
YWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYiwgc3JjKSwgR19Q
UklPUklUWV9ERUZBVUxULAorICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsg
fSk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZWVrTWFpbkNiKFdlYktpdFdl
YlNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2Vla01haW5DYihXZWJLaXRXZWJT
cmMqIHNyYykKIHsKLSAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2Owot
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIEdNdXRleExvY2tlciBsb2NrZXIo
R1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBp
ZiAoIXByaXYtPnNlZWtJRCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIGxvY2tlci51bmxv
Y2soKTsKLQogICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKICAgICB3ZWJLaXRXZWJTcmNTdGFy
dChzcmMpOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
V2ViU3JjU2Vla0RhdGFDYihHc3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNl
ckRhdGEpCkBAIC03NzAsOSArNzQwLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1Nl
ZWtEYXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVzZXIKICAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIkRvaW5nIHJhbmdlLXJlcXVlc3Qgc2VlayIpOwogICAgIHBy
aXYtPnJlcXVlc3RlZE9mZnNldCA9IG9mZnNldDsKIAotICAgIGlmIChwcml2LT5zZWVrSUQpCi0g
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zZWVrSUQpOwotICAgIHByaXYtPnNlZWtJRCA9
IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNlRnVuYykgd2ViS2l0
V2ViU3JjU2Vla01haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBn
c3Rfb2JqZWN0X3VucmVmKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNl
ZWtTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY1NlZWtNYWluQ2IiLCBzdGQ6
OmJpbmQod2ViS2l0V2ViU3JjU2Vla01haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAor
ICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgcmV0dXJuIFRS
VUU7CiB9CiAKQEAgLTgyOCw3ICs3OTgsNyBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxl
UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAg
IEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIGlm
IChwcml2LT5zZWVrSUQpIHsKKyAgICBpZiAocHJpdi0+c2Vla1NvdXJjZS5pc0FjdGl2ZSgpKSB7
CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3Jp
bmcgcmVzcG9uc2UiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkzMiw3ICs5MDIsNyBA
QCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiAgICAgaWYgKHByaXYtPmJ1ZmZlcikKICAgICAgICAgdW5tYXBHc3RC
dWZmZXIocHJpdi0+YnVmZmVyLmdldCgpKTsKIAotICAgIGlmIChwcml2LT5zZWVrSUQpIHsKKyAg
ICBpZiAocHJpdi0+c2Vla1NvdXJjZS5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOwogICAgICAgICBw
cml2LT5idWZmZXIuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTkzLDcgKzk2Myw3IEBA
IHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3RpZnlGaW5pc2hlZCgpCiAgICAgR1NUX0RF
QlVHX09CSkVDVChzcmMsICJIYXZlIEVPUyIpOwogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihH
U1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAgIGlmICghcHJpdi0+c2Vla0lEKSB7CisgICAg
aWYgKCFwcml2LT5zZWVrU291cmNlLmlzQWN0aXZlKCkpIHsKICAgICAgICAgbG9ja2VyLnVubG9j
aygpOwogICAgICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHByaXYtPmFwcHNyYyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmRE
cm9wSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJv
cEhlbHBlci5jcHAKaW5kZXggZDQ5YzM1MjguLmZjNzgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJk
SGVscGVyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dN
YWluTG9vcFNvdXJjZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDE4ICs2OSw2
IEBAIHZvaWQgR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZUdldERyYWdEYXRhKEdka0RyYWdD
b250ZXh0KiBjb250ZXh0LCBHdGtTZWxlY3RpCiAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVs
dFBhc3RlYm9hcmRIZWxwZXIoKS0+ZmlsbFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSwgaW5m
bywgZGF0YU9iamVjdCk7CiB9CiAKLXN0cnVjdCBIYW5kbGVEcmFnTGF0ZXJEYXRhIHsKLSAgICBE
cm9wcGluZ0NvbnRleHQqIGNvbnRleHQ7Ci0gICAgR3RrRHJhZ0FuZERyb3BIZWxwZXIqIGdsdWU7
Ci19OwotCi1zdGF0aWMgZ2Jvb2xlYW4gaGFuZGxlRHJhZ0xlYXZlTGF0ZXJDYWxsYmFjayhIYW5k
bGVEcmFnTGF0ZXJEYXRhKiBkYXRhKQotewotICAgIGRhdGEtPmdsdWUtPmhhbmRsZURyYWdMZWF2
ZUxhdGVyKGRhdGEtPmNvbnRleHQpOwotICAgIGRlbGV0ZSBkYXRhOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQogdm9pZCBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0xlYXZlTGF0ZXIo
RHJvcHBpbmdDb250ZXh0KiBjb250ZXh0KQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Ryb3Bw
aW5nQ29udGV4dHMuZmluZChjb250ZXh0LT5nZGtDb250ZXh0KTsKQEAgLTEwOSwxMSArOTgsOCBA
QCB2b2lkIEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFnTGVhdmUoR2RrRHJhZ0NvbnRl
eHQqIGdka0NvbnRleHQsIERyYWdFeGl0ZQogICAgIC8vIER1cmluZyBhIGRyb3AgR1RLKyB3aWxs
IGZpcmUgYSBkcmFnLWxlYXZlIHNpZ25hbCByaWdodCBiZWZvcmUgZmlyaW5nCiAgICAgLy8gdGhl
IGRyYWctZHJvcCBzaWduYWwuIFdlIHdhbnQgdGhlIGFjdGlvbnMgZm9yIGRyYWctbGVhdmUgdG8g
aGFwcGVuIGFmdGVyCiAgICAgLy8gdGhvc2UgZm9yIGRyYWctZHJvcCwgc28gc2NoZWR1bGUgdGhl
bSB0byBoYXBwZW4gYXN5bmNocm9ub3VzbHkgaGVyZS4KLSAgICBIYW5kbGVEcmFnTGF0ZXJEYXRh
KiBkYXRhID0gbmV3IEhhbmRsZURyYWdMYXRlckRhdGE7Ci0gICAgZGF0YS0+Y29udGV4dCA9IGNv
bnRleHQ7Ci0gICAgZGF0YS0+Y29udGV4dC0+ZXhpdGVkQ2FsbGJhY2sgPSBleGl0ZWRDYWxsYmFj
azsKLSAgICBkYXRhLT5nbHVlID0gdGhpczsKLSAgICBnX2lkbGVfYWRkX2Z1bGwoR19QUklPUklU
WV9ERUZBVUxULCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihoYW5kbGVEcmFnTGVhdmVM
YXRlckNhbGxiYWNrKSwgZGF0YSwgMCk7CisgICAgY29udGV4dC0+ZXhpdGVkQ2FsbGJhY2sgPSBl
eGl0ZWRDYWxsYmFjazsKKyAgICBHTWFpbkxvb3BTb3VyY2U6OmNyZWF0ZUFuZERlbGV0ZU9uRGVz
dHJveSgpLnNjaGVkdWxlKCJbV2ViS2l0XSBoYW5kbGVEcmFnTGVhdmVMYXRlciIsIHN0ZDo6Ymlu
ZCgmR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdMZWF2ZUxhdGVyLCB0aGlzLCBjb250
ZXh0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHF1ZXJ5TmV3RHJvcENvbnRleHREYXRhKERyb3BwaW5n
Q29udGV4dCogZHJvcENvbnRleHQsIEd0a1dpZGdldCogd2lkZ2V0LCBndWludCB0aW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKaW5kZXggNThl
YWY1Ni4uMThhY2VjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1No
YXJlZFRpbWVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVk
VGltZXJHdGsuY3BwCkBAIC0yOCw0NyArMjgsMzIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFyZWRUaW1lci5oIgogCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0jaW5jbHVk
ZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBndWludCBzaGFyZWRUaW1lcjsKK3N0YXRpYyBH
TWFpbkxvb3BTb3VyY2UgZ1NoYXJlZFRpbWVyOwogc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZp
cmVkRnVuY3Rpb24pKCk7CiAKIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQg
KCpmKSgpKQogewogICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Ci19Ci0KLXN0YXRp
YyBnYm9vbGVhbiBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayhncG9pbnRlcikKLXsKLSAgICBp
ZiAoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24oKTsKLSAgICByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24pCisgICAgICAgIGdTaGFyZWRUaW1lci5jYW5jZWwoKTsKIH0KIAogdm9pZCBzZXRTaGFy
ZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7CiAgICAgQVNTRVJUKHNoYXJl
ZFRpbWVyRmlyZWRGdW5jdGlvbik7CiAKLSAgICBndWludCBpbnRlcnZhbEluTVMgPSBzdGF0aWNf
Y2FzdDxndWludD4oaW50ZXJ2YWwgKiAxMDAwKTsKLQotICAgIHN0b3BTaGFyZWRUaW1lcigpOwot
ICAgIHNoYXJlZFRpbWVyID0gZ190aW1lb3V0X2FkZF9mdWxsKEdES19QUklPUklUWV9SRURSQVcs
IGludGVydmFsSW5NUywgc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2ssIDAsIDApOwotICAgIGdf
c291cmNlX3NldF9uYW1lX2J5X2lkKHNoYXJlZFRpbWVyLCAiW1dlYktpdF0gc2hhcmVkVGltZXJU
aW1lb3V0Q2FsbGJhY2siKTsKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJb
V2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiwKKyAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwgR0RL
X1BSSU9SSVRZX1JFRFJBVyk7CiB9CiAKIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKIHsKLSAgICBp
ZiAoc2hhcmVkVGltZXIgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2Jvb2xlYW4gcmVt
b3ZlZFNvdXJjZSA9IGdfc291cmNlX3JlbW92ZShzaGFyZWRUaW1lcik7Ci0gICAgQVNTRVJUX1VO
VVNFRChyZW1vdmVkU291cmNlLCByZW1vdmVkU291cmNlKTsKLSAgICBzaGFyZWRUaW1lciA9IDA7
CisgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227271</attachid>
            <date>2014-03-20 01:28:05 -0700</date>
            <delta_ts>2014-03-31 05:24:38 -0700</delta_ts>
            <desc>Try to fix the build</desc>
            <filename>wcore-gmain-loop-source.diff</filename>
            <type>text/plain</type>
            <size>66043</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZDM1MGMyLi41N2QyYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcg
QEAKKzIwMTQtMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBHTWFpbkxvb3BTb3VyY2UgZm9yIGlkbGUgYW5kIHRpbWVv
dXQgc291cmNlcyBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVC
dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1D
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2Fwc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJP
ZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjps
b2FkaW5nRmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJP
ZlZvbHVtZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjp2b2x1bWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6YWN0aXZlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mQWN0
aXZlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
Ojpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgICh3
ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2spOgorICAgICAgICAod2Via2l0VmlkZW9TaW5r
UmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVk
aWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX3NyY19pbml0KToK
KyAgICAgICAgKHdlYktpdE1lZGlhU3JjRmluYWxpemUpOgorICAgICAgICAod2ViS2l0TWVkaWFW
aWRlb1NyY1N0b3ApOgorICAgICAgICAod2ViS2l0TWVkaWFBdWRpb1NyY1N0b3ApOgorICAgICAg
ICAod2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0KToKKyAgICAgICAgKHdlYktpdE1lZGlhQXVkaW9T
cmNTdGFydCk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0NoYW5nZVN0YXRlKToKKyAgICAgICAg
KHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYik6CisgICAgICAgICh3ZWJLaXRNZWRp
YUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFWaWRlb1NyY05l
ZWREYXRhQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFBdWRpb1NyY05lZWREYXRhQ2IpOgorICAg
ICAgICAod2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2Vi
S2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0TWVkaWFW
aWRlb1NyY0Vub3VnaERhdGFDYik6CisgICAgICAgICh3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5vdWdo
RGF0YUNiKToKKyAgICAgICAgKHdlYktpdE1lZGlhVmlkZW9TcmNTZWVrTWFpbkNiKToKKyAgICAg
ICAgKHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrTWFpbkNiKToKKyAgICAgICAgKHdlYktpdE1lZGlh
VmlkZW9TcmNTZWVrRGF0YUNiKToKKyAgICAgICAgKHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrRGF0
YUNiKToKKyAgICAgICAgKE1lZGlhU291cmNlQ2xpZW50R3N0cmVhbWVyOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfc3JjX2luaXQpOgorICAgICAg
ICAod2ViS2l0V2ViU3JjRmluYWxpemUpOgorICAgICAgICAocmVtb3ZlVGltZW91dFNvdXJjZXMp
OgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTdGFy
dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZSk6CisgICAgICAgICh3ZWJLaXRX
ZWJTcmNOZWVkRGF0YU1haW5DYik6CisgICAgICAgICh3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IpOgorICAgICAgICAod2ViS2l0
V2ViU3JjRW5vdWdoRGF0YUNiKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NlZWtNYWluQ2IpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2Vla0RhdGFDYik6CisgICAgICAgIChTdHJlYW1pbmdDbGll
bnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50Ojpo
YW5kbGVEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3Rp
ZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFn
TGVhdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKToKKwogMjAxNC0wMy0yMCAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVmaW5lIEJhdHRlcnlTdGF0dXMgbW9kdWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGU2ODdlNTcuLmYwZTQ4OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yNywxNCArMjcs
MTQgQEAKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNp
bmsuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVl
UHRyLmg+CiAKLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBdWRpb0ZpbGVSZWFkZXIgewpAQCAtMTA4LDEzICsxMDgsNiBAQCBzdGF0
aWMgdm9pZCBvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2soR3N0RWxlbWVudCos
IEdzdFBhZCogcGFkLCBBdWRpbwogICAgIHJlYWRlci0+cGx1Z0RlaW50ZXJsZWF2ZShwYWQpOwog
fQogCi1nYm9vbGVhbiBlbnRlcmVkTWFpbkxvb3BDYWxsYmFjayhncG9pbnRlciB1c2VyRGF0YSkK
LXsKLSAgICBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9G
aWxlUmVhZGVyKj4odXNlckRhdGEpOwotICAgIHJlYWRlci0+ZGVjb2RlQXVkaW9Gb3JCdXNDcmVh
dGlvbigpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQogQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0Zp
bGVSZWFkZXIoY29uc3QgY2hhciogZmlsZVBhdGgpCiAgICAgOiBtX2RhdGEoMCkKICAgICAsIG1f
ZGF0YVNpemUoMCkKQEAgLTM0MSw5ICszMzQsOCBAQCBQYXNzUmVmUHRyPEF1ZGlvQnVzPiBBdWRp
b0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwog
ICAgIG1fbG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoY29udGV4dC5nZXQoKSwgRkFM
U0UpKTsKIAogICAgIC8vIFN0YXJ0IHRoZSBwaXBlbGluZSBwcm9jZXNzaW5nIGp1c3QgYWZ0ZXIg
dGhlIGxvb3AgaXMgc3RhcnRlZC4KLSAgICBHUmVmUHRyPEdTb3VyY2U+IHRpbWVvdXRTb3VyY2Ug
PSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoMCkpOwotICAgIGdfc291cmNlX2F0dGFj
aCh0aW1lb3V0U291cmNlLmdldCgpLCBjb250ZXh0LmdldCgpKTsKLSAgICBnX3NvdXJjZV9zZXRf
Y2FsbGJhY2sodGltZW91dFNvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVu
Yz4oZW50ZXJlZE1haW5Mb29wQ2FsbGJhY2spLCB0aGlzLCAwKTsKKyAgICBHTWFpbkxvb3BTb3Vy
Y2Ugc291cmNlOworICAgIHNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gQXVkaW9GaWxlUmVhZGVy
OjpkZWNvZGVBdWRpb0ZvckJ1c0NyZWF0aW9uIiwgc3RkOjpiaW5kKCZBdWRpb0ZpbGVSZWFkZXI6
OmRlY29kZUF1ZGlvRm9yQnVzQ3JlYXRpb24sIHRoaXMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51
bGxwdHIsIGNvbnRleHQuZ2V0KCkpOwogCiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbG9vcC5nZXQo
KSk7CiAgICAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0KGNvbnRleHQuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGJlZDEwZmEuLjQyMjFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTUyLDIyICs1Miw4IEBAIHN0YXRp
YyBHc3RQYWRQcm9iZVJldHVybiB0ZXh0VHJhY2tQcml2YXRlRXZlbnRDYWxsYmFjayhHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qCiAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiB9CiAKLXN0
YXRpYyBnYm9vbGVhbiB0ZXh0VHJhY2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIqIHRyYWNrKQotewotICAgIHRyYWNrLT5ub3RpZnlU
cmFja09mU2FtcGxlKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4g
dGV4dFRyYWNrUHJpdmF0ZVN0cmVhbVRpbWVvdXRDYWxsYmFjayhJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKiB0cmFjaykKLXsKLSAgICB0cmFjay0+bm90aWZ5VHJhY2tPZlN0cmVhbUNo
YW5nZWQoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUoV2ViVlRUKSwg
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFkKQotICAgICwgbV9zYW1w
bGVUaW1lckhhbmRsZXIoMCkKLSAgICAsIG1fc3RyZWFtVGltZXJIYW5kbGVyKDApCiB7CiAgICAg
bV9ldmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9wYWQuZ2V0KCksIEdTVF9QQURfUFJP
QkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLAogICAgICAgICByZWludGVycHJldF9jYXN0PEdzdFBh
ZFByb2JlQ2FsbGJhY2s+KHRleHRUcmFja1ByaXZhdGVFdmVudENhbGxiYWNrKSwgdGhpcywgMCk7
CkBAIC04MiwzNiArNjgsMjggQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpkaXNjb25uZWN0KCkKIAogICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKG1fcGFkLmdldCgpLCBt
X2V2ZW50UHJvYmUpOwogCi0gICAgaWYgKG1fc3RyZWFtVGltZXJIYW5kbGVyKQotICAgICAgICBn
X3NvdXJjZV9yZW1vdmUobV9zdHJlYW1UaW1lckhhbmRsZXIpOworICAgIG1fc3RyZWFtVGltZXJI
YW5kbGVyLmNhbmNlbCgpOwogCiAgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6ZGlzY29u
bmVjdCgpOwogfQogCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewotICAgIGlmIChtX3NhbXBsZVRp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fc2FtcGxlVGltZXJIYW5kbGVy
KTsKKyAgICBtX3NhbXBsZVRpbWVySGFuZGxlci5jYW5jZWwoKTsKICAgICB7CiAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2sobV9zYW1wbGVNdXRleCk7CiAgICAgICAgIG1fcGVuZGluZ1NhbXBsZXMu
YXBwZW5kKHNhbXBsZSk7CiAgICAgfQotICAgIG1fc2FtcGxlVGltZXJIYW5kbGVyID0gZ190aW1l
b3V0X2FkZCgwLAotICAgICAgICByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih0ZXh0VHJh
Y2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9zYW1wbGVUaW1l
ckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUiLCBzdGQ6OmJpbmQoJkluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUsIHRoaXMpKTsKIH0KIAogdm9pZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKCkKIHsKLSAgICBpZiAo
bV9zdHJlYW1UaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3N0cmVhbVRp
bWVySGFuZGxlcik7Ci0gICAgbV9zdHJlYW1UaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRfYWRkKDAs
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRleHRUcmFja1ByaXZhdGVT
dHJlYW1UaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX3N0cmVhbVRpbWVySGFuZGxlci5z
Y2hlZHVsZSgiW1dlYktpdF0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5
VHJhY2tPZlN0cmVhbUNoYW5nZWQiLCBzdGQ6OmJpbmQoJkluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkLCB0aGlzKSk7CiB9CiAKIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7
Ci0gICAgbV9zYW1wbGVUaW1lckhhbmRsZXIgPSAwOwotCiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0
U2FtcGxlPiA+IHNhbXBsZXM7CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2Ft
cGxlTXV0ZXgpOwpAQCAtMTQyLDggKzEyMCw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQogewotICAgIG1f
c3RyZWFtVGltZXJIYW5kbGVyID0gMDsKLQogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50ID0g
YWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwKICAgICAgICAg
R1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwogICAgIGlmICghZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAyODVjZDg2
Li5hZjAwYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVy
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BT
b3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw4ICs2Miw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihnaW50IGlu
ZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwogCi0gICAgZ3VpbnQgbV9zYW1wbGVUaW1lckhhbmRsZXI7
Ci0gICAgZ3VpbnQgbV9zdHJlYW1UaW1lckhhbmRsZXI7CisgICAgR01haW5Mb29wU291cmNlIG1f
c2FtcGxlVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3N0cmVhbVRpbWVySGFu
ZGxlcjsKICAgICBndWxvbmcgbV9ldmVudFByb2JlOwogICAgIFZlY3RvcjxHUmVmUHRyPEdzdFNh
bXBsZT4gPiBtX3BlbmRpbmdTYW1wbGVzOwogICAgIFN0cmluZyBtX3N0cmVhbUlkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0NGJlYTMy
Li5hYzYwY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtNTgsNyArNTgsNyBAQAogCiAvLyBNYXggaW50ZXJ2YWwgaW4gc2Vjb25kcyB0
byBzdGF5IGluIHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwKIC8vIHN0YXRlIGNoYW5nZSByZXF1
ZXN0cy4KLXN0YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsKIAog
R1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNk
ZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcKQEAgLTkyLDQ2
ICs5MiwxOCBAQCBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5nZWRDYWxs
YmFjayhHT2JqZWN0KiwgTWVkaWFQbGF5ZXJQcml2YXRlRwogICAgIHBsYXllci0+YXVkaW9DaGFu
Z2VkKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5n
ZVRpbWVvdXRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKLXsK
LSAgICAvLyBUaGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUgdGltZW91dCBzb3VyY2UgY3JlYXRl
ZCBpbiA6OmF1ZGlvQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mQXVkaW8oKTsK
LSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVy
dGllc0NhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3QsIGdjaGFyKiwKICAg
ICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPnNl
dEF1ZGlvU3RyZWFtUHJvcGVydGllcyhvYmplY3QpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gbWVk
aWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCi17Ci0gICAgLy8gVGhpcyBpcyB0aGUgY2FsbGJhY2sgb2Yg
dGhlIHRpbWVvdXQgc291cmNlIGNyZWF0ZWQgaW4gOjp2aWRlb0NoYW5nZWQuCi0gICAgcGxheWVy
LT5ub3RpZnlQbGF5ZXJPZlZpZGVvKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMg
Z2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNr
KE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMg
dGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6dmlkZW9DYXBz
Q2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCk7Ci0gICAgcmV0
dXJuIEZBTFNFOwotfQotCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogc3RhdGljIHZvaWQgbWVk
aWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayhHT2JqZWN0KiwgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcGxheWVyLT50ZXh0Q2hhbmdlZCgpOwog
fQogCi1zdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZVRpbWVvdXRD
YWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKLXsKLSAgICAvLyBU
aGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUgdGltZW91dCBzb3VyY2UgY3JlYXRlZCBpbiA6OnRl
eHRDaGFuZ2VkLgotICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZUZXh0KCk7Ci0gICAgcmV0dXJu
IEZBTFNFOwotfQotCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBtZWRpYVBsYXllclByaXZhdGVOZXdU
ZXh0U2FtcGxlQ2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciog
cGxheWVyKQogewogICAgIHBsYXllci0+bmV3VGV4dFNhbXBsZSgpOwpAQCAtMTM5LDE0ICsxMTEs
NiBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiBtZWRpYVBsYXllclByaXZhdGVOZXdUZXh0U2FtcGxl
Q2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxheQogfQogI2VuZGlmCiAKLXN0YXRpYyBnYm9vbGVh
biBtZWRpYVBsYXllclByaXZhdGVSZWFkeVN0YXRlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNr
IG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6Y2hhbmdlUGlwZWxpbmVTdGF0ZS4K
LSAgICAvLyBSZXNldCBwaXBlbGluZSBpZiB3ZSBhcmUgc2l0dGluZyBvbiBSRUFEWSBzdGF0ZSB3
aGVuIHRpbWVvdXQgaXMgcmVhY2hlZAotICAgIHBsYXllci0+Y2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfTlVMTCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgdm9pZCBtZWRp
YVBsYXllclByaXZhdGVQbHVnaW5JbnN0YWxsZXJSZXN1bHRGdW5jdGlvbihHc3RJbnN0YWxsUGx1
Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogcGxheWVyID0gcmVpbnRlcnByZXRfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7CkBAIC0yNDksMTEgKzIxMyw2IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpCiAgICAgLCBtX3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKICAg
ICAsIG1faGFzVmlkZW8oZmFsc2UpCiAgICAgLCBtX2hhc0F1ZGlvKGZhbHNlKQotICAgICwgbV9h
dWRpb1RpbWVySGFuZGxlcigwKQotICAgICwgbV90ZXh0VGltZXJIYW5kbGVyKDApCi0gICAgLCBt
X3ZpZGVvVGltZXJIYW5kbGVyKDApCi0gICAgLCBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxlcigwKQot
ICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcigwKQogICAgICwgbV90b3RhbEJ5dGVzKC0xKQogICAg
ICwgbV9wcmVzZXJ2ZXNQaXRjaChmYWxzZSkKICAgICAsIG1fcmVxdWVzdGVkU3RhdGUoR1NUX1NU
QVRFX1ZPSURfUEVORElORykKQEAgLTI4NSw4ICsyNDQsNyBAQCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QobV9hdXRvQXVkaW9TaW5rLmdl
dCgpKSwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHNldEF1ZGlvU3Ry
ZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAobV9yZWFkeVRpbWVySGFu
ZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fcmVhZHlUaW1lckhhbmRsZXIpOworICAg
IG1fcmVhZHlUaW1lckhhbmRsZXIuY2FuY2VsKCk7CiAKICAgICBpZiAobV9wbGF5QmluKSB7CiAg
ICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9i
dXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsKQEAgLTMwOCwxOCArMjY2LDYgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
KCkKIAogICAgIEdSZWZQdHI8R3N0UGFkPiB2aWRlb1NpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksICJzaW5rIikpOwog
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh2aWRlb1NpbmtQYWQuZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lZGlhUGxheWVyUHJpdmF0ZVZpZGVvU2lu
a0NhcHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLQotICAgIGlmIChtX3ZpZGVvVGltZXJIYW5k
bGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV92aWRlb1RpbWVySGFuZGxlcik7Ci0KLSAg
ICBpZiAobV9hdWRpb1RpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fYXVk
aW9UaW1lckhhbmRsZXIpOwotCi0gICAgaWYgKG1fdGV4dFRpbWVySGFuZGxlcikKLSAgICAgICAg
Z19zb3VyY2VfcmVtb3ZlKG1fdGV4dFRpbWVySGFuZGxlcik7Ci0KLSAgICBpZiAobV92aWRlb0Nh
cHNUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3ZpZGVvQ2Fwc1RpbWVy
SGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKGNv
bnN0IFN0cmluZyYgdXJsKQpAQCAtNDQzLDEyICszODksMTEgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCiAg
ICAgLy8gaWYgd2Ugc3RheSBmb3IgdG9vIGxvbmcgb24gUkVBRFkuCiAgICAgLy8gQWxzbyBsZXRz
IHJlbW92ZSB0aGUgdGltZXIgaWYgd2UgcmVxdWVzdCBhIHN0YXRlIGNoYW5nZSBmb3IgYW55IHN0
YXRlIG90aGVyIHRoYW4gUkVBRFkuCiAgICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzM1NAotICAgIGlmIChuZXdTdGF0ZSA9PSBHU1RfU1RB
VEVfUkVBRFkgJiYgIW1fcmVhZHlUaW1lckhhbmRsZXIpIHsKLSAgICAgICAgbV9yZWFkeVRpbWVy
SGFuZGxlciA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyhnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWws
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZVJlYWR5U3Rh
dGVUaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlf
aWQobV9yZWFkeVRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1lZGlhUGxheWVyUHJpdmF0ZVJlYWR5
U3RhdGVUaW1lb3V0Q2FsbGJhY2siKTsKLSAgICB9IGVsc2UgaWYgKG5ld1N0YXRlICE9IEdTVF9T
VEFURV9SRUFEWSAmJiBtX3JlYWR5VGltZXJIYW5kbGVyKSB7Ci0gICAgICAgIGdfc291cmNlX3Jl
bW92ZShtX3JlYWR5VGltZXJIYW5kbGVyKTsKLSAgICAgICAgbV9yZWFkeVRpbWVySGFuZGxlciA9
IDA7CisgICAgaWYgKG5ld1N0YXRlID09IEdTVF9TVEFURV9SRUFEWSAmJiAhbV9yZWFkeVRpbWVy
SGFuZGxlci5pc1NjaGVkdWxlZCgpKSB7CisgICAgICAgIG1fcmVhZHlUaW1lckhhbmRsZXIuc2No
ZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVSZWFkeVN0YXRlVGlt
ZW91dENhbGxiYWNrIiwgW3RoaXNdIHsgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfTlVM
TCk7IH0sCisgICAgICAgICAgICBzdGQ6OmNocm9ubzo6c2Vjb25kcyhnUmVhZHlTdGF0ZVRpbWVy
SW50ZXJ2YWwpKTsKKyAgICB9IGVsc2UgaWYgKG5ld1N0YXRlICE9IEdTVF9TVEFURV9SRUFEWSAm
JiBtX3JlYWR5VGltZXJIYW5kbGVyLmlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgbV9yZWFkeVRp
bWVySGFuZGxlci5jYW5jZWwoKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2OSwy
NCArNjE0LDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVraW5nKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCgp
CiB7Ci0gICAgaWYgKG1fdmlkZW9UaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX3ZpZGVvVGltZXJIYW5kbGVyKTsKLSAgICBtX3ZpZGVvVGltZXJIYW5kbGVyID0gZ19pZGxl
X2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVu
Yz4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAw
KTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX3ZpZGVvVGltZXJIYW5kbGVyLCAiW1dl
YktpdF0gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAg
ICBtX3ZpZGVvVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvLCB0aGlzKSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NhcHNDaGFuZ2VkKCkKIHsKLSAgICBpZiAobV92
aWRlb0NhcHNUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3ZpZGVvQ2Fw
c1RpbWVySGFuZGxlcik7Ci0gICAgbV92aWRlb0NhcHNUaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRf
YWRkKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZVZp
ZGVvQ2Fwc0NoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc291cmNlX3NldF9u
YW1lX2J5X2lkKG1fdmlkZW9DYXBzVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQ
cml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV92aWRlb0NhcHNU
aW1lckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dmlkZW9DYXBzQ2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvQ2FwcywgdGhpcykpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiB7Ci0gICAgbV92aWRl
b1RpbWVySGFuZGxlciA9IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9IDA7CiAgICAgaWYgKG1f
cGxheUJpbikKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgIm4tdmlkZW8i
LCAmbnVtVHJhY2tzLCBOVUxMKTsKQEAgLTcyNCwyMyArNjYxLDE3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCkKIHsKLSAgICBt
X3ZpZGVvQ2Fwc1RpbWVySGFuZGxlciA9IDA7CiAgICAgbV92aWRlb1NpemUgPSBJbnRTaXplKCk7
CiAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRW5naW5lVXBk
YXRlZChtX3BsYXllcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjph
dWRpb0NoYW5nZWQoKQogewotICAgIGlmIChtX2F1ZGlvVGltZXJIYW5kbGVyKQotICAgICAgICBn
X3NvdXJjZV9yZW1vdmUobV9hdWRpb1RpbWVySGFuZGxlcik7Ci0gICAgbV9hdWRpb1RpbWVySGFu
ZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIHJlaW50ZXJwcmV0X2Nh
c3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENhbGxi
YWNrKSwgdGhpcywgMCk7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQobV9hdWRpb1RpbWVy
SGFuZGxlciwgIltXZWJLaXRdIG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENh
bGxiYWNrIik7CisgICAgbV9hdWRpb1RpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbywgdGhpcykpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiB7Ci0gICAgbV9hdWRpb1RpbWVySGFuZGxlciA9IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9
IDA7CiAgICAgaWYgKG1fcGxheUJpbikKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5n
ZXQoKSwgIm4tYXVkaW8iLCAmbnVtVHJhY2tzLCBOVUxMKTsKQEAgLTc3OSwxNiArNzEwLDExIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dGV4dENoYW5nZWQoKQogewotICAgIGlmIChtX3RleHRUaW1lckhhbmRsZXIpCi0gICAgICAg
IGdfc291cmNlX3JlbW92ZShtX3RleHRUaW1lckhhbmRsZXIpOwotICAgIG1fdGV4dFRpbWVySGFu
ZGxlciA9IGdfdGltZW91dF9hZGQoMCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obWVk
aWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdf
c291cmNlX3NldF9uYW1lX2J5X2lkKG1fdGV4dFRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1lZGlh
UGxheWVyUHJpdmF0ZVRleHRDaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAgICBtX3RleHRUaW1l
ckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
dGV4dENoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5UGxheWVyT2ZUZXh0LCB0aGlzKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogewotICAgIG1fdGV4dFRpbWVySGFuZGxlciA9
IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9IDA7CiAgICAgaWYgKG1fcGxheUJpbikKICAgICAg
ICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgIm4tdGV4dCIsICZudW1UcmFja3MsIE5V
TEwpOwpAQCAtMTY0MCwxMCArMTU2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IpCiAgICAg
fQogCiAgICAgLy8gTG9hZGluZyBmYWlsZWQsIHJlbW92ZSByZWFkeSB0aW1lci4KLSAgICBpZiAo
bV9yZWFkeVRpbWVySGFuZGxlcikgewotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9yZWFkeVRp
bWVySGFuZGxlcik7Ci0gICAgICAgIG1fcmVhZHlUaW1lckhhbmRsZXIgPSAwOwotICAgIH0KKyAg
ICBtX3JlYWR5VGltZXJIYW5kbGVyLmNhbmNlbCgpOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJp
bmc+IG1pbWVUeXBlQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGEzNzBkYTMuLmMzY2ZlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvaW5zdGFsbC1wbHVnaW5zLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3Vy
Y2UuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VH
U3RyZWFtZXIuaCIKQEAgLTE4OSwxMSArMTkwLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Zv
bHVtZUFuZE11dGVJbml0aWFsaXplZDsKICAgICBib29sIG1faGFzVmlkZW87CiAgICAgYm9vbCBt
X2hhc0F1ZGlvOwotICAgIGd1aW50IG1fYXVkaW9UaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV90
ZXh0VGltZXJIYW5kbGVyOwotICAgIGd1aW50IG1fdmlkZW9UaW1lckhhbmRsZXI7Ci0gICAgZ3Vp
bnQgbV92aWRlb0NhcHNUaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV9yZWFkeVRpbWVySGFuZGxl
cjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9hdWRpb1RpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxv
b3BTb3VyY2UgbV90ZXh0VGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3ZpZGVv
VGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxl
cjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9yZWFkeVRpbWVySGFuZGxlcjsKICAgICBtdXRhYmxl
IGxvbmcgbV90b3RhbEJ5dGVzOwogICAgIFVSTCBtX3VybDsKICAgICBib29sIG1fcHJlc2VydmVz
UGl0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKaW5kZXggODVjYzMxNS4uMTVhNTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzIsMjYgKzcyLDEyIEBA
IHN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2Jq
ZWN0KiwgR1BhcmFtU3BlYyosIE1lZGlhCiAgICAgcGxheWVyLT52b2x1bWVDaGFuZ2VkKCk7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVWb2x1bWVDaGFuZ2VUaW1lb3V0
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQotewotICAg
IC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGlu
IDo6dm9sdW1lQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdl
KCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZh
dGVNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQogewogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdo
ZW4gbV92b2x1bWVFbGVtZW50IHJlY2VpdmVzIHRoZSBub3RpZnk6Om11dGUgc2lnbmFsLgogICAg
IHBsYXllci0+bXV0ZUNoYW5nZWQoKTsKIH0KIAotc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVy
UHJpdmF0ZU11dGVDaGFuZ2VUaW1lb3V0Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZSogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0
aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6bXV0ZUNoYW5nZWQuCi0gICAgcGxheWVyLT5ub3Rp
ZnlQbGF5ZXJPZk11dGUoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIG1l
ZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RCdWZm
ZXIgKmJ1ZmZlciwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyUHJpdmF0
ZSkKIHsKICAgICBwbGF5ZXJQcml2YXRlLT50cmlnZ2VyUmVwYWludChidWZmZXIpOwpAQCAtMTAz
LDggKzg5LDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fcmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXll
cjo6RW1wdHkpCiAgICAgLCBtX2J1ZmZlcigwKQotICAgICwgbV92b2x1bWVUaW1lckhhbmRsZXIo
MCkKLSAgICAsIG1fbXV0ZVRpbWVySGFuZGxlcigwKQogICAgICwgbV9yZXBhaW50SGFuZGxlcigw
KQogICAgICwgbV92b2x1bWVTaWduYWxIYW5kbGVyKDApCiAgICAgLCBtX211dGVTaWduYWxIYW5k
bGVyKDApCkBAIC0xMzQsMTIgKzExOCw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKIAogICAgIG1fcGxheWVyID0g
MDsKIAotICAgIGlmIChtX211dGVUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX211dGVUaW1lckhhbmRsZXIpOwotCi0gICAgaWYgKG1fdm9sdW1lVGltZXJIYW5kbGVyKQot
ICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV92b2x1bWVUaW1lckhhbmRsZXIpOwotCiAgICAgaWYg
KG1fdm9sdW1lU2lnbmFsSGFuZGxlcikgewogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nv
bm5lY3QobV92b2x1bWVFbGVtZW50LmdldCgpLCBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIpOwogICAg
ICAgICBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIgPSAwOwpAQCAtMjMxLDggKzIwOSw2IEBAIGZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZSgpIGNvbnN0CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFu
Z2UoKQogewotICAgIG1fdm9sdW1lVGltZXJIYW5kbGVyID0gMDsKLQogICAgIGlmICghbV9wbGF5
ZXIgfHwgIW1fdm9sdW1lRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGRvdWJsZSB2b2x1
bWU7CkBAIC0yNDYsMTAgKzIyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFuZ2UoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZUNoYW5nZWQoKQogewotICAgIGlmIChtX3ZvbHVtZVRp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdm9sdW1lVGltZXJIYW5kbGVy
KTsKLSAgICBtX3ZvbHVtZVRpbWVySGFuZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZ
X0RFRkFVTFQsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0
ZVZvbHVtZUNoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMsIDApOwotICAgIGdfc291cmNlX3Nl
dF9uYW1lX2J5X2lkKG1fdm9sdW1lVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQ
cml2YXRlVm9sdW1lQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV92b2x1bWVUaW1lckhh
bmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnZvbHVtZUNoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6Om5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlLCB0aGlzKSk7CiB9CiAKIE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmV0d29ya1N0
YXRlKCkgY29uc3QKQEAgLTI4Nyw4ICsyNjAsNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om11dGVkKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJPZk11dGUoKQogewotICAgIG1fbXV0ZVRpbWVySGFuZGxl
ciA9IDA7Ci0KICAgICBpZiAoIW1fcGxheWVyIHx8ICFtX3ZvbHVtZUVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMjk5LDEzICsyNzAsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWQoKQogewotICAgIGlmIChtX211dGVUaW1lckhh
bmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX211dGVUaW1lckhhbmRsZXIpOwotICAg
IG1fbXV0ZVRpbWVySGFuZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQs
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZU11dGVDaGFu
Z2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAwKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9p
ZChtX211dGVUaW1lckhhbmRsZXIsICJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVNdXRlQ2hh
bmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV9tdXRlVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJb
V2ViS2l0XSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCIsIHN0
ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZN
dXRlLCB0aGlzKSk7CiB9CiAKLQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKaW5kZXggN2MzOGJkOC4uMTNjYTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSA8Z2xpYi5oPgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oIgpAQCAtMTE5LDggKzEyMCw4IEBAIHByb3RlY3RlZDoKICAgICBJbnRT
aXplIG1fc2l6ZTsKICAgICBHTXV0ZXgqIG1fYnVmZmVyTXV0ZXg7CiAgICAgR3N0QnVmZmVyKiBt
X2J1ZmZlcjsKLSAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lVGltZXJIYW5kbGVyOwotICAgIHVu
c2lnbmVkIGxvbmcgbV9tdXRlVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3Zv
bHVtZVRpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9tdXRlVGltZXJIYW5kbGVy
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9yZXBhaW50SGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25n
IG1fdm9sdW1lU2lnbmFsSGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fbXV0ZVNpZ25hbEhh
bmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5k
ZXggMGVlOGE3Yi4uYTI5OWQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKQEAgLTUzLDI0ICs1MywxMCBAQCBzdGF0aWMgdm9pZCB0cmFja1ByaXZh
dGVUYWdzQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgVHJhY2tQcml2YXRl
QgogICAgIHRyYWNrLT50YWdzQ2hhbmdlZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gdHJhY2tQ
cml2YXRlQWN0aXZlQ2hhbmdlVGltZW91dENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIqIHRyYWNrKQotewotICAgIHRyYWNrLT5ub3RpZnlUcmFja09mQWN0aXZlQ2hhbmdlZCgpOwot
ICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHRyYWNrUHJpdmF0ZVRhZ3ND
aGFuZ2VUaW1lb3V0Q2FsbGJhY2soVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciogdHJhY2spCi17
Ci0gICAgdHJhY2stPm5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
IHBhZCkKICAgICA6IG1faW5kZXgoaW5kZXgpCiAgICAgLCBtX3BhZChwYWQpCiAgICAgLCBtX293
bmVyKG93bmVyKQotICAgICwgbV9hY3RpdmVUaW1lckhhbmRsZXIoMCkKLSAgICAsIG1fdGFnVGlt
ZXJIYW5kbGVyKDApCiB7CiAgICAgQVNTRVJUKG1fcGFkKTsKIApAQCAtOTcsMTMgKzgzLDggQEAg
dm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkKICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wYWQuZ2V0KCksCiAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHRyYWNrUHJpdmF0ZVRhZ3NDaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKIAotICAgIGlmIChtX2FjdGl2ZVRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2Vf
cmVtb3ZlKG1fYWN0aXZlVGltZXJIYW5kbGVyKTsKLSAgICBtX2FjdGl2ZVRpbWVySGFuZGxlciA9
IDA7Ci0KLSAgICBpZiAobV90YWdUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX3RhZ1RpbWVySGFuZGxlcik7Ci0gICAgbV90YWdUaW1lckhhbmRsZXIgPSAwOworICAgIG1f
YWN0aXZlVGltZXJIYW5kbGVyLmNhbmNlbCgpOworICAgIG1fdGFnVGltZXJIYW5kbGVyLmNhbmNl
bCgpOwogCiAgICAgbV9wYWQuY2xlYXIoKTsKICAgICBtX3RhZ3MuY2xlYXIoKTsKQEAgLTExMSwx
NyArOTIsMTIgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkK
IAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjphY3RpdmVDaGFuZ2VkKCkKIHsKLSAg
ICBpZiAobV9hY3RpdmVUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX2Fj
dGl2ZVRpbWVySGFuZGxlcik7Ci0gICAgbV9hY3RpdmVUaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRf
YWRkKDAsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRyYWNrUHJpdmF0
ZUFjdGl2ZUNoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc291cmNlX3NldF9u
YW1lX2J5X2lkKG1fYWN0aXZlVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gdHJhY2tQcml2YXRlQWN0
aXZlQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV9hY3RpdmVUaW1lckhhbmRsZXIuc2No
ZWR1bGUoIltXZWJLaXRdIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZB
Y3RpdmVDaGFuZ2VkIiwgc3RkOjpiaW5kKCZUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mQWN0aXZlQ2hhbmdlZCwgdGhpcykpOwogfQogCiB2b2lkIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKIHsKLSAgICBpZiAobV90YWdUaW1lckhhbmRsZXIp
Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3RhZ1RpbWVySGFuZGxlcik7CisgICAgbV90YWdU
aW1lckhhbmRsZXIuY2FuY2VsKCk7CiAKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+IHRhZ3M7CiAg
ICAgZ19vYmplY3RfZ2V0KG1fcGFkLmdldCgpLCAidGFncyIsICZ0YWdzLm91dFB0cigpLCBOVUxM
KTsKQEAgLTEzMCwxNCArMTA2LDExIEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
dGFnc0NoYW5nZWQoKQogICAgICAgICBtX3RhZ3Muc3dhcCh0YWdzKTsKICAgICB9CiAKLSAgICBt
X3RhZ1RpbWVySGFuZGxlciA9IGdfdGltZW91dF9hZGQoMCwKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxHU291cmNlRnVuYz4odHJhY2tQcml2YXRlVGFnc0NoYW5nZVRpbWVvdXRDYWxsYmFjayks
IHRoaXMpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fdGFnVGltZXJIYW5kbGVyLCAi
W1dlYktpdF0gdHJhY2tQcml2YXRlVGFnc0NoYW5nZVRpbWVvdXRDYWxsYmFjayIpOworICAgIG1f
dGFnVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQiLCBzdGQ6OmJpbmQoJlRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCwgdGhpcykpOwogfQogCiB2b2lk
IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCkK
IHsKLSAgICBtX2FjdGl2ZVRpbWVySGFuZGxlciA9IDA7CiAgICAgaWYgKCFtX3BhZCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNzUsNyArMTQ4LDYgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMK
IAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5n
ZWQoKQogewotICAgIG1fdGFnVGltZXJIYW5kbGVyID0gMDsKICAgICBpZiAoIW1fcGFkKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5o
CmluZGV4IGM4MWVkOWEuLmUyMDAwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDggKzY4LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwg
U3RyaW5nJiB2YWx1ZSk7CiAKICAgICBUcmFja1ByaXZhdGVCYXNlKiBtX293bmVyOwotICAgIGd1
aW50IG1fYWN0aXZlVGltZXJIYW5kbGVyOwotICAgIGd1aW50IG1fdGFnVGltZXJIYW5kbGVyOwor
ICAgIEdNYWluTG9vcFNvdXJjZSBtX2FjdGl2ZVRpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxvb3BT
b3VyY2UgbV90YWdUaW1lckhhbmRsZXI7CiAKICAgICBNdXRleCBtX3RhZ011dGV4OwogICAgIEdS
ZWZQdHI8R3N0VGFnTGlzdD4gbV90YWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cAppbmRleCAxN2QwYWVmLi4zOGU3ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxn
c3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dNdXRleExvY2tlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTc0LDcgKzc1
LDcgQEAgc3RhdGljIGd1aW50IHdlYmtpdFZpZGVvU2lua1NpZ25hbHNbTEFTVF9TSUdOQUxdID0g
eyAwLCB9OwogCiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAgIEdzdEJ1ZmZl
ciogYnVmZmVyOwotICAgIGd1aW50IHRpbWVvdXRJZDsKKyAgICBHTWFpbkxvb3BTb3VyY2UgdGlt
ZW91dFNvdXJjZTsKICAgICBHTXV0ZXgqIGJ1ZmZlck11dGV4OwogICAgIEdDb25kKiBkYXRhQ29u
ZGl0aW9uOwogCkBAIC0xMDAsNiArMTAxLDcgQEAgR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2Vi
S2l0VmlkZW9TaW5rLCB3ZWJraXRfdmlkZW9fc2luaywgR1NUX1RZUEVfVklERU9fU0lOSywKIHN0
YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2luaXQoV2ViS2l0VmlkZW9TaW5rKiBzaW5rKQog
ewogICAgIHNpbmstPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2luaywgV0VC
S0lUX1RZUEVfVklERU9fU0lOSywgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk7CisgICAgbmV3IChz
aW5rLT5wcml2KSBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKCk7CiAjaWYgR0xJQl9DSEVDS19WRVJT
SU9OKDIsIDMxLCAwKQogICAgIHNpbmstPnByaXYtPmRhdGFDb25kaXRpb24gPSBuZXcgR0NvbmQ7
CiAgICAgZ19jb25kX2luaXQoc2luay0+cHJpdi0+ZGF0YUNvbmRpdGlvbik7CkBAIC0xMTMsMjYg
KzExNSwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19pbml0KFdlYktpdFZpZGVv
U2luayogc2luaykKICAgICBnc3RfdmlkZW9faW5mb19pbml0KCZzaW5rLT5wcml2LT5pbmZvKTsK
IH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayhncG9p
bnRlciBkYXRhKQorc3RhdGljIHZvaWQgd2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrKFdl
YktpdFZpZGVvU2luayogc2luaykKIHsKLSAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSByZWlu
dGVycHJldF9jYXN0PFdlYktpdFZpZGVvU2luayo+KGRhdGEpOwogICAgIFdlYktpdFZpZGVvU2lu
a1ByaXZhdGUqIHByaXYgPSBzaW5rLT5wcml2OwogCiAgICAgR011dGV4TG9ja2VyIGxvY2socHJp
di0+YnVmZmVyTXV0ZXgpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gcHJpdi0+YnVmZmVyOwog
ICAgIHByaXYtPmJ1ZmZlciA9IDA7Ci0gICAgcHJpdi0+dGltZW91dElkID0gMDsKIAogICAgIGlm
ICghYnVmZmVyIHx8IHByaXYtPnVubG9ja2VkIHx8IFVOTElLRUxZKCFHU1RfSVNfQlVGRkVSKGJ1
ZmZlcikpKSB7CiAgICAgICAgIGdfY29uZF9zaWduYWwocHJpdi0+ZGF0YUNvbmRpdGlvbik7Ci0g
ICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdfc2ln
bmFsX2VtaXQoc2luaywgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tSRVBBSU5UX1JFUVVFU1RFRF0s
IDAsIGJ1ZmZlcik7CiAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwogICAgIGdfY29uZF9z
aWduYWwocHJpdi0+ZGF0YUNvbmRpdGlvbik7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0
YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFz
ZVNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQpAQCAtMjE2LDkgKzIxNCw5IEBAIHN0YXRpYyBHc3RG
bG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdz
dEJ1ZmZlciogYnVmCiAgICAgLy8gVGhpcyBzaG91bGQgbGlrZWx5IHVzZSBhIGxvd2VyIHByaW9y
aXR5LCBidXQgZ2xpYiBjdXJyZW50bHkgc3RhcnZlcwogICAgIC8vIGxvd2VyIHByaW9yaXR5IHNv
dXJjZXMuCiAgICAgLy8gU2VlOiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjEwODMwLgotICAgIHByaXYtPnRpbWVvdXRJZCA9IGdfdGltZW91dF9hZGRfZnVsbChH
X1BSSU9SSVRZX0RFRkFVTFQsIDAsIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzdF9vYmplY3RfcmVmKHNp
bmspLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7
Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+dGltZW91dElkLCAiW1dlYktpdF0g
d2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrIik7CisgICAgZ3N0X29iamVjdF9yZWYoc2lu
ayk7CisgICAgcHJpdi0+dGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2Via2l0Vmlk
ZW9TaW5rVGltZW91dENhbGxiYWNrIiwgc3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRD
YWxsYmFjaywgc2luayksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NpbmtdIHsgZ3N0
X29iamVjdF91bnJlZihzaW5rKTsgfSk7CiAKICAgICBnX2NvbmRfd2FpdChwcml2LT5kYXRhQ29u
ZGl0aW9uLCBwcml2LT5idWZmZXJNdXRleCk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAt
MjUyLDYgKzI1MCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtEaXNwb3NlKEdPYmpl
Y3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9i
amVjdCk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua0ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBXRUJLSVRfVklERU9fU0lOSyhvYmplY3QpLT5wcml2LT5+V2ViS2l0
VmlkZW9TaW5rUHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHBhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcGFyYW1ldGVyU3BlYykKIHsKICAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBX
RUJLSVRfVklERU9fU0lOSyhvYmplY3QpOwpAQCAtMzc2LDYgKzM4MCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNz
KQogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFZpZGVv
U2lua1ByaXZhdGUpKTsKIAogICAgIGdvYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFZpZGVv
U2lua0Rpc3Bvc2U7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFZpZGVvU2lu
a0ZpbmFsaXplOwogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0VmlkZW9T
aW5rR2V0UHJvcGVydHk7CiAKICAgICBiYXNlU2lua0NsYXNzLT51bmxvY2sgPSB3ZWJraXRWaWRl
b1NpbmtVbmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCA0MTJhOGQ3Li5hYTcyMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRN
ZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNyYy5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1
dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BT
b3VyY2UuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00MywxMSArNDQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X1NvdXJjZSB7CiAgICAgZ3VpbnQ2NCBzaXplOwogICAgIGdib29sZWFuIHBhdXNlZDsKIAotICAg
IGd1aW50IHN0YXJ0SWQ7Ci0gICAgZ3VpbnQgc3RvcElkOwotICAgIGd1aW50IG5lZWREYXRhSWQ7
Ci0gICAgZ3VpbnQgZW5vdWdoRGF0YUlkOwotICAgIGd1aW50IHNlZWtJZDsKKyAgICBHTWFpbkxv
b3BTb3VyY2Ugc3RhcnQ7CisgICAgR01haW5Mb29wU291cmNlIHN0b3A7CisgICAgR01haW5Mb29w
U291cmNlIG5lZWREYXRhOworICAgIEdNYWluTG9vcFNvdXJjZSBlbm91Z2hEYXRhOworICAgIEdN
YWluTG9vcFNvdXJjZSBzZWVrOwogCiAgICAgZ3VpbnQ2NCByZXF1ZXN0ZWRPZmZzZXQ7CiB9IFNv
dXJjZTsKQEAgLTE3Miw2ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3JjX2lu
aXQoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfTUVESUFfU1JDX0dFVF9QUklWQVRFKHNyYyk7CiAgICAgc3JjLT5wcml2ID0g
cHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSgpOwogCiAgICAgcHJp
di0+c291cmNlVmlkZW8uYXBwc3JjID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzcmMi
LCAidmlkZW9hcHBzcmMiKTsKICAgICBnc3RfYXBwX3NyY19zZXRfY2FsbGJhY2tzKEdTVF9BUFBf
U1JDKHByaXYtPnNvdXJjZVZpZGVvLmFwcHNyYyksICZhcHBzcmNDYWxsYmFja3NWaWRlbywgc3Jj
LCAwKTsKQEAgLTE4OCw2ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBwcml2LT5+V2ViS2l0TWVk
aWFTcmNQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZp
bmFsaXplLCAob2JqZWN0KSk7CiB9CkBAIC0yMjMsMzUgKzIyNiwyMyBAQCBzdGF0aWMgdm9pZCB3
ZWJLaXRNZWRpYVNyY0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBH
VmFsdWUqIHZhbAogfQogCiAvLyBtdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZCBhbmQgd2l0
aCBvYmplY3QgdW5sb2NrZWQKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU3Rv
cChXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY1N0
b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHBy
aXYgPSBzcmMtPnByaXY7CiAgICAgZ2Jvb2xlYW4gc2Vla2luZzsKIAogICAgIEdTVF9PQkpFQ1Rf
TE9DSyhzcmMpOwogCi0gICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZDsKKyAg
ICBzZWVraW5nID0gcHJpdi0+c291cmNlVmlkZW8uc2Vlay5pc0FjdGl2ZSgpOwogCi0gICAgaWYg
KHByaXYtPnNvdXJjZVZpZGVvLnN0YXJ0SWQpIHsKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHBy
aXYtPnNvdXJjZVZpZGVvLnN0YXJ0SWQpOwotICAgICAgICBwcml2LT5zb3VyY2VWaWRlby5zdGFy
dElkID0gMDsKLSAgICB9CisgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnQuY2FuY2VsKCk7CiAK
ICAgICBwcml2LT5wbGF5ZXIgPSAwOwogICAgIHByaXYtPnBsYXliaW4gPSAwOwogCi0gICAgaWYg
KHByaXYtPnNvdXJjZVZpZGVvLm5lZWREYXRhSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShw
cml2LT5zb3VyY2VWaWRlby5uZWVkRGF0YUlkKTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5uZWVk
RGF0YUlkID0gMDsKLQotICAgIGlmIChwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhSWQpCi0g
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhSWQpOwot
ICAgIHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCA9IDA7Ci0KLSAgICBpZiAocHJpdi0+
c291cmNlVmlkZW8uc2Vla0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c291cmNl
VmlkZW8uc2Vla0lkKTsKLQotICAgIHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCA9IDA7CisgICAg
cHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGEuY2FuY2VsKCk7CisgICAgcHJpdi0+c291cmNlVmlk
ZW8uZW5vdWdoRGF0YS5jYW5jZWwoKTsKKyAgICBwcml2LT5zb3VyY2VWaWRlby5zZWVrLmNhbmNl
bCgpOwogCiAgICAgcHJpdi0+c291cmNlVmlkZW8ucGF1c2VkID0gRkFMU0U7CiAgICAgcHJpdi0+
c291cmNlVmlkZW8ub2Zmc2V0ID0gMDsKQEAgLTI2MCw4ICsyNTEsNiBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICBwcml2
LT5kdXJhdGlvbiA9IDA7CiAgICAgcHJpdi0+bmJTb3VyY2UgPSAwOwogCi0gICAgcHJpdi0+c291
cmNlVmlkZW8uc3RvcElkID0gMDsKLQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAKICAg
ICBpZiAocHJpdi0+c291cmNlVmlkZW8uYXBwc3JjKSB7CkBAIC0yNzEsNDAgKzI2MCwyNiBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNy
YykKICAgICB9CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIp
OwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFB
dWRpb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlh
QXVkaW9TcmNTdG9wKFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogICAgIGdib29sZWFuIHNlZWtpbmc7CiAKICAgICBH
U1RfT0JKRUNUX0xPQ0soc3JjKTsKIAotICAgIHNlZWtpbmcgPSBwcml2LT5zb3VyY2VBdWRpby5z
ZWVrSWQ7CisgICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZUF1ZGlvLnNlZWsuaXNBY3RpdmUoKTsK
IAotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5zdGFydElkKSB7Ci0gICAgICAgIGdfc291cmNl
X3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5zdGFydElkKTsKLSAgICAgICAgcHJpdi0+c291cmNl
QXVkaW8uc3RhcnRJZCA9IDA7Ci0gICAgfQorICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0YXJ0LmNh
bmNlbCgpOwogCiAgICAgcHJpdi0+cGxheWVyID0gMDsKIAogICAgIHByaXYtPnBsYXliaW4gPSAw
OwogCi0gICAgaWYgKHByaXYtPnNvdXJjZUF1ZGlvLm5lZWREYXRhSWQpCi0gICAgICAgIGdfc291
cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkKTsKLSAgICBwcml2LT5zb3Vy
Y2VBdWRpby5uZWVkRGF0YUlkID0gMDsKLQotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5lbm91
Z2hEYXRhSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5lbm91
Z2hEYXRhSWQpOwotICAgIHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGFJZCA9IDA7Ci0KLSAg
ICBpZiAocHJpdi0+c291cmNlQXVkaW8uc2Vla0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUo
cHJpdi0+c291cmNlQXVkaW8uc2Vla0lkKTsKLQotICAgIHByaXYtPnNvdXJjZUF1ZGlvLnNlZWtJ
ZCA9IDA7CisgICAgcHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEuY2FuY2VsKCk7CisgICAgcHJp
di0+c291cmNlQXVkaW8uZW5vdWdoRGF0YS5jYW5jZWwoKTsKKyAgICBwcml2LT5zb3VyY2VBdWRp
by5zZWVrLmNhbmNlbCgpOwogCiAgICAgcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkID0gRkFMU0U7
CiAKQEAgLTMxNSw4ICsyOTAsNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1Ny
Y1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICBwcml2LT5kdXJhdGlvbiA9IDA7CiAgICAg
cHJpdi0+bmJTb3VyY2UgPSAwOwogCi0gICAgcHJpdi0+c291cmNlQXVkaW8uc3RvcElkID0gMDsK
LQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAKICAgICBpZiAocHJpdi0+c291cmNlQXVk
aW8uYXBwc3JjKSB7CkBAIC0zMjYsMTIgKzI5OSwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
TWVkaWFBdWRpb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICB9CiAKICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIpOwotCi0gICAgcmV0dXJuIEZBTFNF
OwogfQogCiAvLyBtdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZCBhbmQgd2l0aCBvYmplY3Qg
dW5sb2NrZWQKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQoV2ViS2l0
TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNTdGFydChXZWJL
aXRNZWRpYVNyYyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNy
Yy0+cHJpdjsKIApAQCAtMzQwLDE5ICszMTEsMTUgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1l
ZGlhVmlkZW9TcmNTdGFydChXZWJLaXRNZWRpYVNyYyogc3JjKQogICAgICAgICBHU1RfRVJST1Jf
T0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOwogICAgICAgICBHU1RfT0JKRUNUX1VOTE9D
SyhzcmMpOwogICAgICAgICB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RvcChzcmMpOwotICAgICAgICBy
ZXR1cm4gRkFMU0U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcml2LT5zb3VyY2VW
aWRlby5zdGFydElkID0gMDsKLQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJTdGFydGVkIHJlcXVlc3QiKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAogLy8gbXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQgYW5kIHdpdGggb2JqZWN0
IHVubG9ja2VkCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1NyY1N0YXJ0KFdlYktp
dE1lZGlhU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RhcnQoV2Vi
S2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKQEAgLTM2MSwxNSArMzI4LDExIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYUF1ZGlvU3JjU3RhcnQoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICAgICAgR1NUX0VSUk9S
X09CSkVDVChzcmMsICJObyBVUkkgcHJvdmlkZWQiKTsKICAgICAgICAgR1NUX09CSkVDVF9VTkxP
Q0soc3JjKTsKICAgICAgICAgd2ViS2l0TWVkaWFBdWRpb1NyY1N0b3Aoc3JjKTsKLSAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJpdi0+c291cmNl
QXVkaW8uc3RhcnRJZCA9IDA7Ci0KICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhcnRlZCByZXF1ZXN0Iik7Ci0KLSAgICByZXR1cm4gRkFM
U0U7CiB9CiAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRNZWRpYVNyY0NoYW5n
ZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCkBA
IC00MDEsMTkgKzM2NCwyOSBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVk
aWFTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RTdAogICAgIGNhc2UgR1NU
X1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUkVBRFktPlBBVVNFRCIpOwogICAgICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAg
ICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnRJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BS
SU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0
LCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYp
OwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRlby5zdGFy
dElkLCAiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0Iik7Ci0gICAgICAgIHByaXYt
PnNvdXJjZUF1ZGlvLnN0YXJ0SWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZB
VUxULCAwLCAoR1NvdXJjZUZ1bmMpIHdlYktpdE1lZGlhQXVkaW9TcmNTdGFydCwgZ3N0X29iamVj
dF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKLSAgICAgICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uc3RhcnRJZCwgIltXZWJL
aXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTdGFydCIpOworCisgICAgICAgIGdzdF9vYmplY3RfcmVm
KHNyYyk7CisgICAgICAgIHByaXYtPnNvdXJjZVZpZGVvLnN0YXJ0LnNjaGVkdWxlKCJbV2ViS2l0
XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1Ny
Y1N0YXJ0LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAgICBbc3JjXSB7IGdz
dF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CisKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsK
KyAgICAgICAgcHJpdi0+c291cmNlQXVkaW8uc3RhcnQuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktp
dE1lZGlhQXVkaW9TcmNTdGFydCIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RhcnQs
IHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgICAgIFtzcmNdIHsgZ3N0X29iamVj
dF91bnJlZihzcmMpOyB9KTsKKwogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgog
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBBVVNFRC0+UkVBRFkiKTsKICAgICAgICAg
R1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0gICAgICAgIHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCA9
IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykg
d2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5v
dGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lk
KHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhVmlkZW9TcmNT
dG9wIik7Ci0gICAgICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0b3BJZCA9IGdfdGltZW91dF9hZGRf
ZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRp
b1NyY1N0b3AsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVj
dF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYtPnNvdXJjZUF1
ZGlvLnN0b3BJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTdG9wIik7CisKKyAgICAg
ICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RvcC5z
Y2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AiLCBzdGQ6OmJpbmQod2Vi
S2l0TWVkaWFWaWRlb1NyY1N0b3AsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAg
ICAgIFtzcmNdIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKworICAgICAgICBnc3Rfb2Jq
ZWN0X3JlZihzcmMpOworICAgICAgICBwcml2LT5zb3VyY2VBdWRpby5zdG9wLnNjaGVkdWxlKCJb
V2ViS2l0XSB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RvcCIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1
ZGlvU3JjU3RvcCwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICAgICAgW3NyY10g
eyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOworCiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NL
KHNyYyk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC01MTksNDAgKzQ5MiwyMiBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFj
ZSwgZ3BvaW50ZXIpCiB9CiAKIC8vIGFwcHNyYyBjYWxsYmFja3MKLXN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRNZWRpYVZpZGVvU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0
YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYihXZWJLaXRNZWRpYVNy
Yyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsK
IAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIC8vIGFscmVhZHkgc3RvcHBlZAotICAg
IGlmICghcHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+
c291cmNlVmlkZW8ucGF1c2VkID0gRkFMU0U7Ci0gICAgcHJpdi0+c291cmNlVmlkZW8ubmVlZERh
dGFJZCA9IDA7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5D
YihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY05l
ZWREYXRhTWFpbkNiKFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0g
ICAgLy8gYWxyZWFkeSBzdG9wcGVkCi0gICAgaWYgKCFwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0
YUlkKSB7Ci0gICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7Ci0gICAgICAgIHJldHVybiBG
QUxTRTsKLSAgICB9Ci0KICAgICBwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQgPSBGQUxTRTsKLSAg
ICBwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkID0gMDsKICAgICBHU1RfT0JKRUNUX1VOTE9D
SyhzcmMpOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRp
YVZpZGVvU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVz
ZXJEYXRhKQpAQCAtNTYzLDEzICs1MTgsMTQgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRl
b1NyY05lZWREYXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2UKICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIk5lZWQgbW9yZSBkYXRhOiAldSIsIGxlbmd0aCk7CiAK
ICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICBpZiAocHJpdi0+c291cmNlVmlkZW8ubmVl
ZERhdGFJZCB8fCAhcHJpdi0+c291cmNlVmlkZW8ucGF1c2VkKSB7CisgICAgaWYgKHByaXYtPnNv
dXJjZVZpZGVvLm5lZWREYXRhLmlzU2NoZWR1bGVkKCkgfHwgIXByaXYtPnNvdXJjZVZpZGVvLnBh
dXNlZCkgewogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJZCA9IGdfdGltZW91dF9h
ZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFW
aWRlb1NyY05lZWREYXRhTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3Rp
ZnkpIGdzdF9vYmplY3RfdW5yZWYpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYt
PnNvdXJjZVZpZGVvLm5lZWREYXRhSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjTmVl
ZERhdGFNYWluQ2IiKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNvdXJj
ZVZpZGVvLm5lZWREYXRhLnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjTmVl
ZERhdGFNYWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1NyY05lZWREYXRhTWFpbkNi
LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0X29iamVjdF91
bnJlZihzcmMpOyB9KTsKICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogfQogCkBAIC01ODEs
NTAgKzUzNywzMyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFDYihH
c3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZQogICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiTmVlZCBtb3JlIGRhdGE6ICV1IiwgbGVuZ3RoKTsKIAogICAgIEdTVF9PQkpFQ1Rf
TE9DSyhzcmMpOwotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkIHx8ICFwcml2
LT5zb3VyY2VBdWRpby5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+c291cmNlQXVkaW8ubmVlZERh
dGEuaXNTY2hlZHVsZWQoKSB8fCAhcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkKSB7CiAgICAgICAg
IEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBw
cml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJ
VFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFN
YWluQ2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91
bnJlZik7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8ubmVl
ZERhdGFJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5DYiIpOwor
ICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEu
c2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5DYiIsIHN0
ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IsIHNyYyksIEdfUFJJT1JJ
VFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwog
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYVZpZGVvU3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGlj
IHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMq
IHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAK
ICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBp
ZiAoIXByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+
c291cmNlVmlkZW8ucGF1c2VkID0gVFJVRTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hE
YXRhSWQgPSAwOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7Ci0KLSAgICByZXR1cm4gRkFM
U0U7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5vdWdoRGF0YU1h
aW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1Ny
Y0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRp
YVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0soc3Jj
KTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBpZiAoIXByaXYtPnNvdXJjZUF1ZGlvLmVu
b3VnaERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwotICAgICAgICBy
ZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkID0gVFJV
RTsKLSAgICBwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhSWQgPSAwOwogICAgIEdTVF9PQkpF
Q1RfVU5MT0NLKHNyYyk7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyB2b2lkIHdl
YktpdE1lZGlhVmlkZW9TcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRh
dGEpCkBAIC02MzUsMTMgKzU3NCwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVZpZGVvU3Jj
RW5vdWdoRGF0YUNiKEdzdEFwcFNyYyosIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiSGF2ZSBlbm91Z2ggZGF0YSIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NL
KHNyYyk7Ci0gICAgaWYgKHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCB8fCBwcml2LT5z
b3VyY2VWaWRlby5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+c291cmNlVmlkZW8uZW5vdWdoRGF0
YS5pc1NjaGVkdWxlZCgpIHx8IHByaXYtPnNvdXJjZVZpZGVvLnBhdXNlZCkgewogICAgICAgICBH
U1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJp
di0+c291cmNlVmlkZW8uZW5vdWdoRGF0YUlkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJ
VFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYVZpZGVvU3JjRW5vdWdoRGF0
YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0
X3VucmVmKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRlby5l
bm91Z2hEYXRhSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjRW5vdWdoRGF0YU1haW5D
YiIpOworICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlVmlkZW8uZW5v
dWdoRGF0YS5zY2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFN
YWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IsIHNy
YyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVm
KHNyYyk7IH0pOworCiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKIH0KIApAQCAtNjUzLDI4
ICs1OTQsMjcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFDYihH
c3RBcHBTcmMqLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IkhhdmUgZW5vdWdoIGRhdGEiKTsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIGlm
IChwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhSWQgfHwgcHJpdi0+c291cmNlQXVkaW8ucGF1
c2VkKSB7CisgICAgaWYgKHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGEuaXNTY2hlZHVsZWQo
KSB8fCBwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQpIHsKICAgICAgICAgR1NUX09CSkVDVF9VTkxP
Q0soc3JjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByaXYtPnNvdXJjZUF1ZGlv
LmVub3VnaERhdGFJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAs
IChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IsIGdzdF9v
YmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uZW5vdWdoRGF0YUlkLCAi
W1dlYktpdF0gd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IiKTsKKyAgICBnc3Rf
b2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGEuc2NoZWR1
bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiIiwgc3RkOjpi
aW5kKHdlYktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiLCBzcmMpLCBHX1BSSU9SSVRZ
X0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwog
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYVZpZGVvU3JjU2Vla01haW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQg
d2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IoV2ViS2l0TWVkaWFTcmMqKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgc3JjLT5wcml2LT5zb3VyY2VWaWRlby5zZWVrSWQgPSAwOwot
ICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9T
cmNTZWVrTWFpbkNiKFdlYktpdE1lZGlhU3JjKiBzcmMpCisKK3N0YXRpYyB2b2lkIHdlYktpdE1l
ZGlhQXVkaW9TcmNTZWVrTWFpbkNiKFdlYktpdE1lZGlhU3JjKikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHNyYy0+cHJpdi0+c291cmNlQXVkaW8uc2Vla0lkID0gMDsKLSAgICByZXR1
cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla0Rh
dGFDYihHc3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03
MDEsMTAgKzY0MSwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtE
YXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiRG9pbmcgcmFuZ2UtcmVxdWVzdCBzZWVrIik7CiAgICAgcHJpdi0+c291cmNl
VmlkZW8ucmVxdWVzdGVkT2Zmc2V0ID0gb2Zmc2V0OwogCi0gICAgaWYgKHByaXYtPnNvdXJjZVZp
ZGVvLnNlZWtJZCkKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNvdXJjZVZpZGVvLnNl
ZWtJZCk7Ci0gICAgcHJpdi0+c291cmNlVmlkZW8uc2Vla0lkID0gZ190aW1lb3V0X2FkZF9mdWxs
KEdfUFJJT1JJVFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYVZpZGVvU3Jj
U2Vla01haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2Jq
ZWN0X3VucmVmKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRl
by5zZWVrSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla01haW5DYiIpOworICAg
IGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlVmlkZW8uc2Vlay5zY2hlZHVs
ZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IiLCBzdGQ6OmJpbmQod2Vi
S2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAg
ICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOworCiAgICAgR1NUX09CSkVD
VF9VTkxPQ0soc3JjKTsKIAogICAgIHJldHVybiBUUlVFOwpAQCAtNzM0LDEwICs2NzQsMTAgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrRGF0YUNiKEdzdEFwcFNyYyos
IGd1aW50NjQgb2Zmc2V0LCBncG9pbnQKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkRvaW5n
IHJhbmdlLXJlcXVlc3Qgc2VlayIpOwogICAgIHByaXYtPnNvdXJjZUF1ZGlvLnJlcXVlc3RlZE9m
ZnNldCA9IG9mZnNldDsKIAotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5zZWVrSWQpCi0gICAg
ICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5zZWVrSWQpOwotICAgIHByaXYt
PnNvdXJjZUF1ZGlvLnNlZWtJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFV
TFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRpb1NyY1NlZWtNYWluQ2IsIGdzdF9v
YmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uc2Vla0lkLCAiW1dlYktp
dF0gd2ViS2l0TWVkaWFBdWRpb1NyY1NlZWtNYWluQ2IiKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihz
cmMpOworICAgIHByaXYtPnNvdXJjZUF1ZGlvLnNlZWsuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktp
dE1lZGlhQXVkaW9TcmNTZWVrTWFpbkNiIiwgc3RkOjpiaW5kKHdlYktpdE1lZGlhQXVkaW9TcmNT
ZWVrTWFpbkNiLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0
X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAK
ICAgICByZXR1cm4gVFJVRTsKQEAgLTgyMiwxNCArNzYyLDE0IEBAIHZvaWQgTWVkaWFTb3VyY2VD
bGllbnRHc3RyZWFtZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlKQogICAgIEdTVF9ERUJVR19P
QkpFQ1QobV9zcmMsICJIYXZlIEVPUyIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fc3JjKTsK
LSAgICBpZiAoIXByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCkgeworICAgIGlmICghcHJpdi0+c291
cmNlVmlkZW8uc2Vlay5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKG1f
c3JjKTsKICAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShHU1RfQVBQX1NSQyhwcml2
LT5zb3VyY2VWaWRlby5hcHBzcmMpKTsKICAgICB9IGVsc2UKICAgICAgICAgR1NUX09CSkVDVF9V
TkxPQ0sobV9zcmMpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fc3JjKTsKLSAgICBpZiAoIXBy
aXYtPnNvdXJjZUF1ZGlvLnNlZWtJZCkgeworICAgIGlmICghcHJpdi0+c291cmNlQXVkaW8uc2Vl
ay5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKG1fc3JjKTsKICAgICAg
ICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShHU1RfQVBQX1NSQyhwcml2LT5zb3VyY2VBdWRp
by5hcHBzcmMpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggOGNiOGE0ZC4uMjhiOTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29w
U291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR011dGV4TG9ja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KQEAgLTEyNiwxMSArMTI3LDExIEBAIHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7
CiAKICAgICBndWludDY0IHJlcXVlc3RlZE9mZnNldDsKIAotICAgIGd1aW50IHN0YXJ0SUQ7Ci0g
ICAgZ3VpbnQgc3RvcElEOwotICAgIGd1aW50IG5lZWREYXRhSUQ7Ci0gICAgZ3VpbnQgZW5vdWdo
RGF0YUlEOwotICAgIGd1aW50IHNlZWtJRDsKKyAgICBHTWFpbkxvb3BTb3VyY2Ugc3RhcnRTb3Vy
Y2U7CisgICAgR01haW5Mb29wU291cmNlIHN0b3BTb3VyY2U7CisgICAgR01haW5Mb29wU291cmNl
IG5lZWREYXRhU291cmNlOworICAgIEdNYWluTG9vcFNvdXJjZSBlbm91Z2hEYXRhU291cmNlOwor
ICAgIEdNYWluTG9vcFNvdXJjZSBzZWVrU291cmNlOwogCiAgICAgR1JlZlB0cjxHc3RCdWZmZXI+
IGJ1ZmZlcjsKIApAQCAtMjUzLDYgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X2luaXQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfU1JDX0dFVF9QUklWQVRFKHNyYyk7CiAKICAgICBzcmMtPnByaXYgPSBwcml2
OworICAgIG5ldyAocHJpdikgV2ViS2l0V2ViU3JjUHJpdmF0ZSgpOwogCiAgICAgcHJpdi0+YXBw
c3JjID0gR1NUX0FQUF9TUkMoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzcmMiLCAwKSk7
CiAgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKQEAgLTMxNCw2ICszMTYsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViU3Jj
UHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIGdfZnJlZShwcml2LT51cmkpOworICAg
IHByaXYtPn5XZWJLaXRXZWJTcmNQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19P
QkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CiB9CkBAIC0zNjQsMjQgKzM2NywxMyBA
QCBzdGF0aWMgdm9pZCByZW1vdmVUaW1lb3V0U291cmNlcyhXZWJLaXRXZWJTcmMqIHNyYykKIHsK
ICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0gICAgaWYgKHBy
aXYtPnN0YXJ0SUQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zdGFydElEKTsKLSAg
ICBwcml2LT5zdGFydElEID0gMDsKLQotICAgIGlmIChwcml2LT5uZWVkRGF0YUlEKQotICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+bmVlZERhdGFJRCk7Ci0gICAgcHJpdi0+bmVlZERhdGFJ
RCA9IDA7Ci0KLSAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlEKQotICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUocHJpdi0+ZW5vdWdoRGF0YUlEKTsKLSAgICBwcml2LT5lbm91Z2hEYXRhSUQgPSAwOwot
Ci0gICAgaWYgKHByaXYtPnNlZWtJRCkKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNl
ZWtJRCk7Ci0gICAgcHJpdi0+c2Vla0lEID0gMDsKKyAgICBwcml2LT5zdGFydFNvdXJjZS5jYW5j
ZWwoKTsKKyAgICBwcml2LT5uZWVkRGF0YVNvdXJjZS5jYW5jZWwoKTsKKyAgICBwcml2LT5lbm91
Z2hEYXRhU291cmNlLmNhbmNlbCgpOworICAgIHByaXYtPnNlZWtTb3VyY2UuY2FuY2VsKCk7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQor
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RvcChXZWJLaXRXZWJTcmMqIHNyYykKIHsKICAgICBX
ZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCkBAIC0zODksMTAgKzM4MSw5
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQog
CiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwogCi0g
ICAgYm9vbCBzZWVraW5nID0gcHJpdi0+c2Vla0lEOworICAgIGJvb2wgc2Vla2luZyA9IHByaXYt
PnNlZWtTb3VyY2UuaXNBY3RpdmUoKTsKIAogICAgIHJlbW92ZVRpbWVvdXRTb3VyY2VzKHNyYyk7
Ci0gICAgcHJpdi0+c3RvcElEID0gMDsKIAogICAgIGlmIChwcml2LT5jbGllbnQpIHsKICAgICAg
ICAgZGVsZXRlIHByaXYtPmNsaWVudDsKQEAgLTQzNiwxMSArNDI3LDkgQEAgc3RhdGljIGdib29s
ZWFuIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQogCiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJTdG9wcGVkIHJlcXVlc3QiKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyog
c3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiB7
CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIApAQCAtNDQ4LDEz
ICs0MzcsMTEgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNy
Yyogc3JjKQogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNy
YykpOwogCi0gICAgcHJpdi0+c3RhcnRJRCA9IDA7Ci0KICAgICBpZiAoIXByaXYtPnVyaSkgewog
ICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOwogICAgICAg
ICBsb2NrZXIudW5sb2NrKCk7CiAgICAgICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKLSAgICAg
ICAgcmV0dXJuIEZBTFNFOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKCFw
cml2LT5jbGllbnQpOwpAQCAtNTEwLDEwICs0OTcsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgICAgIH0KICAgICAgICAgbG9ja2Vy
LnVubG9jaygpOwogICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7Ci0gICAgICAgIHJldHVy
biBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBHU1RfREVCVUdfT0JKRUNUKHNy
YywgIlN0YXJ0ZWQgcmVxdWVzdCIpOwotICAgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIEdz
dFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVs
ZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCkBAIC01NDUsMTMgKzUzMSwxNyBAQCBz
dGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViU3JjQ2hhbmdlU3RhdGUoR3N0RWxl
bWVudCogZWxlbWVudCwgR3N0U3RhdAogICAgIHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CiAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIpOwotICAgICAgICBwcml2LT5zdGFydElEID0gZ19p
ZGxlX2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRXZWJT
cmNTdGFydCwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0
X3VucmVmKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c3Rh
cnRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY1N0YXJ0Iiwgc3RkOjpiaW5k
KHdlYktpdFdlYlNyY1N0YXJ0LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAg
ICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CiAgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiUEFVU0VELT5SRUFEWSIpOwogICAgICAgICAvLyBjYW5jZWwgcGVuZGlu
ZyBzb3VyY2VzCiAgICAgICAgIHJlbW92ZVRpbWVvdXRTb3VyY2VzKHNyYyk7Ci0gICAgICAgIHBy
aXYtPnN0b3BJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNl
RnVuYykgd2ViS2l0V2ViU3JjU3RvcCwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90
aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAg
ICAgICAgcHJpdi0+c3RvcFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0V2ViU3JjU3Rv
cCIsIHN0ZDo6YmluZCh3ZWJLaXRXZWJTcmNTdG9wLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQs
CisgICAgICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNjY2LDI0ICs2NTYsMTgg
QEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3BvaW50ZXIgZ0lmYWNl
LCBncG9pbnRlcikKIAogLy8gYXBwc3JjIGNhbGxiYWNrcwogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
S2l0V2ViU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNOZWVkRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKIHsKICAgICBXZWJL
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhz
cmMpKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBpZiAoIXByaXYtPm5lZWREYXRhSUQp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQogICAgIHByaXYtPnBhdXNlZCA9IEZBTFNFOwotICAg
IHByaXYtPm5lZWREYXRhSUQgPSAwOwogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAgIGlmIChw
cml2LT5jbGllbnQpCiAgICAgICAgIHByaXYtPmNsaWVudC0+c2V0RGVmZXJzTG9hZGluZyhmYWxz
ZSk7Ci0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVk
RGF0YUNiKEdzdEFwcFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC02
OTQsMzEgKzY3OCwyNiBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKEdzdEFw
cFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJOZWVkIG1vcmUgZGF0YTogJXUiLCBsZW5ndGgpOwogCiAgICAgR011dGV4TG9j
a2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAgIGlmIChwcml2LT5uZWVk
RGF0YUlEIHx8ICFwcml2LT5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+bmVlZERhdGFTb3VyY2Uu
aXNTY2hlZHVsZWQoKSB8fCAhcHJpdi0+cGF1c2VkKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
Ci0gICAgcHJpdi0+bmVlZERhdGFJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFV
TFQsIChHU291cmNlRnVuYykgd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IsIGdzdF9vYmplY3Rf
cmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7CisgICAgZ3N0X29i
amVjdF9yZWYoc3JjKTsKKyAgICBwcml2LT5uZWVkRGF0YVNvdXJjZS5zY2hlZHVsZSgiW1dlYktp
dF0gd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0V2ViU3JjTmVl
ZERhdGFNYWluQ2IsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBn
c3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2Vi
U3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0
V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3Jj
KSk7Ci0gICAgLy8gYWxyZWFkeSBzdG9wcGVkCi0gICAgaWYgKCFwcml2LT5lbm91Z2hEYXRhSUQp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQogICAgIHByaXYtPnBhdXNlZCA9IFRSVUU7Ci0gICAg
cHJpdi0+ZW5vdWdoRGF0YUlEID0gMDsKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBpZiAo
cHJpdi0+Y2xpZW50KQogICAgICAgICBwcml2LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmcodHJ1
ZSk7Ci0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91
Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03MjksMjkgKzcwOCwy
MCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3Bv
aW50ZXIgdXNlckRhdGEpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJIYXZlIGVub3VnaCBk
YXRhIik7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3Jj
KSk7Ci0gICAgaWYgKHByaXYtPmVub3VnaERhdGFJRCB8fCBwcml2LT5wYXVzZWQpIHsKKyAgICBp
ZiAocHJpdi0+ZW5vdWdoRGF0YVNvdXJjZS5pc1NjaGVkdWxlZCgpIHx8IHByaXYtPnBhdXNlZCkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHByaXYtPmVub3VnaERhdGFJRCA9IGdfaWRs
ZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNlRnVuYykgd2ViS2l0V2ViU3Jj
RW5vdWdoRGF0YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBn
c3Rfb2JqZWN0X3VucmVmKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPmVu
b3VnaERhdGFTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY0Vub3VnaERhdGFN
YWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYiwgc3JjKSwgR19Q
UklPUklUWV9ERUZBVUxULAorICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsg
fSk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZWVrTWFpbkNiKFdlYktpdFdl
YlNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2Vla01haW5DYihXZWJLaXRXZWJT
cmMqIHNyYykKIHsKLSAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2Owot
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIEdNdXRleExvY2tlciBsb2NrZXIo
R1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBp
ZiAoIXByaXYtPnNlZWtJRCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIGxvY2tlci51bmxv
Y2soKTsKLQogICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKICAgICB3ZWJLaXRXZWJTcmNTdGFy
dChzcmMpOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
V2ViU3JjU2Vla0RhdGFDYihHc3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNl
ckRhdGEpCkBAIC03NzAsOSArNzQwLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1Nl
ZWtEYXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVzZXIKICAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIkRvaW5nIHJhbmdlLXJlcXVlc3Qgc2VlayIpOwogICAgIHBy
aXYtPnJlcXVlc3RlZE9mZnNldCA9IG9mZnNldDsKIAotICAgIGlmIChwcml2LT5zZWVrSUQpCi0g
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zZWVrSUQpOwotICAgIHByaXYtPnNlZWtJRCA9
IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNlRnVuYykgd2ViS2l0
V2ViU3JjU2Vla01haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBn
c3Rfb2JqZWN0X3VucmVmKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNl
ZWtTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY1NlZWtNYWluQ2IiLCBzdGQ6
OmJpbmQod2ViS2l0V2ViU3JjU2Vla01haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAor
ICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgcmV0dXJuIFRS
VUU7CiB9CiAKQEAgLTgyOCw3ICs3OTgsNyBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxl
UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAg
IEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIGlm
IChwcml2LT5zZWVrSUQpIHsKKyAgICBpZiAocHJpdi0+c2Vla1NvdXJjZS5pc0FjdGl2ZSgpKSB7
CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3Jp
bmcgcmVzcG9uc2UiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkzMiw3ICs5MDIsNyBA
QCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiAgICAgaWYgKHByaXYtPmJ1ZmZlcikKICAgICAgICAgdW5tYXBHc3RC
dWZmZXIocHJpdi0+YnVmZmVyLmdldCgpKTsKIAotICAgIGlmIChwcml2LT5zZWVrSUQpIHsKKyAg
ICBpZiAocHJpdi0+c2Vla1NvdXJjZS5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOwogICAgICAgICBw
cml2LT5idWZmZXIuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTkzLDcgKzk2Myw3IEBA
IHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3RpZnlGaW5pc2hlZCgpCiAgICAgR1NUX0RF
QlVHX09CSkVDVChzcmMsICJIYXZlIEVPUyIpOwogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihH
U1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAgIGlmICghcHJpdi0+c2Vla0lEKSB7CisgICAg
aWYgKCFwcml2LT5zZWVrU291cmNlLmlzQWN0aXZlKCkpIHsKICAgICAgICAgbG9ja2VyLnVubG9j
aygpOwogICAgICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHByaXYtPmFwcHNyYyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmRE
cm9wSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJv
cEhlbHBlci5jcHAKaW5kZXggZDQ5YzM1MjguLmZjNzgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJk
SGVscGVyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dN
YWluTG9vcFNvdXJjZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDE4ICs2OSw2
IEBAIHZvaWQgR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZUdldERyYWdEYXRhKEdka0RyYWdD
b250ZXh0KiBjb250ZXh0LCBHdGtTZWxlY3RpCiAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVs
dFBhc3RlYm9hcmRIZWxwZXIoKS0+ZmlsbFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSwgaW5m
bywgZGF0YU9iamVjdCk7CiB9CiAKLXN0cnVjdCBIYW5kbGVEcmFnTGF0ZXJEYXRhIHsKLSAgICBE
cm9wcGluZ0NvbnRleHQqIGNvbnRleHQ7Ci0gICAgR3RrRHJhZ0FuZERyb3BIZWxwZXIqIGdsdWU7
Ci19OwotCi1zdGF0aWMgZ2Jvb2xlYW4gaGFuZGxlRHJhZ0xlYXZlTGF0ZXJDYWxsYmFjayhIYW5k
bGVEcmFnTGF0ZXJEYXRhKiBkYXRhKQotewotICAgIGRhdGEtPmdsdWUtPmhhbmRsZURyYWdMZWF2
ZUxhdGVyKGRhdGEtPmNvbnRleHQpOwotICAgIGRlbGV0ZSBkYXRhOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQogdm9pZCBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0xlYXZlTGF0ZXIo
RHJvcHBpbmdDb250ZXh0KiBjb250ZXh0KQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Ryb3Bw
aW5nQ29udGV4dHMuZmluZChjb250ZXh0LT5nZGtDb250ZXh0KTsKQEAgLTEwOSwxMSArOTgsOCBA
QCB2b2lkIEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFnTGVhdmUoR2RrRHJhZ0NvbnRl
eHQqIGdka0NvbnRleHQsIERyYWdFeGl0ZQogICAgIC8vIER1cmluZyBhIGRyb3AgR1RLKyB3aWxs
IGZpcmUgYSBkcmFnLWxlYXZlIHNpZ25hbCByaWdodCBiZWZvcmUgZmlyaW5nCiAgICAgLy8gdGhl
IGRyYWctZHJvcCBzaWduYWwuIFdlIHdhbnQgdGhlIGFjdGlvbnMgZm9yIGRyYWctbGVhdmUgdG8g
aGFwcGVuIGFmdGVyCiAgICAgLy8gdGhvc2UgZm9yIGRyYWctZHJvcCwgc28gc2NoZWR1bGUgdGhl
bSB0byBoYXBwZW4gYXN5bmNocm9ub3VzbHkgaGVyZS4KLSAgICBIYW5kbGVEcmFnTGF0ZXJEYXRh
KiBkYXRhID0gbmV3IEhhbmRsZURyYWdMYXRlckRhdGE7Ci0gICAgZGF0YS0+Y29udGV4dCA9IGNv
bnRleHQ7Ci0gICAgZGF0YS0+Y29udGV4dC0+ZXhpdGVkQ2FsbGJhY2sgPSBleGl0ZWRDYWxsYmFj
azsKLSAgICBkYXRhLT5nbHVlID0gdGhpczsKLSAgICBnX2lkbGVfYWRkX2Z1bGwoR19QUklPUklU
WV9ERUZBVUxULCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihoYW5kbGVEcmFnTGVhdmVM
YXRlckNhbGxiYWNrKSwgZGF0YSwgMCk7CisgICAgY29udGV4dC0+ZXhpdGVkQ2FsbGJhY2sgPSBl
eGl0ZWRDYWxsYmFjazsKKyAgICBHTWFpbkxvb3BTb3VyY2U6OmNyZWF0ZUFuZERlbGV0ZU9uRGVz
dHJveSgpLnNjaGVkdWxlKCJbV2ViS2l0XSBoYW5kbGVEcmFnTGVhdmVMYXRlciIsIHN0ZDo6Ymlu
ZCgmR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdMZWF2ZUxhdGVyLCB0aGlzLCBjb250
ZXh0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHF1ZXJ5TmV3RHJvcENvbnRleHREYXRhKERyb3BwaW5n
Q29udGV4dCogZHJvcENvbnRleHQsIEd0a1dpZGdldCogd2lkZ2V0LCBndWludCB0aW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKaW5kZXggNThl
YWY1Ni4uMThhY2VjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1No
YXJlZFRpbWVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVk
VGltZXJHdGsuY3BwCkBAIC0yOCw0NyArMjgsMzIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFyZWRUaW1lci5oIgogCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0jaW5jbHVk
ZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBndWludCBzaGFyZWRUaW1lcjsKK3N0YXRpYyBH
TWFpbkxvb3BTb3VyY2UgZ1NoYXJlZFRpbWVyOwogc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZp
cmVkRnVuY3Rpb24pKCk7CiAKIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQg
KCpmKSgpKQogewogICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Ci19Ci0KLXN0YXRp
YyBnYm9vbGVhbiBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayhncG9pbnRlcikKLXsKLSAgICBp
ZiAoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24oKTsKLSAgICByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24pCisgICAgICAgIGdTaGFyZWRUaW1lci5jYW5jZWwoKTsKIH0KIAogdm9pZCBzZXRTaGFy
ZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7CiAgICAgQVNTRVJUKHNoYXJl
ZFRpbWVyRmlyZWRGdW5jdGlvbik7CiAKLSAgICBndWludCBpbnRlcnZhbEluTVMgPSBzdGF0aWNf
Y2FzdDxndWludD4oaW50ZXJ2YWwgKiAxMDAwKTsKLQotICAgIHN0b3BTaGFyZWRUaW1lcigpOwot
ICAgIHNoYXJlZFRpbWVyID0gZ190aW1lb3V0X2FkZF9mdWxsKEdES19QUklPUklUWV9SRURSQVcs
IGludGVydmFsSW5NUywgc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2ssIDAsIDApOwotICAgIGdf
c291cmNlX3NldF9uYW1lX2J5X2lkKHNoYXJlZFRpbWVyLCAiW1dlYktpdF0gc2hhcmVkVGltZXJU
aW1lb3V0Q2FsbGJhY2siKTsKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJb
V2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiwKKyAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwgR0RL
X1BSSU9SSVRZX1JFRFJBVyk7CiB9CiAKIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKIHsKLSAgICBp
ZiAoc2hhcmVkVGltZXIgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2Jvb2xlYW4gcmVt
b3ZlZFNvdXJjZSA9IGdfc291cmNlX3JlbW92ZShzaGFyZWRUaW1lcik7Ci0gICAgQVNTRVJUX1VO
VVNFRChyZW1vdmVkU291cmNlLCByZW1vdmVkU291cmNlKTsKLSAgICBzaGFyZWRUaW1lciA9IDA7
CisgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="251502"
          type_id="1"
          status="+"
          setter="pnormand"
    />
    <flag name="commit-queue"
          id="251505"
          type_id="3"
          status="-"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228175</attachid>
            <date>2014-03-31 05:24:38 -0700</date>
            <delta_ts>2014-03-31 05:27:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wcore-main-loop-source.diff</filename>
            <type>text/plain</type>
            <size>62224</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOTMwYzVmLi5mYmY3NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTQtMDMtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBHTWFpbkxvb3BTb3VyY2UgZm9yIGlkbGUgYW5kIHRpbWVv
dXQgc291cmNlcyBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAwNzgKKworICAgICAgICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3Jt
YW5kLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRl
ckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwOgorCiAyMDE0LTAzLTMxICBEw6Fu
aWVsIELDoXR5YWkgIDxkYmF0eWFpLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGhvc3RUaGlzUmVnaXN0ZXIoKSBhbmQgaG9zdFRoaXNWYWx1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGU2ODdlNTcuLmYwZTQ4OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yNywxNCArMjcs
MTQgQEAKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNp
bmsuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVl
UHRyLmg+CiAKLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBdWRpb0ZpbGVSZWFkZXIgewpAQCAtMTA4LDEzICsxMDgsNiBAQCBzdGF0
aWMgdm9pZCBvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2soR3N0RWxlbWVudCos
IEdzdFBhZCogcGFkLCBBdWRpbwogICAgIHJlYWRlci0+cGx1Z0RlaW50ZXJsZWF2ZShwYWQpOwog
fQogCi1nYm9vbGVhbiBlbnRlcmVkTWFpbkxvb3BDYWxsYmFjayhncG9pbnRlciB1c2VyRGF0YSkK
LXsKLSAgICBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9G
aWxlUmVhZGVyKj4odXNlckRhdGEpOwotICAgIHJlYWRlci0+ZGVjb2RlQXVkaW9Gb3JCdXNDcmVh
dGlvbigpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQogQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0Zp
bGVSZWFkZXIoY29uc3QgY2hhciogZmlsZVBhdGgpCiAgICAgOiBtX2RhdGEoMCkKICAgICAsIG1f
ZGF0YVNpemUoMCkKQEAgLTM0MSw5ICszMzQsOCBAQCBQYXNzUmVmUHRyPEF1ZGlvQnVzPiBBdWRp
b0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwog
ICAgIG1fbG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoY29udGV4dC5nZXQoKSwgRkFM
U0UpKTsKIAogICAgIC8vIFN0YXJ0IHRoZSBwaXBlbGluZSBwcm9jZXNzaW5nIGp1c3QgYWZ0ZXIg
dGhlIGxvb3AgaXMgc3RhcnRlZC4KLSAgICBHUmVmUHRyPEdTb3VyY2U+IHRpbWVvdXRTb3VyY2Ug
PSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoMCkpOwotICAgIGdfc291cmNlX2F0dGFj
aCh0aW1lb3V0U291cmNlLmdldCgpLCBjb250ZXh0LmdldCgpKTsKLSAgICBnX3NvdXJjZV9zZXRf
Y2FsbGJhY2sodGltZW91dFNvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVu
Yz4oZW50ZXJlZE1haW5Mb29wQ2FsbGJhY2spLCB0aGlzLCAwKTsKKyAgICBHTWFpbkxvb3BTb3Vy
Y2Ugc291cmNlOworICAgIHNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gQXVkaW9GaWxlUmVhZGVy
OjpkZWNvZGVBdWRpb0ZvckJ1c0NyZWF0aW9uIiwgc3RkOjpiaW5kKCZBdWRpb0ZpbGVSZWFkZXI6
OmRlY29kZUF1ZGlvRm9yQnVzQ3JlYXRpb24sIHRoaXMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51
bGxwdHIsIGNvbnRleHQuZ2V0KCkpOwogCiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbG9vcC5nZXQo
KSk7CiAgICAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0KGNvbnRleHQuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGJlZDEwZmEuLjQyMjFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTUyLDIyICs1Miw4IEBAIHN0YXRp
YyBHc3RQYWRQcm9iZVJldHVybiB0ZXh0VHJhY2tQcml2YXRlRXZlbnRDYWxsYmFjayhHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qCiAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiB9CiAKLXN0
YXRpYyBnYm9vbGVhbiB0ZXh0VHJhY2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIqIHRyYWNrKQotewotICAgIHRyYWNrLT5ub3RpZnlU
cmFja09mU2FtcGxlKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4g
dGV4dFRyYWNrUHJpdmF0ZVN0cmVhbVRpbWVvdXRDYWxsYmFjayhJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKiB0cmFjaykKLXsKLSAgICB0cmFjay0+bm90aWZ5VHJhY2tPZlN0cmVhbUNo
YW5nZWQoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUoV2ViVlRUKSwg
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFkKQotICAgICwgbV9zYW1w
bGVUaW1lckhhbmRsZXIoMCkKLSAgICAsIG1fc3RyZWFtVGltZXJIYW5kbGVyKDApCiB7CiAgICAg
bV9ldmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9wYWQuZ2V0KCksIEdTVF9QQURfUFJP
QkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLAogICAgICAgICByZWludGVycHJldF9jYXN0PEdzdFBh
ZFByb2JlQ2FsbGJhY2s+KHRleHRUcmFja1ByaXZhdGVFdmVudENhbGxiYWNrKSwgdGhpcywgMCk7
CkBAIC04MiwzNiArNjgsMjggQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpkaXNjb25uZWN0KCkKIAogICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKG1fcGFkLmdldCgpLCBt
X2V2ZW50UHJvYmUpOwogCi0gICAgaWYgKG1fc3RyZWFtVGltZXJIYW5kbGVyKQotICAgICAgICBn
X3NvdXJjZV9yZW1vdmUobV9zdHJlYW1UaW1lckhhbmRsZXIpOworICAgIG1fc3RyZWFtVGltZXJI
YW5kbGVyLmNhbmNlbCgpOwogCiAgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6ZGlzY29u
bmVjdCgpOwogfQogCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewotICAgIGlmIChtX3NhbXBsZVRp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fc2FtcGxlVGltZXJIYW5kbGVy
KTsKKyAgICBtX3NhbXBsZVRpbWVySGFuZGxlci5jYW5jZWwoKTsKICAgICB7CiAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2sobV9zYW1wbGVNdXRleCk7CiAgICAgICAgIG1fcGVuZGluZ1NhbXBsZXMu
YXBwZW5kKHNhbXBsZSk7CiAgICAgfQotICAgIG1fc2FtcGxlVGltZXJIYW5kbGVyID0gZ190aW1l
b3V0X2FkZCgwLAotICAgICAgICByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih0ZXh0VHJh
Y2tQcml2YXRlU2FtcGxlVGltZW91dENhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9zYW1wbGVUaW1l
ckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUiLCBzdGQ6OmJpbmQoJkluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUsIHRoaXMpKTsKIH0KIAogdm9pZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKCkKIHsKLSAgICBpZiAo
bV9zdHJlYW1UaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3N0cmVhbVRp
bWVySGFuZGxlcik7Ci0gICAgbV9zdHJlYW1UaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRfYWRkKDAs
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRleHRUcmFja1ByaXZhdGVT
dHJlYW1UaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX3N0cmVhbVRpbWVySGFuZGxlci5z
Y2hlZHVsZSgiW1dlYktpdF0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5
VHJhY2tPZlN0cmVhbUNoYW5nZWQiLCBzdGQ6OmJpbmQoJkluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkLCB0aGlzKSk7CiB9CiAKIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7
Ci0gICAgbV9zYW1wbGVUaW1lckhhbmRsZXIgPSAwOwotCiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0
U2FtcGxlPiA+IHNhbXBsZXM7CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2Ft
cGxlTXV0ZXgpOwpAQCAtMTQyLDggKzEyMCw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQogewotICAgIG1f
c3RyZWFtVGltZXJIYW5kbGVyID0gMDsKLQogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50ID0g
YWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwKICAgICAgICAg
R1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwogICAgIGlmICghZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAyODVjZDg2
Li5hZjAwYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVy
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BT
b3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw4ICs2Miw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihnaW50IGlu
ZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwogCi0gICAgZ3VpbnQgbV9zYW1wbGVUaW1lckhhbmRsZXI7
Ci0gICAgZ3VpbnQgbV9zdHJlYW1UaW1lckhhbmRsZXI7CisgICAgR01haW5Mb29wU291cmNlIG1f
c2FtcGxlVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3N0cmVhbVRpbWVySGFu
ZGxlcjsKICAgICBndWxvbmcgbV9ldmVudFByb2JlOwogICAgIFZlY3RvcjxHUmVmUHRyPEdzdFNh
bXBsZT4gPiBtX3BlbmRpbmdTYW1wbGVzOwogICAgIFN0cmluZyBtX3N0cmVhbUlkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0NGJlYTMy
Li5hYzYwY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtNTgsNyArNTgsNyBAQAogCiAvLyBNYXggaW50ZXJ2YWwgaW4gc2Vjb25kcyB0
byBzdGF5IGluIHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwKIC8vIHN0YXRlIGNoYW5nZSByZXF1
ZXN0cy4KLXN0YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsKIAog
R1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNk
ZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcKQEAgLTkyLDQ2
ICs5MiwxOCBAQCBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5nZWRDYWxs
YmFjayhHT2JqZWN0KiwgTWVkaWFQbGF5ZXJQcml2YXRlRwogICAgIHBsYXllci0+YXVkaW9DaGFu
Z2VkKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVBdWRpb0NoYW5n
ZVRpbWVvdXRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKLXsK
LSAgICAvLyBUaGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUgdGltZW91dCBzb3VyY2UgY3JlYXRl
ZCBpbiA6OmF1ZGlvQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mQXVkaW8oKTsK
LSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVy
dGllc0NhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3QsIGdjaGFyKiwKICAg
ICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPnNl
dEF1ZGlvU3RyZWFtUHJvcGVydGllcyhvYmplY3QpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gbWVk
aWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCi17Ci0gICAgLy8gVGhpcyBpcyB0aGUgY2FsbGJhY2sgb2Yg
dGhlIHRpbWVvdXQgc291cmNlIGNyZWF0ZWQgaW4gOjp2aWRlb0NoYW5nZWQuCi0gICAgcGxheWVy
LT5ub3RpZnlQbGF5ZXJPZlZpZGVvKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMg
Z2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNr
KE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMg
dGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6dmlkZW9DYXBz
Q2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCk7Ci0gICAgcmV0
dXJuIEZBTFNFOwotfQotCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogc3RhdGljIHZvaWQgbWVk
aWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayhHT2JqZWN0KiwgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcGxheWVyLT50ZXh0Q2hhbmdlZCgpOwog
fQogCi1zdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZVRpbWVvdXRD
YWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKLXsKLSAgICAvLyBU
aGlzIGlzIHRoZSBjYWxsYmFjayBvZiB0aGUgdGltZW91dCBzb3VyY2UgY3JlYXRlZCBpbiA6OnRl
eHRDaGFuZ2VkLgotICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZUZXh0KCk7Ci0gICAgcmV0dXJu
IEZBTFNFOwotfQotCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBtZWRpYVBsYXllclByaXZhdGVOZXdU
ZXh0U2FtcGxlQ2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciog
cGxheWVyKQogewogICAgIHBsYXllci0+bmV3VGV4dFNhbXBsZSgpOwpAQCAtMTM5LDE0ICsxMTEs
NiBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiBtZWRpYVBsYXllclByaXZhdGVOZXdUZXh0U2FtcGxl
Q2FsbGJhY2soR09iamVjdCosIE1lZGlhUGxheQogfQogI2VuZGlmCiAKLXN0YXRpYyBnYm9vbGVh
biBtZWRpYVBsYXllclByaXZhdGVSZWFkeVN0YXRlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNr
IG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6Y2hhbmdlUGlwZWxpbmVTdGF0ZS4K
LSAgICAvLyBSZXNldCBwaXBlbGluZSBpZiB3ZSBhcmUgc2l0dGluZyBvbiBSRUFEWSBzdGF0ZSB3
aGVuIHRpbWVvdXQgaXMgcmVhY2hlZAotICAgIHBsYXllci0+Y2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfTlVMTCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgdm9pZCBtZWRp
YVBsYXllclByaXZhdGVQbHVnaW5JbnN0YWxsZXJSZXN1bHRGdW5jdGlvbihHc3RJbnN0YWxsUGx1
Z2luc1JldHVybiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogcGxheWVyID0gcmVpbnRlcnByZXRfY2FzdDxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7CkBAIC0yNDksMTEgKzIxMyw2IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpCiAgICAgLCBtX3ZvbHVtZUFuZE11dGVJbml0aWFsaXplZChmYWxzZSkKICAg
ICAsIG1faGFzVmlkZW8oZmFsc2UpCiAgICAgLCBtX2hhc0F1ZGlvKGZhbHNlKQotICAgICwgbV9h
dWRpb1RpbWVySGFuZGxlcigwKQotICAgICwgbV90ZXh0VGltZXJIYW5kbGVyKDApCi0gICAgLCBt
X3ZpZGVvVGltZXJIYW5kbGVyKDApCi0gICAgLCBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxlcigwKQot
ICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcigwKQogICAgICwgbV90b3RhbEJ5dGVzKC0xKQogICAg
ICwgbV9wcmVzZXJ2ZXNQaXRjaChmYWxzZSkKICAgICAsIG1fcmVxdWVzdGVkU3RhdGUoR1NUX1NU
QVRFX1ZPSURfUEVORElORykKQEAgLTI4NSw4ICsyNDQsNyBAQCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QobV9hdXRvQXVkaW9TaW5rLmdl
dCgpKSwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHNldEF1ZGlvU3Ry
ZWFtUHJvcGVydGllc0NhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAobV9yZWFkeVRpbWVySGFu
ZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fcmVhZHlUaW1lckhhbmRsZXIpOworICAg
IG1fcmVhZHlUaW1lckhhbmRsZXIuY2FuY2VsKCk7CiAKICAgICBpZiAobV9wbGF5QmluKSB7CiAg
ICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9i
dXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsKQEAgLTMwOCwxOCArMjY2LDYgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
KCkKIAogICAgIEdSZWZQdHI8R3N0UGFkPiB2aWRlb1NpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksICJzaW5rIikpOwog
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh2aWRlb1NpbmtQYWQuZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lZGlhUGxheWVyUHJpdmF0ZVZpZGVvU2lu
a0NhcHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLQotICAgIGlmIChtX3ZpZGVvVGltZXJIYW5k
bGVyKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV92aWRlb1RpbWVySGFuZGxlcik7Ci0KLSAg
ICBpZiAobV9hdWRpb1RpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fYXVk
aW9UaW1lckhhbmRsZXIpOwotCi0gICAgaWYgKG1fdGV4dFRpbWVySGFuZGxlcikKLSAgICAgICAg
Z19zb3VyY2VfcmVtb3ZlKG1fdGV4dFRpbWVySGFuZGxlcik7Ci0KLSAgICBpZiAobV92aWRlb0Nh
cHNUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3ZpZGVvQ2Fwc1RpbWVy
SGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKGNv
bnN0IFN0cmluZyYgdXJsKQpAQCAtNDQzLDEyICszODksMTEgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCiAg
ICAgLy8gaWYgd2Ugc3RheSBmb3IgdG9vIGxvbmcgb24gUkVBRFkuCiAgICAgLy8gQWxzbyBsZXRz
IHJlbW92ZSB0aGUgdGltZXIgaWYgd2UgcmVxdWVzdCBhIHN0YXRlIGNoYW5nZSBmb3IgYW55IHN0
YXRlIG90aGVyIHRoYW4gUkVBRFkuCiAgICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzM1NAotICAgIGlmIChuZXdTdGF0ZSA9PSBHU1RfU1RB
VEVfUkVBRFkgJiYgIW1fcmVhZHlUaW1lckhhbmRsZXIpIHsKLSAgICAgICAgbV9yZWFkeVRpbWVy
SGFuZGxlciA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyhnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWws
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZVJlYWR5U3Rh
dGVUaW1lb3V0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlf
aWQobV9yZWFkeVRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1lZGlhUGxheWVyUHJpdmF0ZVJlYWR5
U3RhdGVUaW1lb3V0Q2FsbGJhY2siKTsKLSAgICB9IGVsc2UgaWYgKG5ld1N0YXRlICE9IEdTVF9T
VEFURV9SRUFEWSAmJiBtX3JlYWR5VGltZXJIYW5kbGVyKSB7Ci0gICAgICAgIGdfc291cmNlX3Jl
bW92ZShtX3JlYWR5VGltZXJIYW5kbGVyKTsKLSAgICAgICAgbV9yZWFkeVRpbWVySGFuZGxlciA9
IDA7CisgICAgaWYgKG5ld1N0YXRlID09IEdTVF9TVEFURV9SRUFEWSAmJiAhbV9yZWFkeVRpbWVy
SGFuZGxlci5pc1NjaGVkdWxlZCgpKSB7CisgICAgICAgIG1fcmVhZHlUaW1lckhhbmRsZXIuc2No
ZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVSZWFkeVN0YXRlVGlt
ZW91dENhbGxiYWNrIiwgW3RoaXNdIHsgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfTlVM
TCk7IH0sCisgICAgICAgICAgICBzdGQ6OmNocm9ubzo6c2Vjb25kcyhnUmVhZHlTdGF0ZVRpbWVy
SW50ZXJ2YWwpKTsKKyAgICB9IGVsc2UgaWYgKG5ld1N0YXRlICE9IEdTVF9TVEFURV9SRUFEWSAm
JiBtX3JlYWR5VGltZXJIYW5kbGVyLmlzU2NoZWR1bGVkKCkpIHsKKyAgICAgICAgbV9yZWFkeVRp
bWVySGFuZGxlci5jYW5jZWwoKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2OSwy
NCArNjE0LDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVraW5nKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCgp
CiB7Ci0gICAgaWYgKG1fdmlkZW9UaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX3ZpZGVvVGltZXJIYW5kbGVyKTsKLSAgICBtX3ZpZGVvVGltZXJIYW5kbGVyID0gZ19pZGxl
X2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVu
Yz4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAw
KTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX3ZpZGVvVGltZXJIYW5kbGVyLCAiW1dl
YktpdF0gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAg
ICBtX3ZpZGVvVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvLCB0aGlzKSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NhcHNDaGFuZ2VkKCkKIHsKLSAgICBpZiAobV92
aWRlb0NhcHNUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3ZpZGVvQ2Fw
c1RpbWVySGFuZGxlcik7Ci0gICAgbV92aWRlb0NhcHNUaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRf
YWRkKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZVZp
ZGVvQ2Fwc0NoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc291cmNlX3NldF9u
YW1lX2J5X2lkKG1fdmlkZW9DYXBzVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQ
cml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV92aWRlb0NhcHNU
aW1lckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dmlkZW9DYXBzQ2hhbmdlZCIsIHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvQ2FwcywgdGhpcykpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiB7Ci0gICAgbV92aWRl
b1RpbWVySGFuZGxlciA9IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9IDA7CiAgICAgaWYgKG1f
cGxheUJpbikKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgIm4tdmlkZW8i
LCAmbnVtVHJhY2tzLCBOVUxMKTsKQEAgLTcyNCwyMyArNjYxLDE3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCkKIHsKLSAgICBt
X3ZpZGVvQ2Fwc1RpbWVySGFuZGxlciA9IDA7CiAgICAgbV92aWRlb1NpemUgPSBJbnRTaXplKCk7
CiAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRW5naW5lVXBk
YXRlZChtX3BsYXllcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjph
dWRpb0NoYW5nZWQoKQogewotICAgIGlmIChtX2F1ZGlvVGltZXJIYW5kbGVyKQotICAgICAgICBn
X3NvdXJjZV9yZW1vdmUobV9hdWRpb1RpbWVySGFuZGxlcik7Ci0gICAgbV9hdWRpb1RpbWVySGFu
ZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIHJlaW50ZXJwcmV0X2Nh
c3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENhbGxi
YWNrKSwgdGhpcywgMCk7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQobV9hdWRpb1RpbWVy
SGFuZGxlciwgIltXZWJLaXRdIG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENh
bGxiYWNrIik7CisgICAgbV9hdWRpb1RpbWVySGFuZGxlci5zY2hlZHVsZSgiW1dlYktpdF0gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbywgdGhpcykpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiB7Ci0gICAgbV9hdWRpb1RpbWVySGFuZGxlciA9IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9
IDA7CiAgICAgaWYgKG1fcGxheUJpbikKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5n
ZXQoKSwgIm4tYXVkaW8iLCAmbnVtVHJhY2tzLCBOVUxMKTsKQEAgLTc3OSwxNiArNzEwLDExIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dGV4dENoYW5nZWQoKQogewotICAgIGlmIChtX3RleHRUaW1lckhhbmRsZXIpCi0gICAgICAg
IGdfc291cmNlX3JlbW92ZShtX3RleHRUaW1lckhhbmRsZXIpOwotICAgIG1fdGV4dFRpbWVySGFu
ZGxlciA9IGdfdGltZW91dF9hZGQoMCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4obWVk
aWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdf
c291cmNlX3NldF9uYW1lX2J5X2lkKG1fdGV4dFRpbWVySGFuZGxlciwgIltXZWJLaXRdIG1lZGlh
UGxheWVyUHJpdmF0ZVRleHRDaGFuZ2VUaW1lb3V0Q2FsbGJhY2siKTsKKyAgICBtX3RleHRUaW1l
ckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
dGV4dENoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5UGxheWVyT2ZUZXh0LCB0aGlzKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogewotICAgIG1fdGV4dFRpbWVySGFuZGxlciA9
IDA7Ci0KICAgICBnaW50IG51bVRyYWNrcyA9IDA7CiAgICAgaWYgKG1fcGxheUJpbikKICAgICAg
ICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgIm4tdGV4dCIsICZudW1UcmFja3MsIE5V
TEwpOwpAQCAtMTY0MCwxMCArMTU2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IpCiAgICAg
fQogCiAgICAgLy8gTG9hZGluZyBmYWlsZWQsIHJlbW92ZSByZWFkeSB0aW1lci4KLSAgICBpZiAo
bV9yZWFkeVRpbWVySGFuZGxlcikgewotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9yZWFkeVRp
bWVySGFuZGxlcik7Ci0gICAgICAgIG1fcmVhZHlUaW1lckhhbmRsZXIgPSAwOwotICAgIH0KKyAg
ICBtX3JlYWR5VGltZXJIYW5kbGVyLmNhbmNlbCgpOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJp
bmc+IG1pbWVUeXBlQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGEzNzBkYTMuLmMzY2ZlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvaW5zdGFsbC1wbHVnaW5zLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3Vy
Y2UuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VH
U3RyZWFtZXIuaCIKQEAgLTE4OSwxMSArMTkwLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Zv
bHVtZUFuZE11dGVJbml0aWFsaXplZDsKICAgICBib29sIG1faGFzVmlkZW87CiAgICAgYm9vbCBt
X2hhc0F1ZGlvOwotICAgIGd1aW50IG1fYXVkaW9UaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV90
ZXh0VGltZXJIYW5kbGVyOwotICAgIGd1aW50IG1fdmlkZW9UaW1lckhhbmRsZXI7Ci0gICAgZ3Vp
bnQgbV92aWRlb0NhcHNUaW1lckhhbmRsZXI7Ci0gICAgZ3VpbnQgbV9yZWFkeVRpbWVySGFuZGxl
cjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9hdWRpb1RpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxv
b3BTb3VyY2UgbV90ZXh0VGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3ZpZGVv
VGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3ZpZGVvQ2Fwc1RpbWVySGFuZGxl
cjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9yZWFkeVRpbWVySGFuZGxlcjsKICAgICBtdXRhYmxl
IGxvbmcgbV90b3RhbEJ5dGVzOwogICAgIFVSTCBtX3VybDsKICAgICBib29sIG1fcHJlc2VydmVz
UGl0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKaW5kZXggMjJmY2Q2YS4uZmY3ZDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzIsMjYgKzcyLDEyIEBA
IHN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2Jq
ZWN0KiwgR1BhcmFtU3BlYyosIE1lZGlhCiAgICAgcGxheWVyLT52b2x1bWVDaGFuZ2VkKCk7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVWb2x1bWVDaGFuZ2VUaW1lb3V0
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQotewotICAg
IC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGlu
IDo6dm9sdW1lQ2hhbmdlZC4KLSAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdl
KCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZh
dGVNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQogewogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdo
ZW4gbV92b2x1bWVFbGVtZW50IHJlY2VpdmVzIHRoZSBub3RpZnk6Om11dGUgc2lnbmFsLgogICAg
IHBsYXllci0+bXV0ZUNoYW5nZWQoKTsKIH0KIAotc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVy
UHJpdmF0ZU11dGVDaGFuZ2VUaW1lb3V0Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZSogcGxheWVyKQotewotICAgIC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrIG9mIHRoZSB0
aW1lb3V0IHNvdXJjZSBjcmVhdGVkIGluIDo6bXV0ZUNoYW5nZWQuCi0gICAgcGxheWVyLT5ub3Rp
ZnlQbGF5ZXJPZk11dGUoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyB2b2lkIG1l
ZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RCdWZm
ZXIgKmJ1ZmZlciwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyUHJpdmF0
ZSkKIHsKICAgICBwbGF5ZXJQcml2YXRlLT50cmlnZ2VyUmVwYWludChidWZmZXIpOwpAQCAtMTAz
LDggKzg5LDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fcmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXll
cjo6RW1wdHkpCiAgICAgLCBtX2J1ZmZlcigwKQotICAgICwgbV92b2x1bWVUaW1lckhhbmRsZXIo
MCkKLSAgICAsIG1fbXV0ZVRpbWVySGFuZGxlcigwKQogICAgICwgbV9yZXBhaW50SGFuZGxlcigw
KQogICAgICwgbV92b2x1bWVTaWduYWxIYW5kbGVyKDApCiAgICAgLCBtX211dGVTaWduYWxIYW5k
bGVyKDApCkBAIC0xMzQsMTIgKzExOCw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKIAogICAgIG1fcGxheWVyID0g
MDsKIAotICAgIGlmIChtX211dGVUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX211dGVUaW1lckhhbmRsZXIpOwotCi0gICAgaWYgKG1fdm9sdW1lVGltZXJIYW5kbGVyKQot
ICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV92b2x1bWVUaW1lckhhbmRsZXIpOwotCiAgICAgaWYg
KG1fdm9sdW1lU2lnbmFsSGFuZGxlcikgewogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nv
bm5lY3QobV92b2x1bWVFbGVtZW50LmdldCgpLCBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIpOwogICAg
ICAgICBtX3ZvbHVtZVNpZ25hbEhhbmRsZXIgPSAwOwpAQCAtMjMxLDggKzIwOSw2IEBAIGZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZSgpIGNvbnN0CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFu
Z2UoKQogewotICAgIG1fdm9sdW1lVGltZXJIYW5kbGVyID0gMDsKLQogICAgIGlmICghbV9wbGF5
ZXIgfHwgIW1fdm9sdW1lRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGRvdWJsZSB2b2x1
bWU7CkBAIC0yNDYsMTAgKzIyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6bm90aWZ5UGxheWVyT2ZWb2x1bWVDaGFuZ2UoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnZvbHVtZUNoYW5nZWQoKQogewotICAgIGlmIChtX3ZvbHVtZVRp
bWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fdm9sdW1lVGltZXJIYW5kbGVy
KTsKLSAgICBtX3ZvbHVtZVRpbWVySGFuZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZ
X0RFRkFVTFQsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0
ZVZvbHVtZUNoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMsIDApOwotICAgIGdfc291cmNlX3Nl
dF9uYW1lX2J5X2lkKG1fdm9sdW1lVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gbWVkaWFQbGF5ZXJQ
cml2YXRlVm9sdW1lQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV92b2x1bWVUaW1lckhh
bmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnZvbHVtZUNoYW5nZWQiLCBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6Om5vdGlmeVBsYXllck9mVm9sdW1lQ2hhbmdlLCB0aGlzKSk7CiB9CiAKIE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmV0d29ya1N0
YXRlKCkgY29uc3QKQEAgLTI4Nyw4ICsyNjAsNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om11dGVkKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpub3RpZnlQbGF5ZXJPZk11dGUoKQogewotICAgIG1fbXV0ZVRpbWVySGFuZGxl
ciA9IDA7Ci0KICAgICBpZiAoIW1fcGxheWVyIHx8ICFtX3ZvbHVtZUVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMjk5LDEzICsyNzAsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5vdGlmeVBsYXllck9mTXV0ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWQoKQogewotICAgIGlmIChtX211dGVUaW1lckhh
bmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX211dGVUaW1lckhhbmRsZXIpOwotICAg
IG1fbXV0ZVRpbWVySGFuZGxlciA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQs
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KG1lZGlhUGxheWVyUHJpdmF0ZU11dGVDaGFu
Z2VUaW1lb3V0Q2FsbGJhY2spLCB0aGlzLCAwKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9p
ZChtX211dGVUaW1lckhhbmRsZXIsICJbV2ViS2l0XSBtZWRpYVBsYXllclByaXZhdGVNdXRlQ2hh
bmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV9tdXRlVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJb
V2ViS2l0XSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCIsIHN0
ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bm90aWZ5UGxheWVyT2ZN
dXRlLCB0aGlzKSk7CiB9CiAKLQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKaW5kZXggN2MzOGJkOC4uMTNjYTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSA8Z2xpYi5oPgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oIgpAQCAtMTE5LDggKzEyMCw4IEBAIHByb3RlY3RlZDoKICAgICBJbnRT
aXplIG1fc2l6ZTsKICAgICBHTXV0ZXgqIG1fYnVmZmVyTXV0ZXg7CiAgICAgR3N0QnVmZmVyKiBt
X2J1ZmZlcjsKLSAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lVGltZXJIYW5kbGVyOwotICAgIHVu
c2lnbmVkIGxvbmcgbV9tdXRlVGltZXJIYW5kbGVyOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3Zv
bHVtZVRpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxvb3BTb3VyY2UgbV9tdXRlVGltZXJIYW5kbGVy
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9yZXBhaW50SGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25n
IG1fdm9sdW1lU2lnbmFsSGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fbXV0ZVNpZ25hbEhh
bmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5k
ZXggMGVlOGE3Yi4uYTI5OWQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKQEAgLTUzLDI0ICs1MywxMCBAQCBzdGF0aWMgdm9pZCB0cmFja1ByaXZh
dGVUYWdzQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgVHJhY2tQcml2YXRl
QgogICAgIHRyYWNrLT50YWdzQ2hhbmdlZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gdHJhY2tQ
cml2YXRlQWN0aXZlQ2hhbmdlVGltZW91dENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIqIHRyYWNrKQotewotICAgIHRyYWNrLT5ub3RpZnlUcmFja09mQWN0aXZlQ2hhbmdlZCgpOwot
ICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHRyYWNrUHJpdmF0ZVRhZ3ND
aGFuZ2VUaW1lb3V0Q2FsbGJhY2soVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciogdHJhY2spCi17
Ci0gICAgdHJhY2stPm5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
IHBhZCkKICAgICA6IG1faW5kZXgoaW5kZXgpCiAgICAgLCBtX3BhZChwYWQpCiAgICAgLCBtX293
bmVyKG93bmVyKQotICAgICwgbV9hY3RpdmVUaW1lckhhbmRsZXIoMCkKLSAgICAsIG1fdGFnVGlt
ZXJIYW5kbGVyKDApCiB7CiAgICAgQVNTRVJUKG1fcGFkKTsKIApAQCAtOTcsMTMgKzgzLDggQEAg
dm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkKICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wYWQuZ2V0KCksCiAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHRyYWNrUHJpdmF0ZVRhZ3NDaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKIAotICAgIGlmIChtX2FjdGl2ZVRpbWVySGFuZGxlcikKLSAgICAgICAgZ19zb3VyY2Vf
cmVtb3ZlKG1fYWN0aXZlVGltZXJIYW5kbGVyKTsKLSAgICBtX2FjdGl2ZVRpbWVySGFuZGxlciA9
IDA7Ci0KLSAgICBpZiAobV90YWdUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92
ZShtX3RhZ1RpbWVySGFuZGxlcik7Ci0gICAgbV90YWdUaW1lckhhbmRsZXIgPSAwOworICAgIG1f
YWN0aXZlVGltZXJIYW5kbGVyLmNhbmNlbCgpOworICAgIG1fdGFnVGltZXJIYW5kbGVyLmNhbmNl
bCgpOwogCiAgICAgbV9wYWQuY2xlYXIoKTsKICAgICBtX3RhZ3MuY2xlYXIoKTsKQEAgLTExMSwx
NyArOTIsMTIgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkK
IAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjphY3RpdmVDaGFuZ2VkKCkKIHsKLSAg
ICBpZiAobV9hY3RpdmVUaW1lckhhbmRsZXIpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX2Fj
dGl2ZVRpbWVySGFuZGxlcik7Ci0gICAgbV9hY3RpdmVUaW1lckhhbmRsZXIgPSBnX3RpbWVvdXRf
YWRkKDAsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRyYWNrUHJpdmF0
ZUFjdGl2ZUNoYW5nZVRpbWVvdXRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc291cmNlX3NldF9u
YW1lX2J5X2lkKG1fYWN0aXZlVGltZXJIYW5kbGVyLCAiW1dlYktpdF0gdHJhY2tQcml2YXRlQWN0
aXZlQ2hhbmdlVGltZW91dENhbGxiYWNrIik7CisgICAgbV9hY3RpdmVUaW1lckhhbmRsZXIuc2No
ZWR1bGUoIltXZWJLaXRdIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZB
Y3RpdmVDaGFuZ2VkIiwgc3RkOjpiaW5kKCZUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mQWN0aXZlQ2hhbmdlZCwgdGhpcykpOwogfQogCiB2b2lkIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKIHsKLSAgICBpZiAobV90YWdUaW1lckhhbmRsZXIp
Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3RhZ1RpbWVySGFuZGxlcik7CisgICAgbV90YWdU
aW1lckhhbmRsZXIuY2FuY2VsKCk7CiAKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+IHRhZ3M7CiAg
ICAgZ19vYmplY3RfZ2V0KG1fcGFkLmdldCgpLCAidGFncyIsICZ0YWdzLm91dFB0cigpLCBOVUxM
KTsKQEAgLTEzMCwxNCArMTA2LDExIEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
dGFnc0NoYW5nZWQoKQogICAgICAgICBtX3RhZ3Muc3dhcCh0YWdzKTsKICAgICB9CiAKLSAgICBt
X3RhZ1RpbWVySGFuZGxlciA9IGdfdGltZW91dF9hZGQoMCwKLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxHU291cmNlRnVuYz4odHJhY2tQcml2YXRlVGFnc0NoYW5nZVRpbWVvdXRDYWxsYmFjayks
IHRoaXMpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fdGFnVGltZXJIYW5kbGVyLCAi
W1dlYktpdF0gdHJhY2tQcml2YXRlVGFnc0NoYW5nZVRpbWVvdXRDYWxsYmFjayIpOworICAgIG1f
dGFnVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQiLCBzdGQ6OmJpbmQoJlRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCwgdGhpcykpOwogfQogCiB2b2lk
IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCkK
IHsKLSAgICBtX2FjdGl2ZVRpbWVySGFuZGxlciA9IDA7CiAgICAgaWYgKCFtX3BhZCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNzUsNyArMTQ4LDYgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMK
IAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5n
ZWQoKQogewotICAgIG1fdGFnVGltZXJIYW5kbGVyID0gMDsKICAgICBpZiAoIW1fcGFkKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5o
CmluZGV4IGM4MWVkOWEuLmUyMDAwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDggKzY4LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwg
U3RyaW5nJiB2YWx1ZSk7CiAKICAgICBUcmFja1ByaXZhdGVCYXNlKiBtX293bmVyOwotICAgIGd1
aW50IG1fYWN0aXZlVGltZXJIYW5kbGVyOwotICAgIGd1aW50IG1fdGFnVGltZXJIYW5kbGVyOwor
ICAgIEdNYWluTG9vcFNvdXJjZSBtX2FjdGl2ZVRpbWVySGFuZGxlcjsKKyAgICBHTWFpbkxvb3BT
b3VyY2UgbV90YWdUaW1lckhhbmRsZXI7CiAKICAgICBNdXRleCBtX3RhZ011dGV4OwogICAgIEdS
ZWZQdHI8R3N0VGFnTGlzdD4gbV90YWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cAppbmRleCAxN2QwYWVmLi4zOGU3ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxn
c3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dNdXRleExvY2tlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTc0LDcgKzc1
LDcgQEAgc3RhdGljIGd1aW50IHdlYmtpdFZpZGVvU2lua1NpZ25hbHNbTEFTVF9TSUdOQUxdID0g
eyAwLCB9OwogCiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAgIEdzdEJ1ZmZl
ciogYnVmZmVyOwotICAgIGd1aW50IHRpbWVvdXRJZDsKKyAgICBHTWFpbkxvb3BTb3VyY2UgdGlt
ZW91dFNvdXJjZTsKICAgICBHTXV0ZXgqIGJ1ZmZlck11dGV4OwogICAgIEdDb25kKiBkYXRhQ29u
ZGl0aW9uOwogCkBAIC0xMDAsNiArMTAxLDcgQEAgR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2Vi
S2l0VmlkZW9TaW5rLCB3ZWJraXRfdmlkZW9fc2luaywgR1NUX1RZUEVfVklERU9fU0lOSywKIHN0
YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2luaXQoV2ViS2l0VmlkZW9TaW5rKiBzaW5rKQog
ewogICAgIHNpbmstPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2luaywgV0VC
S0lUX1RZUEVfVklERU9fU0lOSywgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk7CisgICAgbmV3IChz
aW5rLT5wcml2KSBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKCk7CiAjaWYgR0xJQl9DSEVDS19WRVJT
SU9OKDIsIDMxLCAwKQogICAgIHNpbmstPnByaXYtPmRhdGFDb25kaXRpb24gPSBuZXcgR0NvbmQ7
CiAgICAgZ19jb25kX2luaXQoc2luay0+cHJpdi0+ZGF0YUNvbmRpdGlvbik7CkBAIC0xMTMsMjYg
KzExNSwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19pbml0KFdlYktpdFZpZGVv
U2luayogc2luaykKICAgICBnc3RfdmlkZW9faW5mb19pbml0KCZzaW5rLT5wcml2LT5pbmZvKTsK
IH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayhncG9p
bnRlciBkYXRhKQorc3RhdGljIHZvaWQgd2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrKFdl
YktpdFZpZGVvU2luayogc2luaykKIHsKLSAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSByZWlu
dGVycHJldF9jYXN0PFdlYktpdFZpZGVvU2luayo+KGRhdGEpOwogICAgIFdlYktpdFZpZGVvU2lu
a1ByaXZhdGUqIHByaXYgPSBzaW5rLT5wcml2OwogCiAgICAgR011dGV4TG9ja2VyIGxvY2socHJp
di0+YnVmZmVyTXV0ZXgpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gcHJpdi0+YnVmZmVyOwog
ICAgIHByaXYtPmJ1ZmZlciA9IDA7Ci0gICAgcHJpdi0+dGltZW91dElkID0gMDsKIAogICAgIGlm
ICghYnVmZmVyIHx8IHByaXYtPnVubG9ja2VkIHx8IFVOTElLRUxZKCFHU1RfSVNfQlVGRkVSKGJ1
ZmZlcikpKSB7CiAgICAgICAgIGdfY29uZF9zaWduYWwocHJpdi0+ZGF0YUNvbmRpdGlvbik7Ci0g
ICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdfc2ln
bmFsX2VtaXQoc2luaywgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tSRVBBSU5UX1JFUVVFU1RFRF0s
IDAsIGJ1ZmZlcik7CiAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwogICAgIGdfY29uZF9z
aWduYWwocHJpdi0+ZGF0YUNvbmRpdGlvbik7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0
YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFz
ZVNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQpAQCAtMjE2LDkgKzIxNCw5IEBAIHN0YXRpYyBHc3RG
bG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdz
dEJ1ZmZlciogYnVmCiAgICAgLy8gVGhpcyBzaG91bGQgbGlrZWx5IHVzZSBhIGxvd2VyIHByaW9y
aXR5LCBidXQgZ2xpYiBjdXJyZW50bHkgc3RhcnZlcwogICAgIC8vIGxvd2VyIHByaW9yaXR5IHNv
dXJjZXMuCiAgICAgLy8gU2VlOiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjEwODMwLgotICAgIHByaXYtPnRpbWVvdXRJZCA9IGdfdGltZW91dF9hZGRfZnVsbChH
X1BSSU9SSVRZX0RFRkFVTFQsIDAsIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzdF9vYmplY3RfcmVmKHNp
bmspLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7
Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+dGltZW91dElkLCAiW1dlYktpdF0g
d2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrIik7CisgICAgZ3N0X29iamVjdF9yZWYoc2lu
ayk7CisgICAgcHJpdi0+dGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2Via2l0Vmlk
ZW9TaW5rVGltZW91dENhbGxiYWNrIiwgc3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRD
YWxsYmFjaywgc2luayksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NpbmtdIHsgZ3N0
X29iamVjdF91bnJlZihzaW5rKTsgfSk7CiAKICAgICBnX2NvbmRfd2FpdChwcml2LT5kYXRhQ29u
ZGl0aW9uLCBwcml2LT5idWZmZXJNdXRleCk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAt
MjUyLDYgKzI1MCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtEaXNwb3NlKEdPYmpl
Y3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9i
amVjdCk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua0ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBXRUJLSVRfVklERU9fU0lOSyhvYmplY3QpLT5wcml2LT5+V2ViS2l0
VmlkZW9TaW5rUHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHBhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcGFyYW1ldGVyU3BlYykKIHsKICAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBX
RUJLSVRfVklERU9fU0lOSyhvYmplY3QpOwpAQCAtMzc2LDYgKzM4MCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNz
KQogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFZpZGVv
U2lua1ByaXZhdGUpKTsKIAogICAgIGdvYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFZpZGVv
U2lua0Rpc3Bvc2U7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFZpZGVvU2lu
a0ZpbmFsaXplOwogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0VmlkZW9T
aW5rR2V0UHJvcGVydHk7CiAKICAgICBiYXNlU2lua0NsYXNzLT51bmxvY2sgPSB3ZWJraXRWaWRl
b1NpbmtVbmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCA0MTJhOGQ3Li5hYTcyMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRN
ZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNyYy5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1
dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BT
b3VyY2UuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00MywxMSArNDQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X1NvdXJjZSB7CiAgICAgZ3VpbnQ2NCBzaXplOwogICAgIGdib29sZWFuIHBhdXNlZDsKIAotICAg
IGd1aW50IHN0YXJ0SWQ7Ci0gICAgZ3VpbnQgc3RvcElkOwotICAgIGd1aW50IG5lZWREYXRhSWQ7
Ci0gICAgZ3VpbnQgZW5vdWdoRGF0YUlkOwotICAgIGd1aW50IHNlZWtJZDsKKyAgICBHTWFpbkxv
b3BTb3VyY2Ugc3RhcnQ7CisgICAgR01haW5Mb29wU291cmNlIHN0b3A7CisgICAgR01haW5Mb29w
U291cmNlIG5lZWREYXRhOworICAgIEdNYWluTG9vcFNvdXJjZSBlbm91Z2hEYXRhOworICAgIEdN
YWluTG9vcFNvdXJjZSBzZWVrOwogCiAgICAgZ3VpbnQ2NCByZXF1ZXN0ZWRPZmZzZXQ7CiB9IFNv
dXJjZTsKQEAgLTE3Miw2ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3JjX2lu
aXQoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfTUVESUFfU1JDX0dFVF9QUklWQVRFKHNyYyk7CiAgICAgc3JjLT5wcml2ID0g
cHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSgpOwogCiAgICAgcHJp
di0+c291cmNlVmlkZW8uYXBwc3JjID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzcmMi
LCAidmlkZW9hcHBzcmMiKTsKICAgICBnc3RfYXBwX3NyY19zZXRfY2FsbGJhY2tzKEdTVF9BUFBf
U1JDKHByaXYtPnNvdXJjZVZpZGVvLmFwcHNyYyksICZhcHBzcmNDYWxsYmFja3NWaWRlbywgc3Jj
LCAwKTsKQEAgLTE4OCw2ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBwcml2LT5+V2ViS2l0TWVk
aWFTcmNQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZp
bmFsaXplLCAob2JqZWN0KSk7CiB9CkBAIC0yMjMsMzUgKzIyNiwyMyBAQCBzdGF0aWMgdm9pZCB3
ZWJLaXRNZWRpYVNyY0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBH
VmFsdWUqIHZhbAogfQogCiAvLyBtdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZCBhbmQgd2l0
aCBvYmplY3QgdW5sb2NrZWQKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU3Rv
cChXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY1N0
b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHBy
aXYgPSBzcmMtPnByaXY7CiAgICAgZ2Jvb2xlYW4gc2Vla2luZzsKIAogICAgIEdTVF9PQkpFQ1Rf
TE9DSyhzcmMpOwogCi0gICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZDsKKyAg
ICBzZWVraW5nID0gcHJpdi0+c291cmNlVmlkZW8uc2Vlay5pc0FjdGl2ZSgpOwogCi0gICAgaWYg
KHByaXYtPnNvdXJjZVZpZGVvLnN0YXJ0SWQpIHsKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHBy
aXYtPnNvdXJjZVZpZGVvLnN0YXJ0SWQpOwotICAgICAgICBwcml2LT5zb3VyY2VWaWRlby5zdGFy
dElkID0gMDsKLSAgICB9CisgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnQuY2FuY2VsKCk7CiAK
ICAgICBwcml2LT5wbGF5ZXIgPSAwOwogICAgIHByaXYtPnBsYXliaW4gPSAwOwogCi0gICAgaWYg
KHByaXYtPnNvdXJjZVZpZGVvLm5lZWREYXRhSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShw
cml2LT5zb3VyY2VWaWRlby5uZWVkRGF0YUlkKTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5uZWVk
RGF0YUlkID0gMDsKLQotICAgIGlmIChwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhSWQpCi0g
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hEYXRhSWQpOwot
ICAgIHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCA9IDA7Ci0KLSAgICBpZiAocHJpdi0+
c291cmNlVmlkZW8uc2Vla0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c291cmNl
VmlkZW8uc2Vla0lkKTsKLQotICAgIHByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCA9IDA7CisgICAg
cHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGEuY2FuY2VsKCk7CisgICAgcHJpdi0+c291cmNlVmlk
ZW8uZW5vdWdoRGF0YS5jYW5jZWwoKTsKKyAgICBwcml2LT5zb3VyY2VWaWRlby5zZWVrLmNhbmNl
bCgpOwogCiAgICAgcHJpdi0+c291cmNlVmlkZW8ucGF1c2VkID0gRkFMU0U7CiAgICAgcHJpdi0+
c291cmNlVmlkZW8ub2Zmc2V0ID0gMDsKQEAgLTI2MCw4ICsyNTEsNiBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICBwcml2
LT5kdXJhdGlvbiA9IDA7CiAgICAgcHJpdi0+bmJTb3VyY2UgPSAwOwogCi0gICAgcHJpdi0+c291
cmNlVmlkZW8uc3RvcElkID0gMDsKLQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAKICAg
ICBpZiAocHJpdi0+c291cmNlVmlkZW8uYXBwc3JjKSB7CkBAIC0yNzEsNDAgKzI2MCwyNiBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNy
YykKICAgICB9CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIp
OwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFB
dWRpb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlh
QXVkaW9TcmNTdG9wKFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogICAgIGdib29sZWFuIHNlZWtpbmc7CiAKICAgICBH
U1RfT0JKRUNUX0xPQ0soc3JjKTsKIAotICAgIHNlZWtpbmcgPSBwcml2LT5zb3VyY2VBdWRpby5z
ZWVrSWQ7CisgICAgc2Vla2luZyA9IHByaXYtPnNvdXJjZUF1ZGlvLnNlZWsuaXNBY3RpdmUoKTsK
IAotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5zdGFydElkKSB7Ci0gICAgICAgIGdfc291cmNl
X3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5zdGFydElkKTsKLSAgICAgICAgcHJpdi0+c291cmNl
QXVkaW8uc3RhcnRJZCA9IDA7Ci0gICAgfQorICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0YXJ0LmNh
bmNlbCgpOwogCiAgICAgcHJpdi0+cGxheWVyID0gMDsKIAogICAgIHByaXYtPnBsYXliaW4gPSAw
OwogCi0gICAgaWYgKHByaXYtPnNvdXJjZUF1ZGlvLm5lZWREYXRhSWQpCi0gICAgICAgIGdfc291
cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkKTsKLSAgICBwcml2LT5zb3Vy
Y2VBdWRpby5uZWVkRGF0YUlkID0gMDsKLQotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5lbm91
Z2hEYXRhSWQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5lbm91
Z2hEYXRhSWQpOwotICAgIHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGFJZCA9IDA7Ci0KLSAg
ICBpZiAocHJpdi0+c291cmNlQXVkaW8uc2Vla0lkKQotICAgICAgICBnX3NvdXJjZV9yZW1vdmUo
cHJpdi0+c291cmNlQXVkaW8uc2Vla0lkKTsKLQotICAgIHByaXYtPnNvdXJjZUF1ZGlvLnNlZWtJ
ZCA9IDA7CisgICAgcHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEuY2FuY2VsKCk7CisgICAgcHJp
di0+c291cmNlQXVkaW8uZW5vdWdoRGF0YS5jYW5jZWwoKTsKKyAgICBwcml2LT5zb3VyY2VBdWRp
by5zZWVrLmNhbmNlbCgpOwogCiAgICAgcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkID0gRkFMU0U7
CiAKQEAgLTMxNSw4ICsyOTAsNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1Ny
Y1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICBwcml2LT5kdXJhdGlvbiA9IDA7CiAgICAg
cHJpdi0+bmJTb3VyY2UgPSAwOwogCi0gICAgcHJpdi0+c291cmNlQXVkaW8uc3RvcElkID0gMDsK
LQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAKICAgICBpZiAocHJpdi0+c291cmNlQXVk
aW8uYXBwc3JjKSB7CkBAIC0zMjYsMTIgKzI5OSwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
TWVkaWFBdWRpb1NyY1N0b3AoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICB9CiAKICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIpOwotCi0gICAgcmV0dXJuIEZBTFNF
OwogfQogCiAvLyBtdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZCBhbmQgd2l0aCBvYmplY3Qg
dW5sb2NrZWQKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQoV2ViS2l0
TWVkaWFTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNTdGFydChXZWJL
aXRNZWRpYVNyYyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNy
Yy0+cHJpdjsKIApAQCAtMzQwLDE5ICszMTEsMTUgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1l
ZGlhVmlkZW9TcmNTdGFydChXZWJLaXRNZWRpYVNyYyogc3JjKQogICAgICAgICBHU1RfRVJST1Jf
T0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOwogICAgICAgICBHU1RfT0JKRUNUX1VOTE9D
SyhzcmMpOwogICAgICAgICB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RvcChzcmMpOwotICAgICAgICBy
ZXR1cm4gRkFMU0U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcml2LT5zb3VyY2VW
aWRlby5zdGFydElkID0gMDsKLQogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJTdGFydGVkIHJlcXVlc3QiKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAogLy8gbXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQgYW5kIHdpdGggb2JqZWN0
IHVubG9ja2VkCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFBdWRpb1NyY1N0YXJ0KFdlYktp
dE1lZGlhU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RhcnQoV2Vi
S2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKQEAgLTM2MSwxNSArMzI4LDExIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYUF1ZGlvU3JjU3RhcnQoV2ViS2l0TWVkaWFTcmMqIHNyYykKICAgICAgICAgR1NUX0VSUk9S
X09CSkVDVChzcmMsICJObyBVUkkgcHJvdmlkZWQiKTsKICAgICAgICAgR1NUX09CSkVDVF9VTkxP
Q0soc3JjKTsKICAgICAgICAgd2ViS2l0TWVkaWFBdWRpb1NyY1N0b3Aoc3JjKTsKLSAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJpdi0+c291cmNl
QXVkaW8uc3RhcnRJZCA9IDA7Ci0KICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhcnRlZCByZXF1ZXN0Iik7Ci0KLSAgICByZXR1cm4gRkFM
U0U7CiB9CiAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRNZWRpYVNyY0NoYW5n
ZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCkBA
IC00MDEsMTkgKzM2NCwyOSBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVk
aWFTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RTdAogICAgIGNhc2UgR1NU
X1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUkVBRFktPlBBVVNFRCIpOwogICAgICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAg
ICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RhcnRJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BS
SU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0
LCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYp
OwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRlby5zdGFy
dElkLCAiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1N0YXJ0Iik7Ci0gICAgICAgIHByaXYt
PnNvdXJjZUF1ZGlvLnN0YXJ0SWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ERUZB
VUxULCAwLCAoR1NvdXJjZUZ1bmMpIHdlYktpdE1lZGlhQXVkaW9TcmNTdGFydCwgZ3N0X29iamVj
dF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKLSAgICAgICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uc3RhcnRJZCwgIltXZWJL
aXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTdGFydCIpOworCisgICAgICAgIGdzdF9vYmplY3RfcmVm
KHNyYyk7CisgICAgICAgIHByaXYtPnNvdXJjZVZpZGVvLnN0YXJ0LnNjaGVkdWxlKCJbV2ViS2l0
XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU3RhcnQiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1Ny
Y1N0YXJ0LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAgICBbc3JjXSB7IGdz
dF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CisKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsK
KyAgICAgICAgcHJpdi0+c291cmNlQXVkaW8uc3RhcnQuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktp
dE1lZGlhQXVkaW9TcmNTdGFydCIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RhcnQs
IHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgICAgIFtzcmNdIHsgZ3N0X29iamVj
dF91bnJlZihzcmMpOyB9KTsKKwogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgog
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBBVVNFRC0+UkVBRFkiKTsKICAgICAgICAg
R1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0gICAgICAgIHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCA9
IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykg
d2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5v
dGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lk
KHByaXYtPnNvdXJjZVZpZGVvLnN0b3BJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhVmlkZW9TcmNT
dG9wIik7Ci0gICAgICAgIHByaXYtPnNvdXJjZUF1ZGlvLnN0b3BJZCA9IGdfdGltZW91dF9hZGRf
ZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRp
b1NyY1N0b3AsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVj
dF91bnJlZik7Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYtPnNvdXJjZUF1
ZGlvLnN0b3BJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNTdG9wIik7CisKKyAgICAg
ICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c291cmNlVmlkZW8uc3RvcC5z
Y2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1N0b3AiLCBzdGQ6OmJpbmQod2Vi
S2l0TWVkaWFWaWRlb1NyY1N0b3AsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAg
ICAgIFtzcmNdIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKworICAgICAgICBnc3Rfb2Jq
ZWN0X3JlZihzcmMpOworICAgICAgICBwcml2LT5zb3VyY2VBdWRpby5zdG9wLnNjaGVkdWxlKCJb
V2ViS2l0XSB3ZWJLaXRNZWRpYUF1ZGlvU3JjU3RvcCIsIHN0ZDo6YmluZCh3ZWJLaXRNZWRpYUF1
ZGlvU3JjU3RvcCwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICAgICAgW3NyY10g
eyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOworCiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NL
KHNyYyk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC01MTksNDAgKzQ5MiwyMiBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFj
ZSwgZ3BvaW50ZXIpCiB9CiAKIC8vIGFwcHNyYyBjYWxsYmFja3MKLXN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRNZWRpYVZpZGVvU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKK3N0
YXRpYyB2b2lkIHdlYktpdE1lZGlhVmlkZW9TcmNOZWVkRGF0YU1haW5DYihXZWJLaXRNZWRpYVNy
Yyogc3JjKQogewogICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsK
IAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIC8vIGFscmVhZHkgc3RvcHBlZAotICAg
IGlmICghcHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+
c291cmNlVmlkZW8ucGF1c2VkID0gRkFMU0U7Ci0gICAgcHJpdi0+c291cmNlVmlkZW8ubmVlZERh
dGFJZCA9IDA7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5D
YihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY05l
ZWREYXRhTWFpbkNiKFdlYktpdE1lZGlhU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7Ci0g
ICAgLy8gYWxyZWFkeSBzdG9wcGVkCi0gICAgaWYgKCFwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0
YUlkKSB7Ci0gICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7Ci0gICAgICAgIHJldHVybiBG
QUxTRTsKLSAgICB9Ci0KICAgICBwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQgPSBGQUxTRTsKLSAg
ICBwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkID0gMDsKICAgICBHU1RfT0JKRUNUX1VOTE9D
SyhzcmMpOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRp
YVZpZGVvU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVz
ZXJEYXRhKQpAQCAtNTYzLDEzICs1MTgsMTQgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFWaWRl
b1NyY05lZWREYXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2UKICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIk5lZWQgbW9yZSBkYXRhOiAldSIsIGxlbmd0aCk7CiAK
ICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICBpZiAocHJpdi0+c291cmNlVmlkZW8ubmVl
ZERhdGFJZCB8fCAhcHJpdi0+c291cmNlVmlkZW8ucGF1c2VkKSB7CisgICAgaWYgKHByaXYtPnNv
dXJjZVZpZGVvLm5lZWREYXRhLmlzU2NoZWR1bGVkKCkgfHwgIXByaXYtPnNvdXJjZVZpZGVvLnBh
dXNlZCkgewogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcHJpdi0+c291cmNlVmlkZW8ubmVlZERhdGFJZCA9IGdfdGltZW91dF9h
ZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFW
aWRlb1NyY05lZWREYXRhTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3Rp
ZnkpIGdzdF9vYmplY3RfdW5yZWYpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHByaXYt
PnNvdXJjZVZpZGVvLm5lZWREYXRhSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjTmVl
ZERhdGFNYWluQ2IiKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNvdXJj
ZVZpZGVvLm5lZWREYXRhLnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjTmVl
ZERhdGFNYWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1NyY05lZWREYXRhTWFpbkNi
LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0X29iamVjdF91
bnJlZihzcmMpOyB9KTsKICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogfQogCkBAIC01ODEs
NTAgKzUzNywzMyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFDYihH
c3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZQogICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiTmVlZCBtb3JlIGRhdGE6ICV1IiwgbGVuZ3RoKTsKIAogICAgIEdTVF9PQkpFQ1Rf
TE9DSyhzcmMpOwotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkIHx8ICFwcml2
LT5zb3VyY2VBdWRpby5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+c291cmNlQXVkaW8ubmVlZERh
dGEuaXNTY2hlZHVsZWQoKSB8fCAhcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkKSB7CiAgICAgICAg
IEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBw
cml2LT5zb3VyY2VBdWRpby5uZWVkRGF0YUlkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJ
VFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFN
YWluQ2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91
bnJlZik7Ci0gICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8ubmVl
ZERhdGFJZCwgIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5DYiIpOwor
ICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlQXVkaW8ubmVlZERhdGEu
c2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNOZWVkRGF0YU1haW5DYiIsIHN0
ZDo6YmluZCh3ZWJLaXRNZWRpYUF1ZGlvU3JjTmVlZERhdGFNYWluQ2IsIHNyYyksIEdfUFJJT1JJ
VFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwog
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYVZpZGVvU3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGlj
IHZvaWQgd2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMq
IHNyYykKIHsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAK
ICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBp
ZiAoIXByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzcmMpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+
c291cmNlVmlkZW8ucGF1c2VkID0gVFJVRTsKLSAgICBwcml2LT5zb3VyY2VWaWRlby5lbm91Z2hE
YXRhSWQgPSAwOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7Ci0KLSAgICByZXR1cm4gRkFM
U0U7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUF1ZGlvU3JjRW5vdWdoRGF0YU1h
aW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1Ny
Y0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0TWVkaWFTcmMqIHNyYykKIHsKICAgICBXZWJLaXRNZWRp
YVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKICAgICBHU1RfT0JKRUNUX0xPQ0soc3Jj
KTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBpZiAoIXByaXYtPnNvdXJjZUF1ZGlvLmVu
b3VnaERhdGFJZCkgewotICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyhzcmMpOwotICAgICAgICBy
ZXR1cm4gRkFMU0U7Ci0gICAgfQotCiAgICAgcHJpdi0+c291cmNlQXVkaW8ucGF1c2VkID0gVFJV
RTsKLSAgICBwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhSWQgPSAwOwogICAgIEdTVF9PQkpF
Q1RfVU5MT0NLKHNyYyk7Ci0KLSAgICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyB2b2lkIHdl
YktpdE1lZGlhVmlkZW9TcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRh
dGEpCkBAIC02MzUsMTMgKzU3NCwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVZpZGVvU3Jj
RW5vdWdoRGF0YUNiKEdzdEFwcFNyYyosIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiSGF2ZSBlbm91Z2ggZGF0YSIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NL
KHNyYyk7Ci0gICAgaWYgKHByaXYtPnNvdXJjZVZpZGVvLmVub3VnaERhdGFJZCB8fCBwcml2LT5z
b3VyY2VWaWRlby5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+c291cmNlVmlkZW8uZW5vdWdoRGF0
YS5pc1NjaGVkdWxlZCgpIHx8IHByaXYtPnNvdXJjZVZpZGVvLnBhdXNlZCkgewogICAgICAgICBH
U1RfT0JKRUNUX1VOTE9DSyhzcmMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJp
di0+c291cmNlVmlkZW8uZW5vdWdoRGF0YUlkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJ
VFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYVZpZGVvU3JjRW5vdWdoRGF0
YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0
X3VucmVmKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRlby5l
bm91Z2hEYXRhSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjRW5vdWdoRGF0YU1haW5D
YiIpOworICAgIGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlVmlkZW8uZW5v
dWdoRGF0YS5zY2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFN
YWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0TWVkaWFWaWRlb1NyY0Vub3VnaERhdGFNYWluQ2IsIHNy
YyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVm
KHNyYyk7IH0pOworCiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc3JjKTsKIH0KIApAQCAtNjUzLDI4
ICs1OTQsMjcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFDYihH
c3RBcHBTcmMqLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IkhhdmUgZW5vdWdoIGRhdGEiKTsKIAogICAgIEdTVF9PQkpFQ1RfTE9DSyhzcmMpOwotICAgIGlm
IChwcml2LT5zb3VyY2VBdWRpby5lbm91Z2hEYXRhSWQgfHwgcHJpdi0+c291cmNlQXVkaW8ucGF1
c2VkKSB7CisgICAgaWYgKHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGEuaXNTY2hlZHVsZWQo
KSB8fCBwcml2LT5zb3VyY2VBdWRpby5wYXVzZWQpIHsKICAgICAgICAgR1NUX09CSkVDVF9VTkxP
Q0soc3JjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByaXYtPnNvdXJjZUF1ZGlv
LmVub3VnaERhdGFJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIDAs
IChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IsIGdzdF9v
YmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uZW5vdWdoRGF0YUlkLCAi
W1dlYktpdF0gd2ViS2l0TWVkaWFBdWRpb1NyY0Vub3VnaERhdGFNYWluQ2IiKTsKKyAgICBnc3Rf
b2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNvdXJjZUF1ZGlvLmVub3VnaERhdGEuc2NoZWR1
bGUoIltXZWJLaXRdIHdlYktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiIiwgc3RkOjpi
aW5kKHdlYktpdE1lZGlhQXVkaW9TcmNFbm91Z2hEYXRhTWFpbkNiLCBzcmMpLCBHX1BSSU9SSVRZ
X0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwog
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRN
ZWRpYVZpZGVvU3JjU2Vla01haW5DYihXZWJLaXRNZWRpYVNyYyogc3JjKQorc3RhdGljIHZvaWQg
d2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IoV2ViS2l0TWVkaWFTcmMqKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgc3JjLT5wcml2LT5zb3VyY2VWaWRlby5zZWVrSWQgPSAwOwot
ICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9T
cmNTZWVrTWFpbkNiKFdlYktpdE1lZGlhU3JjKiBzcmMpCisKK3N0YXRpYyB2b2lkIHdlYktpdE1l
ZGlhQXVkaW9TcmNTZWVrTWFpbkNiKFdlYktpdE1lZGlhU3JjKikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHNyYy0+cHJpdi0+c291cmNlQXVkaW8uc2Vla0lkID0gMDsKLSAgICByZXR1
cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla0Rh
dGFDYihHc3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03
MDEsMTAgKzY0MSwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtE
YXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiRG9pbmcgcmFuZ2UtcmVxdWVzdCBzZWVrIik7CiAgICAgcHJpdi0+c291cmNl
VmlkZW8ucmVxdWVzdGVkT2Zmc2V0ID0gb2Zmc2V0OwogCi0gICAgaWYgKHByaXYtPnNvdXJjZVZp
ZGVvLnNlZWtJZCkKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNvdXJjZVZpZGVvLnNl
ZWtJZCk7Ci0gICAgcHJpdi0+c291cmNlVmlkZW8uc2Vla0lkID0gZ190aW1lb3V0X2FkZF9mdWxs
KEdfUFJJT1JJVFlfREVGQVVMVCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRNZWRpYVZpZGVvU3Jj
U2Vla01haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2Jq
ZWN0X3VucmVmKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChwcml2LT5zb3VyY2VWaWRl
by5zZWVrSWQsICJbV2ViS2l0XSB3ZWJLaXRNZWRpYVZpZGVvU3JjU2Vla01haW5DYiIpOworICAg
IGdzdF9vYmplY3RfcmVmKHNyYyk7CisgICAgcHJpdi0+c291cmNlVmlkZW8uc2Vlay5zY2hlZHVs
ZSgiW1dlYktpdF0gd2ViS2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IiLCBzdGQ6OmJpbmQod2Vi
S2l0TWVkaWFWaWRlb1NyY1NlZWtNYWluQ2IsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAg
ICAgICAgW3NyY10geyBnc3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOworCiAgICAgR1NUX09CSkVD
VF9VTkxPQ0soc3JjKTsKIAogICAgIHJldHVybiBUUlVFOwpAQCAtNzM0LDEwICs2NzQsMTAgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQXVkaW9TcmNTZWVrRGF0YUNiKEdzdEFwcFNyYyos
IGd1aW50NjQgb2Zmc2V0LCBncG9pbnQKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkRvaW5n
IHJhbmdlLXJlcXVlc3Qgc2VlayIpOwogICAgIHByaXYtPnNvdXJjZUF1ZGlvLnJlcXVlc3RlZE9m
ZnNldCA9IG9mZnNldDsKIAotICAgIGlmIChwcml2LT5zb3VyY2VBdWRpby5zZWVrSWQpCi0gICAg
ICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zb3VyY2VBdWRpby5zZWVrSWQpOwotICAgIHByaXYt
PnNvdXJjZUF1ZGlvLnNlZWtJZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFV
TFQsIDAsIChHU291cmNlRnVuYykgd2ViS2l0TWVkaWFBdWRpb1NyY1NlZWtNYWluQ2IsIGdzdF9v
YmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Ci0gICAg
Z19zb3VyY2Vfc2V0X25hbWVfYnlfaWQocHJpdi0+c291cmNlQXVkaW8uc2Vla0lkLCAiW1dlYktp
dF0gd2ViS2l0TWVkaWFBdWRpb1NyY1NlZWtNYWluQ2IiKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihz
cmMpOworICAgIHByaXYtPnNvdXJjZUF1ZGlvLnNlZWsuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktp
dE1lZGlhQXVkaW9TcmNTZWVrTWFpbkNiIiwgc3RkOjpiaW5kKHdlYktpdE1lZGlhQXVkaW9TcmNT
ZWVrTWFpbkNiLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFtzcmNdIHsgZ3N0
X29iamVjdF91bnJlZihzcmMpOyB9KTsKKwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNyYyk7CiAK
ICAgICByZXR1cm4gVFJVRTsKQEAgLTgyMiwxNCArNzYyLDE0IEBAIHZvaWQgTWVkaWFTb3VyY2VD
bGllbnRHc3RyZWFtZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlKQogICAgIEdTVF9ERUJVR19P
QkpFQ1QobV9zcmMsICJIYXZlIEVPUyIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fc3JjKTsK
LSAgICBpZiAoIXByaXYtPnNvdXJjZVZpZGVvLnNlZWtJZCkgeworICAgIGlmICghcHJpdi0+c291
cmNlVmlkZW8uc2Vlay5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKG1f
c3JjKTsKICAgICAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShHU1RfQVBQX1NSQyhwcml2
LT5zb3VyY2VWaWRlby5hcHBzcmMpKTsKICAgICB9IGVsc2UKICAgICAgICAgR1NUX09CSkVDVF9V
TkxPQ0sobV9zcmMpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fc3JjKTsKLSAgICBpZiAoIXBy
aXYtPnNvdXJjZUF1ZGlvLnNlZWtJZCkgeworICAgIGlmICghcHJpdi0+c291cmNlQXVkaW8uc2Vl
ay5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLKG1fc3JjKTsKICAgICAg
ICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShHU1RfQVBQX1NSQyhwcml2LT5zb3VyY2VBdWRp
by5hcHBzcmMpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggOGNiOGE0ZC4uMjhiOTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29w
U291cmNlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR011dGV4TG9ja2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KQEAgLTEyNiwxMSArMTI3LDExIEBAIHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7
CiAKICAgICBndWludDY0IHJlcXVlc3RlZE9mZnNldDsKIAotICAgIGd1aW50IHN0YXJ0SUQ7Ci0g
ICAgZ3VpbnQgc3RvcElEOwotICAgIGd1aW50IG5lZWREYXRhSUQ7Ci0gICAgZ3VpbnQgZW5vdWdo
RGF0YUlEOwotICAgIGd1aW50IHNlZWtJRDsKKyAgICBHTWFpbkxvb3BTb3VyY2Ugc3RhcnRTb3Vy
Y2U7CisgICAgR01haW5Mb29wU291cmNlIHN0b3BTb3VyY2U7CisgICAgR01haW5Mb29wU291cmNl
IG5lZWREYXRhU291cmNlOworICAgIEdNYWluTG9vcFNvdXJjZSBlbm91Z2hEYXRhU291cmNlOwor
ICAgIEdNYWluTG9vcFNvdXJjZSBzZWVrU291cmNlOwogCiAgICAgR1JlZlB0cjxHc3RCdWZmZXI+
IGJ1ZmZlcjsKIApAQCAtMjUzLDYgKzI1NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X2luaXQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfU1JDX0dFVF9QUklWQVRFKHNyYyk7CiAKICAgICBzcmMtPnByaXYgPSBwcml2
OworICAgIG5ldyAocHJpdikgV2ViS2l0V2ViU3JjUHJpdmF0ZSgpOwogCiAgICAgcHJpdi0+YXBw
c3JjID0gR1NUX0FQUF9TUkMoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzcmMiLCAwKSk7
CiAgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKQEAgLTMxNCw2ICszMTYsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViU3Jj
UHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIGdfZnJlZShwcml2LT51cmkpOworICAg
IHByaXYtPn5XZWJLaXRXZWJTcmNQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19P
QkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CiB9CkBAIC0zNjQsMjQgKzM2NywxMyBA
QCBzdGF0aWMgdm9pZCByZW1vdmVUaW1lb3V0U291cmNlcyhXZWJLaXRXZWJTcmMqIHNyYykKIHsK
ICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0gICAgaWYgKHBy
aXYtPnN0YXJ0SUQpCi0gICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zdGFydElEKTsKLSAg
ICBwcml2LT5zdGFydElEID0gMDsKLQotICAgIGlmIChwcml2LT5uZWVkRGF0YUlEKQotICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+bmVlZERhdGFJRCk7Ci0gICAgcHJpdi0+bmVlZERhdGFJ
RCA9IDA7Ci0KLSAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlEKQotICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUocHJpdi0+ZW5vdWdoRGF0YUlEKTsKLSAgICBwcml2LT5lbm91Z2hEYXRhSUQgPSAwOwot
Ci0gICAgaWYgKHByaXYtPnNlZWtJRCkKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNl
ZWtJRCk7Ci0gICAgcHJpdi0+c2Vla0lEID0gMDsKKyAgICBwcml2LT5zdGFydFNvdXJjZS5jYW5j
ZWwoKTsKKyAgICBwcml2LT5uZWVkRGF0YVNvdXJjZS5jYW5jZWwoKTsKKyAgICBwcml2LT5lbm91
Z2hEYXRhU291cmNlLmNhbmNlbCgpOworICAgIHByaXYtPnNlZWtTb3VyY2UuY2FuY2VsKCk7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQor
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RvcChXZWJLaXRXZWJTcmMqIHNyYykKIHsKICAgICBX
ZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCkBAIC0zODksMTAgKzM4MSw5
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQog
CiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwogCi0g
ICAgYm9vbCBzZWVraW5nID0gcHJpdi0+c2Vla0lEOworICAgIGJvb2wgc2Vla2luZyA9IHByaXYt
PnNlZWtTb3VyY2UuaXNBY3RpdmUoKTsKIAogICAgIHJlbW92ZVRpbWVvdXRTb3VyY2VzKHNyYyk7
Ci0gICAgcHJpdi0+c3RvcElEID0gMDsKIAogICAgIGlmIChwcml2LT5jbGllbnQpIHsKICAgICAg
ICAgZGVsZXRlIHByaXYtPmNsaWVudDsKQEAgLTQzNiwxMSArNDI3LDkgQEAgc3RhdGljIGdib29s
ZWFuIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQogCiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJTdG9wcGVkIHJlcXVlc3QiKTsKLQotICAgIHJldHVybiBGQUxT
RTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyog
c3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiB7
CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIApAQCAtNDQ4LDEz
ICs0MzcsMTEgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNy
Yyogc3JjKQogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNy
YykpOwogCi0gICAgcHJpdi0+c3RhcnRJRCA9IDA7Ci0KICAgICBpZiAoIXByaXYtPnVyaSkgewog
ICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOwogICAgICAg
ICBsb2NrZXIudW5sb2NrKCk7CiAgICAgICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKLSAgICAg
ICAgcmV0dXJuIEZBTFNFOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKCFw
cml2LT5jbGllbnQpOwpAQCAtNTEwLDEwICs0OTcsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgICAgIH0KICAgICAgICAgbG9ja2Vy
LnVubG9jaygpOwogICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7Ci0gICAgICAgIHJldHVy
biBGQUxTRTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBHU1RfREVCVUdfT0JKRUNUKHNy
YywgIlN0YXJ0ZWQgcmVxdWVzdCIpOwotICAgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIEdz
dFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVs
ZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCkBAIC01NDUsMTMgKzUzMSwxNyBAQCBz
dGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViU3JjQ2hhbmdlU3RhdGUoR3N0RWxl
bWVudCogZWxlbWVudCwgR3N0U3RhdAogICAgIHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CiAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIpOwotICAgICAgICBwcml2LT5zdGFydElEID0gZ19p
ZGxlX2FkZF9mdWxsKEdfUFJJT1JJVFlfREVGQVVMVCwgKEdTb3VyY2VGdW5jKSB3ZWJLaXRXZWJT
cmNTdGFydCwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0
X3VucmVmKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAgICAgICAgcHJpdi0+c3Rh
cnRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY1N0YXJ0Iiwgc3RkOjpiaW5k
KHdlYktpdFdlYlNyY1N0YXJ0LCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAg
ICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CiAgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiUEFVU0VELT5SRUFEWSIpOwogICAgICAgICAvLyBjYW5jZWwgcGVuZGlu
ZyBzb3VyY2VzCiAgICAgICAgIHJlbW92ZVRpbWVvdXRTb3VyY2VzKHNyYyk7Ci0gICAgICAgIHBy
aXYtPnN0b3BJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNl
RnVuYykgd2ViS2l0V2ViU3JjU3RvcCwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90
aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWYoc3JjKTsKKyAg
ICAgICAgcHJpdi0+c3RvcFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2ViS2l0V2ViU3JjU3Rv
cCIsIHN0ZDo6YmluZCh3ZWJLaXRXZWJTcmNTdG9wLCBzcmMpLCBHX1BSSU9SSVRZX0RFRkFVTFQs
CisgICAgICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNjY2LDI0ICs2NTYsMTgg
QEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3BvaW50ZXIgZ0lmYWNl
LCBncG9pbnRlcikKIAogLy8gYXBwc3JjIGNhbGxiYWNrcwogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
S2l0V2ViU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCitzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNOZWVkRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKIHsKICAgICBXZWJL
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhz
cmMpKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBpZiAoIXByaXYtPm5lZWREYXRhSUQp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQogICAgIHByaXYtPnBhdXNlZCA9IEZBTFNFOwotICAg
IHByaXYtPm5lZWREYXRhSUQgPSAwOwogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAgIGlmIChw
cml2LT5jbGllbnQpCiAgICAgICAgIHByaXYtPmNsaWVudC0+c2V0RGVmZXJzTG9hZGluZyhmYWxz
ZSk7Ci0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVk
RGF0YUNiKEdzdEFwcFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC02
OTQsMzEgKzY3OCwyNiBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKEdzdEFw
cFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJOZWVkIG1vcmUgZGF0YTogJXUiLCBsZW5ndGgpOwogCiAgICAgR011dGV4TG9j
a2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAgIGlmIChwcml2LT5uZWVk
RGF0YUlEIHx8ICFwcml2LT5wYXVzZWQpIHsKKyAgICBpZiAocHJpdi0+bmVlZERhdGFTb3VyY2Uu
aXNTY2hlZHVsZWQoKSB8fCAhcHJpdi0+cGF1c2VkKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
Ci0gICAgcHJpdi0+bmVlZERhdGFJRCA9IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFV
TFQsIChHU291cmNlRnVuYykgd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IsIGdzdF9vYmplY3Rf
cmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7CisgICAgZ3N0X29i
amVjdF9yZWYoc3JjKTsKKyAgICBwcml2LT5uZWVkRGF0YVNvdXJjZS5zY2hlZHVsZSgiW1dlYktp
dF0gd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0V2ViU3JjTmVl
ZERhdGFNYWluQ2IsIHNyYyksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3NyY10geyBn
c3Rfb2JqZWN0X3VucmVmKHNyYyk7IH0pOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2Vi
U3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKK3N0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCiB7CiAgICAgV2ViS2l0
V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3Jj
KSk7Ci0gICAgLy8gYWxyZWFkeSBzdG9wcGVkCi0gICAgaWYgKCFwcml2LT5lbm91Z2hEYXRhSUQp
Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLQogICAgIHByaXYtPnBhdXNlZCA9IFRSVUU7Ci0gICAg
cHJpdi0+ZW5vdWdoRGF0YUlEID0gMDsKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBpZiAo
cHJpdi0+Y2xpZW50KQogICAgICAgICBwcml2LT5jbGllbnQtPnNldERlZmVyc0xvYWRpbmcodHJ1
ZSk7Ci0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91
Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC03MjksMjkgKzcwOCwy
MCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNFbm91Z2hEYXRhQ2IoR3N0QXBwU3JjKiwgZ3Bv
aW50ZXIgdXNlckRhdGEpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJIYXZlIGVub3VnaCBk
YXRhIik7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3Jj
KSk7Ci0gICAgaWYgKHByaXYtPmVub3VnaERhdGFJRCB8fCBwcml2LT5wYXVzZWQpIHsKKyAgICBp
ZiAocHJpdi0+ZW5vdWdoRGF0YVNvdXJjZS5pc1NjaGVkdWxlZCgpIHx8IHByaXYtPnBhdXNlZCkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIHByaXYtPmVub3VnaERhdGFJRCA9IGdfaWRs
ZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNlRnVuYykgd2ViS2l0V2ViU3Jj
RW5vdWdoRGF0YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBn
c3Rfb2JqZWN0X3VucmVmKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPmVu
b3VnaERhdGFTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY0Vub3VnaERhdGFN
YWluQ2IiLCBzdGQ6OmJpbmQod2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYiwgc3JjKSwgR19Q
UklPUklUWV9ERUZBVUxULAorICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsg
fSk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZWVrTWFpbkNiKFdlYktpdFdl
YlNyYyogc3JjKQorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2Vla01haW5DYihXZWJLaXRXZWJT
cmMqIHNyYykKIHsKLSAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2Owot
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIEdNdXRleExvY2tlciBsb2NrZXIo
R1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLSAgICAvLyBhbHJlYWR5IHN0b3BwZWQKLSAgICBp
ZiAoIXByaXYtPnNlZWtJRCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIGxvY2tlci51bmxv
Y2soKTsKLQogICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKICAgICB3ZWJLaXRXZWJTcmNTdGFy
dChzcmMpOwotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
V2ViU3JjU2Vla0RhdGFDYihHc3RBcHBTcmMqLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNl
ckRhdGEpCkBAIC03NzAsOSArNzQwLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1Nl
ZWtEYXRhQ2IoR3N0QXBwU3JjKiwgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVzZXIKICAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIkRvaW5nIHJhbmdlLXJlcXVlc3Qgc2VlayIpOwogICAgIHBy
aXYtPnJlcXVlc3RlZE9mZnNldCA9IG9mZnNldDsKIAotICAgIGlmIChwcml2LT5zZWVrSUQpCi0g
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zZWVrSUQpOwotICAgIHByaXYtPnNlZWtJRCA9
IGdfaWRsZV9hZGRfZnVsbChHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNlRnVuYykgd2ViS2l0
V2ViU3JjU2Vla01haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBn
c3Rfb2JqZWN0X3VucmVmKTsKKyAgICBnc3Rfb2JqZWN0X3JlZihzcmMpOworICAgIHByaXYtPnNl
ZWtTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYktpdFdlYlNyY1NlZWtNYWluQ2IiLCBzdGQ6
OmJpbmQod2ViS2l0V2ViU3JjU2Vla01haW5DYiwgc3JjKSwgR19QUklPUklUWV9ERUZBVUxULAor
ICAgICAgICBbc3JjXSB7IGdzdF9vYmplY3RfdW5yZWYoc3JjKTsgfSk7CiAgICAgcmV0dXJuIFRS
VUU7CiB9CiAKQEAgLTgyOCw3ICs3OTgsNyBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxl
UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAg
IEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIGlm
IChwcml2LT5zZWVrSUQpIHsKKyAgICBpZiAocHJpdi0+c2Vla1NvdXJjZS5pc0FjdGl2ZSgpKSB7
CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3Jp
bmcgcmVzcG9uc2UiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkzMiw3ICs5MDIsNyBA
QCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiAgICAgaWYgKHByaXYtPmJ1ZmZlcikKICAgICAgICAgdW5tYXBHc3RC
dWZmZXIocHJpdi0+YnVmZmVyLmdldCgpKTsKIAotICAgIGlmIChwcml2LT5zZWVrSUQpIHsKKyAg
ICBpZiAocHJpdi0+c2Vla1NvdXJjZS5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOwogICAgICAgICBw
cml2LT5idWZmZXIuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTkzLDcgKzk2Myw3IEBA
IHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVOb3RpZnlGaW5pc2hlZCgpCiAgICAgR1NUX0RF
QlVHX09CSkVDVChzcmMsICJIYXZlIEVPUyIpOwogCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihH
U1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAgIGlmICghcHJpdi0+c2Vla0lEKSB7CisgICAg
aWYgKCFwcml2LT5zZWVrU291cmNlLmlzQWN0aXZlKCkpIHsKICAgICAgICAgbG9ja2VyLnVubG9j
aygpOwogICAgICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHByaXYtPmFwcHNyYyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmRE
cm9wSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJv
cEhlbHBlci5jcHAKaW5kZXggZDQ5YzM1MjguLmZjNzgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJk
SGVscGVyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dN
YWluTG9vcFNvdXJjZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDE4ICs2OSw2
IEBAIHZvaWQgR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZUdldERyYWdEYXRhKEdka0RyYWdD
b250ZXh0KiBjb250ZXh0LCBHdGtTZWxlY3RpCiAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVs
dFBhc3RlYm9hcmRIZWxwZXIoKS0+ZmlsbFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSwgaW5m
bywgZGF0YU9iamVjdCk7CiB9CiAKLXN0cnVjdCBIYW5kbGVEcmFnTGF0ZXJEYXRhIHsKLSAgICBE
cm9wcGluZ0NvbnRleHQqIGNvbnRleHQ7Ci0gICAgR3RrRHJhZ0FuZERyb3BIZWxwZXIqIGdsdWU7
Ci19OwotCi1zdGF0aWMgZ2Jvb2xlYW4gaGFuZGxlRHJhZ0xlYXZlTGF0ZXJDYWxsYmFjayhIYW5k
bGVEcmFnTGF0ZXJEYXRhKiBkYXRhKQotewotICAgIGRhdGEtPmdsdWUtPmhhbmRsZURyYWdMZWF2
ZUxhdGVyKGRhdGEtPmNvbnRleHQpOwotICAgIGRlbGV0ZSBkYXRhOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQogdm9pZCBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0xlYXZlTGF0ZXIo
RHJvcHBpbmdDb250ZXh0KiBjb250ZXh0KQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Ryb3Bw
aW5nQ29udGV4dHMuZmluZChjb250ZXh0LT5nZGtDb250ZXh0KTsKQEAgLTEwOSwxMSArOTgsOCBA
QCB2b2lkIEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFnTGVhdmUoR2RrRHJhZ0NvbnRl
eHQqIGdka0NvbnRleHQsIERyYWdFeGl0ZQogICAgIC8vIER1cmluZyBhIGRyb3AgR1RLKyB3aWxs
IGZpcmUgYSBkcmFnLWxlYXZlIHNpZ25hbCByaWdodCBiZWZvcmUgZmlyaW5nCiAgICAgLy8gdGhl
IGRyYWctZHJvcCBzaWduYWwuIFdlIHdhbnQgdGhlIGFjdGlvbnMgZm9yIGRyYWctbGVhdmUgdG8g
aGFwcGVuIGFmdGVyCiAgICAgLy8gdGhvc2UgZm9yIGRyYWctZHJvcCwgc28gc2NoZWR1bGUgdGhl
bSB0byBoYXBwZW4gYXN5bmNocm9ub3VzbHkgaGVyZS4KLSAgICBIYW5kbGVEcmFnTGF0ZXJEYXRh
KiBkYXRhID0gbmV3IEhhbmRsZURyYWdMYXRlckRhdGE7Ci0gICAgZGF0YS0+Y29udGV4dCA9IGNv
bnRleHQ7Ci0gICAgZGF0YS0+Y29udGV4dC0+ZXhpdGVkQ2FsbGJhY2sgPSBleGl0ZWRDYWxsYmFj
azsKLSAgICBkYXRhLT5nbHVlID0gdGhpczsKLSAgICBnX2lkbGVfYWRkX2Z1bGwoR19QUklPUklU
WV9ERUZBVUxULCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihoYW5kbGVEcmFnTGVhdmVM
YXRlckNhbGxiYWNrKSwgZGF0YSwgMCk7CisgICAgY29udGV4dC0+ZXhpdGVkQ2FsbGJhY2sgPSBl
eGl0ZWRDYWxsYmFjazsKKyAgICBHTWFpbkxvb3BTb3VyY2U6OmNyZWF0ZUFuZERlbGV0ZU9uRGVz
dHJveSgpLnNjaGVkdWxlKCJbV2ViS2l0XSBoYW5kbGVEcmFnTGVhdmVMYXRlciIsIHN0ZDo6Ymlu
ZCgmR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdMZWF2ZUxhdGVyLCB0aGlzLCBjb250
ZXh0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHF1ZXJ5TmV3RHJvcENvbnRleHREYXRhKERyb3BwaW5n
Q29udGV4dCogZHJvcENvbnRleHQsIEd0a1dpZGdldCogd2lkZ2V0LCBndWludCB0aW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKaW5kZXggNThl
YWY1Ni4uMThhY2VjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1No
YXJlZFRpbWVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVk
VGltZXJHdGsuY3BwCkBAIC0yOCw0NyArMjgsMzIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFyZWRUaW1lci5oIgogCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0jaW5jbHVk
ZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBndWludCBzaGFyZWRUaW1lcjsKK3N0YXRpYyBH
TWFpbkxvb3BTb3VyY2UgZ1NoYXJlZFRpbWVyOwogc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZp
cmVkRnVuY3Rpb24pKCk7CiAKIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQg
KCpmKSgpKQogewogICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Ci19Ci0KLXN0YXRp
YyBnYm9vbGVhbiBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayhncG9pbnRlcikKLXsKLSAgICBp
ZiAoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24oKTsKLSAgICByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24pCisgICAgICAgIGdTaGFyZWRUaW1lci5jYW5jZWwoKTsKIH0KIAogdm9pZCBzZXRTaGFy
ZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7CiAgICAgQVNTRVJUKHNoYXJl
ZFRpbWVyRmlyZWRGdW5jdGlvbik7CiAKLSAgICBndWludCBpbnRlcnZhbEluTVMgPSBzdGF0aWNf
Y2FzdDxndWludD4oaW50ZXJ2YWwgKiAxMDAwKTsKLQotICAgIHN0b3BTaGFyZWRUaW1lcigpOwot
ICAgIHNoYXJlZFRpbWVyID0gZ190aW1lb3V0X2FkZF9mdWxsKEdES19QUklPUklUWV9SRURSQVcs
IGludGVydmFsSW5NUywgc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2ssIDAsIDApOwotICAgIGdf
c291cmNlX3NldF9uYW1lX2J5X2lkKHNoYXJlZFRpbWVyLCAiW1dlYktpdF0gc2hhcmVkVGltZXJU
aW1lb3V0Q2FsbGJhY2siKTsKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJb
V2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiwKKyAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwgR0RL
X1BSSU9SSVRZX1JFRFJBVyk7CiB9CiAKIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKIHsKLSAgICBp
ZiAoc2hhcmVkVGltZXIgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2Jvb2xlYW4gcmVt
b3ZlZFNvdXJjZSA9IGdfc291cmNlX3JlbW92ZShzaGFyZWRUaW1lcik7Ci0gICAgQVNTRVJUX1VO
VVNFRChyZW1vdmVkU291cmNlLCByZW1vdmVkU291cmNlKTsKLSAgICBzaGFyZWRUaW1lciA9IDA7
CisgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>