<?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>50082</bug_id>
          
          <creation_ts>2010-11-25 07:55:34 -0800</creation_ts>
          <short_desc>[Qt] Use QNetworkAccessManager zerocopy feature from QNetworkReplyHandler</short_desc>
          <delta_ts>2014-01-29 09:14:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55933</dependson>
          <blocked>36096</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Markus Goetz">markus</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>luiz</cc>
    
    <cc>max.hong.shen</cc>
    
    <cc>ossy</cc>
    
    <cc>peter.hartmann</cc>
    
    <cc>s.mathur</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>313768</commentid>
    <comment_count>0</comment_count>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-11-25 07:55:34 -0800</bug_when>
    <thetext>(will attach the patch tomorrow)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313947</commentid>
    <comment_count>1</comment_count>
      <attachid>74914</attachid>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-11-26 03:55:08 -0800</bug_when>
    <thetext>Created attachment 74914
patch attempt 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313949</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-26 04:06:31 -0800</bug_when>
    <thetext>Attachment 74914 did not build on qt:
Build output: http://queues.webkit.org/results/6315052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313966</commentid>
    <comment_count>3</comment_count>
      <attachid>74922</attachid>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-11-26 04:57:58 -0800</bug_when>
    <thetext>Created attachment 74922
patch attempt 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316098</commentid>
    <comment_count>4</comment_count>
      <attachid>74922</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-02 05:50:31 -0800</bug_when>
    <thetext>Comment on attachment 74922
patch attempt 2

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

&gt; WebCore/platform/SharedBuffer.cpp:242
&gt; -#if !PLATFORM(CF) || PLATFORM(QT)
&gt; +#if !PLATFORM(CF) &amp;&amp; !PLATFORM(QT)

this wont break normal build?

&gt; WebCore/platform/SharedBuffer.h:45
&gt;  #else
&gt;  class NSData;
&gt;  #endif
&gt; +#endif

This added endif here seems wrong

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:238
&gt; +    m_request.setAttribute(gMaximumDownloadBufferSizeAttribute, 1024*256); // 256 kB

needs spaces around *. Need dot at end of comment

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:370
&gt; +    // Check if there is a zerocopy buffer

Needs dot at end of comment

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:378
&gt; +        // Old school way. Use QNetworkReply as a QIODevice

Strange comment, rewrite also add dot at the end.

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:380
&gt; +        m_usingZeroCopy = false;

maybe call this m_usingZeroCopyFeature

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:485
&gt; +    // don&apos;t emit the &quot;Document has moved here&quot; type of HTML

End with dot, starts with capital

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:503
&gt; +                           oldSize, bytesReceived - oldSize, bytesReceived - oldSize /*FixMe*/);

call it FIXME: plus add a description on WHAT to fix!

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:638
&gt; +    // For zero copy

Misses dot.

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.h:94
&gt; +    // for zerocopy. Holds the download data:

fix comment

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.h:96
&gt; +    // for zerocopy it wraps m_byteBlock, otherwise it holds data normally:

also

&gt; WebCore/platform/qt/QByteBlock.cpp:29
&gt; +    QByteBlock* bb = new QByteBlock;

write out bb

&gt; WebCore/platform/qt/QByteBlock.cpp:46
&gt; +    return (const char*)(m_data.data());

I do not think the latter () are needed

&gt; WebCore/platform/qt/QByteBlock.cpp:51
&gt; +    m_size = s;

just write out s

&gt; WebCore/platform/qt/QByteBlock.cpp:56
&gt; +    m_capacity = c;

and c!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316113</commentid>
    <comment_count>5</comment_count>
      <attachid>75372</attachid>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-12-02 06:39:44 -0800</bug_when>
    <thetext>Created attachment 75372
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316114</commentid>
    <comment_count>6</comment_count>
      <attachid>75372</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-02 06:44:50 -0800</bug_when>
    <thetext>Comment on attachment 75372
v3

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

&gt; WebCore/platform/SharedBuffer.h:45
&gt;  #endif
&gt; +#endif

I trust you that this is git showing the diff wrong... if not, you need to fix it

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:237
&gt; +    // Then this buffer is provided to us in the QNetworkReply

Where is the dot!

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:240
&gt; +
&gt; +

No need for two newlines here

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:376
&gt; +        m_usingZeroCopy = true;

Please rename m_usingZeroCopy to m_usingZeroCopyFeature

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:503
&gt; +                           oldSize, bytesReceived - oldSize, bytesReceived - oldSize);

I would keep oldSize on the line above

&gt; WebCore/platform/network/qt/ResourceHandleQt.cpp:180
&gt; -    return false;
&gt; +    return true;

Shouldnt there be a &quot;if usingZeroCopyFeature&quot; here?

&gt; WebCore/platform/qt/QByteBlock.cpp:46
&gt; +    return (const char*)(m_data.data());

Remove latter ()

&gt; WebCore/platform/qt/SharedBufferQt.cpp:50
&gt; +    SharedBuffer* sb = new SharedBuffer();

Shouldn&apos;t this be RefPtr&lt;SharedBuffer*&gt; sb = new SharedBuffer() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316173</commentid>
    <comment_count>7</comment_count>
      <attachid>75372</attachid>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-12-02 08:49:33 -0800</bug_when>
    <thetext>Comment on attachment 75372
v3

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

Uploading new patch in a minute:)

&gt;&gt; WebCore/platform/SharedBuffer.h:45
&gt;&gt; +#endif
&gt; 
&gt; I trust you that this is git showing the diff wrong... if not, you need to fix it

Actually it is not showing it wrong. Just unintuitive. check the whole context.

&gt;&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:237
&gt;&gt; +    // Then this buffer is provided to us in the QNetworkReply
&gt; 
&gt; Where is the dot!

argh

&gt;&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:376
&gt;&gt; +        m_usingZeroCopy = true;
&gt; 
&gt; Please rename m_usingZeroCopy to m_usingZeroCopyFeature

No, with this patch we are always using the zero copy feature.
What we are checking is if the server allowed us to do it by giving a content-length header etc.

&gt;&gt; WebCore/platform/network/qt/ResourceHandleQt.cpp:180
&gt;&gt; +    return true;
&gt; 
&gt; Shouldnt there be a &quot;if usingZeroCopyFeature&quot; here?

No, it&apos;s always buffered by QNetworkReplyHandler now.
It&apos;s just different ways of buffering depending if zerocopy could be used or not. See QNetworkReplyHandler::sendResponseIfNeeded()

&gt;&gt; WebCore/platform/qt/SharedBufferQt.cpp:50
&gt;&gt; +    SharedBuffer* sb = new SharedBuffer();
&gt; 
&gt; Shouldn&apos;t this be RefPtr&lt;SharedBuffer*&gt; sb = new SharedBuffer() ?

I copied/modified that from somewhere else and as far as I understand the refcounting it should be fine..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316176</commentid>
    <comment_count>8</comment_count>
      <attachid>75383</attachid>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-12-02 09:01:08 -0800</bug_when>
    <thetext>Created attachment 75383
v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317488</commentid>
    <comment_count>9</comment_count>
      <attachid>75383</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-06 01:27:54 -0800</bug_when>
    <thetext>Comment on attachment 75383
v4

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

&gt; WebCore/WebCore.gypi:3144
&gt; +            &apos;platform/qt/QByteBlock.cpp&apos;,
&gt; +            &apos;platform/qt/QByteBlock.h&apos;,

Why is this called QByteBlock? ByteBlockQt seems more in line what we have elsewhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320676</commentid>
    <comment_count>10</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-11 07:21:37 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 75383 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75383&amp;action=review
&gt; 
&gt; &gt; WebCore/WebCore.gypi:3144
&gt; &gt; +            &apos;platform/qt/QByteBlock.cpp&apos;,
&gt; &gt; +            &apos;platform/qt/QByteBlock.h&apos;,
&gt; 
&gt; Why is this called QByteBlock? ByteBlockQt seems more in line what we have elsewhere

I am sorry that we always nitpick so much in WebKit. I have to admit that both names have issues. ByteBlockQt indicate that it is some generic interface and this is the Qt specific part and QByteBlock has the danger of clashing with future versions of Qt.  :}

I think for now you can remove the &apos;capacity&apos; call as no one is calling it?

I also have some questions. So QNetworkAccessManager will internally start changing the QSharedDataPointer&lt;char&gt;? Does this work with realloc? Somehow I would assume to see something like a QList&lt;QByteArray&gt; but I don&apos;t. So Qt will still re-alloc internally?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320681</commentid>
    <comment_count>11</comment_count>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-12-11 08:23:51 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I am sorry that we always nitpick so much in WebKit. I have to admit that both names have issues. ByteBlockQt indicate that it is some generic interface and this is the Qt specific part and QByteBlock has the danger of clashing with future versions of Qt.  :}

Yeah, well, but this one will always have the WebCore namespace :)

&gt; I think for now you can remove the &apos;capacity&apos; call as no one is calling it?

I might use it later with the image decoders, let&apos;s see.

&gt; 
&gt; I also have some questions. So QNetworkAccessManager will internally start changing the QSharedDataPointer&lt;char&gt;? Does this work with realloc? Somehow I would assume to see something like a QList&lt;QByteArray&gt; but I don&apos;t. So Qt will still re-alloc internally?

It will not re-allocate.
It goes through this codepath only if you allow it to do so (in the QNetworkRequest) and then only if the server supports it (e.g. content-length header is there). In my measurements 70% of the bytes coming with normal websurfing have that condition.
The QList&lt;QByteArray&gt; thing (actually not that but similar) is used internally in the other 30% of the cases.

Thanks for comments! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320682</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-11 08:26:56 -0800</bug_when>
    <thetext>This is why we should call it WebCore::QtByteBlock, this follows our current way of doing things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321037</commentid>
    <comment_count>13</comment_count>
      <attachid>76367</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2010-12-13 04:10:38 -0800</bug_when>
    <thetext>Created attachment 76367
v4 (rebased)

Here is the rebased patch, feel free to modify it or redo it from scratch before resending it for review.

I couldn&apos;t test the patch completely since, with Qt 4.7.1, I always got a null pointer from m_reply-&gt;attribute(QNetworkRequest::DownloadBufferAttribute). I got the same result with the v4 non-rebased patch so this might be a bug in Qt. You might want to verify the patch with a correct behaving Qt or you&apos;ll get a crash if I made any mistake rebasing that code-path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321044</commentid>
    <comment_count>14</comment_count>
      <attachid>76367</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-13 04:38:00 -0800</bug_when>
    <thetext>Comment on attachment 76367
v4 (rebased)

Oh come on Jocelyn :-) won&apos;t you do that QByteBlock to QtByteBlock renaming?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360027</commentid>
    <comment_count>15</comment_count>
      <attachid>76367</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-01 11:16:16 -0800</bug_when>
    <thetext>Comment on attachment 76367
v4 (rebased)

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

Could you please rebase again your changes? The source tree was reorganized some times ago. Thanks

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:59
&gt; +#if QT_VERSION &gt;= QT_VERSION_CHECK(4, 7, 0)

We do now :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362420</commentid>
    <comment_count>16</comment_count>
      <attachid>84725</attachid>
    <who name="Markus Goetz">markus</who>
    <bug_when>2011-03-04 04:58:53 -0800</bug_when>
    <thetext>Created attachment 84725
one more patch attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362422</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-04 05:00:29 -0800</bug_when>
    <thetext>Attachment 84725 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 8 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>362440</commentid>
    <comment_count>18</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-04 05:38:10 -0800</bug_when>
    <thetext>Attachment 84725 did not build on qt:
Build output: http://queues.webkit.org/results/8094034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362462</commentid>
    <comment_count>19</comment_count>
      <attachid>84739</attachid>
    <who name="Markus Goetz">markus</who>
    <bug_when>2011-03-04 06:37:58 -0800</bug_when>
    <thetext>Created attachment 84739
..and one more, this time with the new files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362507</commentid>
    <comment_count>20</comment_count>
      <attachid>84739</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-04 08:21:51 -0800</bug_when>
    <thetext>Comment on attachment 84739
..and one more, this time with the new files

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

&gt; Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:231
&gt; +    // Then this buffer is provided to us in the QNetworkReply.

I don&apos;t understand this English

&gt; Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:382
&gt; +       m_usingZeroCopy = true;

Wrong identation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363894</commentid>
    <comment_count>21</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-03-08 01:14:32 -0800</bug_when>
    <thetext>Committed r80551: &lt;http://trac.webkit.org/changeset/80551&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363902</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-08 01:33:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80551 might have broken Qt Windows 32-bit Release and Qt Windows 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363935</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-03-08 05:06:01 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Committed r80551: &lt;http://trac.webkit.org/changeset/80551&gt;

Reopen, because it was rolled out: http://trac.webkit.org/changeset/80560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404397</commentid>
    <comment_count>24</comment_count>
    <who name="Markus Goetz">markus</who>
    <bug_when>2011-05-16 03:17:34 -0700</bug_when>
    <thetext>Not much news from me here, got no time to work on this these days :(
If no one else takes it over I&apos;ll hope I can do it before Qt 4.8 comes out..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427104</commentid>
    <comment_count>25</comment_count>
    <who name="Siddharth Mathur">s.mathur</who>
    <bug_when>2011-06-24 13:48:00 -0700</bug_when>
    <thetext>Any volunteers ? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428160</commentid>
    <comment_count>26</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-27 12:03:53 -0700</bug_when>
    <thetext>I will take a look.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74914</attachid>
            <date>2010-11-26 03:55:08 -0800</date>
            <delta_ts>2010-12-02 06:39:44 -0800</delta_ts>
            <desc>patch attempt 1</desc>
            <filename>qtwebkit_zerocopy.patch</filename>
            <type>text/plain</type>
            <size>16448</size>
            <attacher name="Markus Goetz">markus</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODAwNzIyZC4uNjAwNTI0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0xMS0yMyAgTWFya3VzIEdvZXR6
ICA8Z3VydXpAZ3VydXouZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBVc2UgdGhlIHplcm9jb3B5IFFOZXR3b3JrQWNjZXNzTWFuYWdlciBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDA4MgorCisgICAgICAgIFRob3NlIHplcm9jb3B5IGNoYW5nZXMgd2VyZSBpbnRyb2R1Y2VkIGlu
IFF0IDQuNy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRs
ZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpidWZmZXJlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3
b3JrUmVwbHlIYW5kbGVyOjpkb3dubG9hZFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlFO
ZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0
d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jl
c291cmNlSGFuZGxlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN1
cHBvcnRzQnVmZmVyZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpi
dWZmZXJlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcFFCeXRlQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpwbGF0Zm9ybURhdGFTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSk6Z3VydXoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorCiAyMDEwLTExLTI1ICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkYmM4OTc5Li42YjMzOWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzE0MCw2ICszMTQwLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9xdC9Qb3B1cE1lbnVRdC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9RQnl0ZUJsb2Nr
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9xdC9RV2ViUG9wdXAuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9x
dC9RV2ViUG9wdXAuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggYzFjZDBjMi4uOWQ4NDk3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMTU5LDYgKzIxNTksNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXAogICAgIHBsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBcCisg
ICAgcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuaCBc
CiAgICAgcGxhdGZvcm0vU2Nyb2xsYmFyQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmggXApAQCAtMjcwMSw2ICsyNzAyLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgcGxhdGZvcm0vcXQvTG9nZ2luZ1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvTGFuZ3VhZ2VR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBcCisgICAg
cGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJv
dW5kYXJpZXNRdC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCAzNWE3YjdjLi42MDU1NmY0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpn
ZXRTb21lRGF0YShjb25zdCBjaGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24K
ICAgICByZXR1cm4gc2VnbWVudCA9PSBzZWdtZW50cyAtIDEgPyBzZWdtZW50ZWRTaXplIC0gcG9z
aXRpb24gOiBzZWdtZW50U2l6ZSAtIHBvc2l0aW9uSW5TZWdtZW50OwogfQogCi0jaWYgIVBMQVRG
T1JNKENGKSB8fCBQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oQ0YpICYmICFQTEFURk9STShR
VCkKIAogaW5saW5lIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBiZmM1OTMxLi5mZWZiZjQ5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKQEAgLTQyLDcgKzQyLDEwIEBACiAjZWxzZQogY2xhc3MgTlNEYXRhOwogI2Vu
ZGlmCisjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIlFCeXRlQmxvY2suaCIK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw2ICs3Niw5IEBAIHB1YmxpYzoK
ICAgICBDRkRhdGFSZWYgY3JlYXRlQ0ZEYXRhKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB3cmFwQ0ZEYXRhKENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShR
VCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHdyYXBRQnl0ZUJsb2NrKFBh
c3NSZWZQdHI8UUJ5dGVCbG9jaz4pOworI2VuZGlmCiAKICAgICAvLyBDYWxsaW5nIHRoaXMgZnVu
Y3Rpb24gd2lsbCBmb3JjZSBpbnRlcm5hbCBzZWdtZW50ZWQgYnVmZmVycwogICAgIC8vIHRvIGJl
IG1lcmdlZCBpbnRvIGEgZmxhdCBidWZmZXIuIFVzZSBnZXRTb21lRGF0YSgpIHdoZW5ldmVyIHBv
c3NpYmxlCkBAIC0xMzEsNiArMTM3LDkgQEAgcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgIFJlZlB0cjxRQnl0ZUJsb2NrPiBtX3FCeXRlQmxvY2s7CisjZW5k
aWYKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCAwMWU2MjRlLi5iNDg2YzczIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxRRGF0ZVRpbWU+CiAjaW5jbHVkZSA8UUZpbGU+
CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNpbmNs
dWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgogI2luY2x1ZGUg
PHF3ZWJmcmFtZS5oPgpAQCAtNDEsNiArNDIsOSBAQAogI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNs
dWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogCisjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CitRX0RF
Q0xBUkVfTUVUQVRZUEUoUVNoYXJlZFBvaW50ZXI8Y2hhcj4pCisKIC8vIFdoYXQgdHlwZSBvZiBj
b25uZWN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgc2lnbmFscyBvZiB0aGUKIC8vIFFOZXR3
b3JrUmVwbHk/IFRoaXMgZGVwZW5kcyBvbiBpZiBRdCBoYXMgYSBidWdmaXggZm9yIHRoaXMgb3Ig
bm90LgogLy8gSXQgaXMgZml4ZWQgaW4gUXQgNC42LjMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTMKQEAgLTUxLDYgKzU1LDE2IEBACiAjZGVmaW5lIFNJ
R05BTF9DT05OIFF0OjpRdWV1ZWRDb25uZWN0aW9uCiAjZW5kaWYKIAorCisvLyBBcyBzb29uIGFz
IHdlIHJlcXVpcmUgUXQgNC43LjAgd2UgY2FuIHJlbW92ZSB0aGlzIGlmZGVmOgorI2lmIFFUX1ZF
UlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQorY29uc3QgUU5ldHdvcmtSZXF1ZXN0
OjpBdHRyaWJ1dGUgZ01heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6Ok1heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGU7Citjb25zdCBRTmV0
d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6OkRvd25sb2FkQnVmZmVyQXR0cmlidXRlOworI2Vsc2UKK2NvbnN0IFFOZXR3b3Jr
UmVxdWVzdDo6QXR0cmlidXRlIGdNYXhpbXVtRG93bmxvYWRCdWZmZXJTaXplQXR0cmlidXRlID0g
c3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXF1ZXN0OjpBdHRyaWJ1dCAoUU5ldHdvcmtSZXF1ZXN0OjpI
dHRwUGlwZWxpbmluZ1dhc1VzZWRBdHRyaWJ1dGUgKyA1KTsKK2NvbnN0IFFOZXR3b3JrUmVxdWVz
dDo6QXR0cmlidXRlIGdEb3dubG9hZEJ1ZmZlckF0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PFFOZXR3
b3JrUmVxdWVzdDo6QXR0cmlidXQgKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFBpcGVsaW5pbmdXYXNV
c2VkQXR0cmlidXRlICsgNik7CisjZW5kaWYKKwogc3RhdGljIGNvbnN0IGludCBnTWF4UmVjdXJz
aW9uTGltaXQgPSAxMDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkxLDYgKzIwNSw3IEBA
IFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpRTmV0d29ya1JlcGx5SGFuZGxlcihSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBMb2FkTW9kZSBsb2FkCiAgICAgLCBtX3Nob3VsZFNlbmRSZXNwb25zZShmYWxz
ZSkKICAgICAsIG1fc2hvdWxkRm9yd2FyZERhdGEoZmFsc2UpCiAgICAgLCBtX3JlZGlyZWN0aW9u
VHJpZXMoZ01heFJlY3Vyc2lvbkxpbWl0KQorICAgICwgbV91c2luZ1plcm9Db3B5KGZhbHNlKQog
ewogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCAmciA9IG1fcmVzb3VyY2VIYW5kbGUtPmZpcnN0
UmVxdWVzdCgpOwogCkBAIC0yMTgsNiArMjMzLDExIEBAIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpR
TmV0d29ya1JlcGx5SGFuZGxlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBMb2FkTW9kZSBsb2Fk
CiAKICAgICBtX3JlcXVlc3QgPSByLnRvTmV0d29ya1JlcXVlc3Qob3JpZ2luYXRpbmdPYmplY3Qp
OwogCisgICAgLy8gV2UgYWxsb3cgdGhlIFFOZXR3b3JrQWNjZXNzTWFuYWdlciB0byBhbGxvY2F0
ZSB0aGUgd2hvbGUgZGF0YSB1cCB0byBhIGNlcnRhaW4gc2l6ZQorICAgIC8vIFRoZW4gdGhpcyBi
dWZmZXIgaXMgcHJvdmlkZWQgdG8gdXMgaW4gdGhlIFFOZXR3b3JrUmVwbHkKKyAgICBtX3JlcXVl
c3Quc2V0QXR0cmlidXRlKGdNYXhpbXVtRG93bmxvYWRCdWZmZXJTaXplQXR0cmlidXRlLCAxMDI0
KjI1Nik7IC8vIDI1NiBrQgorCisKICAgICBpZiAobV9sb2FkTW9kZSA9PSBMb2FkTm9ybWFsKQog
ICAgICAgICBzdGFydCgpOwogfQpAQCAtMjY3LDYgKzI4NywxMSBAQCBRTmV0d29ya1JlcGx5KiBR
TmV0d29ya1JlcGx5SGFuZGxlcjo6cmVsZWFzZSgpCiAgICAgcmV0dXJuIHJlcGx5OwogfQogCitQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmJ1ZmZlcmVkRGF0
YSgpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyZWREYXRhOworfQorCiBzdGF0aWMgYm9vbCBpZ25v
cmVIdHRwRXJyb3IoUU5ldHdvcmtSZXBseSogcmVwbHksIGJvb2wgcmVjZWl2ZWREYXRhKQogewog
ICAgIGludCBodHRwU3RhdHVzQ29kZSA9IHJlcGx5LT5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0
OjpIdHRwU3RhdHVzQ29kZUF0dHJpYnV0ZSkudG9JbnQoKTsKQEAgLTM0Miw2ICszNjcsMTkgQEAg
dm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQoKQogICAgIGlm
ICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBh
IHplcm9jb3B5IGJ1ZmZlcgorICAgIFFWYXJpYW50IGRvd25sb2FkQnVmZmVyVmFyaWFudCA9IG1f
cmVwbHktPmF0dHJpYnV0ZShnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUpOworICAgIFFTaGFyZWRQ
b2ludGVyPGNoYXI+IGRvd25sb2FkQnVmZmVyID0gZG93bmxvYWRCdWZmZXJWYXJpYW50LnZhbHVl
PFFTaGFyZWRQb2ludGVyPGNoYXI+ID4oKTsKKyAgICBpZiAoIWRvd25sb2FkQnVmZmVyLmlzTnVs
bCgpKSB7CisgICAgICAgIG1fYnl0ZUJsb2NrID0gUUJ5dGVCbG9jazo6Y3JlYXRlKGRvd25sb2Fk
QnVmZmVyKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OndyYXBRQnl0
ZUJsb2NrKG1fYnl0ZUJsb2NrKTsKKyAgICAgICAgbV91c2luZ1plcm9Db3B5ID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBPbGQgc2Nob29sIHdheS4gVXNlIFFOZXR3b3JrUmVwbHkg
YXMgYSBRSU9EZXZpY2UKKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBtX3VzaW5nWmVyb0NvcHkgPSBmYWxzZTsKKyAgICB9CisKICAgICBX
VEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6
OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwogICAgIFdURjo6U3RyaW5nIGVuY29kaW5n
ID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBXVEY6OlN0
cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUp
OwpAQCAtNDMyLDEyICs0NzAsNDkgQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJl
c3BvbnNlSWZOZWVkZWQoKQogICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1fcmVzb3Vy
Y2VIYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAorCit2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpk
b3dubG9hZFByb2dyZXNzKHFpbnQ2NCBieXRlc1JlY2VpdmVkLCBxaW50NjQgYnl0ZXNUb3RhbCkK
K3sKKyAgICBtX3Nob3VsZEZvcndhcmREYXRhID0gKG1fbG9hZE1vZGUgIT0gTG9hZE5vcm1hbCk7
CisgICAgaWYgKG1fc2hvdWxkRm9yd2FyZERhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghbV91c2luZ1plcm9Db3B5KQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kUmVzcG9uc2VJ
Zk5lZWRlZCgpOworCisgICAgLy8gZG9uJ3QgZW1pdCB0aGUgIkRvY3VtZW50IGhhcyBtb3ZlZCBo
ZXJlIiB0eXBlIG9mIEhUTUwKKyAgICBpZiAobV9yZWRpcmVjdGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIW1fcmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJldHVybjsKKworICAgIFJl
c291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBtX3Jlc291cmNlSGFuZGxlLT5jbGllbnQoKTsK
KyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXNwb25zZURhdGFT
ZW50ID0gdHJ1ZTsKKworICAgIHFpbnQ2NCBvbGRTaXplID0gbV9ieXRlQmxvY2stPnNpemUoKTsK
KyAgICBtX2J5dGVCbG9jay0+c2V0U2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX2J5dGVCbG9j
ay0+c2V0Q2FwYWNpdHkoYnl0ZXNUb3RhbCk7CisKKyAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRh
KG1fcmVzb3VyY2VIYW5kbGUsIG1fYnl0ZUJsb2NrLT5kYXRhKCkgKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2xkU2l6ZSwgYnl0ZXNSZWNlaXZlZCAtIG9sZFNpemUsIGJ5dGVzUmVjZWl2
ZWQgLSBvbGRTaXplIC8qRml4TWUqLyk7Cit9CisKKwogdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxl
cjo6Zm9yd2FyZERhdGEoKQogewogICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9sb2FkTW9k
ZSAhPSBMb2FkTm9ybWFsKTsKICAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKG1fdXNpbmdaZXJvQ29weSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAogICAgIC8vIGRvbid0IGVtaXQgdGhlICJEb2N1
bWVudCBoYXMgbW92ZWQgaGVyZSIgdHlwZSBvZiBIVE1MCkBAIC00NTUsNiArNTMwLDcgQEAgdm9p
ZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQogCiAgICAgaWYgKCFkYXRhLmlz
RW1wdHkoKSkgewogICAgICAgICBtX3Jlc3BvbnNlRGF0YVNlbnQgPSB0cnVlOworICAgICAgICBt
X2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCkpOwog
ICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2VIYW5kbGUsIGRhdGEuY29u
c3REYXRhKCksIGRhdGEubGVuZ3RoKCksIGRhdGEubGVuZ3RoKCkgLypGaXhNZSovKTsKICAgICB9
CiB9CkBAIC01NTksNiArNjM1LDExIEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0
KCkKICAgICAgICAgICAgICAgICB0aGlzLCBTTE9UKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWlu
dDY0KSksIFNJR05BTF9DT05OKTsKICAgICB9CiAKKyAgICAvLyBGb3IgemVybyBjb3B5CisgICAg
Y29ubmVjdChtX3JlcGx5LCBTSUdOQUwoZG93bmxvYWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkp
LAorICAgICAgICAgICAgdGhpcywgU0xPVChkb3dubG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0
KSksIFNJR05BTF9DT05OKTsKKworCiAgICAgLy8gTWFrZSB0aGlzIGEgZGlyZWN0IGZ1bmN0aW9u
IGNhbGwgb25jZSB3ZSByZXF1aXJlIDQuNi4xKy4KICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChw
cm9jZXNzUXVldWVkSXRlbXMoKSksCiAgICAgICAgICAgICB0aGlzLCBTTE9UKHNlbmRRdWV1ZWRJ
dGVtcygpKSwgU0lHTkFMX0NPTk4pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAppbmRleCA4ODRhMWE0Li42OGNhOGY4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaApA
QCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNpbmNsdWRlIDxR
TmV0d29ya0FjY2Vzc01hbmFnZXI+CiAKKyNpbmNsdWRlIDxTaGFyZWRCdWZmZXIuaD4KKwogI2lu
Y2x1ZGUgIkZvcm1EYXRhLmgiCiAKIFFUX0JFR0lOX05BTUVTUEFDRQpAQCAtNTQsNiArNTYsOCBA
QCBwdWJsaWM6CiAKICAgICBRTmV0d29ya1JlcGx5KiByZWxlYXNlKCk7CiAKKyAgICBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyZWREYXRhKCk7CisKIHNpZ25hbHM6CiAgICAgdm9pZCBw
cm9jZXNzUXVldWVkSXRlbXMoKTsKIApAQCAtNjIsNiArNjYsNyBAQCBwcml2YXRlIHNsb3RzOgog
ICAgIHZvaWQgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKICAgICB2b2lkIGZvcndhcmREYXRhKCk7
CiAgICAgdm9pZCBzZW5kUXVldWVkSXRlbXMoKTsKKyAgICB2b2lkIGRvd25sb2FkUHJvZ3Jlc3Mo
cWludDY0IGJ5dGVzUmVjZWl2ZWQsIHFpbnQ2NCBieXRlc1RvdGFsKTsKICAgICB2b2lkIHVwbG9h
ZFByb2dyZXNzKHFpbnQ2NCBieXRlc1NlbnQsIHFpbnQ2NCBieXRlc1RvdGFsKTsKIAogcHJpdmF0
ZToKQEAgLTg0LDYgKzg5LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFNlbmRSZXNw
b25zZTsKICAgICBib29sIG1fc2hvdWxkRm9yd2FyZERhdGE7CiAgICAgaW50IG1fcmVkaXJlY3Rp
b25UcmllczsKKworICAgIGJvb2wgbV91c2luZ1plcm9Db3B5OworICAgIC8vIGZvciB6ZXJvY29w
eS4gSG9sZHMgdGhlIGRvd25sb2FkIGRhdGE6CisgICAgUmVmUHRyPFFCeXRlQmxvY2s+IG1fYnl0
ZUJsb2NrOworICAgIC8vIGZvciB6ZXJvY29weSBpdCB3cmFwcyBtX2J5dGVCbG9jaywgb3RoZXJ3
aXNlIGl0IGhvbGRzIGRhdGEgbm9ybWFsbHk6CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGE7CiB9OwogCiAvLyBTZWxmIGRlc3RydWN0aW5nIFFJT0RldmljZSBmb3IgRm9y
bURhdGEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhh
bmRsZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0
LmNwcAppbmRleCBhNWFjNGMzLi5mMjQzMTI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCkBAIC0xNzcsMTIgKzE3NywxNCBAQCBib29s
IFJlc291cmNlSGFuZGxlOjp3aWxsTG9hZEZyb21DYWNoZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIEZyYW1lKiBmcmFtZSkKIAogYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3VwcG9ydHNCdWZmZXJl
ZERhdGEoKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IFJlc291cmNlSGFuZGxlOjpidWZmZXJlZERhdGEoKQogewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChkLT5tX2pvYikKKyAgICAgICAgcmV0
dXJuIGQtPm1fam9iLT5idWZmZXJlZERhdGEoKTsKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FCeXRlQmxvY2suY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9RQnl0ZUJsb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40N2UzZTVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RQnl0ZUJs
b2NrLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUUJ5dGVCbG9jay5oIgorCisjaW5jbHVkZSA8UmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxRQnl0ZUJsb2NrPiBRQnl0ZUJs
b2NrOjpjcmVhdGUoUVNoYXJlZFBvaW50ZXI8Y2hhcj4gZCkKK3sKKyAgICBRQnl0ZUJsb2NrKiBi
YiA9IG5ldyBRQnl0ZUJsb2NrOworICAgIGJiLT5tX2RhdGEgPSBkOworICAgIHJldHVybiBhZG9w
dFJlZihiYik7Cit9CisKK3FpbnQ2NCBRQnl0ZUJsb2NrOjpzaXplKCkKK3sKKyAgICByZXR1cm4g
bV9zaXplOworfQorCitxaW50NjQgUUJ5dGVCbG9jazo6Y2FwYWNpdHkoKQoreworICAgIHJldHVy
biBtX2NhcGFjaXR5OworfQorCitjb25zdCBjaGFyKiBRQnl0ZUJsb2NrOjpkYXRhKCkKK3sKKyAg
ICByZXR1cm4gKGNvbnN0IGNoYXIqKShtX2RhdGEuZGF0YSgpKTsKK30KKwordm9pZCBRQnl0ZUJs
b2NrOjpzZXRTaXplKHFpbnQ2NCBzKQoreworICAgIG1fc2l6ZSA9IHM7Cit9CisKK3ZvaWQgUUJ5
dGVCbG9jazo6c2V0Q2FwYWNpdHkocWludDY0IGMpCit7CisgICAgbV9jYXBhY2l0eSA9IGM7Cit9
CisKK1FCeXRlQmxvY2s6OlFCeXRlQmxvY2soKSA6IG1fc2l6ZSgwKSwgbV9jYXBhY2l0eSgwKQor
eworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FCeXRlQmxvY2suaCBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmVhMzQ1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1FCeXRlQmxvY2suaApAQCAtMCwwICsxLDQ4IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2lm
bmRlZiBRQnl0ZUJsb2NrX2gKKyNkZWZpbmUgUUJ5dGVCbG9ja19oCisKKyNpbmNsdWRlIDxQYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CisjaW5jbHVkZSA8UmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFFCeXRlQmxvY2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxRQnl0ZUJsb2NrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UUJ5dGVCbG9jaz4gY3JlYXRlKFFTaGFyZWRQb2ludGVyPGNoYXI+KTsKKworICAgIHFpbnQ2NCBz
aXplKCk7CisgICAgcWludDY0IGNhcGFjaXR5KCk7CisKKyAgICBjb25zdCBjaGFyKiBkYXRhKCk7
CisKKyAgICB2b2lkIHNldFNpemUocWludDY0KTsKKyAgICB2b2lkIHNldENhcGFjaXR5KHFpbnQ2
NCk7Citwcm90ZWN0ZWQ6CisgICAgUUJ5dGVCbG9jaygpOworICAgIHFpbnQ2NCBtX3NpemU7Cisg
ICAgcWludDY0IG1fY2FwYWNpdHk7CisgICAgUVNoYXJlZFBvaW50ZXI8Y2hhcj4gbV9kYXRhOwor
fTsKKworfQorCisjZW5kaWYgLy8gUUJ5dGVCbG9ja19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2hhcmVk
QnVmZmVyUXQuY3BwCmluZGV4IDZiN2Y5YzkuLjlhZjE0MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vcXQvU2hhcmVkQnVmZmVyUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQv
U2hhcmVkQnVmZmVyUXQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJRQnl0ZUJsb2NrLmgiCiAK
ICNpbmNsdWRlIDxRRmlsZT4KIApAQCAtNDQsNCArNDUsNDIgQEAgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmlu
ZyYgZmkKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihidWZmZXIpOwogfQog
CitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp3cmFwUUJ5dGVCbG9jayhQ
YXNzUmVmUHRyPFFCeXRlQmxvY2s+IGJiKQoreworICAgIFNoYXJlZEJ1ZmZlciogc2IgPSBuZXcg
U2hhcmVkQnVmZmVyKCk7CisgICAgc2ItPm1fcUJ5dGVCbG9jayA9IGJiOworICAgIHJldHVybiBh
ZG9wdFJlZihzYik7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBtX3FCeXRlQmxvY2s7Cit9CisKK2NvbnN0IGNoYXIqIFNoYXJl
ZEJ1ZmZlcjo6cGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKGNvbnN0IGNoYXIq
KW1fcUJ5dGVCbG9jay0+ZGF0YSgpOworfQorCit1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OnBsYXRm
b3JtRGF0YVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3FCeXRlQmxvY2stPnNpemUoKTsK
K30KKwordm9pZCBTaGFyZWRCdWZmZXI6Om1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQorewor
ICAgIGlmICghbV9xQnl0ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UUJ5
dGVCbG9jaz4gYmIgPSBtX3FCeXRlQmxvY2s7CisgICAgbV9xQnl0ZUJsb2NrID0gMDsKKyAgICBh
cHBlbmQoKGNvbnN0IGNoYXIqKWJiLT5kYXRhKCksIGJiLT5zaXplKCkpOworfQorCit2b2lkIFNo
YXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEoKQoreworICAgIG1fcUJ5dGVCbG9jayA9IDA7
Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74922</attachid>
            <date>2010-11-26 04:57:58 -0800</date>
            <delta_ts>2010-12-02 06:39:44 -0800</delta_ts>
            <desc>patch attempt 2</desc>
            <filename>qtwebkit_zerocopy.patch</filename>
            <type>text/plain</type>
            <size>16450</size>
            <attacher name="Markus Goetz">markus</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODAwNzIyZC4uNjAwNTI0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0xMS0yMyAgTWFya3VzIEdvZXR6
ICA8Z3VydXpAZ3VydXouZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBVc2UgdGhlIHplcm9jb3B5IFFOZXR3b3JrQWNjZXNzTWFuYWdlciBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDA4MgorCisgICAgICAgIFRob3NlIHplcm9jb3B5IGNoYW5nZXMgd2VyZSBpbnRyb2R1Y2VkIGlu
IFF0IDQuNy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRs
ZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpidWZmZXJlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3
b3JrUmVwbHlIYW5kbGVyOjpkb3dubG9hZFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlFO
ZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0
d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jl
c291cmNlSGFuZGxlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN1
cHBvcnRzQnVmZmVyZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpi
dWZmZXJlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcFFCeXRlQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpwbGF0Zm9ybURhdGFTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSk6Z3VydXoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorCiAyMDEwLTExLTI1ICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkYmM4OTc5Li42YjMzOWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzE0MCw2ICszMTQwLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9xdC9Qb3B1cE1lbnVRdC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9RQnl0ZUJsb2Nr
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9xdC9RV2ViUG9wdXAuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9x
dC9RV2ViUG9wdXAuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggYzFjZDBjMi4uOWQ4NDk3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMTU5LDYgKzIxNTksNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXAogICAgIHBsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBcCisg
ICAgcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuaCBc
CiAgICAgcGxhdGZvcm0vU2Nyb2xsYmFyQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmggXApAQCAtMjcwMSw2ICsyNzAyLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgcGxhdGZvcm0vcXQvTG9nZ2luZ1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvTGFuZ3VhZ2VR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBcCisgICAg
cGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJv
dW5kYXJpZXNRdC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCAzNWE3YjdjLi42MDU1NmY0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpn
ZXRTb21lRGF0YShjb25zdCBjaGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24K
ICAgICByZXR1cm4gc2VnbWVudCA9PSBzZWdtZW50cyAtIDEgPyBzZWdtZW50ZWRTaXplIC0gcG9z
aXRpb24gOiBzZWdtZW50U2l6ZSAtIHBvc2l0aW9uSW5TZWdtZW50OwogfQogCi0jaWYgIVBMQVRG
T1JNKENGKSB8fCBQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oQ0YpICYmICFQTEFURk9STShR
VCkKIAogaW5saW5lIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBiZmM1OTMxLi5mZWZiZjQ5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKQEAgLTQyLDcgKzQyLDEwIEBACiAjZWxzZQogY2xhc3MgTlNEYXRhOwogI2Vu
ZGlmCisjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIlFCeXRlQmxvY2suaCIK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw2ICs3Niw5IEBAIHB1YmxpYzoK
ICAgICBDRkRhdGFSZWYgY3JlYXRlQ0ZEYXRhKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB3cmFwQ0ZEYXRhKENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShR
VCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHdyYXBRQnl0ZUJsb2NrKFBh
c3NSZWZQdHI8UUJ5dGVCbG9jaz4pOworI2VuZGlmCiAKICAgICAvLyBDYWxsaW5nIHRoaXMgZnVu
Y3Rpb24gd2lsbCBmb3JjZSBpbnRlcm5hbCBzZWdtZW50ZWQgYnVmZmVycwogICAgIC8vIHRvIGJl
IG1lcmdlZCBpbnRvIGEgZmxhdCBidWZmZXIuIFVzZSBnZXRTb21lRGF0YSgpIHdoZW5ldmVyIHBv
c3NpYmxlCkBAIC0xMzEsNiArMTM3LDkgQEAgcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgIFJlZlB0cjxRQnl0ZUJsb2NrPiBtX3FCeXRlQmxvY2s7CisjZW5k
aWYKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCAwMWU2MjRlLi4yNDRhMmMxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxRRGF0ZVRpbWU+CiAjaW5jbHVkZSA8UUZpbGU+
CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNpbmNs
dWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgogI2luY2x1ZGUg
PHF3ZWJmcmFtZS5oPgpAQCAtNDEsNiArNDIsOSBAQAogI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNs
dWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogCisjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CitRX0RF
Q0xBUkVfTUVUQVRZUEUoUVNoYXJlZFBvaW50ZXI8Y2hhcj4pCisKIC8vIFdoYXQgdHlwZSBvZiBj
b25uZWN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgc2lnbmFscyBvZiB0aGUKIC8vIFFOZXR3
b3JrUmVwbHk/IFRoaXMgZGVwZW5kcyBvbiBpZiBRdCBoYXMgYSBidWdmaXggZm9yIHRoaXMgb3Ig
bm90LgogLy8gSXQgaXMgZml4ZWQgaW4gUXQgNC42LjMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTMKQEAgLTUxLDYgKzU1LDE2IEBACiAjZGVmaW5lIFNJ
R05BTF9DT05OIFF0OjpRdWV1ZWRDb25uZWN0aW9uCiAjZW5kaWYKIAorCisvLyBBcyBzb29uIGFz
IHdlIHJlcXVpcmUgUXQgNC43LjAgd2UgY2FuIHJlbW92ZSB0aGlzIGlmZGVmOgorI2lmIFFUX1ZF
UlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQorY29uc3QgUU5ldHdvcmtSZXF1ZXN0
OjpBdHRyaWJ1dGUgZ01heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6Ok1heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGU7Citjb25zdCBRTmV0
d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6OkRvd25sb2FkQnVmZmVyQXR0cmlidXRlOworI2Vsc2UKK2NvbnN0IFFOZXR3b3Jr
UmVxdWVzdDo6QXR0cmlidXRlIGdNYXhpbXVtRG93bmxvYWRCdWZmZXJTaXplQXR0cmlidXRlID0g
c3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXF1ZXN0OjpBdHRyaWJ1dGU+KFFOZXR3b3JrUmVxdWVzdDo6
SHR0cFBpcGVsaW5pbmdXYXNVc2VkQXR0cmlidXRlICsgNSk7Citjb25zdCBRTmV0d29ya1JlcXVl
c3Q6OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxRTmV0
d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZT4oUU5ldHdvcmtSZXF1ZXN0OjpIdHRwUGlwZWxpbmluZ1dh
c1VzZWRBdHRyaWJ1dGUgKyA2KTsKKyNlbmRpZgorCiBzdGF0aWMgY29uc3QgaW50IGdNYXhSZWN1
cnNpb25MaW1pdCA9IDEwOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTEsNiArMjA1LDcg
QEAgUU5ldHdvcmtSZXBseUhhbmRsZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIExvYWRNb2RlIGxvYWQKICAgICAsIG1fc2hvdWxkU2VuZFJlc3BvbnNlKGZh
bHNlKQogICAgICwgbV9zaG91bGRGb3J3YXJkRGF0YShmYWxzZSkKICAgICAsIG1fcmVkaXJlY3Rp
b25UcmllcyhnTWF4UmVjdXJzaW9uTGltaXQpCisgICAgLCBtX3VzaW5nWmVyb0NvcHkoZmFsc2Up
CiB7CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0ICZyID0gbV9yZXNvdXJjZUhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCk7CiAKQEAgLTIxOCw2ICsyMzMsMTEgQEAgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OlFOZXR3b3JrUmVwbHlIYW5kbGVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIExvYWRNb2RlIGxv
YWQKIAogICAgIG1fcmVxdWVzdCA9IHIudG9OZXR3b3JrUmVxdWVzdChvcmlnaW5hdGluZ09iamVj
dCk7CiAKKyAgICAvLyBXZSBhbGxvdyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIHRvIGFsbG9j
YXRlIHRoZSB3aG9sZSBkYXRhIHVwIHRvIGEgY2VydGFpbiBzaXplCisgICAgLy8gVGhlbiB0aGlz
IGJ1ZmZlciBpcyBwcm92aWRlZCB0byB1cyBpbiB0aGUgUU5ldHdvcmtSZXBseQorICAgIG1fcmVx
dWVzdC5zZXRBdHRyaWJ1dGUoZ01heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGUsIDEw
MjQqMjU2KTsgLy8gMjU2IGtCCisKKwogICAgIGlmIChtX2xvYWRNb2RlID09IExvYWROb3JtYWwp
CiAgICAgICAgIHN0YXJ0KCk7CiB9CkBAIC0yNjcsNiArMjg3LDExIEBAIFFOZXR3b3JrUmVwbHkq
IFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpyZWxlYXNlKCkKICAgICByZXR1cm4gcmVwbHk7CiB9CiAK
K1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBRTmV0d29ya1JlcGx5SGFuZGxlcjo6YnVmZmVyZWRE
YXRhKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXJlZERhdGE7Cit9CisKIHN0YXRpYyBib29sIGln
bm9yZUh0dHBFcnJvcihRTmV0d29ya1JlcGx5KiByZXBseSwgYm9vbCByZWNlaXZlZERhdGEpCiB7
CiAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVl
c3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOwpAQCAtMzQyLDYgKzM2NywxOSBA
QCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAg
aWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIENoZWNrIGlmIHRoZXJlIGlz
IGEgemVyb2NvcHkgYnVmZmVyCisgICAgUVZhcmlhbnQgZG93bmxvYWRCdWZmZXJWYXJpYW50ID0g
bV9yZXBseS0+YXR0cmlidXRlKGdEb3dubG9hZEJ1ZmZlckF0dHJpYnV0ZSk7CisgICAgUVNoYXJl
ZFBvaW50ZXI8Y2hhcj4gZG93bmxvYWRCdWZmZXIgPSBkb3dubG9hZEJ1ZmZlclZhcmlhbnQudmFs
dWU8UVNoYXJlZFBvaW50ZXI8Y2hhcj4gPigpOworICAgIGlmICghZG93bmxvYWRCdWZmZXIuaXNO
dWxsKCkpIHsKKyAgICAgICAgbV9ieXRlQmxvY2sgPSBRQnl0ZUJsb2NrOjpjcmVhdGUoZG93bmxv
YWRCdWZmZXIpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6d3JhcFFC
eXRlQmxvY2sobV9ieXRlQmxvY2spOworICAgICAgICBtX3VzaW5nWmVyb0NvcHkgPSB0cnVlOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE9sZCBzY2hvb2wgd2F5LiBVc2UgUU5ldHdvcmtSZXBs
eSBhcyBhIFFJT0RldmljZQorICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgIG1fdXNpbmdaZXJvQ29weSA9IGZhbHNlOworICAgIH0KKwogICAg
IFdURjo6U3RyaW5nIGNvbnRlbnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVz
dDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3RyaW5nKCk7CiAgICAgV1RGOjpTdHJpbmcgZW5jb2Rp
bmcgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOwogICAgIFdURjo6
U3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlw
ZSk7CkBAIC00MzIsMTIgKzQ3MCw0OSBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5k
UmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNv
dXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCisKK3ZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OmRvd25sb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzUmVjZWl2ZWQsIHFpbnQ2NCBieXRlc1RvdGFs
KQoreworICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9sb2FkTW9kZSAhPSBMb2FkTm9ybWFs
KTsKKyAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFtX3VzaW5nWmVyb0NvcHkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmRSZXNwb25z
ZUlmTmVlZGVkKCk7CisKKyAgICAvLyBkb24ndCBlbWl0IHRoZSAiRG9jdW1lbnQgaGFzIG1vdmVk
IGhlcmUiIHR5cGUgb2YgSFRNTAorICAgIGlmIChtX3JlZGlyZWN0ZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9yZXNvdXJjZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IG1fcmVzb3VyY2VIYW5kbGUtPmNsaWVudCgp
OworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Jlc3BvbnNlRGF0
YVNlbnQgPSB0cnVlOworCisgICAgcWludDY0IG9sZFNpemUgPSBtX2J5dGVCbG9jay0+c2l6ZSgp
OworICAgIG1fYnl0ZUJsb2NrLT5zZXRTaXplKGJ5dGVzUmVjZWl2ZWQpOworICAgIG1fYnl0ZUJs
b2NrLT5zZXRDYXBhY2l0eShieXRlc1RvdGFsKTsKKworICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURh
dGEobV9yZXNvdXJjZUhhbmRsZSwgbV9ieXRlQmxvY2stPmRhdGEoKSArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvbGRTaXplLCBieXRlc1JlY2VpdmVkIC0gb2xkU2l6ZSwgYnl0ZXNSZWNl
aXZlZCAtIG9sZFNpemUgLypGaXhNZSovKTsKK30KKworCiB2b2lkIFFOZXR3b3JrUmVwbHlIYW5k
bGVyOjpmb3J3YXJkRGF0YSgpCiB7CiAgICAgbV9zaG91bGRGb3J3YXJkRGF0YSA9IChtX2xvYWRN
b2RlICE9IExvYWROb3JtYWwpOwogICAgIGlmIChtX3Nob3VsZEZvcndhcmREYXRhKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAobV91c2luZ1plcm9Db3B5KQorICAgICAgICByZXR1cm47CisK
ICAgICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOwogCiAgICAgLy8gZG9uJ3QgZW1pdCB0aGUgIkRv
Y3VtZW50IGhhcyBtb3ZlZCBoZXJlIiB0eXBlIG9mIEhUTUwKQEAgLTQ1NSw2ICs1MzAsNyBAQCB2
b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YSgpCiAKICAgICBpZiAoIWRhdGEu
aXNFbXB0eSgpKSB7CiAgICAgICAgIG1fcmVzcG9uc2VEYXRhU2VudCA9IHRydWU7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoZGF0YS5jb25zdERhdGEoKSwgZGF0YS5sZW5ndGgoKSk7
CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwgZGF0YS5j
b25zdERhdGEoKSwgZGF0YS5sZW5ndGgoKSwgZGF0YS5sZW5ndGgoKSAvKkZpeE1lKi8pOwogICAg
IH0KIH0KQEAgLTU1OSw2ICs2MzUsMTEgQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3Rh
cnQoKQogICAgICAgICAgICAgICAgIHRoaXMsIFNMT1QodXBsb2FkUHJvZ3Jlc3MocWludDY0LCBx
aW50NjQpKSwgU0lHTkFMX0NPTk4pOwogICAgIH0KIAorICAgIC8vIEZvciB6ZXJvIGNvcHkKKyAg
ICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChkb3dubG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0
KSksCisgICAgICAgICAgICB0aGlzLCBTTE9UKGRvd25sb2FkUHJvZ3Jlc3MocWludDY0LCBxaW50
NjQpKSwgU0lHTkFMX0NPTk4pOworCisKICAgICAvLyBNYWtlIHRoaXMgYSBkaXJlY3QgZnVuY3Rp
b24gY2FsbCBvbmNlIHdlIHJlcXVpcmUgNC42LjErLgogICAgIGNvbm5lY3QodGhpcywgU0lHTkFM
KHByb2Nlc3NRdWV1ZWRJdGVtcygpKSwKICAgICAgICAgICAgIHRoaXMsIFNMT1Qoc2VuZFF1ZXVl
ZEl0ZW1zKCkpLCBTSUdOQUxfQ09OTik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCmluZGV4IDg4NGExYTQuLjY4Y2E4ZjggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5o
CkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgogI2luY2x1ZGUg
PFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KIAorI2luY2x1ZGUgPFNoYXJlZEJ1ZmZlci5oPgorCiAj
aW5jbHVkZSAiRm9ybURhdGEuaCIKIAogUVRfQkVHSU5fTkFNRVNQQUNFCkBAIC01NCw2ICs1Niw4
IEBAIHB1YmxpYzoKIAogICAgIFFOZXR3b3JrUmVwbHkqIHJlbGVhc2UoKTsKIAorICAgIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJlZERhdGEoKTsKKwogc2lnbmFsczoKICAgICB2b2lk
IHByb2Nlc3NRdWV1ZWRJdGVtcygpOwogCkBAIC02Miw2ICs2Niw3IEBAIHByaXZhdGUgc2xvdHM6
CiAgICAgdm9pZCBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOwogICAgIHZvaWQgZm9yd2FyZERhdGEo
KTsKICAgICB2b2lkIHNlbmRRdWV1ZWRJdGVtcygpOworICAgIHZvaWQgZG93bmxvYWRQcm9ncmVz
cyhxaW50NjQgYnl0ZXNSZWNlaXZlZCwgcWludDY0IGJ5dGVzVG90YWwpOwogICAgIHZvaWQgdXBs
b2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpOwogCiBwcml2
YXRlOgpAQCAtODQsNiArODksMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2VuZFJl
c3BvbnNlOwogICAgIGJvb2wgbV9zaG91bGRGb3J3YXJkRGF0YTsKICAgICBpbnQgbV9yZWRpcmVj
dGlvblRyaWVzOworCisgICAgYm9vbCBtX3VzaW5nWmVyb0NvcHk7CisgICAgLy8gZm9yIHplcm9j
b3B5LiBIb2xkcyB0aGUgZG93bmxvYWQgZGF0YToKKyAgICBSZWZQdHI8UUJ5dGVCbG9jaz4gbV9i
eXRlQmxvY2s7CisgICAgLy8gZm9yIHplcm9jb3B5IGl0IHdyYXBzIG1fYnl0ZUJsb2NrLCBvdGhl
cndpc2UgaXQgaG9sZHMgZGF0YSBub3JtYWxseToKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YTsKIH07CiAKIC8vIFNlbGYgZGVzdHJ1Y3RpbmcgUUlPRGV2aWNlIGZvciBG
b3JtRGF0YQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNl
SGFuZGxlUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxl
UXQuY3BwCmluZGV4IGE1YWM0YzMuLmYyNDMxMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKQEAgLTE3NywxMiArMTc3LDE0IEBAIGJv
b2wgUmVzb3VyY2VIYW5kbGU6OndpbGxMb2FkRnJvbUNhY2hlKFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgRnJhbWUqIGZyYW1lKQogCiBib29sIFJlc291cmNlSGFuZGxlOjpzdXBwb3J0c0J1ZmZl
cmVkRGF0YSgpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwogfQogCiBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVzb3VyY2VIYW5kbGU6OmJ1ZmZlcmVkRGF0YSgpCiB7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKGQtPm1fam9iKQorICAgICAgICBy
ZXR1cm4gZC0+bV9qb2ItPmJ1ZmZlcmVkRGF0YSgpOworCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1FCeXRlQmxvY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjQ3ZTNlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1FCeXRl
QmxvY2suY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJRQnl0ZUJsb2NrLmgiCisKKyNpbmNsdWRlIDxSZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFFCeXRlQmxvY2s+IFFCeXRl
QmxvY2s6OmNyZWF0ZShRU2hhcmVkUG9pbnRlcjxjaGFyPiBkKQoreworICAgIFFCeXRlQmxvY2sq
IGJiID0gbmV3IFFCeXRlQmxvY2s7CisgICAgYmItPm1fZGF0YSA9IGQ7CisgICAgcmV0dXJuIGFk
b3B0UmVmKGJiKTsKK30KKworcWludDY0IFFCeXRlQmxvY2s6OnNpemUoKQoreworICAgIHJldHVy
biBtX3NpemU7Cit9CisKK3FpbnQ2NCBRQnl0ZUJsb2NrOjpjYXBhY2l0eSgpCit7CisgICAgcmV0
dXJuIG1fY2FwYWNpdHk7Cit9CisKK2NvbnN0IGNoYXIqIFFCeXRlQmxvY2s6OmRhdGEoKQorewor
ICAgIHJldHVybiAoY29uc3QgY2hhciopKG1fZGF0YS5kYXRhKCkpOworfQorCit2b2lkIFFCeXRl
QmxvY2s6OnNldFNpemUocWludDY0IHMpCit7CisgICAgbV9zaXplID0gczsKK30KKwordm9pZCBR
Qnl0ZUJsb2NrOjpzZXRDYXBhY2l0eShxaW50NjQgYykKK3sKKyAgICBtX2NhcGFjaXR5ID0gYzsK
K30KKworUUJ5dGVCbG9jazo6UUJ5dGVCbG9jaygpIDogbV9zaXplKDApLCBtX2NhcGFjaXR5KDAp
Cit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RQnl0ZUJsb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZWEzNDU0NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUUJ5dGVCbG9jay5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisj
aWZuZGVmIFFCeXRlQmxvY2tfaAorI2RlZmluZSBRQnl0ZUJsb2NrX2gKKworI2luY2x1ZGUgPFBh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDxRU2hhcmVkUG9pbnRlcj4KKyNpbmNsdWRlIDxSZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUUJ5dGVCbG9jayA6IHB1Ymxp
YyBSZWZDb3VudGVkPFFCeXRlQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxRQnl0ZUJsb2NrPiBjcmVhdGUoUVNoYXJlZFBvaW50ZXI8Y2hhcj4pOworCisgICAgcWludDY0
IHNpemUoKTsKKyAgICBxaW50NjQgY2FwYWNpdHkoKTsKKworICAgIGNvbnN0IGNoYXIqIGRhdGEo
KTsKKworICAgIHZvaWQgc2V0U2l6ZShxaW50NjQpOworICAgIHZvaWQgc2V0Q2FwYWNpdHkocWlu
dDY0KTsKK3Byb3RlY3RlZDoKKyAgICBRQnl0ZUJsb2NrKCk7CisgICAgcWludDY0IG1fc2l6ZTsK
KyAgICBxaW50NjQgbV9jYXBhY2l0eTsKKyAgICBRU2hhcmVkUG9pbnRlcjxjaGFyPiBtX2RhdGE7
Cit9OworCit9CisKKyNlbmRpZiAvLyBRQnl0ZUJsb2NrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vcXQvU2hhcmVkQnVmZmVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TaGFy
ZWRCdWZmZXJRdC5jcHAKaW5kZXggNmI3ZjljOS4uOWFmMTQwZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9TaGFyZWRCdWZmZXJRdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlFCeXRlQmxvY2suaCIK
IAogI2luY2x1ZGUgPFFGaWxlPgogCkBAIC00NCw0ICs0NSw0MiBAQCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBmaQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7CiB9
CiAKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OndyYXBRQnl0ZUJsb2Nr
KFBhc3NSZWZQdHI8UUJ5dGVCbG9jaz4gYmIpCit7CisgICAgU2hhcmVkQnVmZmVyKiBzYiA9IG5l
dyBTaGFyZWRCdWZmZXIoKTsKKyAgICBzYi0+bV9xQnl0ZUJsb2NrID0gYmI7CisgICAgcmV0dXJu
IGFkb3B0UmVmKHNiKTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6Omhhc1BsYXRmb3JtRGF0YSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcUJ5dGVCbG9jazsKK30KKworY29uc3QgY2hhciogU2hh
cmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiAoY29uc3QgY2hh
ciopbV9xQnl0ZUJsb2NrLT5kYXRhKCk7Cit9CisKK3Vuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6cGxh
dGZvcm1EYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcUJ5dGVCbG9jay0+c2l6ZSgp
OworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCit7
CisgICAgaWYgKCFtX3FCeXRlQmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxR
Qnl0ZUJsb2NrPiBiYiA9IG1fcUJ5dGVCbG9jazsKKyAgICBtX3FCeXRlQmxvY2sgPSAwOworICAg
IGFwcGVuZCgoY29uc3QgY2hhciopYmItPmRhdGEoKSwgYmItPnNpemUoKSk7Cit9CisKK3ZvaWQg
U2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCit7CisgICAgbV9xQnl0ZUJsb2NrID0g
MDsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="65633"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75372</attachid>
            <date>2010-12-02 06:39:44 -0800</date>
            <delta_ts>2010-12-02 09:01:08 -0800</delta_ts>
            <desc>v3</desc>
            <filename>qtwebkit_zerocopy.patch</filename>
            <type>text/plain</type>
            <size>16565</size>
            <attacher name="Markus Goetz">markus</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODAwNzIyZC4uNjAwNTI0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0xMS0yMyAgTWFya3VzIEdvZXR6
ICA8Z3VydXpAZ3VydXouZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBVc2UgdGhlIHplcm9jb3B5IFFOZXR3b3JrQWNjZXNzTWFuYWdlciBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDA4MgorCisgICAgICAgIFRob3NlIHplcm9jb3B5IGNoYW5nZXMgd2VyZSBpbnRyb2R1Y2VkIGlu
IFF0IDQuNy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRs
ZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpidWZmZXJlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3
b3JrUmVwbHlIYW5kbGVyOjpkb3dubG9hZFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlFO
ZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0
d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jl
c291cmNlSGFuZGxlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN1
cHBvcnRzQnVmZmVyZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpi
dWZmZXJlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcFFCeXRlQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpwbGF0Zm9ybURhdGFTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSk6Z3VydXoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorCiAyMDEwLTExLTI1ICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkYmM4OTc5Li42YjMzOWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzE0MCw2ICszMTQwLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9xdC9Qb3B1cE1lbnVRdC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9RQnl0ZUJsb2Nr
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9xdC9RV2ViUG9wdXAuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9x
dC9RV2ViUG9wdXAuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggYzFjZDBjMi4uOWQ4NDk3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMTU5LDYgKzIxNTksNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXAogICAgIHBsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBcCisg
ICAgcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuaCBc
CiAgICAgcGxhdGZvcm0vU2Nyb2xsYmFyQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmggXApAQCAtMjcwMSw2ICsyNzAyLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgcGxhdGZvcm0vcXQvTG9nZ2luZ1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvTGFuZ3VhZ2VR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBcCisgICAg
cGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJv
dW5kYXJpZXNRdC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCAzNWE3YjdjLi42MDU1NmY0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpn
ZXRTb21lRGF0YShjb25zdCBjaGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24K
ICAgICByZXR1cm4gc2VnbWVudCA9PSBzZWdtZW50cyAtIDEgPyBzZWdtZW50ZWRTaXplIC0gcG9z
aXRpb24gOiBzZWdtZW50U2l6ZSAtIHBvc2l0aW9uSW5TZWdtZW50OwogfQogCi0jaWYgIVBMQVRG
T1JNKENGKSB8fCBQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oQ0YpICYmICFQTEFURk9STShR
VCkKIAogaW5saW5lIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBiZmM1OTMxLi5mZWZiZjQ5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKQEAgLTQyLDcgKzQyLDEwIEBACiAjZWxzZQogY2xhc3MgTlNEYXRhOwogI2Vu
ZGlmCisjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIlFCeXRlQmxvY2suaCIK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw2ICs3Niw5IEBAIHB1YmxpYzoK
ICAgICBDRkRhdGFSZWYgY3JlYXRlQ0ZEYXRhKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB3cmFwQ0ZEYXRhKENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShR
VCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHdyYXBRQnl0ZUJsb2NrKFBh
c3NSZWZQdHI8UUJ5dGVCbG9jaz4pOworI2VuZGlmCiAKICAgICAvLyBDYWxsaW5nIHRoaXMgZnVu
Y3Rpb24gd2lsbCBmb3JjZSBpbnRlcm5hbCBzZWdtZW50ZWQgYnVmZmVycwogICAgIC8vIHRvIGJl
IG1lcmdlZCBpbnRvIGEgZmxhdCBidWZmZXIuIFVzZSBnZXRTb21lRGF0YSgpIHdoZW5ldmVyIHBv
c3NpYmxlCkBAIC0xMzEsNiArMTM3LDkgQEAgcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgIFJlZlB0cjxRQnl0ZUJsb2NrPiBtX3FCeXRlQmxvY2s7CisjZW5k
aWYKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCAwMWU2MjRlLi43ZjU1M2E2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxRRGF0ZVRpbWU+CiAjaW5jbHVkZSA8UUZpbGU+
CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNpbmNs
dWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgogI2luY2x1ZGUg
PHF3ZWJmcmFtZS5oPgpAQCAtNDEsNiArNDIsOSBAQAogI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNs
dWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogCisjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CitRX0RF
Q0xBUkVfTUVUQVRZUEUoUVNoYXJlZFBvaW50ZXI8Y2hhcj4pCisKIC8vIFdoYXQgdHlwZSBvZiBj
b25uZWN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgc2lnbmFscyBvZiB0aGUKIC8vIFFOZXR3
b3JrUmVwbHk/IFRoaXMgZGVwZW5kcyBvbiBpZiBRdCBoYXMgYSBidWdmaXggZm9yIHRoaXMgb3Ig
bm90LgogLy8gSXQgaXMgZml4ZWQgaW4gUXQgNC42LjMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTMKQEAgLTUxLDYgKzU1LDE2IEBACiAjZGVmaW5lIFNJ
R05BTF9DT05OIFF0OjpRdWV1ZWRDb25uZWN0aW9uCiAjZW5kaWYKIAorCisvLyBBcyBzb29uIGFz
IHdlIHJlcXVpcmUgUXQgNC43LjAgd2UgY2FuIHJlbW92ZSB0aGlzIGlmZGVmOgorI2lmIFFUX1ZF
UlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQorY29uc3QgUU5ldHdvcmtSZXF1ZXN0
OjpBdHRyaWJ1dGUgZ01heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6Ok1heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGU7Citjb25zdCBRTmV0
d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6OkRvd25sb2FkQnVmZmVyQXR0cmlidXRlOworI2Vsc2UKK2NvbnN0IFFOZXR3b3Jr
UmVxdWVzdDo6QXR0cmlidXRlIGdNYXhpbXVtRG93bmxvYWRCdWZmZXJTaXplQXR0cmlidXRlID0g
c3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXF1ZXN0OjpBdHRyaWJ1dGU+KFFOZXR3b3JrUmVxdWVzdDo6
SHR0cFBpcGVsaW5pbmdXYXNVc2VkQXR0cmlidXRlICsgNSk7Citjb25zdCBRTmV0d29ya1JlcXVl
c3Q6OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxRTmV0
d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZT4oUU5ldHdvcmtSZXF1ZXN0OjpIdHRwUGlwZWxpbmluZ1dh
c1VzZWRBdHRyaWJ1dGUgKyA2KTsKKyNlbmRpZgorCiBzdGF0aWMgY29uc3QgaW50IGdNYXhSZWN1
cnNpb25MaW1pdCA9IDEwOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTEsNiArMjA1LDcg
QEAgUU5ldHdvcmtSZXBseUhhbmRsZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIExvYWRNb2RlIGxvYWQKICAgICAsIG1fc2hvdWxkU2VuZFJlc3BvbnNlKGZh
bHNlKQogICAgICwgbV9zaG91bGRGb3J3YXJkRGF0YShmYWxzZSkKICAgICAsIG1fcmVkaXJlY3Rp
b25UcmllcyhnTWF4UmVjdXJzaW9uTGltaXQpCisgICAgLCBtX3VzaW5nWmVyb0NvcHkoZmFsc2Up
CiB7CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0ICZyID0gbV9yZXNvdXJjZUhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCk7CiAKQEAgLTIxOCw2ICsyMzMsMTEgQEAgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OlFOZXR3b3JrUmVwbHlIYW5kbGVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIExvYWRNb2RlIGxv
YWQKIAogICAgIG1fcmVxdWVzdCA9IHIudG9OZXR3b3JrUmVxdWVzdChvcmlnaW5hdGluZ09iamVj
dCk7CiAKKyAgICAvLyBXZSBhbGxvdyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIHRvIGFsbG9j
YXRlIHRoZSB3aG9sZSBkYXRhIHVwIHRvIGEgY2VydGFpbiBzaXplCisgICAgLy8gVGhlbiB0aGlz
IGJ1ZmZlciBpcyBwcm92aWRlZCB0byB1cyBpbiB0aGUgUU5ldHdvcmtSZXBseQorICAgIG1fcmVx
dWVzdC5zZXRBdHRyaWJ1dGUoZ01heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGUsIDEw
MjQgKiAyNTYpOyAvLyAyNTYga0IuCisKKwogICAgIGlmIChtX2xvYWRNb2RlID09IExvYWROb3Jt
YWwpCiAgICAgICAgIHN0YXJ0KCk7CiB9CkBAIC0yNjcsNiArMjg3LDExIEBAIFFOZXR3b3JrUmVw
bHkqIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpyZWxlYXNlKCkKICAgICByZXR1cm4gcmVwbHk7CiB9
CiAKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBRTmV0d29ya1JlcGx5SGFuZGxlcjo6YnVmZmVy
ZWREYXRhKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXJlZERhdGE7Cit9CisKIHN0YXRpYyBib29s
IGlnbm9yZUh0dHBFcnJvcihRTmV0d29ya1JlcGx5KiByZXBseSwgYm9vbCByZWNlaXZlZERhdGEp
CiB7CiAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0dHJpYnV0ZShRTmV0d29ya1Jl
cXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOwpAQCAtMzQyLDYgKzM2Nywx
OSBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAg
ICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIENoZWNrIGlmIHRoZXJl
IGlzIGEgemVyb2NvcHkgYnVmZmVyLgorICAgIFFWYXJpYW50IGRvd25sb2FkQnVmZmVyVmFyaWFu
dCA9IG1fcmVwbHktPmF0dHJpYnV0ZShnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUpOworICAgIFFT
aGFyZWRQb2ludGVyPGNoYXI+IGRvd25sb2FkQnVmZmVyID0gZG93bmxvYWRCdWZmZXJWYXJpYW50
LnZhbHVlPFFTaGFyZWRQb2ludGVyPGNoYXI+ID4oKTsKKyAgICBpZiAoIWRvd25sb2FkQnVmZmVy
LmlzTnVsbCgpKSB7CisgICAgICAgIG1fYnl0ZUJsb2NrID0gUUJ5dGVCbG9jazo6Y3JlYXRlKGRv
d25sb2FkQnVmZmVyKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6Ondy
YXBRQnl0ZUJsb2NrKG1fYnl0ZUJsb2NrKTsKKyAgICAgICAgbV91c2luZ1plcm9Db3B5ID0gdHJ1
ZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBVc2UgdGhlIGxlZ2FjeSB3YXkgb2YgdXNpbmcg
UU5ldHdvcmtSZXBseSBhcyBhIFFJT0RldmljZS4KKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX3VzaW5nWmVyb0NvcHkgPSBmYWxzZTsK
KyAgICB9CisKICAgICBXVEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihR
TmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwogICAgIFdURjo6
U3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KTsKICAgICBXVEY6OlN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29udGVudFR5cGUpOwpAQCAtNDMyLDEyICs0NzAsNDkgQEAgdm9pZCBRTmV0d29ya1JlcGx5
SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQoKQogICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKG1fcmVzb3VyY2VIYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAorCit2b2lkIFFOZXR3b3Jr
UmVwbHlIYW5kbGVyOjpkb3dubG9hZFByb2dyZXNzKHFpbnQ2NCBieXRlc1JlY2VpdmVkLCBxaW50
NjQgYnl0ZXNUb3RhbCkKK3sKKyAgICBtX3Nob3VsZEZvcndhcmREYXRhID0gKG1fbG9hZE1vZGUg
IT0gTG9hZE5vcm1hbCk7CisgICAgaWYgKG1fc2hvdWxkRm9yd2FyZERhdGEpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV91c2luZ1plcm9Db3B5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOworCisgICAgLy8gRG9uJ3QgZW1pdCB0aGUgIkRvY3Vt
ZW50IGhhcyBtb3ZlZCBoZXJlIiB0eXBlIG9mIEhUTUwuCisgICAgaWYgKG1fcmVkaXJlY3RlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3Jlc291cmNlSGFuZGxlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhh
bmRsZS0+Y2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcmVzcG9uc2VEYXRhU2VudCA9IHRydWU7CisKKyAgICBxaW50NjQgb2xkU2l6ZSA9IG1fYnl0
ZUJsb2NrLT5zaXplKCk7CisgICAgbV9ieXRlQmxvY2stPnNldFNpemUoYnl0ZXNSZWNlaXZlZCk7
CisgICAgbV9ieXRlQmxvY2stPnNldENhcGFjaXR5KGJ5dGVzVG90YWwpOworCisgICAgY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlSGFuZGxlLCBtX2J5dGVCbG9jay0+ZGF0YSgpICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFNpemUsIGJ5dGVzUmVjZWl2ZWQgLSBvbGRT
aXplLCBieXRlc1JlY2VpdmVkIC0gb2xkU2l6ZSk7Cit9CisKKwogdm9pZCBRTmV0d29ya1JlcGx5
SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQogewogICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9s
b2FkTW9kZSAhPSBMb2FkTm9ybWFsKTsKICAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fdXNpbmdaZXJvQ29weSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAogICAgIC8vIGRvbid0IGVtaXQgdGhl
ICJEb2N1bWVudCBoYXMgbW92ZWQgaGVyZSIgdHlwZSBvZiBIVE1MCkBAIC00NTUsNiArNTMwLDcg
QEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQogCiAgICAgaWYgKCFk
YXRhLmlzRW1wdHkoKSkgewogICAgICAgICBtX3Jlc3BvbnNlRGF0YVNlbnQgPSB0cnVlOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3Ro
KCkpOwogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2VIYW5kbGUsIGRh
dGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCksIGRhdGEubGVuZ3RoKCkgLypGaXhNZSovKTsK
ICAgICB9CiB9CkBAIC01NTksNiArNjM1LDExIEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OnN0YXJ0KCkKICAgICAgICAgICAgICAgICB0aGlzLCBTTE9UKHVwbG9hZFByb2dyZXNzKHFpbnQ2
NCwgcWludDY0KSksIFNJR05BTF9DT05OKTsKICAgICB9CiAKKyAgICAvLyBGb3IgemVybyBjb3B5
LgorICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFMKGRvd25sb2FkUHJvZ3Jlc3MocWludDY0LCBx
aW50NjQpKSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1QoZG93bmxvYWRQcm9ncmVzcyhxaW50NjQs
IHFpbnQ2NCkpLCBTSUdOQUxfQ09OTik7CisKKwogICAgIC8vIE1ha2UgdGhpcyBhIGRpcmVjdCBm
dW5jdGlvbiBjYWxsIG9uY2Ugd2UgcmVxdWlyZSA0LjYuMSsuCiAgICAgY29ubmVjdCh0aGlzLCBT
SUdOQUwocHJvY2Vzc1F1ZXVlZEl0ZW1zKCkpLAogICAgICAgICAgICAgdGhpcywgU0xPVChzZW5k
UXVldWVkSXRlbXMoKSksIFNJR05BTF9DT05OKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKaW5kZXggODg0YTFhNC4uNjBmYTNhZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5k
bGVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5k
bGVyLmgKQEAgLTI0LDYgKzI0LDggQEAKICNpbmNsdWRlIDxRTmV0d29ya1JlcXVlc3Q+CiAjaW5j
bHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgogCisjaW5jbHVkZSA8U2hhcmVkQnVmZmVyLmg+
CisKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTU0LDYg
KzU2LDggQEAgcHVibGljOgogCiAgICAgUU5ldHdvcmtSZXBseSogcmVsZWFzZSgpOwogCisgICAg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcmVkRGF0YSgpOworCiBzaWduYWxzOgogICAg
IHZvaWQgcHJvY2Vzc1F1ZXVlZEl0ZW1zKCk7CiAKQEAgLTYyLDYgKzY2LDcgQEAgcHJpdmF0ZSBz
bG90czoKICAgICB2b2lkIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBmb3J3YXJk
RGF0YSgpOwogICAgIHZvaWQgc2VuZFF1ZXVlZEl0ZW1zKCk7CisgICAgdm9pZCBkb3dubG9hZFBy
b2dyZXNzKHFpbnQ2NCBieXRlc1JlY2VpdmVkLCBxaW50NjQgYnl0ZXNUb3RhbCk7CiAgICAgdm9p
ZCB1cGxvYWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3RhbCk7CiAK
IHByaXZhdGU6CkBAIC04NCw2ICs4OSwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRT
ZW5kUmVzcG9uc2U7CiAgICAgYm9vbCBtX3Nob3VsZEZvcndhcmREYXRhOwogICAgIGludCBtX3Jl
ZGlyZWN0aW9uVHJpZXM7CisKKyAgICAvLyBVc2luZyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
IGRvd25sb2FkIGJ1ZmZlciBmZWF0dXJlLgorICAgIGJvb2wgbV91c2luZ1plcm9Db3B5OworCisg
ICAgLy8gRm9yIHplcm9jb3B5LiBIb2xkcyB0aGUgZG93bmxvYWQgZGF0YS4KKyAgICBSZWZQdHI8
UUJ5dGVCbG9jaz4gbV9ieXRlQmxvY2s7CisKKyAgICAvLyBGb3IgemVyb2NvcHkgaXQgd3JhcHMg
bV9ieXRlQmxvY2ssIG90aGVyd2lzZSBpdCBob2xkcyBkYXRhIG5vcm1hbGx5LgorICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOwogfTsKIAogLy8gU2VsZiBkZXN0cnVjdGlu
ZyBRSU9EZXZpY2UgZm9yIEZvcm1EYXRhCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKaW5kZXggYTVhYzRjMy4uZjI0MzEyNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcApAQCAtMTc3
LDEyICsxNzcsMTQgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJhbWUpCiAKIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN1cHBvcnRzQnVmZmVyZWREYXRhKCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZXNvdXJjZUhhbmRsZTo6
YnVmZmVyZWREYXRhKCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoZC0+
bV9qb2IpCisgICAgICAgIHJldHVybiBkLT5tX2pvYi0+YnVmZmVyZWREYXRhKCk7CisKICAgICBy
ZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RQnl0ZUJsb2Nr
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMzgxMWYzMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlFCeXRlQmxvY2suaCIKKwor
I2luY2x1ZGUgPFJlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8
UUJ5dGVCbG9jaz4gUUJ5dGVCbG9jazo6Y3JlYXRlKFFTaGFyZWRQb2ludGVyPGNoYXI+IGQpCit7
CisgICAgUUJ5dGVCbG9jayogYnl0ZUJsb2NrID0gbmV3IFFCeXRlQmxvY2s7CisgICAgYnl0ZUJs
b2NrLT5tX2RhdGEgPSBkOworICAgIHJldHVybiBhZG9wdFJlZihieXRlQmxvY2spOworfQorCitx
aW50NjQgUUJ5dGVCbG9jazo6c2l6ZSgpCit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworcWlu
dDY0IFFCeXRlQmxvY2s6OmNhcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gbV9jYXBhY2l0eTsKK30K
KworY29uc3QgY2hhciogUUJ5dGVCbG9jazo6ZGF0YSgpCit7CisgICAgcmV0dXJuIChjb25zdCBj
aGFyKikobV9kYXRhLmRhdGEoKSk7Cit9CisKK3ZvaWQgUUJ5dGVCbG9jazo6c2V0U2l6ZShxaW50
NjQgc2l6ZSkKK3sKKyAgICBtX3NpemUgPSBzaXplOworfQorCit2b2lkIFFCeXRlQmxvY2s6OnNl
dENhcGFjaXR5KHFpbnQ2NCBjYXBhY2l0eSkKK3sKKyAgICBtX2NhcGFjaXR5ID0gY2FwYWNpdHk7
Cit9CisKK1FCeXRlQmxvY2s6OlFCeXRlQmxvY2soKSA6IG1fc2l6ZSgwKSwgbV9jYXBhY2l0eSgw
KQoreworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FCeXRlQmxvY2su
aCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmVhMzQ1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L1FCeXRlQmxvY2suaApAQCAtMCwwICsxLDQ4IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
I2lmbmRlZiBRQnl0ZUJsb2NrX2gKKyNkZWZpbmUgUUJ5dGVCbG9ja19oCisKKyNpbmNsdWRlIDxQ
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CisjaW5jbHVkZSA8UmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFFCeXRlQmxvY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxRQnl0ZUJsb2NrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UUJ5dGVCbG9jaz4gY3JlYXRlKFFTaGFyZWRQb2ludGVyPGNoYXI+KTsKKworICAgIHFpbnQ2
NCBzaXplKCk7CisgICAgcWludDY0IGNhcGFjaXR5KCk7CisKKyAgICBjb25zdCBjaGFyKiBkYXRh
KCk7CisKKyAgICB2b2lkIHNldFNpemUocWludDY0KTsKKyAgICB2b2lkIHNldENhcGFjaXR5KHFp
bnQ2NCk7Citwcm90ZWN0ZWQ6CisgICAgUUJ5dGVCbG9jaygpOworICAgIHFpbnQ2NCBtX3NpemU7
CisgICAgcWludDY0IG1fY2FwYWNpdHk7CisgICAgUVNoYXJlZFBvaW50ZXI8Y2hhcj4gbV9kYXRh
OworfTsKKworfQorCisjZW5kaWYgLy8gUUJ5dGVCbG9ja19oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2hh
cmVkQnVmZmVyUXQuY3BwCmluZGV4IDZiN2Y5YzkuLjlhZjE0MGUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvU2hhcmVkQnVmZmVyUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2hhcmVkQnVmZmVyUXQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJRQnl0ZUJsb2NrLmgi
CiAKICNpbmNsdWRlIDxRRmlsZT4KIApAQCAtNDQsNCArNDUsNDIgQEAgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0
cmluZyYgZmkKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihidWZmZXIpOwog
fQogCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp3cmFwUUJ5dGVCbG9j
ayhQYXNzUmVmUHRyPFFCeXRlQmxvY2s+IGJiKQoreworICAgIFNoYXJlZEJ1ZmZlciogc2IgPSBu
ZXcgU2hhcmVkQnVmZmVyKCk7CisgICAgc2ItPm1fcUJ5dGVCbG9jayA9IGJiOworICAgIHJldHVy
biBhZG9wdFJlZihzYik7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEo
KSBjb25zdAoreworICAgIHJldHVybiBtX3FCeXRlQmxvY2s7Cit9CisKK2NvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6cGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKGNvbnN0IGNo
YXIqKW1fcUJ5dGVCbG9jay0+ZGF0YSgpOworfQorCit1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OnBs
YXRmb3JtRGF0YVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3FCeXRlQmxvY2stPnNpemUo
KTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6Om1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQor
eworICAgIGlmICghbV9xQnl0ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8
UUJ5dGVCbG9jaz4gYmIgPSBtX3FCeXRlQmxvY2s7CisgICAgbV9xQnl0ZUJsb2NrID0gMDsKKyAg
ICBhcHBlbmQoKGNvbnN0IGNoYXIqKWJiLT5kYXRhKCksIGJiLT5zaXplKCkpOworfQorCit2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEoKQoreworICAgIG1fcUJ5dGVCbG9jayA9
IDA7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="66159"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75383</attachid>
            <date>2010-12-02 09:01:08 -0800</date>
            <delta_ts>2011-03-04 03:23:52 -0800</delta_ts>
            <desc>v4</desc>
            <filename>qtwebkit_zerocopy.patch</filename>
            <type>text/plain</type>
            <size>16634</size>
            <attacher name="Markus Goetz">markus</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODAwNzIyZC4uNjAwNTI0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0xMS0yMyAgTWFya3VzIEdvZXR6
ICA8Z3VydXpAZ3VydXouZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBVc2UgdGhlIHplcm9jb3B5IFFOZXR3b3JrQWNjZXNzTWFuYWdlciBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDA4MgorCisgICAgICAgIFRob3NlIHplcm9jb3B5IGNoYW5nZXMgd2VyZSBpbnRyb2R1Y2VkIGlu
IFF0IDQuNy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRs
ZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpidWZmZXJlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3
b3JrUmVwbHlIYW5kbGVyOjpkb3dubG9hZFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlFO
ZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0
d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jl
c291cmNlSGFuZGxlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN1
cHBvcnRzQnVmZmVyZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpi
dWZmZXJlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcFFCeXRlQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpwbGF0Zm9ybURhdGFTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSk6Z3VydXoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorCiAyMDEwLTExLTI1ICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBkYmM4OTc5Li42YjMzOWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzE0MCw2ICszMTQwLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9xdC9Qb3B1cE1lbnVRdC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9xdC9RQnl0ZUJsb2Nr
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9xdC9RV2ViUG9wdXAuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9x
dC9RV2ViUG9wdXAuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggYzFjZDBjMi4uOWQ4NDk3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMTU5LDYgKzIxNTksNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXAogICAgIHBsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBcCisg
ICAgcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuaCBc
CiAgICAgcGxhdGZvcm0vU2Nyb2xsYmFyQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmggXApAQCAtMjcwMSw2ICsyNzAyLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgcGxhdGZvcm0vcXQvTG9nZ2luZ1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvTGFuZ3VhZ2VR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBcCisgICAg
cGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJv
dW5kYXJpZXNRdC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCAzNWE3YjdjLi42MDU1NmY0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpn
ZXRTb21lRGF0YShjb25zdCBjaGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24K
ICAgICByZXR1cm4gc2VnbWVudCA9PSBzZWdtZW50cyAtIDEgPyBzZWdtZW50ZWRTaXplIC0gcG9z
aXRpb24gOiBzZWdtZW50U2l6ZSAtIHBvc2l0aW9uSW5TZWdtZW50OwogfQogCi0jaWYgIVBMQVRG
T1JNKENGKSB8fCBQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oQ0YpICYmICFQTEFURk9STShR
VCkKIAogaW5saW5lIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBiZmM1OTMxLi5mZWZiZjQ5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKQEAgLTQyLDcgKzQyLDEwIEBACiAjZWxzZQogY2xhc3MgTlNEYXRhOwogI2Vu
ZGlmCisjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIlFCeXRlQmxvY2suaCIK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw2ICs3Niw5IEBAIHB1YmxpYzoK
ICAgICBDRkRhdGFSZWYgY3JlYXRlQ0ZEYXRhKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB3cmFwQ0ZEYXRhKENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShR
VCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHdyYXBRQnl0ZUJsb2NrKFBh
c3NSZWZQdHI8UUJ5dGVCbG9jaz4pOworI2VuZGlmCiAKICAgICAvLyBDYWxsaW5nIHRoaXMgZnVu
Y3Rpb24gd2lsbCBmb3JjZSBpbnRlcm5hbCBzZWdtZW50ZWQgYnVmZmVycwogICAgIC8vIHRvIGJl
IG1lcmdlZCBpbnRvIGEgZmxhdCBidWZmZXIuIFVzZSBnZXRTb21lRGF0YSgpIHdoZW5ldmVyIHBv
c3NpYmxlCkBAIC0xMzEsNiArMTM3LDkgQEAgcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgIFJlZlB0cjxRQnl0ZUJsb2NrPiBtX3FCeXRlQmxvY2s7CisjZW5k
aWYKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCAwMWU2MjRlLi4zNDNlZDBhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxRRGF0ZVRpbWU+CiAjaW5jbHVkZSA8UUZpbGU+
CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNpbmNs
dWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgogI2luY2x1ZGUg
PHF3ZWJmcmFtZS5oPgpAQCAtNDEsNiArNDIsOSBAQAogI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNs
dWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogCisjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CitRX0RF
Q0xBUkVfTUVUQVRZUEUoUVNoYXJlZFBvaW50ZXI8Y2hhcj4pCisKIC8vIFdoYXQgdHlwZSBvZiBj
b25uZWN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgc2lnbmFscyBvZiB0aGUKIC8vIFFOZXR3
b3JrUmVwbHk/IFRoaXMgZGVwZW5kcyBvbiBpZiBRdCBoYXMgYSBidWdmaXggZm9yIHRoaXMgb3Ig
bm90LgogLy8gSXQgaXMgZml4ZWQgaW4gUXQgNC42LjMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTMKQEAgLTUxLDYgKzU1LDE2IEBACiAjZGVmaW5lIFNJ
R05BTF9DT05OIFF0OjpRdWV1ZWRDb25uZWN0aW9uCiAjZW5kaWYKIAorCisvLyBBcyBzb29uIGFz
IHdlIHJlcXVpcmUgUXQgNC43LjAgd2UgY2FuIHJlbW92ZSB0aGlzIGlmZGVmOgorI2lmIFFUX1ZF
UlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQorY29uc3QgUU5ldHdvcmtSZXF1ZXN0
OjpBdHRyaWJ1dGUgZ01heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6Ok1heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGU7Citjb25zdCBRTmV0
d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBRTmV0d29y
a1JlcXVlc3Q6OkRvd25sb2FkQnVmZmVyQXR0cmlidXRlOworI2Vsc2UKK2NvbnN0IFFOZXR3b3Jr
UmVxdWVzdDo6QXR0cmlidXRlIGdNYXhpbXVtRG93bmxvYWRCdWZmZXJTaXplQXR0cmlidXRlID0g
c3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXF1ZXN0OjpBdHRyaWJ1dGU+KFFOZXR3b3JrUmVxdWVzdDo6
SHR0cFBpcGVsaW5pbmdXYXNVc2VkQXR0cmlidXRlICsgNSk7Citjb25zdCBRTmV0d29ya1JlcXVl
c3Q6OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxRTmV0
d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZT4oUU5ldHdvcmtSZXF1ZXN0OjpIdHRwUGlwZWxpbmluZ1dh
c1VzZWRBdHRyaWJ1dGUgKyA2KTsKKyNlbmRpZgorCiBzdGF0aWMgY29uc3QgaW50IGdNYXhSZWN1
cnNpb25MaW1pdCA9IDEwOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTEsNiArMjA1LDcg
QEAgUU5ldHdvcmtSZXBseUhhbmRsZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIExvYWRNb2RlIGxvYWQKICAgICAsIG1fc2hvdWxkU2VuZFJlc3BvbnNlKGZh
bHNlKQogICAgICwgbV9zaG91bGRGb3J3YXJkRGF0YShmYWxzZSkKICAgICAsIG1fcmVkaXJlY3Rp
b25UcmllcyhnTWF4UmVjdXJzaW9uTGltaXQpCisgICAgLCBtX3VzaW5nWmVyb0NvcHkoZmFsc2Up
CiB7CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0ICZyID0gbV9yZXNvdXJjZUhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCk7CiAKQEAgLTIxOCw2ICsyMzMsMTAgQEAgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OlFOZXR3b3JrUmVwbHlIYW5kbGVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIExvYWRNb2RlIGxv
YWQKIAogICAgIG1fcmVxdWVzdCA9IHIudG9OZXR3b3JrUmVxdWVzdChvcmlnaW5hdGluZ09iamVj
dCk7CiAKKyAgICAvLyBXZSBhbGxvdyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIHRvIGFsbG9j
YXRlIHRoZSB3aG9sZSBkYXRhIHVwIHRvIGEgY2VydGFpbiBzaXplLgorICAgIC8vIFRoZW4gdGhp
cyBidWZmZXIgaXMgcHJvdmlkZWQgdG8gdXMgaW4gdGhlIFFOZXR3b3JrUmVwbHkuCisgICAgbV9y
ZXF1ZXN0LnNldEF0dHJpYnV0ZShnTWF4aW11bURvd25sb2FkQnVmZmVyU2l6ZUF0dHJpYnV0ZSwg
MTAyNCAqIDI1Nik7IC8vIDI1NiBrQi4KKwogICAgIGlmIChtX2xvYWRNb2RlID09IExvYWROb3Jt
YWwpCiAgICAgICAgIHN0YXJ0KCk7CiB9CkBAIC0yNjcsNiArMjg2LDExIEBAIFFOZXR3b3JrUmVw
bHkqIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpyZWxlYXNlKCkKICAgICByZXR1cm4gcmVwbHk7CiB9
CiAKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBRTmV0d29ya1JlcGx5SGFuZGxlcjo6YnVmZmVy
ZWREYXRhKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXJlZERhdGE7Cit9CisKIHN0YXRpYyBib29s
IGlnbm9yZUh0dHBFcnJvcihRTmV0d29ya1JlcGx5KiByZXBseSwgYm9vbCByZWNlaXZlZERhdGEp
CiB7CiAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0dHJpYnV0ZShRTmV0d29ya1Jl
cXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOwpAQCAtMzQyLDYgKzM2Niwx
OSBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAg
ICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIENoZWNrIGlmIHRoZXJl
IGlzIGEgemVyb2NvcHkgYnVmZmVyLgorICAgIFFWYXJpYW50IGRvd25sb2FkQnVmZmVyVmFyaWFu
dCA9IG1fcmVwbHktPmF0dHJpYnV0ZShnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUpOworICAgIFFT
aGFyZWRQb2ludGVyPGNoYXI+IGRvd25sb2FkQnVmZmVyID0gZG93bmxvYWRCdWZmZXJWYXJpYW50
LnZhbHVlPFFTaGFyZWRQb2ludGVyPGNoYXI+ID4oKTsKKyAgICBpZiAoIWRvd25sb2FkQnVmZmVy
LmlzTnVsbCgpKSB7CisgICAgICAgIG1fYnl0ZUJsb2NrID0gUUJ5dGVCbG9jazo6Y3JlYXRlKGRv
d25sb2FkQnVmZmVyKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6Ondy
YXBRQnl0ZUJsb2NrKG1fYnl0ZUJsb2NrKTsKKyAgICAgICAgbV91c2luZ1plcm9Db3B5ID0gdHJ1
ZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBVc2UgdGhlIGxlZ2FjeSB3YXkgb2YgdXNpbmcg
UU5ldHdvcmtSZXBseSBhcyBhIFFJT0RldmljZS4KKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX3VzaW5nWmVyb0NvcHkgPSBmYWxzZTsK
KyAgICB9CisKICAgICBXVEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihR
TmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwogICAgIFdURjo6
U3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KTsKICAgICBXVEY6OlN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29udGVudFR5cGUpOwpAQCAtNDMyLDEyICs0NjksNDkgQEAgdm9pZCBRTmV0d29ya1JlcGx5
SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQoKQogICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKG1fcmVzb3VyY2VIYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAorCit2b2lkIFFOZXR3b3Jr
UmVwbHlIYW5kbGVyOjpkb3dubG9hZFByb2dyZXNzKHFpbnQ2NCBieXRlc1JlY2VpdmVkLCBxaW50
NjQgYnl0ZXNUb3RhbCkKK3sKKyAgICBtX3Nob3VsZEZvcndhcmREYXRhID0gKG1fbG9hZE1vZGUg
IT0gTG9hZE5vcm1hbCk7CisgICAgaWYgKG1fc2hvdWxkRm9yd2FyZERhdGEpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV91c2luZ1plcm9Db3B5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOworCisgICAgLy8gRG9uJ3QgZW1pdCB0aGUgIkRvY3Vt
ZW50IGhhcyBtb3ZlZCBoZXJlIiB0eXBlIG9mIEhUTUwuCisgICAgaWYgKG1fcmVkaXJlY3RlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3Jlc291cmNlSGFuZGxlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhh
bmRsZS0+Y2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcmVzcG9uc2VEYXRhU2VudCA9IHRydWU7CisKKyAgICBxaW50NjQgb2xkU2l6ZSA9IG1fYnl0
ZUJsb2NrLT5zaXplKCk7CisgICAgbV9ieXRlQmxvY2stPnNldFNpemUoYnl0ZXNSZWNlaXZlZCk7
CisgICAgbV9ieXRlQmxvY2stPnNldENhcGFjaXR5KGJ5dGVzVG90YWwpOworCisgICAgY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlSGFuZGxlLCBtX2J5dGVCbG9jay0+ZGF0YSgpICsg
b2xkU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQgLSBvbGRT
aXplLCBieXRlc1JlY2VpdmVkIC0gb2xkU2l6ZSk7Cit9CisKKwogdm9pZCBRTmV0d29ya1JlcGx5
SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQogewogICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9s
b2FkTW9kZSAhPSBMb2FkTm9ybWFsKTsKICAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fdXNpbmdaZXJvQ29weSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAogICAgIC8vIGRvbid0IGVtaXQgdGhl
ICJEb2N1bWVudCBoYXMgbW92ZWQgaGVyZSIgdHlwZSBvZiBIVE1MCkBAIC00NTUsNiArNTI5LDcg
QEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQogCiAgICAgaWYgKCFk
YXRhLmlzRW1wdHkoKSkgewogICAgICAgICBtX3Jlc3BvbnNlRGF0YVNlbnQgPSB0cnVlOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3Ro
KCkpOwogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2VIYW5kbGUsIGRh
dGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCksIGRhdGEubGVuZ3RoKCkgLypGaXhNZSovKTsK
ICAgICB9CiB9CkBAIC01NTksNiArNjM0LDExIEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OnN0YXJ0KCkKICAgICAgICAgICAgICAgICB0aGlzLCBTTE9UKHVwbG9hZFByb2dyZXNzKHFpbnQ2
NCwgcWludDY0KSksIFNJR05BTF9DT05OKTsKICAgICB9CiAKKyAgICAvLyBGb3IgemVybyBjb3B5
LgorICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFMKGRvd25sb2FkUHJvZ3Jlc3MocWludDY0LCBx
aW50NjQpKSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1QoZG93bmxvYWRQcm9ncmVzcyhxaW50NjQs
IHFpbnQ2NCkpLCBTSUdOQUxfQ09OTik7CisKKwogICAgIC8vIE1ha2UgdGhpcyBhIGRpcmVjdCBm
dW5jdGlvbiBjYWxsIG9uY2Ugd2UgcmVxdWlyZSA0LjYuMSsuCiAgICAgY29ubmVjdCh0aGlzLCBT
SUdOQUwocHJvY2Vzc1F1ZXVlZEl0ZW1zKCkpLAogICAgICAgICAgICAgdGhpcywgU0xPVChzZW5k
UXVldWVkSXRlbXMoKSksIFNJR05BTF9DT05OKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKaW5kZXggODg0YTFhNC4uNjBmYTNhZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5k
bGVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5k
bGVyLmgKQEAgLTI0LDYgKzI0LDggQEAKICNpbmNsdWRlIDxRTmV0d29ya1JlcXVlc3Q+CiAjaW5j
bHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgogCisjaW5jbHVkZSA8U2hhcmVkQnVmZmVyLmg+
CisKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTU0LDYg
KzU2LDggQEAgcHVibGljOgogCiAgICAgUU5ldHdvcmtSZXBseSogcmVsZWFzZSgpOwogCisgICAg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcmVkRGF0YSgpOworCiBzaWduYWxzOgogICAg
IHZvaWQgcHJvY2Vzc1F1ZXVlZEl0ZW1zKCk7CiAKQEAgLTYyLDYgKzY2LDcgQEAgcHJpdmF0ZSBz
bG90czoKICAgICB2b2lkIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBmb3J3YXJk
RGF0YSgpOwogICAgIHZvaWQgc2VuZFF1ZXVlZEl0ZW1zKCk7CisgICAgdm9pZCBkb3dubG9hZFBy
b2dyZXNzKHFpbnQ2NCBieXRlc1JlY2VpdmVkLCBxaW50NjQgYnl0ZXNUb3RhbCk7CiAgICAgdm9p
ZCB1cGxvYWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3RhbCk7CiAK
IHByaXZhdGU6CkBAIC04NCw2ICs4OSwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRT
ZW5kUmVzcG9uc2U7CiAgICAgYm9vbCBtX3Nob3VsZEZvcndhcmREYXRhOwogICAgIGludCBtX3Jl
ZGlyZWN0aW9uVHJpZXM7CisKKyAgICAvLyBVc2luZyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
IGRvd25sb2FkIGJ1ZmZlciBmZWF0dXJlLgorICAgIGJvb2wgbV91c2luZ1plcm9Db3B5OworCisg
ICAgLy8gRm9yIHplcm9jb3B5LiBIb2xkcyB0aGUgZG93bmxvYWQgZGF0YS4KKyAgICBSZWZQdHI8
UUJ5dGVCbG9jaz4gbV9ieXRlQmxvY2s7CisKKyAgICAvLyBGb3IgemVyb2NvcHkgaXQgd3JhcHMg
bV9ieXRlQmxvY2ssIG90aGVyd2lzZSBpdCBob2xkcyBkYXRhIG5vcm1hbGx5LgorICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOwogfTsKIAogLy8gU2VsZiBkZXN0cnVjdGlu
ZyBRSU9EZXZpY2UgZm9yIEZvcm1EYXRhCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKaW5kZXggYTVhYzRjMy4uZjI0MzEyNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcApAQCAtMTc3
LDEyICsxNzcsMTQgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJhbWUpCiAKIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN1cHBvcnRzQnVmZmVyZWREYXRhKCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZXNvdXJjZUhhbmRsZTo6
YnVmZmVyZWREYXRhKCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoZC0+
bV9qb2IpCisgICAgICAgIHJldHVybiBkLT5tX2pvYi0+YnVmZmVyZWREYXRhKCk7CisKICAgICBy
ZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RQnl0ZUJsb2Nr
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjE5OGFhYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlFCeXRlQmxvY2suaCIKKwor
I2luY2x1ZGUgPFJlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8
UUJ5dGVCbG9jaz4gUUJ5dGVCbG9jazo6Y3JlYXRlKFFTaGFyZWRQb2ludGVyPGNoYXI+IGRhdGEp
Cit7CisgICAgUUJ5dGVCbG9jayogYnl0ZUJsb2NrID0gbmV3IFFCeXRlQmxvY2s7CisgICAgYnl0
ZUJsb2NrLT5tX2RhdGEgPSBkYXRhOworICAgIHJldHVybiBhZG9wdFJlZihieXRlQmxvY2spOwor
fQorCitxaW50NjQgUUJ5dGVCbG9jazo6c2l6ZSgpCit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30K
KworcWludDY0IFFCeXRlQmxvY2s6OmNhcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gbV9jYXBhY2l0
eTsKK30KKworY29uc3QgY2hhciogUUJ5dGVCbG9jazo6ZGF0YSgpCit7CisgICAgcmV0dXJuIChj
b25zdCBjaGFyKiltX2RhdGEuZGF0YSgpOworfQorCit2b2lkIFFCeXRlQmxvY2s6OnNldFNpemUo
cWludDY0IHNpemUpCit7CisgICAgbV9zaXplID0gc2l6ZTsKK30KKwordm9pZCBRQnl0ZUJsb2Nr
OjpzZXRDYXBhY2l0eShxaW50NjQgY2FwYWNpdHkpCit7CisgICAgbV9jYXBhY2l0eSA9IGNhcGFj
aXR5OworfQorCitRQnl0ZUJsb2NrOjpRQnl0ZUJsb2NrKCkgOiBtX3NpemUoMCksIG1fY2FwYWNp
dHkoMCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RQnl0ZUJs
b2NrLmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1FCeXRlQmxvY2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lYTM0NTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9RQnl0ZUJsb2NrLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKyNpZm5kZWYgUUJ5dGVCbG9ja19oCisjZGVmaW5lIFFCeXRlQmxvY2tfaAorCisjaW5jbHVk
ZSA8UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPFFTaGFyZWRQb2ludGVyPgorI2luY2x1ZGUgPFJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBRQnl0ZUJsb2NrIDog
cHVibGljIFJlZkNvdW50ZWQ8UUJ5dGVCbG9jaz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFFCeXRlQmxvY2s+IGNyZWF0ZShRU2hhcmVkUG9pbnRlcjxjaGFyPik7CisKKyAgICBx
aW50NjQgc2l6ZSgpOworICAgIHFpbnQ2NCBjYXBhY2l0eSgpOworCisgICAgY29uc3QgY2hhciog
ZGF0YSgpOworCisgICAgdm9pZCBzZXRTaXplKHFpbnQ2NCk7CisgICAgdm9pZCBzZXRDYXBhY2l0
eShxaW50NjQpOworcHJvdGVjdGVkOgorICAgIFFCeXRlQmxvY2soKTsKKyAgICBxaW50NjQgbV9z
aXplOworICAgIHFpbnQ2NCBtX2NhcGFjaXR5OworICAgIFFTaGFyZWRQb2ludGVyPGNoYXI+IG1f
ZGF0YTsKK307CisKK30KKworI2VuZGlmIC8vIFFCeXRlQmxvY2tfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0
L1NoYXJlZEJ1ZmZlclF0LmNwcAppbmRleCA2YjdmOWM5Li5jY2EwMjBhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiUUJ5dGVCbG9j
ay5oIgogCiAjaW5jbHVkZSA8UUZpbGU+CiAKQEAgLTQ0LDQgKzQ1LDQyIEBAIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoYnVmZmVy
KTsKIH0KIAorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcFFCeXRl
QmxvY2soUGFzc1JlZlB0cjxRQnl0ZUJsb2NrPiBieXRlQmxvY2spCit7CisgICAgU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIgPSBuZXcgU2hhcmVkQnVmZmVyKCk7CisgICAgc2hhcmVkQnVmZmVy
LT5tX3FCeXRlQmxvY2sgPSBieXRlQmxvY2s7CisgICAgcmV0dXJuIGFkb3B0UmVmKHNoYXJlZEJ1
ZmZlcik7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEoKSBjb25zdAor
eworICAgIHJldHVybiBtX3FCeXRlQmxvY2s7Cit9CisKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZl
cjo6cGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKGNvbnN0IGNoYXIqKW1fcUJ5
dGVCbG9jay0+ZGF0YSgpOworfQorCit1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0
YVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3FCeXRlQmxvY2stPnNpemUoKTsKK30KKwor
dm9pZCBTaGFyZWRCdWZmZXI6Om1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQoreworICAgIGlm
ICghbV9xQnl0ZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UUJ5dGVCbG9j
az4gYnl0ZUJsb2NrID0gbV9xQnl0ZUJsb2NrOworICAgIG1fcUJ5dGVCbG9jayA9IDA7CisgICAg
YXBwZW5kKChjb25zdCBjaGFyKilieXRlQmxvY2stPmRhdGEoKSwgYnl0ZUJsb2NrLT5zaXplKCkp
OworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEoKQoreworICAgIG1f
cUJ5dGVCbG9jayA9IDA7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76367</attachid>
            <date>2010-12-13 04:10:38 -0800</date>
            <delta_ts>2011-03-04 04:58:53 -0800</delta_ts>
            <desc>v4 (rebased)</desc>
            <filename>qtwebkit_zerocopy.patch</filename>
            <type>text/plain</type>
            <size>17747</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2M4OGU0Yi4uZWM1OTFlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0xMS0yMyAgTWFya3VzIEdvZXR6
ICA8Z3VydXpAZ3VydXouZGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBVc2UgdGhlIHplcm9jb3B5IFFOZXR3b3JrQWNjZXNzTWFuYWdlciBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDA4MgorCisgICAgICAgIFRob3NlIHplcm9jb3B5IGNoYW5nZXMgd2VyZSBpbnRyb2R1Y2VkIGlu
IFF0IDQuNy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRs
ZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpidWZmZXJlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmRvd25sb2FkUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtS
ZXBseUhhbmRsZXI6OmZvcndhcmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxl
cjo6c2VuZFF1ZXVlZEl0ZW1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3
b3JrUmVwbHlIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RdE5BTVRo
cmVhZFNhZmVQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdE5ldHdvcmtSZXBseVRocmVh
ZFNhZmVQcm94eTo6bG9jYWxGb3J3YXJkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpRdE5ldHdv
cmtSZXBseVRocmVhZFNhZmVQcm94eTo6bG9jYWxNZXRhRGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UXROZXR3b3JrUmVwbHlUaHJlYWRTYWZlUHJveHk6OmxvY2FsU2V0UmVwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUXROQU1UaHJlYWRTYWZlUHJveHkuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlF0TmV0d29ya1JlcGx5VGhyZWFkU2FmZVByb3h5Ojpkb3dubG9hZEJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdXBwb3J0c0J1ZmZlcmVkRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6YnVmZmVyZWREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OndyYXBRQnl0ZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6aGFzUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6cGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6cGxhdGZv
cm1EYXRhU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1heWJlVHJhbnNm
ZXJQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjbGVhclBs
YXRmb3JtRGF0YSk6CisKIDIwMTAtMTItMTAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1
cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBub2JvZHksIGJ1aWxkIGZp
eC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMzI3YzYyMy4uNWUyMTgwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMyMzEsNiArMzIzMSw4IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vcXQvUGxhdGZvcm1TY3JlZW5RdC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQv
UG9wdXBNZW51UXQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vcXQvUUJ5dGVCbG9jay5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1FCeXRlQmxvY2suaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vcXQvUVdlYlBvcHVwLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vcXQvUVdl
YlBvcHVwLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IGNjOTE5NGMuLjViY2IyNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjE3Niw2ICsyMTc2LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIFwKICAgICBwbGF0Zm9ybS9xdC9TY3Jv
bGxiYXJUaGVtZVF0LmggXAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggXAorICAgIHBs
YXRmb3JtL3F0L1FCeXRlQmxvY2suaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsYmFyLmggXAogICAg
IHBsYXRmb3JtL1Njcm9sbGJhckNsaWVudC5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oIFwKQEAgLTI3MjQsNiArMjcyNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBs
YXRmb3JtL3F0L0xvZ2dpbmdRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3Bw
IFwKICAgICBwbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHAgXAorICAgIHBsYXRm
b3JtL3F0L1FCeXRlQmxvY2suY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRCb3VuZGFy
aWVzUXQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3Bw
IFwKICAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2RlY1F0LmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggMzVhN2I3Yy4uNjA1NTZmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6Z2V0U29t
ZURhdGEoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlvbikgY29uCiAgICAg
cmV0dXJuIHNlZ21lbnQgPT0gc2VnbWVudHMgLSAxID8gc2VnbWVudGVkU2l6ZSAtIHBvc2l0aW9u
IDogc2VnbWVudFNpemUgLSBwb3NpdGlvbkluU2VnbWVudDsKIH0KIAotI2lmICFQTEFURk9STShD
RikgfHwgUExBVEZPUk0oUVQpCisjaWYgIVBMQVRGT1JNKENGKSAmJiAhUExBVEZPUk0oUVQpCiAK
IGlubGluZSB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEoKQogewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKaW5kZXggYmZjNTkzMS4uZmVmYmY0OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCkBAIC00Miw3ICs0MiwxMCBAQAogI2Vsc2UKIGNsYXNzIE5TRGF0YTsKICNlbmRpZgor
I2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJRQnl0ZUJsb2NrLmgiCiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNiArNzYsOSBAQCBwdWJsaWM6CiAgICAg
Q0ZEYXRhUmVmIGNyZWF0ZUNGRGF0YSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gd3JhcENGRGF0YShDRkRhdGFSZWYpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB3cmFwUUJ5dGVCbG9jayhQYXNzUmVm
UHRyPFFCeXRlQmxvY2s+KTsKKyNlbmRpZgogCiAgICAgLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9u
IHdpbGwgZm9yY2UgaW50ZXJuYWwgc2VnbWVudGVkIGJ1ZmZlcnMKICAgICAvLyB0byBiZSBtZXJn
ZWQgaW50byBhIGZsYXQgYnVmZmVyLiBVc2UgZ2V0U29tZURhdGEoKSB3aGVuZXZlciBwb3NzaWJs
ZQpAQCAtMTMxLDYgKzEzNyw5IEBAIHByaXZhdGU6CiAgICAgU2hhcmVkQnVmZmVyKENGRGF0YVJl
Zik7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZkRhdGE7CiAjZW5kaWYKKyNpZiBQTEFU
Rk9STShRVCkKKyAgICBSZWZQdHI8UUJ5dGVCbG9jaz4gbV9xQnl0ZUJsb2NrOworI2VuZGlmCiB9
OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3
b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29y
a1JlcGx5SGFuZGxlci5jcHAKaW5kZXggMmZmN2Q5Yy4uYzhiYmZkZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCkBAIC0z
Miw4ICszMiwxMCBAQAogI2luY2x1ZGUgPFFEYXRlVGltZT4KICNpbmNsdWRlIDxRRmlsZT4KICNp
bmNsdWRlIDxRRmlsZUluZm8+CisjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgogI2luY2x1ZGUg
PFFOZXR3b3JrUmVwbHk+CiAjaW5jbHVkZSA8UU5ldHdvcmtDb29raWU+CisjaW5jbHVkZSA8UVNo
YXJlZFBvaW50ZXI+CiAjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8cXdlYnBhZ2Uu
aD4KIApAQCAtNTIsNiArNTQsMTQgQEAKICNkZWZpbmUgU0lHTkFMX0NPTk4gUXQ6OlF1ZXVlZENv
bm5lY3Rpb24KICNlbmRpZgogCisKKy8vIEFzIHNvb24gYXMgd2UgcmVxdWlyZSBRdCA0LjcuMCB3
ZSBjYW4gcmVtb3ZlIHRoaXMgaWZkZWY6CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NI
RUNLKDQsIDcsIDApCitjb25zdCBRTmV0d29ya1JlcXVlc3Q6OkF0dHJpYnV0ZSBnTWF4aW11bURv
d25sb2FkQnVmZmVyU2l6ZUF0dHJpYnV0ZSA9IFFOZXR3b3JrUmVxdWVzdDo6TWF4aW11bURvd25s
b2FkQnVmZmVyU2l6ZUF0dHJpYnV0ZTsKKyNlbHNlCitjb25zdCBRTmV0d29ya1JlcXVlc3Q6OkF0
dHJpYnV0ZSBnTWF4aW11bURvd25sb2FkQnVmZmVyU2l6ZUF0dHJpYnV0ZSA9IHN0YXRpY19jYXN0
PFFOZXR3b3JrUmVxdWVzdDo6QXR0cmlidXRlPihRTmV0d29ya1JlcXVlc3Q6Okh0dHBQaXBlbGlu
aW5nV2FzVXNlZEF0dHJpYnV0ZSArIDUpOworI2VuZGlmCisKIHN0YXRpYyBjb25zdCBpbnQgZ01h
eFJlY3Vyc2lvbkxpbWl0ID0gMTA7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5Myw2ICsy
MDMsNyBAQCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6UU5ldHdvcmtSZXBseUhhbmRsZXIoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgTG9hZE1vZGUgbG9hZAogICAgICwgbV9zaG91bGRTZW5kUmVzcG9u
c2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEZvcndhcmREYXRhKGZhbHNlKQogICAgICwgbV9yZWRp
cmVjdGlvblRyaWVzKGdNYXhSZWN1cnNpb25MaW1pdCkKKyAgICAsIG1fYnVmZmVyZWREYXRhKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiB7CiAgICAgLy8gTWFrZSB0aGlzIGEgZGlyZWN0IGZ1bmN0
aW9uIGNhbGwgb25jZSB3ZSByZXF1aXJlIDQuNi4xKy4KICAgICBjb25uZWN0KHRoaXMsIFNJR05B
TChwcm9jZXNzUXVldWVkSXRlbXMoKSksIHRoaXMsIFNMT1Qoc2VuZFF1ZXVlZEl0ZW1zKCkpLCBT
SUdOQUxfQ09OTik7CkBAIC0yMjMsNiArMjM0LDEwIEBAIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpR
TmV0d29ya1JlcGx5SGFuZGxlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBMb2FkTW9kZSBsb2Fk
CiAKICAgICBtX3JlcXVlc3QgPSByLnRvTmV0d29ya1JlcXVlc3Qob3JpZ2luYXRpbmdPYmplY3Qp
OwogCisgICAgLy8gV2UgYWxsb3cgdGhlIFFOZXR3b3JrQWNjZXNzTWFuYWdlciB0byBhbGxvY2F0
ZSB0aGUgd2hvbGUgZGF0YSB1cCB0byBhIGNlcnRhaW4gc2l6ZS4KKyAgICAvLyBUaGVuIHRoaXMg
YnVmZmVyIGlzIHByb3ZpZGVkIHRvIHVzIGluIHRoZSBRTmV0d29ya1JlcGx5LgorICAgIG1fcmVx
dWVzdC5zZXRBdHRyaWJ1dGUoZ01heGltdW1Eb3dubG9hZEJ1ZmZlclNpemVBdHRyaWJ1dGUsIDEw
MjQgKiAyNTYpOyAvLyAyNTYga0IuCisKICAgICBpZiAobV9sb2FkTW9kZSA9PSBMb2FkTm9ybWFs
KQogICAgICAgICBzdGFydCgpOwogfQpAQCAtMjgxLDYgKzI5NiwxMSBAQCBRdE5ldHdvcmtSZXBs
eVRocmVhZFNhZmVQcm94eSogUU5ldHdvcmtSZXBseUhhbmRsZXI6OnJlbGVhc2UoKQogICAgIHJl
dHVybiByZXBseTsKIH0KIAorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpidWZmZXJlZERhdGEoKQoreworICAgIHJldHVybiBtX2J1ZmZlcmVkRGF0YTsKK30K
Kwogc3RhdGljIGJvb2wgaWdub3JlSHR0cEVycm9yKFF0TmV0d29ya1JlcGx5VGhyZWFkU2FmZVBy
b3h5KiByZXBseSwgYm9vbCByZWNlaXZlZERhdGEpCiB7CiAgICAgaW50IGh0dHBTdGF0dXNDb2Rl
ID0gcmVwbHktPmh0dHBTdGF0dXNDb2RlKCk7CkBAIC00NDQsMTUgKzQ2NCwzOCBAQCB2b2lkIFFO
ZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCit2b2lk
IFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpkb3dubG9hZFByb2dyZXNzKHFpbnQ2NCBieXRlc1JlY2Vp
dmVkLCBxaW50NjQgYnl0ZXNUb3RhbCkKK3sKKyAgICBRU2hhcmVkUG9pbnRlcjxjaGFyPiBkb3du
bG9hZEJ1ZmZlciA9IG1fcmVwbHktPmRvd25sb2FkQnVmZmVyKCk7CisgICAgaWYgKGRvd25sb2Fk
QnVmZmVyICYmICFtX2J5dGVCbG9jaykgeworICAgICAgICBtX2J5dGVCbG9jayA9IFFCeXRlQmxv
Y2s6OmNyZWF0ZShkb3dubG9hZEJ1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hh
cmVkQnVmZmVyOjp3cmFwUUJ5dGVCbG9jayhtX2J5dGVCbG9jayk7CisgICAgfQorCisgICAgLy8g
bV9ieXRlQmxvY2sgIT0gMCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgcHJvdmlkZWQgYnkgdGhl
IFFOZXR3b3JrUmVwbHkuCisgICAgaWYgKG1fYnl0ZUJsb2NrKSB7CisgICAgICAgIHFpbnQ2NCBv
bGRTaXplID0gbV9ieXRlQmxvY2stPnNpemUoKTsKKyAgICAgICAgbV9ieXRlQmxvY2stPnNldFNp
emUoYnl0ZXNSZWNlaXZlZCk7CisgICAgICAgIG1fYnl0ZUJsb2NrLT5zZXRDYXBhY2l0eShieXRl
c1RvdGFsKTsKKworICAgICAgICBmb3J3YXJkRGF0YShtX2J5dGVCbG9jay0+ZGF0YSgpICsgb2xk
U2l6ZSwgYnl0ZXNSZWNlaXZlZCAtIG9sZFNpemUpOworICAgIH0KK30KKwogdm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSkKIHsKKyAg
ICBmb3J3YXJkRGF0YShkYXRhLmNvbnN0RGF0YSgpLCBkYXRhLmxlbmd0aCgpKTsKK30KKwordm9p
ZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK3sKICAgICBtX3Nob3VsZEZvcndhcmREYXRhID0gKG1fbG9hZE1vZGUgIT0gTG9h
ZE5vcm1hbCk7CiAgICAgaWYgKG1fc2hvdWxkRm9yd2FyZERhdGEpIHsKLSAgICAgICAgbV9idWZm
ZXJlZERhdGEgKz0gZGF0YTsKKyAgICAgICAgbV9kZWZmZXJlZEJ1ZmZlcmVkRGF0YS5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghZGF0YS5p
c0VtcHR5KCkpCisgICAgaWYgKGxlbmd0aCkKICAgICAgICAgbV9yZXNwb25zZUNvbnRhaW5zRGF0
YSA9IHRydWU7CiAKICAgICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOwpAQCAtNDY4LDggKzUxMSwx
MSBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YShjb25zdCBRQnl0ZUFy
cmF5ICZkYXRhKQogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IWRhdGEuaXNFbXB0eSgpKQotICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3Vy
Y2VIYW5kbGUsIGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCksIGRhdGEubGVuZ3RoKCkg
LypGaXhNZSovKTsKKyAgICBpZiAobGVuZ3RoKSB7CisgICAgICAgIGlmICghbV9ieXRlQmxvY2sp
CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAg
ICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwgZGF0YSwgbGVuZ3Ro
LCBsZW5ndGggLypGaXhNZSovKTsKKyAgICB9CiB9CiAKIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRs
ZXI6OnVwbG9hZFByb2dyZXNzKHFpbnQ2NCBieXRlc1NlbnQsIHFpbnQ2NCBieXRlc1RvdGFsKQpA
QCAtNTE1LDYgKzU2MSw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0KCkKICAg
ICAgICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwobWV0YURhdGFDaGFuZ2VkKCkpLCB0aGlzLCBT
TE9UKHNlbmRSZXNwb25zZUlmTmVlZGVkKCkpLCBTSUdOQUxfQ09OTik7CiAKICAgICBjb25uZWN0
KG1fcmVwbHksIFNJR05BTChkYXRhUmVjZWl2ZWQoY29uc3QgUUJ5dGVBcnJheSYpKSwgdGhpcywg
U0xPVChmb3J3YXJkRGF0YShjb25zdCBRQnl0ZUFycmF5JikpLCBTSUdOQUxfQ09OTik7CisgICAg
Y29ubmVjdChtX3JlcGx5LCBTSUdOQUwoZG93bmxvYWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkp
LCB0aGlzLCBTTE9UKGRvd25sb2FkUHJvZ3Jlc3MocWludDY0LCBxaW50NjQpKSwgU0lHTkFMX0NP
Tk4pOwogCiAgICAgaWYgKG1fcmVzb3VyY2VIYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcG9ydFVw
bG9hZFByb2dyZXNzKCkpCiAgICAgICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFMKHVwbG9hZFBy
b2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIHRoaXMsIFNMT1QodXBsb2FkUHJvZ3Jlc3MocWludDY0
LCBxaW50NjQpKSwgU0lHTkFMX0NPTk4pOwpAQCAtNTkwLDggKzYzNyw4IEBAIHZvaWQgUU5ldHdv
cmtSZXBseUhhbmRsZXI6OnNlbmRRdWV1ZWRJdGVtcygpCiAgICAgICAgIHNlbmRSZXNwb25zZUlm
TmVlZGVkKCk7CiAKICAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkgewotICAgICAgICBmb3J3
YXJkRGF0YShtX2J1ZmZlcmVkRGF0YSk7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmNsZWFyKCk7
CisgICAgICAgIGZvcndhcmREYXRhKG1fZGVmZmVyZWRCdWZmZXJlZERhdGEpOworICAgICAgICBt
X2RlZmZlcmVkQnVmZmVyZWREYXRhLmNsZWFyKCk7CiAgICAgfQogCiAgICAgaWYgKG1fc2hvdWxk
RmluaXNoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBs
eUhhbmRsZXIuaAppbmRleCAxMTYzOGIzLi4yYjYyMTlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaApAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01h
bmFnZXI+CiAjaW5jbHVkZSA8UU5ldHdvcmtSZXBseT4KKyNpbmNsdWRlIDxTaGFyZWRCdWZmZXIu
aD4KIAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAKQEAgLTU1LDYgKzU2LDggQEAgcHVibGljOgog
CiAgICAgUXROZXR3b3JrUmVwbHlUaHJlYWRTYWZlUHJveHkqIHJlbGVhc2UoKTsKIAorICAgIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJlZERhdGEoKTsKKwogc2lnbmFsczoKICAgICB2
b2lkIHByb2Nlc3NRdWV1ZWRJdGVtcygpOwogCkBAIC02MywxMSArNjYsMTMgQEAgcHJpdmF0ZSBz
bG90czoKICAgICB2b2lkIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBmb3J3YXJk
RGF0YShjb25zdCBRQnl0ZUFycmF5ICZkYXRhKTsKICAgICB2b2lkIHNlbmRRdWV1ZWRJdGVtcygp
OworICAgIHZvaWQgZG93bmxvYWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNSZWNlaXZlZCwgcWludDY0
IGJ5dGVzVG90YWwpOwogICAgIHZvaWQgdXBsb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwg
cWludDY0IGJ5dGVzVG90YWwpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2
b2lkIHJlc2V0U3RhdGUoKTsKKyAgICB2b2lkIGZvcndhcmREYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpOwogICAgIFN0cmluZyBodHRwTWV0aG9kKCkgY29uc3Q7CiAKICAgICBRdE5l
dHdvcmtSZXBseVRocmVhZFNhZmVQcm94eSogbV9yZXBseTsKQEAgLTg1LDcgKzkwLDEzIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFNlbmRSZXNwb25zZTsKICAgICBib29sIG1fc2hvdWxk
Rm9yd2FyZERhdGE7CiAgICAgaW50IG1fcmVkaXJlY3Rpb25UcmllczsKLSAgICBRQnl0ZUFycmF5
IG1fYnVmZmVyZWREYXRhOworICAgIFFCeXRlQXJyYXkgbV9kZWZmZXJlZEJ1ZmZlcmVkRGF0YTsK
KworICAgIC8vIEZvciB6ZXJvY29weS4gSG9sZHMgdGhlIGRvd25sb2FkIGRhdGEuCisgICAgUmVm
UHRyPFFCeXRlQmxvY2s+IG1fYnl0ZUJsb2NrOworCisgICAgLy8gRm9yIHplcm9jb3B5IGl0IHdy
YXBzIG1fYnl0ZUJsb2NrLCBvdGhlcndpc2UgaXQgaG9sZHMgZGF0YSBub3JtYWxseS4KKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKIH07CiAKIC8vIFNlbGYgZGVzdHJ1
Y3RpbmcgUUlPRGV2aWNlIGZvciBGb3JtRGF0YQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1F0TkFNVGhyZWFkU2FmZVByb3h5LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9RdE5BTVRocmVhZFNhZmVQcm94eS5jcHAKaW5kZXggMjJlYTM4OC4uNjA0ZWVl
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1F0TkFNVGhyZWFkU2Fm
ZVByb3h5LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUXROQU1UaHJlYWRT
YWZlUHJveHkuY3BwCkBAIC0yNSwxMCArMjUsMTkgQEAKICNpbmNsdWRlIDxRTmV0d29ya0Nvb2tp
ZUphcj4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KIAorUV9ERUNMQVJFX01FVEFUWVBFKFFTaGFy
ZWRQb2ludGVyPGNoYXI+KQorCiAvLyBVc2UgdW51c2VkIHZhcmlhYmxlcyB0byBiZSBhYmxlIHRv
IGNhbGwgcVJlZ2lzdGVyTWV0YVR5cGUgc3RhdGljYWxseS4KIHN0YXRpYyBpbnQgZHVtbXlTdGF0
aWNWYXIxID0gcVJlZ2lzdGVyTWV0YVR5cGU8UUZ1dHVyZUludGVyZmFjZTxib29sPiA+KCJRRnV0
dXJlSW50ZXJmYWNlPGJvb2w+Iik7CiBzdGF0aWMgaW50IGR1bW15U3RhdGljVmFyMiA9IHFSZWdp
c3Rlck1ldGFUeXBlPFFGdXR1cmVJbnRlcmZhY2U8UUxpc3Q8UU5ldHdvcmtDb29raWU+ID4gPigi
UUZ1dHVyZUludGVyZmFjZTxRTGlzdDxRTmV0d29ya0Nvb2tpZT4gPiIpOwogCisvLyBBcyBzb29u
IGFzIHdlIHJlcXVpcmUgUXQgNC43LjAgd2UgY2FuIHJlbW92ZSB0aGlzIGlmZGVmOgorI2lmIFFU
X1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQorY29uc3QgUU5ldHdvcmtSZXF1
ZXN0OjpBdHRyaWJ1dGUgZ0Rvd25sb2FkQnVmZmVyQXR0cmlidXRlID0gUU5ldHdvcmtSZXF1ZXN0
OjpEb3dubG9hZEJ1ZmZlckF0dHJpYnV0ZTsKKyNlbHNlCitjb25zdCBRTmV0d29ya1JlcXVlc3Q6
OkF0dHJpYnV0ZSBnRG93bmxvYWRCdWZmZXJBdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxRTmV0d29y
a1JlcXVlc3Q6OkF0dHJpYnV0ZT4oUU5ldHdvcmtSZXF1ZXN0OjpIdHRwUGlwZWxpbmluZ1dhc1Vz
ZWRBdHRyaWJ1dGUgKyA2KTsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFF0TkFN
VGhyZWFkU2FmZVByb3h5OjpRdE5BTVRocmVhZFNhZmVQcm94eShRTmV0d29ya0FjY2Vzc01hbmFn
ZXIgKm1hbmFnZXIpCkBAIC0xMzcsMTIgKzE0NiwyNCBAQCB2b2lkIFF0TmV0d29ya1JlcGx5VGhy
ZWFkU2FmZVByb3h5Ojpsb2NhbEFib3J0KCkKIAogdm9pZCBRdE5ldHdvcmtSZXBseVRocmVhZFNh
ZmVQcm94eTo6bG9jYWxGb3J3YXJkRGF0YSgpCiB7CisgICAgLy8gVGhlIGRvd25sb2FkIGJ1ZmZl
ciBhbHJlYWR5IGNvbnRhaW5zIHRoZSBkYXRhIGFuZCB3aWxsIGJlIHNpZ25hbGVkIHRocm91Z2gg
ZG93bmxvYWRQcm9ncmVzcy4KKyAgICBpZiAobV9kb3dubG9hZEJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKG1fcmVwbHktPmJ5dGVzQXZhaWxhYmxlKCkpIHsKICAgICAgICAgUUJ5
dGVBcnJheSBkYXRhID0gbV9yZXBseS0+cmVhZChtX3JlcGx5LT5ieXRlc0F2YWlsYWJsZSgpKTsK
ICAgICAgICAgZW1pdCBkYXRhUmVjZWl2ZWQoZGF0YSk7CiAgICAgfQogfQogCit2b2lkIFF0TmV0
d29ya1JlcGx5VGhyZWFkU2FmZVByb3h5Ojpsb2NhbE1ldGFEYXRhQ2hhbmdlZCgpCit7CisgICAg
Ly8gQ2hlY2sgaWYgdGhlcmUgaXMgYSB6ZXJvY29weSBidWZmZXIuCisgICAgUVZhcmlhbnQgZG93
bmxvYWRCdWZmZXJWYXJpYW50ID0gbV9yZXBseS0+YXR0cmlidXRlKGdEb3dubG9hZEJ1ZmZlckF0
dHJpYnV0ZSk7CisgICAgbV9kb3dubG9hZEJ1ZmZlciA9IGRvd25sb2FkQnVmZmVyVmFyaWFudC52
YWx1ZTxRU2hhcmVkUG9pbnRlcjxjaGFyPiA+KCk7CisgICAgZW1pdCBtZXRhRGF0YUNoYW5nZWQo
KTsKK30KKwogdm9pZCBRdE5ldHdvcmtSZXBseVRocmVhZFNhZmVQcm94eTo6bG9jYWxTZXRGb3J3
YXJkaW5nRGVmZXJlZChib29sIGZvcndhcmRpbmdEZWZlcmVkKQogewogICAgIGlmIChtX2Zvcndh
cmRpbmdEZWZlcmVkICYmICFmb3J3YXJkaW5nRGVmZXJlZCkKQEAgLTE3OSwxMiArMjAwLDEzIEBA
IHZvaWQgUXROZXR3b3JrUmVwbHlUaHJlYWRTYWZlUHJveHk6OmxvY2FsU2V0UmVwbHkoUU5ldHdv
cmtSZXBseSAqcmVwbHkpCiAgICAgbV9yZXBseSA9IHJlcGx5OwogICAgIG1fcmVwbHktPnNldFBh
cmVudCgwKTsKICAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChyZWFkeVJlYWQoKSksIHRoaXMs
IFNMT1QobG9jYWxGb3J3YXJkRGF0YSgpKSk7CisgICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwo
ZG93bmxvYWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkpLCB0aGlzLCBTSUdOQUwoZG93bmxvYWRQ
cm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkpKTsKICAgICAvLyBNYWtlIHN1cmUgbG9jYWxNaXJyb3JN
ZW1iZXJzKCkgaXMgY2FsbGVkIGJlZm9yZSB0aGUgb3V0d2FyZCBzaWduYWwKICAgICBjb25uZWN0
KG1fcmVwbHksIFNJR05BTChmaW5pc2hlZCgpKSwgdGhpcywgU0xPVChsb2NhbE1pcnJvck1lbWJl
cnMoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKICAgICBjb25uZWN0KG1fcmVwbHksIFNJR05B
TChmaW5pc2hlZCgpKSwgdGhpcywgU0lHTkFMKGZpbmlzaGVkKCkpKTsKICAgICAvLyBNYWtlIHN1
cmUgbG9jYWxNaXJyb3JNZW1iZXJzKCkgaXMgY2FsbGVkIGJlZm9yZSB0aGUgb3V0d2FyZCBzaWdu
YWwKICAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChtZXRhRGF0YUNoYW5nZWQoKSksIHRoaXMs
IFNMT1QobG9jYWxNaXJyb3JNZW1iZXJzKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Ci0gICAg
Y29ubmVjdChtX3JlcGx5LCBTSUdOQUwobWV0YURhdGFDaGFuZ2VkKCkpLCB0aGlzLCBTSUdOQUwo
bWV0YURhdGFDaGFuZ2VkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChtZXRhRGF0
YUNoYW5nZWQoKSksIHRoaXMsIFNMT1QobG9jYWxNZXRhRGF0YUNoYW5nZWQoKSkpOwogICAgIGNv
bm5lY3QobV9yZXBseSwgU0lHTkFMKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIHRo
aXMsIFNJR05BTCh1cGxvYWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1F0TkFNVGhyZWFkU2FmZVByb3h5Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUXROQU1UaHJlYWRTYWZlUHJveHkuaAppbmRl
eCBkN2I1Y2VmLi4wY2Q2MDNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUXROQU1UaHJlYWRTYWZlUHJveHkuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUXROQU1UaHJlYWRTYWZlUHJveHkuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPFFO
ZXR3b3JrQ29va2llPgogI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+CiAjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDxRU2hhcmVkUG9pbnRlcj4KIAogY2xhc3MgUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyOwogY2xhc3MgUU5ldHdvcmtSZXF1ZXN0OwpAQCAtMTAzLDYgKzEwNCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIENhcmVmdWwsIGFjY2Nlc3NpbmcgdGhlIHJlcGx5IGFjY3Jvc3MgdGhyZWFk
cyBtaWdodCBiZSBoYXphcmRvdXMgdG8geW91ciBoZWFsdGgKICAgICAgICAgcmV0dXJuIG1fcmVw
bHk7CiAgICAgfQorCisgICAgUVNoYXJlZFBvaW50ZXI8Y2hhcj4gZG93bmxvYWRCdWZmZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZG93bmxvYWRCdWZmZXI7CisgICAgfQorCiBwdWJsaWM6
CiAgICAgdm9pZCBnZXQoY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0KQogICAgIHsKQEAg
LTE0OCw2ICsxNTUsNyBAQCBzaWduYWxzOgogICAgIHZvaWQgbWV0YURhdGFDaGFuZ2VkKCk7CiAg
ICAgdm9pZCB1cGxvYWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3Rh
bCk7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSk7CisgICAg
dm9pZCBkb3dubG9hZFByb2dyZXNzKHFpbnQ2NCBieXRlc1JlY2VpdmVkLCBxaW50NjQgYnl0ZXNU
b3RhbCk7CiAKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBsb2NhbEdldChjb25zdCBRTmV0d29y
a1JlcXVlc3QmIHJlcXVlc3QpOwpAQCAtMTYwLDYgKzE2OCw3IEBAIHByaXZhdGUgc2xvdHM6CiAj
ZW5kaWYKICAgICB2b2lkIGxvY2FsQWJvcnQoKTsKICAgICB2b2lkIGxvY2FsRm9yd2FyZERhdGEo
KTsKKyAgICB2b2lkIGxvY2FsTWV0YURhdGFDaGFuZ2VkKCk7CiAgICAgdm9pZCBsb2NhbFNldEZv
cndhcmRpbmdEZWZlcmVkKGJvb2wgZm9yd2FyZGluZ0RlZmVyZWQpOwogICAgIHZvaWQgbG9jYWxN
aXJyb3JNZW1iZXJzKCk7CiAKQEAgLTE2OSw2ICsxNzgsNyBAQCBwcml2YXRlOgogICAgIFFOZXR3
b3JrQWNjZXNzTWFuYWdlciAqbV9tYW5hZ2VyOwogICAgIFFOZXR3b3JrUmVwbHkgKm1fcmVwbHk7
CiAgICAgYm9vbCBtX2ZvcndhcmRpbmdEZWZlcmVkOworICAgIFFTaGFyZWRQb2ludGVyPGNoYXI+
IG1fZG93bmxvYWRCdWZmZXI7CiAKICAgICAvLyBNaXJyb3JlZCBtZW1iZXJzCiAgICAgUU11dGV4
IG1fbWlycm9yZWRNZW1iZXJzTXV0ZXg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKaW5kZXggZjQwYjgyOC4uZmM0M2UxMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcApAQCAtMTcx
LDEyICsxNzEsMTQgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJhbWUpCiAKIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN1cHBvcnRzQnVmZmVyZWREYXRhKCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBSZXNvdXJjZUhhbmRsZTo6
YnVmZmVyZWREYXRhKCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoZC0+
bV9qb2IpCisgICAgICAgIHJldHVybiBkLT5tX2pvYi0+YnVmZmVyZWREYXRhKCk7CisKICAgICBy
ZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TaGFyZWRCdWZm
ZXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcAppbmRleCA2
YjdmOWM5Li5jY2EwMjBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZEJ1
ZmZlclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcApA
QCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCisjaW5jbHVkZSAiUUJ5dGVCbG9jay5oIgogCiAjaW5jbHVkZSA8UUZpbGU+CiAK
QEAgLTQ0LDQgKzQ1LDQyIEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpCiAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoYnVmZmVyKTsKIH0KIAorUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcFFCeXRlQmxvY2soUGFzc1JlZlB0cjxRQnl0ZUJsb2Nr
PiBieXRlQmxvY2spCit7CisgICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBuZXcgU2hh
cmVkQnVmZmVyKCk7CisgICAgc2hhcmVkQnVmZmVyLT5tX3FCeXRlQmxvY2sgPSBieXRlQmxvY2s7
CisgICAgcmV0dXJuIGFkb3B0UmVmKHNoYXJlZEJ1ZmZlcik7Cit9CisKK2Jvb2wgU2hhcmVkQnVm
ZmVyOjpoYXNQbGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3FCeXRlQmxvY2s7
Cit9CisKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6cGxhdGZvcm1EYXRhKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gKGNvbnN0IGNoYXIqKW1fcUJ5dGVCbG9jay0+ZGF0YSgpOworfQorCit1bnNp
Z25lZCBTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YVNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3FCeXRlQmxvY2stPnNpemUoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6Om1heWJlVHJh
bnNmZXJQbGF0Zm9ybURhdGEoKQoreworICAgIGlmICghbV9xQnl0ZUJsb2NrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZWZQdHI8UUJ5dGVCbG9jaz4gYnl0ZUJsb2NrID0gbV9xQnl0ZUJsb2Nr
OworICAgIG1fcUJ5dGVCbG9jayA9IDA7CisgICAgYXBwZW5kKChjb25zdCBjaGFyKilieXRlQmxv
Y2stPmRhdGEoKSwgYnl0ZUJsb2NrLT5zaXplKCkpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6
Y2xlYXJQbGF0Zm9ybURhdGEoKQoreworICAgIG1fcUJ5dGVCbG9jayA9IDA7Cit9CisKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84725</attachid>
            <date>2011-03-04 04:58:53 -0800</date>
            <delta_ts>2011-03-04 06:37:58 -0800</delta_ts>
            <desc>one more patch attempt</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>12649</size>
            <attacher name="Markus Goetz">markus</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZmJjYmYxLi40NTEyZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDMtMDQgIE1hcmt1cyBHb2V0eiAgPGd1cnV6QGd1cnV6LmRlPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gVXNlIHRoZSBRTmV0
d29ya0FjY2Vzc01hbmFnZXIgemVyb2NvcHkgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwODIKKworICAgICAgICBUaGUgZmVhdHVyZSB3
aWxsIGJlIGludHJvZHVjZWQgaW4gUXQgNC44LgorICAgICAgICBUaGlzIHBhdGNoIGlzIGJhY2t3
YXJkcyBjb21wYXRpYmxlIHdpdGggUXQgNC43LgorCisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVw
bHlIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpR
TmV0d29ya1JlcGx5SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFu
ZGxlcjo6YnVmZmVyZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5k
bGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1Jl
cGx5SGFuZGxlcjo6ZG93bmxvYWRQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29y
a1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtS
ZXBseUhhbmRsZXI6OnN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3
b3JrUmVwbHlIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJj
ZUhhbmRsZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdXBwb3J0
c0J1ZmZlcmVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6YnVmZmVy
ZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OndyYXBRdEJ5dGVCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc1BsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OnBsYXRmb3JtRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjptYXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorCiAyMDExLTAzLTA0ICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWto
YXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGY2MGM3NjkuLmJiYTYwNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xOTU5LDYgKzE5NTksNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9y
bVRvdWNoUG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vUG9wdXBNZW51LmggXAogICAgIHBsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmggXAorICAgIHBsYXRmb3JtL3F0L1F0Qnl0ZUJsb2NrLmggXAogICAg
IHBsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1F0U3R5bGVP
cHRpb25XZWJDb21ib0JveC5oIFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXApA
QCAtMjQ5Miw2ICsyNDkzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZv
cm1TY3JlZW5RdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNw
cCBcCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwIFwKKyAgICBwbGF0
Zm9ybS9xdC9RdEJ5dGVCbG9jay5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
Y3BwIFwKICAgICBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCmluZGV4IDM0NTUzZWMuLjJmODJmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZl
cjo6Z2V0U29tZURhdGEoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlvbikg
Y29uCiAgICAgcmV0dXJuIHNlZ21lbnQgPT0gc2VnbWVudHMgLSAxID8gc2VnbWVudGVkU2l6ZSAt
IHBvc2l0aW9uIDogc2VnbWVudFNpemUgLSBwb3NpdGlvbkluU2VnbWVudDsKIH0KIAotI2lmICFV
U0UoQ0YpIHx8IFBMQVRGT1JNKFFUKQorI2lmICFVU0UoQ0YpICYmICFQTEFURk9STShRVCkKIAog
aW5saW5lIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGE2NTE3ZDguLjdlM2RmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00NSw2ICs0NSwxMCBAQCBjbGFz
cyBOU0RhdGE7CiAKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiUXRCeXRl
QmxvY2suaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBQdXJn
ZWFibGVCdWZmZXI7CkBAIC03Myw2ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBDRkRhdGFSZWYgY3Jl
YXRlQ0ZEYXRhKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB3cmFwQ0ZE
YXRhKENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHdyYXBRdEJ5dGVCbG9jayhQYXNzUmVmUHRyPFF0Qnl0ZUJs
b2NrPik7CisjZW5kaWYKIAogICAgIC8vIENhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGZvcmNl
IGludGVybmFsIHNlZ21lbnRlZCBidWZmZXJzCiAgICAgLy8gdG8gYmUgbWVyZ2VkIGludG8gYSBm
bGF0IGJ1ZmZlci4gVXNlIGdldFNvbWVEYXRhKCkgd2hlbmV2ZXIgcG9zc2libGUKQEAgLTEzNCw2
ICsxNDEsMTAgQEAgcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQor
ICAgIFJlZlB0cjxRdEJ5dGVCbG9jaz4gbV9xdEJ5dGVCbG9jazsKKyNlbmRpZgorCiB9OwogICAg
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0
d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCA2MWZlOTZjLi5mNTgzMTc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmNwcApAQCAtMzEsOCArMzEsMTAgQEAKICNpbmNsdWRlIDxRRGF0ZVRpbWU+
CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3
b3JrUmVxdWVzdD4KICNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFFOZXR3b3Jr
Q29va2llPgorI2luY2x1ZGUgPFFTaGFyZWRQb2ludGVyPgogI2luY2x1ZGUgPHF3ZWJmcmFtZS5o
PgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAKQEAgLTU3LDYgKzU5LDggQEAgY29uc3QgUU5ldHdv
cmtSZXF1ZXN0OjpBdHRyaWJ1dGUgZ1N5bmNocm9ub3VzTmV0d29ya1JlcXVlc3RBdHRyaWJ1dGUg
PSBzdGF0aWNfY2EKIAogc3RhdGljIGNvbnN0IGludCBnTWF4UmVjdXJzaW9uTGltaXQgPSAxMDsK
IAorUV9ERUNMQVJFX01FVEFUWVBFKFFTaGFyZWRQb2ludGVyPGNoYXI+KQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIFRha2UgYSBkZWVwIGNvcHkgb2YgdGhlIEZvcm1EYXRhRWxlbWVudApA
QCAtMTk1LDYgKzE5OSw3IEBAIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpRTmV0d29ya1JlcGx5SGFu
ZGxlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBMb2FkTW9kZSBsb2FkCiAgICAgLCBtX3Nob3Vs
ZFNlbmRSZXNwb25zZShmYWxzZSkKICAgICAsIG1fc2hvdWxkRm9yd2FyZERhdGEoZmFsc2UpCiAg
ICAgLCBtX3JlZGlyZWN0aW9uVHJpZXMoZ01heFJlY3Vyc2lvbkxpbWl0KQorICAgICwgbV91c2lu
Z1plcm9Db3B5KGZhbHNlKQogewogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCAmciA9IG1fcmVz
b3VyY2VIYW5kbGUtPmZpcnN0UmVxdWVzdCgpOwogCkBAIC0yMjIsNiArMjI3LDEwIEBAIFFOZXR3
b3JrUmVwbHlIYW5kbGVyOjpRTmV0d29ya1JlcGx5SGFuZGxlcihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBMb2FkTW9kZSBsb2FkCiAKICAgICBtX3JlcXVlc3QgPSByLnRvTmV0d29ya1JlcXVlc3Qo
b3JpZ2luYXRpbmdPYmplY3QpOwogCisgICAgLy8gV2UgYWxsb3cgdGhlIFFOZXR3b3JrQWNjZXNz
TWFuYWdlciB0byBhbGxvY2F0ZSB0aGUgd2hvbGUgZGF0YSB1cCB0byBhIGNlcnRhaW4gc2l6ZS4K
KyAgICAvLyBUaGVuIHRoaXMgYnVmZmVyIGlzIHByb3ZpZGVkIHRvIHVzIGluIHRoZSBRTmV0d29y
a1JlcGx5LgorICAgIG1fcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpNYXhp
bXVtRG93bmxvYWRCdWZmZXJTaXplQXR0cmlidXRlLCAxMDI0ICogMjU2KTsgLy8gMjU2IGtCLgor
CiAgICAgaWYgKG1fbG9hZE1vZGUgPT0gTG9hZFN5bmNocm9ub3VzbHkpCiAgICAgICAgIG1fcmVx
dWVzdC5zZXRBdHRyaWJ1dGUoZ1N5bmNocm9ub3VzTmV0d29ya1JlcXVlc3RBdHRyaWJ1dGUsIHRy
dWUpOwogCkBAIC0yNzcsNiArMjg2LDExIEBAIFFOZXR3b3JrUmVwbHkqIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpyZWxlYXNlKCkKICAgICByZXR1cm4gcmVwbHk7CiB9CiAKK1Bhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBRTmV0d29ya1JlcGx5SGFuZGxlcjo6YnVmZmVyZWREYXRhKCkKK3sKKyAgICAg
cmV0dXJuIG1fYnVmZmVyZWREYXRhOworfQorCiBzdGF0aWMgYm9vbCBpZ25vcmVIdHRwRXJyb3Io
UU5ldHdvcmtSZXBseSogcmVwbHksIGJvb2wgcmVjZWl2ZWREYXRhKQogewogICAgIGludCBodHRw
U3RhdHVzQ29kZSA9IHJlcGx5LT5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRwU3RhdHVz
Q29kZUF0dHJpYnV0ZSkudG9JbnQoKTsKQEAgLTM1OSw2ICszNzMsMTkgQEAgdm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQoKQogICAgIGlmICghY2xpZW50KQog
ICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHplcm9jb3B5IGJ1
ZmZlci4KKyAgICBRVmFyaWFudCBkb3dubG9hZEJ1ZmZlclZhcmlhbnQgPSBtX3JlcGx5LT5hdHRy
aWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpEb3dubG9hZEJ1ZmZlckF0dHJpYnV0ZSk7CisgICAgUVNo
YXJlZFBvaW50ZXI8Y2hhcj4gZG93bmxvYWRCdWZmZXIgPSBkb3dubG9hZEJ1ZmZlclZhcmlhbnQu
dmFsdWU8UVNoYXJlZFBvaW50ZXI8Y2hhcj4gPigpOworICAgIGlmICghZG93bmxvYWRCdWZmZXIu
aXNOdWxsKCkpIHsKKyAgICAgICAgbV9ieXRlQmxvY2sgPSBRdEJ5dGVCbG9jazo6Y3JlYXRlKGRv
d25sb2FkQnVmZmVyKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6Ondy
YXBRdEJ5dGVCbG9jayhtX2J5dGVCbG9jayk7CisgICAgICAgbV91c2luZ1plcm9Db3B5ID0gdHJ1
ZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBVc2UgdGhlIGxlZ2FjeSB3YXkgb2YgdXNpbmcg
UU5ldHdvcmtSZXBseSBhcyBhIFFJT0RldmljZS4KKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX3VzaW5nWmVyb0NvcHkgPSBmYWxzZTsK
KyAgICB9CisKICAgICBXVEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihR
TmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwogICAgIFdURjo6
U3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KTsKICAgICBXVEY6OlN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29udGVudFR5cGUpOwpAQCAtNDQ3LDYgKzQ3NCw0MiBAQCB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCisKK3ZvaWQgUU5ldHdvcmtS
ZXBseUhhbmRsZXI6OmRvd25sb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzUmVjZWl2ZWQsIHFpbnQ2
NCBieXRlc1RvdGFsKQoreworICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9sb2FkTW9kZSAh
PSBMb2FkTm9ybWFsKTsKKyAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkKKyAgICAgICAgcmV0
dXJuOworCisgICBpZiAoIW1fdXNpbmdaZXJvQ29weSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKKworICAgIC8vIERvbid0IGVtaXQgdGhlICJEb2N1bWVu
dCBoYXMgbW92ZWQgaGVyZSIgdHlwZSBvZiBIVE1MLgorICAgIGlmIChtX3JlZGlyZWN0ZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9yZXNvdXJjZUhhbmRsZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IG1fcmVzb3VyY2VIYW5k
bGUtPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBJZiB0aGUgc2VydmVyIGp1c3QgY2xvc2VzIHRoZSBjb25uZWN0aW9uIHdlIGdldCBhICgwLDAp
IHByb2dyZXNzIGJ1dAorICAgIC8vIHdlIGRpZCBub3QgcmVjZWl2ZSBhIG1ldGFEYXRhQ2hhbmdl
ZCgpIHNpZ25hbCBiZWZvcmUgc28gdGhlcmUgaXMgbm8gbV9ieXRlQmxvY2suCisgICAgaWYgKCFt
X2J5dGVCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgcWludDY0IG9sZFNpemUgPSBtX2J5
dGVCbG9jay0+c2l6ZSgpOworICAgIG1fYnl0ZUJsb2NrLT5zZXRTaXplKGJ5dGVzUmVjZWl2ZWQp
OworICAgIG1fYnl0ZUJsb2NrLT5zZXRDYXBhY2l0eShieXRlc1RvdGFsKTsKKworICAgIGNsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwgbV9ieXRlQmxvY2stPmRhdGEoKSAr
IG9sZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc1JlY2VpdmVkIC0gb2xk
U2l6ZSwgYnl0ZXNSZWNlaXZlZCAtIG9sZFNpemUpOworfQorCiB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpmb3J3YXJkRGF0YSgpCiB7CiAgICAgbV9zaG91bGRGb3J3YXJkRGF0YSA9IChtX2xv
YWRNb2RlICE9IExvYWROb3JtYWwpOwpAQCAtNDU2LDYgKzUxOSw5IEBAIHZvaWQgUU5ldHdvcmtS
ZXBseUhhbmRsZXI6OmZvcndhcmREYXRhKCkKICAgICBpZiAobV9yZXBseS0+Ynl0ZXNBdmFpbGFi
bGUoKSkKICAgICAgICAgbV9yZXNwb25zZUNvbnRhaW5zRGF0YSA9IHRydWU7CiAKKyAgICBpZiAo
bV91c2luZ1plcm9Db3B5KQorICAgICAgICByZXR1cm47CisKICAgICBzZW5kUmVzcG9uc2VJZk5l
ZWRlZCgpOwogCiAgICAgLy8gZG9uJ3QgZW1pdCB0aGUgIkRvY3VtZW50IGhhcyBtb3ZlZCBoZXJl
IiB0eXBlIG9mIEhUTUwKQEAgLTQ3MSw4ICs1MzcsMTAgQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFu
ZGxlcjo6Zm9yd2FyZERhdGEoKQogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKQorICAgIGlmICghZGF0YS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlSGFuZGxlLCBkYXRhLmNvbnN0
RGF0YSgpLCBkYXRhLmxlbmd0aCgpLCBkYXRhLmxlbmd0aCgpIC8qRml4TWUqLyk7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoZGF0YS5jb25zdERhdGEoKSwgZGF0YS5sZW5ndGgoKSk7
CisgICAgfQogfQogCiB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjp1cGxvYWRQcm9ncmVzcyhx
aW50NjQgYnl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3RhbCkKQEAgLTU4MCw2ICs2NDgsMTAgQEAg
dm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQoKQogICAgICAgICAgICAgICAgIHRoaXMs
IFNMT1QodXBsb2FkUHJvZ3Jlc3MocWludDY0LCBxaW50NjQpKSwgU0lHTkFMX0NPTk4pOwogICAg
IH0KIAorICAgIC8vIEZvciB6ZXJvIGNvcHkuCisgICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwo
ZG93bmxvYWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkpLAorICAgICAgICAgICAgdGhpcywgU0xP
VChkb3dubG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIFNJR05BTF9DT05OKTsKKwogICAg
IC8vIE1ha2UgdGhpcyBhIGRpcmVjdCBmdW5jdGlvbiBjYWxsIG9uY2Ugd2UgcmVxdWlyZSA0LjYu
MSsuCiAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwocHJvY2Vzc1F1ZXVlZEl0ZW1zKCkpLAogICAg
ICAgICAgICAgdGhpcywgU0xPVChzZW5kUXVldWVkSXRlbXMoKSksIFNJR05BTF9DT05OKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBs
eUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuaAppbmRleCA4YzliZDA4Li5jNzZmZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5o
CkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgogI2luY2x1ZGUg
PFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KIAorI2luY2x1ZGUgPFNoYXJlZEJ1ZmZlci5oPgorCiAj
aW5jbHVkZSAiRm9ybURhdGEuaCIKIAogUVRfQkVHSU5fTkFNRVNQQUNFCkBAIC01NSw2ICs1Nyw4
IEBAIHB1YmxpYzoKIAogICAgIFFOZXR3b3JrUmVwbHkqIHJlbGVhc2UoKTsKIAorICAgIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJlZERhdGEoKTsKKwogc2lnbmFsczoKICAgICB2b2lk
IHByb2Nlc3NRdWV1ZWRJdGVtcygpOwogCkBAIC02Myw2ICs2Nyw3IEBAIHB1YmxpYyBzbG90czoK
ICAgICB2b2lkIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBmb3J3YXJkRGF0YSgp
OwogICAgIHZvaWQgc2VuZFF1ZXVlZEl0ZW1zKCk7CisgICAgdm9pZCBkb3dubG9hZFByb2dyZXNz
KHFpbnQ2NCBieXRlc1JlY2VpdmVkLCBxaW50NjQgYnl0ZXNUb3RhbCk7CiAgICAgdm9pZCB1cGxv
YWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3RhbCk7CiAKIHByaXZh
dGU6CkBAIC04NSw2ICs5MCwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRTZW5kUmVz
cG9uc2U7CiAgICAgYm9vbCBtX3Nob3VsZEZvcndhcmREYXRhOwogICAgIGludCBtX3JlZGlyZWN0
aW9uVHJpZXM7CisKKyAgICAvLyBVc2luZyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIGRvd25s
b2FkIGJ1ZmZlciBmZWF0dXJlLgorICAgIGJvb2wgbV91c2luZ1plcm9Db3B5OworCisgICAgLy8g
Rm9yIHplcm9jb3B5LiBIb2xkcyB0aGUgZG93bmxvYWQgZGF0YS4KKyAgICBSZWZQdHI8UXRCeXRl
QmxvY2s+IG1fYnl0ZUJsb2NrOworCisgICAgLy8gRm9yIHplcm9jb3B5IGl0IHdyYXBzIG1fYnl0
ZUJsb2NrLCBvdGhlcndpc2UgaXQgaG9sZHMgZGF0YSBub3JtYWxseS4KKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKIH07CiAKIC8vIFNlbGYgZGVzdHJ1Y3RpbmcgUUlP
RGV2aWNlIGZvciBGb3JtRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKaW5kZXggY2QxNzY2MC4uNTQ4ZTBmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhh
bmRsZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291
cmNlSGFuZGxlUXQuY3BwCkBAIC0xODMsMTIgKzE4MywxNCBAQCBib29sIFJlc291cmNlSGFuZGxl
Ojp3aWxsTG9hZEZyb21DYWNoZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lKiBmcmFt
ZSkKIAogYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3VwcG9ydHNCdWZmZXJlZERhdGEoKQogewotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IFJlc291cmNlSGFuZGxlOjpidWZmZXJlZERhdGEoKQogewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIGlmIChkLT5tX2pvYikKKyAgICAgICAgcmV0dXJuIGQtPm1fam9iLT5i
dWZmZXJlZERhdGEoKTsKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAKaW5kZXggNmI3ZjljOS4uN2FlNTViZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2hhcmVkQnVmZmVyUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcApAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCisjaW5jbHVkZSAiUXRCeXRlQmxvY2suaCIKIAogI2luY2x1ZGUgPFFGaWxlPgogCkBAIC00
NCw0ICs0NSw0MiBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaQogICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7CiB9CiAKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OndyYXBRdEJ5dGVCbG9jayhQYXNzUmVmUHRyPFF0Qnl0ZUJsb2NrPiBi
eXRlQmxvY2spCit7CisgICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBuZXcgU2hhcmVk
QnVmZmVyKCk7CisgICAgc2hhcmVkQnVmZmVyLT5tX3F0Qnl0ZUJsb2NrID0gYnl0ZUJsb2NrOwor
ICAgIHJldHVybiBhZG9wdFJlZihzaGFyZWRCdWZmZXIpOworfQorCitib29sIFNoYXJlZEJ1ZmZl
cjo6aGFzUGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdEJ5dGVCbG9jazsK
K30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEoKSBjb25zdAorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9xdEJ5dGVCbG9jay0+ZGF0YSgp
KTsKK30KKwordW5zaWduZWQgU2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGFTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9xdEJ5dGVCbG9jay0+c2l6ZSgpOworfQorCit2b2lkIFNoYXJlZEJ1
ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCit7CisgICAgaWYgKCFtX3F0Qnl0ZUJs
b2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UXRCeXRlQmxvY2s+IGJ5dGVCbG9j
ayA9IG1fcXRCeXRlQmxvY2s7CisgICAgbV9xdEJ5dGVCbG9jayA9IDA7CisgICAgYXBwZW5kKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihieXRlQmxvY2stPmRhdGEoKSksIGJ5dGVCbG9jay0+c2l6
ZSgpKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKK3sKKyAg
ICBtX3F0Qnl0ZUJsb2NrID0gMDsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84739</attachid>
            <date>2011-03-04 06:37:58 -0800</date>
            <delta_ts>2011-03-08 05:05:25 -0800</delta_ts>
            <desc>..and one more, this time with the new files</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>16111</size>
            <attacher name="Markus Goetz">markus</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZmJjYmYxLi40NTEyZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDMtMDQgIE1hcmt1cyBHb2V0eiAgPGd1cnV6QGd1cnV6LmRlPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gVXNlIHRoZSBRTmV0
d29ya0FjY2Vzc01hbmFnZXIgemVyb2NvcHkgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwODIKKworICAgICAgICBUaGUgZmVhdHVyZSB3
aWxsIGJlIGludHJvZHVjZWQgaW4gUXQgNC44LgorICAgICAgICBUaGlzIHBhdGNoIGlzIGJhY2t3
YXJkcyBjb21wYXRpYmxlIHdpdGggUXQgNC43LgorCisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVw
bHlIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpR
TmV0d29ya1JlcGx5SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFu
ZGxlcjo6YnVmZmVyZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5k
bGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1Jl
cGx5SGFuZGxlcjo6ZG93bmxvYWRQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29y
a1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtS
ZXBseUhhbmRsZXI6OnN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3
b3JrUmVwbHlIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJj
ZUhhbmRsZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdXBwb3J0
c0J1ZmZlcmVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6YnVmZmVy
ZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OndyYXBRdEJ5dGVCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc1BsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OnBsYXRmb3JtRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjptYXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorCiAyMDExLTAzLTA0ICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWto
YXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGY2MGM3NjkuLmJiYTYwNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xOTU5LDYgKzE5NTksNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9y
bVRvdWNoUG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vUG9wdXBNZW51LmggXAogICAgIHBsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmggXAorICAgIHBsYXRmb3JtL3F0L1F0Qnl0ZUJsb2NrLmggXAogICAg
IHBsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1F0U3R5bGVP
cHRpb25XZWJDb21ib0JveC5oIFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXApA
QCAtMjQ5Miw2ICsyNDkzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZv
cm1TY3JlZW5RdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNw
cCBcCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwIFwKKyAgICBwbGF0
Zm9ybS9xdC9RdEJ5dGVCbG9jay5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
Y3BwIFwKICAgICBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCmluZGV4IDM0NTUzZWMuLjJmODJmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZl
cjo6Z2V0U29tZURhdGEoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlvbikg
Y29uCiAgICAgcmV0dXJuIHNlZ21lbnQgPT0gc2VnbWVudHMgLSAxID8gc2VnbWVudGVkU2l6ZSAt
IHBvc2l0aW9uIDogc2VnbWVudFNpemUgLSBwb3NpdGlvbkluU2VnbWVudDsKIH0KIAotI2lmICFV
U0UoQ0YpIHx8IFBMQVRGT1JNKFFUKQorI2lmICFVU0UoQ0YpICYmICFQTEFURk9STShRVCkKIAog
aW5saW5lIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGE2NTE3ZDguLjdlM2RmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00NSw2ICs0NSwxMCBAQCBjbGFz
cyBOU0RhdGE7CiAKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiUXRCeXRl
QmxvY2suaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBQdXJn
ZWFibGVCdWZmZXI7CkBAIC03Myw2ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBDRkRhdGFSZWYgY3Jl
YXRlQ0ZEYXRhKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB3cmFwQ0ZE
YXRhKENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHdyYXBRdEJ5dGVCbG9jayhQYXNzUmVmUHRyPFF0Qnl0ZUJs
b2NrPik7CisjZW5kaWYKIAogICAgIC8vIENhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGZvcmNl
IGludGVybmFsIHNlZ21lbnRlZCBidWZmZXJzCiAgICAgLy8gdG8gYmUgbWVyZ2VkIGludG8gYSBm
bGF0IGJ1ZmZlci4gVXNlIGdldFNvbWVEYXRhKCkgd2hlbmV2ZXIgcG9zc2libGUKQEAgLTEzNCw2
ICsxNDEsMTAgQEAgcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQor
ICAgIFJlZlB0cjxRdEJ5dGVCbG9jaz4gbV9xdEJ5dGVCbG9jazsKKyNlbmRpZgorCiB9OwogICAg
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0
d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCA2MWZlOTZjLi4yYzExOGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmNwcApAQCAtMzEsOCArMzEsMTAgQEAKICNpbmNsdWRlIDxRRGF0ZVRpbWU+
CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3
b3JrUmVxdWVzdD4KICNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFFOZXR3b3Jr
Q29va2llPgorI2luY2x1ZGUgPFFTaGFyZWRQb2ludGVyPgogI2luY2x1ZGUgPHF3ZWJmcmFtZS5o
PgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAKQEAgLTU3LDYgKzU5LDggQEAgY29uc3QgUU5ldHdv
cmtSZXF1ZXN0OjpBdHRyaWJ1dGUgZ1N5bmNocm9ub3VzTmV0d29ya1JlcXVlc3RBdHRyaWJ1dGUg
PSBzdGF0aWNfY2EKIAogc3RhdGljIGNvbnN0IGludCBnTWF4UmVjdXJzaW9uTGltaXQgPSAxMDsK
IAorUV9ERUNMQVJFX01FVEFUWVBFKFFTaGFyZWRQb2ludGVyPGNoYXI+KQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIFRha2UgYSBkZWVwIGNvcHkgb2YgdGhlIEZvcm1EYXRhRWxlbWVudApA
QCAtMTk1LDYgKzE5OSw3IEBAIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpRTmV0d29ya1JlcGx5SGFu
ZGxlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBMb2FkTW9kZSBsb2FkCiAgICAgLCBtX3Nob3Vs
ZFNlbmRSZXNwb25zZShmYWxzZSkKICAgICAsIG1fc2hvdWxkRm9yd2FyZERhdGEoZmFsc2UpCiAg
ICAgLCBtX3JlZGlyZWN0aW9uVHJpZXMoZ01heFJlY3Vyc2lvbkxpbWl0KQorICAgICwgbV91c2lu
Z1plcm9Db3B5KGZhbHNlKQogewogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCAmciA9IG1fcmVz
b3VyY2VIYW5kbGUtPmZpcnN0UmVxdWVzdCgpOwogCkBAIC0yMjIsNiArMjI3LDEwIEBAIFFOZXR3
b3JrUmVwbHlIYW5kbGVyOjpRTmV0d29ya1JlcGx5SGFuZGxlcihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBMb2FkTW9kZSBsb2FkCiAKICAgICBtX3JlcXVlc3QgPSByLnRvTmV0d29ya1JlcXVlc3Qo
b3JpZ2luYXRpbmdPYmplY3QpOwogCisgICAgLy8gV2UgYWxsb3cgdGhlIFFOZXR3b3JrQWNjZXNz
TWFuYWdlciB0byBhbGxvY2F0ZSB0aGUgd2hvbGUgZGF0YSB1cCB0byBhIGNlcnRhaW4gc2l6ZS4K
KyAgICAvLyBUaGVuIHRoaXMgYnVmZmVyIGlzIHByb3ZpZGVkIHRvIHVzIGluIHRoZSBRTmV0d29y
a1JlcGx5LgorICAgIG1fcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpNYXhp
bXVtRG93bmxvYWRCdWZmZXJTaXplQXR0cmlidXRlLCAxMDI0ICogMjU2KTsgLy8gMjU2IGtCLgor
CiAgICAgaWYgKG1fbG9hZE1vZGUgPT0gTG9hZFN5bmNocm9ub3VzbHkpCiAgICAgICAgIG1fcmVx
dWVzdC5zZXRBdHRyaWJ1dGUoZ1N5bmNocm9ub3VzTmV0d29ya1JlcXVlc3RBdHRyaWJ1dGUsIHRy
dWUpOwogCkBAIC0yNzcsNiArMjg2LDExIEBAIFFOZXR3b3JrUmVwbHkqIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpyZWxlYXNlKCkKICAgICByZXR1cm4gcmVwbHk7CiB9CiAKK1Bhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBRTmV0d29ya1JlcGx5SGFuZGxlcjo6YnVmZmVyZWREYXRhKCkKK3sKKyAgICAg
cmV0dXJuIG1fYnVmZmVyZWREYXRhOworfQorCiBzdGF0aWMgYm9vbCBpZ25vcmVIdHRwRXJyb3Io
UU5ldHdvcmtSZXBseSogcmVwbHksIGJvb2wgcmVjZWl2ZWREYXRhKQogewogICAgIGludCBodHRw
U3RhdHVzQ29kZSA9IHJlcGx5LT5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRwU3RhdHVz
Q29kZUF0dHJpYnV0ZSkudG9JbnQoKTsKQEAgLTM1OSw2ICszNzMsMTkgQEAgdm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQoKQogICAgIGlmICghY2xpZW50KQog
ICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHplcm9jb3B5IGJ1
ZmZlci4KKyAgICBRVmFyaWFudCBkb3dubG9hZEJ1ZmZlclZhcmlhbnQgPSBtX3JlcGx5LT5hdHRy
aWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpEb3dubG9hZEJ1ZmZlckF0dHJpYnV0ZSk7CisgICAgUVNo
YXJlZFBvaW50ZXI8Y2hhcj4gZG93bmxvYWRCdWZmZXIgPSBkb3dubG9hZEJ1ZmZlclZhcmlhbnQu
dmFsdWU8UVNoYXJlZFBvaW50ZXI8Y2hhcj4gPigpOworICAgIGlmICghZG93bmxvYWRCdWZmZXIu
aXNOdWxsKCkpIHsKKyAgICAgICAgbV9ieXRlQmxvY2sgPSBRdEJ5dGVCbG9jazo6Y3JlYXRlKGRv
d25sb2FkQnVmZmVyKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6Ondy
YXBRdEJ5dGVCbG9jayhtX2J5dGVCbG9jayk7CisgICAgICAgbV91c2luZ1plcm9Db3B5ID0gdHJ1
ZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBVc2UgdGhlIGxlZ2FjeSB3YXkgb2YgdXNpbmcg
UU5ldHdvcmtSZXBseSBhcyBhIFFJT0RldmljZS4KKyAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX3VzaW5nWmVyb0NvcHkgPSBmYWxzZTsK
KyAgICB9CisKICAgICBXVEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihR
TmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwogICAgIFdURjo6
U3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KTsKICAgICBXVEY6OlN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29udGVudFR5cGUpOwpAQCAtNDQ3LDYgKzQ3NCw0MiBAQCB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCisKK3ZvaWQgUU5ldHdvcmtS
ZXBseUhhbmRsZXI6OmRvd25sb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzUmVjZWl2ZWQsIHFpbnQ2
NCBieXRlc1RvdGFsKQoreworICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9sb2FkTW9kZSAh
PSBMb2FkTm9ybWFsKTsKKyAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFtX3VzaW5nWmVyb0NvcHkpCisgICAgICAgIHJldHVybjsKKworICAg
IHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7CisKKyAgICAvLyBEb24ndCBlbWl0IHRoZSAiRG9jdW1l
bnQgaGFzIG1vdmVkIGhlcmUiIHR5cGUgb2YgSFRNTC4KKyAgICBpZiAobV9yZWRpcmVjdGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBtX3Jlc291cmNlSGFu
ZGxlLT5jbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gSWYgdGhlIHNlcnZlciBqdXN0IGNsb3NlcyB0aGUgY29ubmVjdGlvbiB3ZSBnZXQgYSAoMCww
KSBwcm9ncmVzcyBidXQKKyAgICAvLyB3ZSBkaWQgbm90IHJlY2VpdmUgYSBtZXRhRGF0YUNoYW5n
ZWQoKSBzaWduYWwgYmVmb3JlIHNvIHRoZXJlIGlzIG5vIG1fYnl0ZUJsb2NrLgorICAgIGlmICgh
bV9ieXRlQmxvY2spCisgICAgICAgIHJldHVybjsKKworICAgIHFpbnQ2NCBvbGRTaXplID0gbV9i
eXRlQmxvY2stPnNpemUoKTsKKyAgICBtX2J5dGVCbG9jay0+c2V0U2l6ZShieXRlc1JlY2VpdmVk
KTsKKyAgICBtX2J5dGVCbG9jay0+c2V0Q2FwYWNpdHkoYnl0ZXNUb3RhbCk7CisKKyAgICBjbGll
bnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2VIYW5kbGUsIG1fYnl0ZUJsb2NrLT5kYXRhKCkg
KyBvbGRTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNSZWNlaXZlZCAtIG9s
ZFNpemUsIGJ5dGVzUmVjZWl2ZWQgLSBvbGRTaXplKTsKK30KKwogdm9pZCBRTmV0d29ya1JlcGx5
SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQogewogICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9s
b2FkTW9kZSAhPSBMb2FkTm9ybWFsKTsKQEAgLTQ1Niw2ICs1MTksOSBAQCB2b2lkIFFOZXR3b3Jr
UmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YSgpCiAgICAgaWYgKG1fcmVwbHktPmJ5dGVzQXZhaWxh
YmxlKCkpCiAgICAgICAgIG1fcmVzcG9uc2VDb250YWluc0RhdGEgPSB0cnVlOwogCisgICAgaWYg
KG1fdXNpbmdaZXJvQ29weSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc2VuZFJlc3BvbnNlSWZO
ZWVkZWQoKTsKIAogICAgIC8vIGRvbid0IGVtaXQgdGhlICJEb2N1bWVudCBoYXMgbW92ZWQgaGVy
ZSIgdHlwZSBvZiBIVE1MCkBAIC00NzEsOCArNTM3LDEwIEBAIHZvaWQgUU5ldHdvcmtSZXBseUhh
bmRsZXI6OmZvcndhcmREYXRhKCkKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkKKyAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwgZGF0YS5jb25z
dERhdGEoKSwgZGF0YS5sZW5ndGgoKSwgZGF0YS5sZW5ndGgoKSAvKkZpeE1lKi8pOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCkp
OworICAgIH0KIH0KIAogdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6dXBsb2FkUHJvZ3Jlc3Mo
cWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpCkBAIC01ODAsNiArNjQ4LDEwIEBA
IHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0KCkKICAgICAgICAgICAgICAgICB0aGlz
LCBTTE9UKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIFNJR05BTF9DT05OKTsKICAg
ICB9CiAKKyAgICAvLyBGb3IgemVybyBjb3B5LgorICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFM
KGRvd25sb2FkUHJvZ3Jlc3MocWludDY0LCBxaW50NjQpKSwKKyAgICAgICAgICAgIHRoaXMsIFNM
T1QoZG93bmxvYWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkpLCBTSUdOQUxfQ09OTik7CisKICAg
ICAvLyBNYWtlIHRoaXMgYSBkaXJlY3QgZnVuY3Rpb24gY2FsbCBvbmNlIHdlIHJlcXVpcmUgNC42
LjErLgogICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHByb2Nlc3NRdWV1ZWRJdGVtcygpKSwKICAg
ICAgICAgICAgIHRoaXMsIFNMT1Qoc2VuZFF1ZXVlZEl0ZW1zKCkpLCBTSUdOQUxfQ09OTik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVw
bHlIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmgKaW5kZXggOGM5YmQwOC4uYzc2ZmYwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
aApAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNpbmNsdWRl
IDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CiAKKyNpbmNsdWRlIDxTaGFyZWRCdWZmZXIuaD4KKwog
I2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAKIFFUX0JFR0lOX05BTUVTUEFDRQpAQCAtNTUsNiArNTcs
OCBAQCBwdWJsaWM6CiAKICAgICBRTmV0d29ya1JlcGx5KiByZWxlYXNlKCk7CiAKKyAgICBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyZWREYXRhKCk7CisKIHNpZ25hbHM6CiAgICAgdm9p
ZCBwcm9jZXNzUXVldWVkSXRlbXMoKTsKIApAQCAtNjMsNiArNjcsNyBAQCBwdWJsaWMgc2xvdHM6
CiAgICAgdm9pZCBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOwogICAgIHZvaWQgZm9yd2FyZERhdGEo
KTsKICAgICB2b2lkIHNlbmRRdWV1ZWRJdGVtcygpOworICAgIHZvaWQgZG93bmxvYWRQcm9ncmVz
cyhxaW50NjQgYnl0ZXNSZWNlaXZlZCwgcWludDY0IGJ5dGVzVG90YWwpOwogICAgIHZvaWQgdXBs
b2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpOwogCiBwcml2
YXRlOgpAQCAtODUsNiArOTAsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2VuZFJl
c3BvbnNlOwogICAgIGJvb2wgbV9zaG91bGRGb3J3YXJkRGF0YTsKICAgICBpbnQgbV9yZWRpcmVj
dGlvblRyaWVzOworCisgICAgLy8gVXNpbmcgdGhlIFFOZXR3b3JrQWNjZXNzTWFuYWdlciBkb3du
bG9hZCBidWZmZXIgZmVhdHVyZS4KKyAgICBib29sIG1fdXNpbmdaZXJvQ29weTsKKworICAgIC8v
IEZvciB6ZXJvY29weS4gSG9sZHMgdGhlIGRvd25sb2FkIGRhdGEuCisgICAgUmVmUHRyPFF0Qnl0
ZUJsb2NrPiBtX2J5dGVCbG9jazsKKworICAgIC8vIEZvciB6ZXJvY29weSBpdCB3cmFwcyBtX2J5
dGVCbG9jaywgb3RoZXJ3aXNlIGl0IGhvbGRzIGRhdGEgbm9ybWFsbHkuCisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CiB9OwogCiAvLyBTZWxmIGRlc3RydWN0aW5nIFFJ
T0RldmljZSBmb3IgRm9ybURhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCmluZGV4IGNkMTc2NjAuLjU0OGUwZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VI
YW5kbGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNv
dXJjZUhhbmRsZVF0LmNwcApAQCAtMTgzLDEyICsxODMsMTQgQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6d2lsbExvYWRGcm9tQ2FjaGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJh
bWUpCiAKIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN1cHBvcnRzQnVmZmVyZWREYXRhKCkKIHsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBSZXNvdXJjZUhhbmRsZTo6YnVmZmVyZWREYXRhKCkKIHsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBpZiAoZC0+bV9qb2IpCisgICAgICAgIHJldHVybiBkLT5tX2pvYi0+
YnVmZmVyZWREYXRhKCk7CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRCeXRlQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUXRCeXRlQmxvY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjdmZGYzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9RdEJ5dGVCbG9jay5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0Qnl0ZUJsb2NrLmgiCisKKyNpbmNsdWRl
IDxSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFF0Qnl0ZUJs
b2NrPiBRdEJ5dGVCbG9jazo6Y3JlYXRlKFFTaGFyZWRQb2ludGVyPGNoYXI+IGRhdGEpCit7Cisg
ICAgUXRCeXRlQmxvY2sqIGJ5dGVCbG9jayA9IG5ldyBRdEJ5dGVCbG9jazsKKyAgICBieXRlQmxv
Y2stPm1fZGF0YSA9IGRhdGE7CisgICAgcmV0dXJuIGFkb3B0UmVmKGJ5dGVCbG9jayk7Cit9CisK
K3FpbnQ2NCBRdEJ5dGVCbG9jazo6c2l6ZSgpCit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKwor
cWludDY0IFF0Qnl0ZUJsb2NrOjpjYXBhY2l0eSgpCit7CisgICAgcmV0dXJuIG1fY2FwYWNpdHk7
Cit9CisKK2NvbnN0IGNoYXIqIFF0Qnl0ZUJsb2NrOjpkYXRhKCkKK3sKKyAgICByZXR1cm4gKGNv
bnN0IGNoYXIqKW1fZGF0YS5kYXRhKCk7Cit9CisKK3ZvaWQgUXRCeXRlQmxvY2s6OnNldFNpemUo
cWludDY0IHNpemUpCit7CisgICAgbV9zaXplID0gc2l6ZTsKK30KKwordm9pZCBRdEJ5dGVCbG9j
azo6c2V0Q2FwYWNpdHkocWludDY0IGNhcGFjaXR5KQoreworICAgIG1fY2FwYWNpdHkgPSBjYXBh
Y2l0eTsKK30KKworUXRCeXRlQmxvY2s6OlF0Qnl0ZUJsb2NrKCkgOiBtX3NpemUoMCksIG1fY2Fw
YWNpdHkoMCkKK3sKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9RdEJ5dGVCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRCeXRlQmxv
Y2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGUxN2VkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRCeXRlQmxvY2suaApAQCAt
MCwwICsxLDQ5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2lmbmRlZiBRdEJ5dGVCbG9ja19oCisj
ZGVmaW5lIFF0Qnl0ZUJsb2NrX2gKKworI2luY2x1ZGUgPFBhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDxRU2hhcmVkUG9pbnRlcj4KKyNpbmNsdWRlIDxSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUXRCeXRlQmxvY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxRdEJ5dGVC
bG9jaz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFF0Qnl0ZUJsb2NrPiBjcmVh
dGUoUVNoYXJlZFBvaW50ZXI8Y2hhcj4pOworCisgICAgcWludDY0IHNpemUoKTsKKyAgICBxaW50
NjQgY2FwYWNpdHkoKTsKKworICAgIGNvbnN0IGNoYXIqIGRhdGEoKTsKKworICAgIHZvaWQgc2V0
U2l6ZShxaW50NjQpOworICAgIHZvaWQgc2V0Q2FwYWNpdHkocWludDY0KTsKK3Byb3RlY3RlZDoK
KyAgICBRdEJ5dGVCbG9jaygpOworICAgIHFpbnQ2NCBtX3NpemU7CisgICAgcWludDY0IG1fY2Fw
YWNpdHk7CisgICAgUVNoYXJlZFBvaW50ZXI8Y2hhcj4gbV9kYXRhOworfTsKKworfQorCisjZW5k
aWYgLy8gUXRCeXRlQmxvY2tfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TaGFy
ZWRCdWZmZXJRdC5jcHAKaW5kZXggNmI3ZjljOS4uN2FlNTViZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvU2hhcmVkQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAi
UXRCeXRlQmxvY2suaCIKIAogI2luY2x1ZGUgPFFGaWxlPgogCkBAIC00NCw0ICs0NSw0MiBAQCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmFkb3B0VmVj
dG9yKGJ1ZmZlcik7CiB9CiAKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OndyYXBRdEJ5dGVCbG9jayhQYXNzUmVmUHRyPFF0Qnl0ZUJsb2NrPiBieXRlQmxvY2spCit7Cisg
ICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBuZXcgU2hhcmVkQnVmZmVyKCk7CisgICAg
c2hhcmVkQnVmZmVyLT5tX3F0Qnl0ZUJsb2NrID0gYnl0ZUJsb2NrOworICAgIHJldHVybiBhZG9w
dFJlZihzaGFyZWRCdWZmZXIpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aGFzUGxhdGZvcm1E
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdEJ5dGVCbG9jazsKK30KKworY29uc3QgY2hh
ciogU2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4obV9xdEJ5dGVCbG9jay0+ZGF0YSgpKTsKK30KKwordW5zaWdu
ZWQgU2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGFTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9xdEJ5dGVCbG9jay0+c2l6ZSgpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFu
c2ZlclBsYXRmb3JtRGF0YSgpCit7CisgICAgaWYgKCFtX3F0Qnl0ZUJsb2NrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZWZQdHI8UXRCeXRlQmxvY2s+IGJ5dGVCbG9jayA9IG1fcXRCeXRlQmxv
Y2s7CisgICAgbV9xdEJ5dGVCbG9jayA9IDA7CisgICAgYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihieXRlQmxvY2stPmRhdGEoKSksIGJ5dGVCbG9jay0+c2l6ZSgpKTsKK30KKwordm9p
ZCBTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKK3sKKyAgICBtX3F0Qnl0ZUJsb2Nr
ID0gMDsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>