<?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>118598</bug_id>
          
          <creation_ts>2013-07-12 05:52:43 -0700</creation_ts>
          <short_desc>[WK2][Soup] Use didReceiveBuffer instead of didReceiveData</short_desc>
          <delta_ts>2013-12-09 06:07:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108832</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Kwang Yul Seo">skyul</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>907919</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-12 05:52:43 -0700</bug_when>
    <thetext>Use didReceiveBuffer introduced in Bug 112310.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907955</commentid>
    <comment_count>1</comment_count>
      <attachid>206544</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-12 07:17:25 -0700</bug_when>
    <thetext>Created attachment 206544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908407</commentid>
    <comment_count>2</comment_count>
      <attachid>206544</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-07-15 08:14:14 -0700</bug_when>
    <thetext>Comment on attachment 206544
Patch

As discussed in bug 118448, the other approach (using didReceiveData) seems to be more sound for soup, since we already use a data pointer and length instead of a buffer object. Wrapping the data in SoupBuffer just adds unnecessary churn and complexity. I took it from what Brady said that he&apos;d be OK with our having didReceiveData in our own NetworkResourceLoaderSoup.cpp, right? I&apos;m setting r- for that reason, we can re-visit if there is actually opposition to the patch from bug 118448.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908418</commentid>
    <comment_count>3</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-15 08:47:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 206544 [details])
&gt; As discussed in bug 118448, the other approach (using didReceiveData) seems to be more sound for soup, since we already use a data pointer and length instead of a buffer object. Wrapping the data in SoupBuffer just adds unnecessary churn and complexity. I took it from what Brady said that he&apos;d be OK with our having didReceiveData in our own NetworkResourceLoaderSoup.cpp, right? I&apos;m setting r- for that reason, we can re-visit if there is actually opposition to the patch from bug 118448.

I agree. This approach makes sense only when we use a signal like &quot;got-chunk&quot; which gives us a buffer object instead of a data pointer length. Otherwise it just adds unnecessary complexity.

I will revisit this approach after we solve the problem Sergio mentioned https://bugs.webkit.org/show_bug.cgi?id=118448#c12</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911801</commentid>
    <comment_count>4</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-25 16:54:34 -0700</bug_when>
    <thetext>Closing this bug as invalid in favor of Bug 118448.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938340</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-10 07:58:08 -0700</bug_when>
    <thetext>Reopen, because we have to use didReceiveBuffer, there is no choice.
See https://bugs.webkit.org/show_bug.cgi?id=118448#c32 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938782</commentid>
    <comment_count>6</comment_count>
      <attachid>206544</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-11 06:23:19 -0700</bug_when>
    <thetext>Comment on attachment 206544
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:318
&gt; -#if !USE(CF) || PLATFORM(QT)
&gt; +#if !(USE(CF) || USE(SOUP)) || PLATFORM(QT)

It should be updated, because Qt was removed from trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938786</commentid>
    <comment_count>7</comment_count>
      <attachid>213986</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-11 06:48:31 -0700</bug_when>
    <thetext>Created attachment 213986
Patch

Updated to the ToT with the following minor changes: resolved a trivial conflict in Source/WebCore/platform/SharedBuffer.cpp after Qt removal, initialized destination variable in SharedBuffer.cpp (-Wmaybe-uninitialized), added the new SharedBufferSoup.cpp to PlatformGTK.cmake too. It builds and works for me (at least on EFL MiniBrowser)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939493</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-14 10:11:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 206544 [details])
&gt; As discussed in bug 118448, the other approach (using didReceiveData) seems to be more sound for soup, since we already use a data pointer and length instead of a buffer object. Wrapping the data in SoupBuffer just adds unnecessary churn and complexity. I took it from what Brady said that he&apos;d be OK with our having didReceiveData in our own NetworkResourceLoaderSoup.cpp, right? I&apos;m setting r- for that reason, we can re-visit if there is actually opposition to the patch from bug 118448.

There was strong objection in https://bugs.webkit.org/show_bug.cgi?id=118448#c32, so could you revisit this bug, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940326</commentid>
    <comment_count>9</comment_count>
      <attachid>213986</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-10-16 01:48:23 -0700</bug_when>
    <thetext>Comment on attachment 213986
Patch

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

Looks good in general but we should probably deal with the external buffer in a different way. I can give that a go early next week if you don&apos;t beat me to it.

&gt; Source/WebCore/platform/network/soup/GOwnPtrSoup.h:23
&gt; +#include &lt;libsoup/soup.h&gt;

can you use a typedef forward-declaration like the one we have for the other soup types?

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1337
&gt; +    SoupBuffer* buffer = soup_buffer_new(d-&gt;m_useExternalReadBuffer ? SOUP_MEMORY_COPY : SOUP_MEMORY_TAKE, d-&gt;m_readBufferPtr, bytesRead);
&gt; +    handle-&gt;client()-&gt;didReceiveBuffer(handle.get(), SharedBuffer::wrapSoupBuffer(buffer), bytesRead);

The reason why we originally added the &apos;external buffer&apos; thing was to avoid any copying from the http backend to the media player backend (memcpy may be surprisingly slow in some systems). This breaks that, and I guess a copy is something we&apos;ll have to live with in the network process future. So I&apos;m wondering if it still makes sense to keep the external buffer stuff in, or if we should just resimplify this by tearing it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957782</commentid>
    <comment_count>10</comment_count>
      <attachid>218729</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-09 00:42:58 -0800</bug_when>
    <thetext>Created attachment 218729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957785</commentid>
    <comment_count>11</comment_count>
      <attachid>218729</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-09 00:51:55 -0800</bug_when>
    <thetext>Comment on attachment 218729
Patch

Attachment 218729 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/45888018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957788</commentid>
    <comment_count>12</comment_count>
      <attachid>218729</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-09 00:58:03 -0800</bug_when>
    <thetext>Comment on attachment 218729
Patch

Attachment 218729 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/46278071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957789</commentid>
    <comment_count>13</comment_count>
      <attachid>218734</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-09 01:02:23 -0800</bug_when>
    <thetext>Created attachment 218734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957849</commentid>
    <comment_count>14</comment_count>
      <attachid>218734</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-12-09 04:27:16 -0800</bug_when>
    <thetext>Comment on attachment 218734
Patch

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

Looks great to me

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:150
&gt; +    }

Shouldn&apos;t we keep this for non-NetworkProcess usage?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957850</commentid>
    <comment_count>15</comment_count>
      <attachid>218734</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-12-09 04:33:00 -0800</bug_when>
    <thetext>Comment on attachment 218734
Patch

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

&gt;&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:150
&gt;&gt; +    }
&gt; 
&gt; Shouldn&apos;t we keep this for non-NetworkProcess usage?

We would need to have #ifdefed code in our ResourceHandle implementation to use it in that case, I don&apos;t think it&apos;s worth the maintenance cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957854</commentid>
    <comment_count>16</comment_count>
      <attachid>218734</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-12-09 04:40:02 -0800</bug_when>
    <thetext>Comment on attachment 218734
Patch

Let&apos;s do this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957866</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-09 06:07:28 -0800</bug_when>
    <thetext>Committed r160310: &lt;http://trac.webkit.org/changeset/160310&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206544</attachid>
            <date>2013-07-12 07:17:25 -0700</date>
            <delta_ts>2013-10-11 06:48:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118598-20130712231439.patch</filename>
            <type>text/plain</type>
            <size>13632</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM2NWYyMTgwYjc0MTI1
YTIwN2RiNDNmNmFmZmE1YzZhNTA1NzNhYy4uNmZmNWM3MjU4YWJhMjQ1NmUwYjBiYzRlZjA2NTU4
MDMxMjkzOWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTA3LTEyICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1dLMl1bU291cF0g
VXNlIGRpZFJlY2VpdmVCdWZmZXIgaW5zdGVhZCBvZiBkaWRSZWNlaXZlRGF0YQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCB0byB1c2UgU291
cEJ1ZmZlciBhcyBkYXRhIG9iamVjdHMgYW5kIGRlbGl2ZXIgdGhlbSB0bworICAgICAgICBSZXNv
dXJjZUhhbmRsZUNsaWVudC4gQXVnbWVudGVkIFNoYXJlZEJ1ZmZlciB0byB3cmFwIFNvdXBCdWZm
ZXIuIEl0IGlzCisgICAgICAgIGEgZm9sbG93LXVwIHBhdGNoIG9mIHIxNDU4MjAuCisKKyAgICAg
ICAgR290IHJpZCBvZiB0aGUgZGVmYXVsdCByZWFkIGJ1ZmZlciBhbmQgYWxsb2NhdGUgYSByZWFk
IGJ1ZmZlciBmb3IgZWFjaAorICAgICAgICByZWFkIHJlcXVlc3QuIE9uY2UgcmVhZCBpcyBkb25l
LCB3cmFwIHRoZSBidWZmZXIgaW4gYSBTb3VwQnVmZmVyIGFuZAorICAgICAgICBwYXNzZWQgaXQg
dG8gUmVzb3VyY2VIYW5kbGVDbGllbnQgdGhyb3VnaCBkaWRSZWNlaXZlQnVmZmVyIGNhbGxiYWNr
LgorCisgICAgICAgIEhlcmUgd2UgY3JlYXRlIGEgU291cEJ1ZmZlciBmcm9tIHJhdyBwb2ludGVy
cyBhbmQgbGVuZ3RocywgYnV0IGxhdGVyIHdlCisgICAgICAgIGNhbiBjaGFuZ2Ugb3VyIGltcGxl
bWVudGF0aW9uIHRvIGdldCBhIFNvdXBCdWZmZXIgb2JqZWN0IGRpcmVjdGx5IGZyb20KKyAgICAg
ICAgImdvdC1jaHVuayIgc2lnbmFsLiBIb3dldmVyLCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0
aGlzIHNpZ25hbCBhdCB0aGUKKyAgICAgICAgbW9tZW50IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJv
cGVybHkgc3VwcG9ydCBkaXNrIGNhY2hpbmcuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJh
dGlvbiBmb3IgcG9ydGluZyBOZXR3b3JrUHJvY2VzcyB3aGljaCBkb2VzIG5vdAorICAgICAgICBz
dXBwb3J0IGRpZFJlY2VpdmVEYXRhLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6Cisg
ICAgICAgIEdldCByaWQgb2YgbV9kZWZhdWx0UmVhZEJ1ZmZlciBiZWNhdXNlIHdlIG5vdyBhbGxv
Y2F0ZSBhIHJlYWQgYnVmZmVyCisgICAgICAgIGZvciBlYWNoIHJlYWQgcmVxdWVzdC4gQWRkIG1f
dXNlRXh0ZXJuYWxSZWFkQnVmZmVyIGZvciBtYXJraW5nIHdoZW4KKyAgICAgICAgdGhlIHJlYWQg
YnVmZmVyIGlzIGZyb20gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZl
ci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHA6Cisg
ICAgICAgIChXVEY6OlNvdXBCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9HT3duUHRyU291cC5oOgorICAgICAgICBBZGQgU291cEJ1ZmZlciB0byBHT3duUHRyIHRvIGRl
YWxsb2NhdGUgaXQgYXV0b21hdGljYWxseS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN5
bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjplbnN1cmVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2sp
OgorICAgICAgICBVc2UgZGlkUmVjZWl2ZUJ1ZmZlciBpbnN0ZWFkIG9mIGRpZFJlY2VpdmVEYXRh
LiBDcmVhdGUgYSBTaGFyZWRCdWZmZXIKKyAgICAgICAgZnJvbSB0aGUgcmVhZCBidWZmZXIuIENo
ZWNrIG1fdXNlRXh0ZXJuYWxSZWFkQnVmZmVyIHRvIGRldGVybWluZQorICAgICAgICBTb3VwTWVt
b3J5VXNlIGZsYWcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAu
Y3BwOiBBZGRlZC4KKyAgICAgICAgVXNlIFNvdXBCdWZmZXIgYXMgcGxhdGZvcm0gZGF0YS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcFNvdXBCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6Om1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpwbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpw
bGF0Zm9ybURhdGFTaXplKToKKwogMjAxMy0wNy0xMCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFBsdWdpbnMgdGhhdCBkb24ndCBzdXBwb3J0IHNuYXBzaG90
dGluZyBzaG91bGQgbm90IGFsbCBhdXRvc3RhcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBmZTkzZTE5ZWYwMDc4ZTVhOGE3YTY3MmNjYmYzYTRmYzRiMjI5NmJlLi44MTk5Nzk5
MDk0MDUwZjE4YmMxMGM5NjRmMjNiMGE1MjE5ZmFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTU1NzUsNiArNTU3NSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRC
dWZmZXJTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhv
cml6ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGY0OTY2NDcyNTA5NzlhYzQ3YWZlNTNkYzI0YmE0
MzJmOGUxNTA1N2EuLjQ1YmU3N2EyMTYzYjQ5ZjJkZmZlNzM2YjI2YTc5NmFhZGQ1OGExMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNjAsNiArMTYwLDggQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAog
ICAgIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAogCisgICAgcGxhdGZvcm0v
c291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAorCiAgICAgcGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQv
VGV4dENoZWNrZXJFbmNoYW50LmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMTQyOWQ2ZDYyNWVi
Yzk0MmIwYjM2MDM3ZGMyZWJjYzU1ZjFkYWI0Yy4uYzY5Yzc3MjVlY2NkY2Q0MTJmZWY1NjE2M2Uw
YzRhMDRkMzA3MjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0zMTUsNyArMzE1LDcgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShj
b25zdCBjaGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24KICNlbmRpZgogfQog
Ci0jaWYgIVVTRShDRikgfHwgUExBVEZPUk0oUVQpCisjaWYgIShVU0UoQ0YpIHx8IFVTRShTT1VQ
KSkgfHwgUExBVEZPUk0oUVQpCiAKIGlubGluZSB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0
Zm9ybURhdGEoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA0
YzMxMmY5MmMxMzI2NGQ3MmNiYzE0YTcxN2JjYzE1OTIyNDM0M2Q0Li5lOWRhNWFiY2UxNTQxZTMx
YTIyOTQ2NTdiZDljMTU5NjI2MTcwMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaApAQCAtNDEsNiArNDEsMTAgQEAKIE9CSkNfQ0xBU1MgTlNEYXRhOwogI2VuZGlmCiAK
KyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJHT3duUHRyU291cC5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlcjsKQEAgLTcwLDYgKzc0
LDkgQEAgcHVibGljOgogICAgIENGRGF0YVJlZiBjcmVhdGVDRkRhdGEoKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHdyYXBDRkRhdGEoQ0ZEYXRhUmVmKTsKICNlbmRpZgor
I2lmIFVTRShTT1VQKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gd3JhcFNv
dXBCdWZmZXIoU291cEJ1ZmZlciopOworI2VuZGlmCiAKICAgICAvLyBDYWxsaW5nIHRoaXMgZnVu
Y3Rpb24gd2lsbCBmb3JjZSBpbnRlcm5hbCBzZWdtZW50ZWQgYnVmZmVycwogICAgIC8vIHRvIGJl
IG1lcmdlZCBpbnRvIGEgZmxhdCBidWZmZXIuIFVzZSBnZXRTb21lRGF0YSgpIHdoZW5ldmVyIHBv
c3NpYmxlCkBAIC0xNDksNiArMTU2LDEwIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKENGRGF0YVJlZik7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZkRhdGE7CiAj
ZW5kaWYKKyNpZiBVU0UoU09VUCkKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoU291cEJ1ZmZl
ciopOworICAgIEdPd25QdHI8U291cEJ1ZmZlcj4gbV9zb3VwQnVmZmVyOworI2VuZGlmCiB9Owog
CiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgKaW5kZXggNWY5NTExMjQwZDY2NDgzYWE2OWUzZDI5YWI4NmEwNDAwZjY2YjZh
NC4uYmRjMTAyYzJhMDJkYjZhOWQ5ZTFhYTdmYjhlNmZmYTEyNmYxOTkyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlYWRCdWZmZXJQdHIoMCkK
ICAgICAgICAgICAgICwgbV9yZWFkQnVmZmVyU2l6ZSgwKQorICAgICAgICAgICAgLCBtX3VzZUV4
dGVybmFsUmVhZEJ1ZmZlcihmYWxzZSkKICAgICAgICAgICAgICwgbV9ib2R5U2l6ZSgwKQogICAg
ICAgICAgICAgLCBtX2JvZHlEYXRhU2VudCgwKQogICAgICAgICAgICAgLCBtX3JlZGlyZWN0Q291
bnQoMCkKQEAgLTE5OSw5ICsyMDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEdS
ZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxhYmxlOwogICAgICAgICBHUmVmUHRyPEdBc3lu
Y1Jlc3VsdD4gbV9kZWZlcnJlZFJlc3VsdDsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3Rp
bWVvdXRTb3VyY2U7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gbV9kZWZhdWx0UmVhZEJ1ZmZlcjsK
ICAgICAgICAgY2hhciogbV9yZWFkQnVmZmVyUHRyOwogICAgICAgICBzaXplX3QgbV9yZWFkQnVm
ZmVyU2l6ZTsKKyAgICAgICAgYm9vbCBtX3VzZUV4dGVybmFsUmVhZEJ1ZmZlcjsKICAgICAgICAg
dW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1fYm9keURh
dGFTZW50OwogICAgICAgICBTb3VwU2Vzc2lvbiogc291cFNlc3Npb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCmluZGV4
IGU0OTY3MDc5YjgzOGE5ZGI1NzJkZGZmM2JhYWZhODNlZWQ3ZTBjZDAuLmJmOTEwMmQyMmQyM2Qz
YTAwODVjNDdjNDJkOWIyNjQzMWJkOTI0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNwcApAQCAtMzAsNiArMzAsMTIgQEAg
dGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBVUkk+KFNvdXBVUkkqIHB0cikKICAg
ICAgICAgc291cF91cmlfZnJlZShwdHIpOwogfQogCit0ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25l
ZEdQdHI8U291cEJ1ZmZlcj4oU291cEJ1ZmZlciogcHRyKQoreworICAgIGlmIChwdHIpCisgICAg
ICAgIHNvdXBfYnVmZmVyX2ZyZWUocHRyKTsKK30KKwogdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3du
ZWRHUHRyPFNvdXBDb29raWU+KFNvdXBDb29raWUqIHB0cikKIHsKICAgICBpZiAocHRyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3Vw
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaApp
bmRleCA5ZmUzYThlNzcwMmE3OWNiNjYxYWVmOTgxNzEwZjM4ZDc5NjhmMGJlLi5lMzhiNDQyOTZj
MTliZmQ3Yzg2Njk5ZGY2N2E1MWQzM2Y5ODA2ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaApAQCAtMjAsNiArMjAsNyBAQAog
I2lmbmRlZiBHT3duUHRyU291cF9oCiAjZGVmaW5lIEdPd25QdHJTb3VwX2gKIAorI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIAogdHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBVUkkgU291cFVSSTsKQEAgLTI5LDYgKzMwLDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgU291cE1lc3NhZ2VIZWFkZXJzIFNvdXBNZXNzYWdlSGVhZGVyczsKIG5hbWVzcGFjZSBX
VEYgewogCiB0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwVVJJPihTb3VwVVJJKiBw
dHIpOwordGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cEJ1ZmZlcj4oU291cEJ1ZmZl
ciogcHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBDb29raWU+KFNvdXBD
b29raWUqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwTWVzc2FnZUhl
YWRlcnM+KFNvdXBNZXNzYWdlSGVhZGVycyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4
IDhlZmFhNjdiNzVhZDgzZjIyYTdmMDdlODgwNjNhM2M0ZWEzYzhkY2YuLmJhMTFmZjhhYTU4YmJl
ZjA4OGE1ZTkxZDg5NjE4OTIwZGY1MmI2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0x
NDgsOSArMTQ4LDkgQEAgcHVibGljOgogICAgICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50KQorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciwgaW50KQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOwor
ICAgICAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
LCBkb3VibGUpCkBAIC0zMTAsMTUgKzMxMCwxNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjplbnN1
cmVSZWFkQnVmZmVyKCkKICAgICBzaXplX3QgYnVmZmVyU2l6ZTsKICAgICBjaGFyKiBidWZmZXJQ
dHIgPSBjbGllbnQoKS0+Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKGRlZmF1bHRSZWFkQnVmZmVyU2l6
ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclB0cikgewotICAgICAgICBkLT5tX2RlZmF1
bHRSZWFkQnVmZmVyLmNsZWFyKCk7CiAgICAgICAgIGQtPm1fcmVhZEJ1ZmZlclB0ciA9IGJ1ZmZl
clB0cjsKICAgICAgICAgZC0+bV9yZWFkQnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7Ci0gICAgfSBl
bHNlIGlmICghZC0+bV9kZWZhdWx0UmVhZEJ1ZmZlcikgewotICAgICAgICBkLT5tX2RlZmF1bHRS
ZWFkQnVmZmVyLnNldChzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MoZGVmYXVsdFJlYWRCdWZm
ZXJTaXplKSkpOwotICAgICAgICBkLT5tX3JlYWRCdWZmZXJQdHIgPSBkLT5tX2RlZmF1bHRSZWFk
QnVmZmVyLmdldCgpOworICAgICAgICBkLT5tX3VzZUV4dGVybmFsUmVhZEJ1ZmZlciA9IHRydWU7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZC0+bV9yZWFkQnVmZmVyUHRyID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGdfbWFsbG9jKGRlZmF1bHRSZWFkQnVmZmVyU2l6ZSkpOwogICAgICAgICBkLT5tX3Jl
YWRCdWZmZXJTaXplID0gZGVmYXVsdFJlYWRCdWZmZXJTaXplOwotICAgIH0gZWxzZQotICAgICAg
ICBkLT5tX3JlYWRCdWZmZXJQdHIgPSBkLT5tX2RlZmF1bHRSZWFkQnVmZmVyLmdldCgpOworICAg
ICAgICBkLT5tX3VzZUV4dGVybmFsUmVhZEJ1ZmZlciA9IGZhbHNlOworICAgIH0KIAogICAgIEFT
U0VSVChkLT5tX3JlYWRCdWZmZXJQdHIpOwogICAgIEFTU0VSVChkLT5tX3JlYWRCdWZmZXJTaXpl
KTsKQEAgLTU3NSw4ICs1NzQsOCBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwU291cFJlcXVlc3RPcGVy
YXRpb24oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbgogCiAgICAgaWYg
KGQtPm1fcmVhZEJ1ZmZlclB0cikKICAgICAgICAgZC0+bV9yZWFkQnVmZmVyUHRyID0gMDsKLSAg
ICBpZiAoIWQtPm1fZGVmYXVsdFJlYWRCdWZmZXIpCi0gICAgICAgIGQtPm1fcmVhZEJ1ZmZlclNp
emUgPSAwOworCisgICAgZC0+bV91c2VFeHRlcm5hbFJlYWRCdWZmZXIgPSBmYWxzZTsKIAogICAg
IGlmIChkLT5tX3RpbWVvdXRTb3VyY2UpIHsKICAgICAgICAgZ19zb3VyY2VfZGVzdHJveShkLT5t
X3RpbWVvdXRTb3VyY2UuZ2V0KCkpOwpAQCAtMTM0MCw5ICsxMzM5LDEwIEBAIHN0YXRpYyB2b2lk
IHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50
ZXIgZGF0YSkKICAgICAvLyBJdCdzIG1hbmRhdG9yeSB0byBoYXZlIHNlbnQgYSByZXNwb25zZSBi
ZWZvcmUgc2VuZGluZyBkYXRhCiAgICAgQVNTRVJUKCFkLT5tX3Jlc3BvbnNlLmlzTnVsbCgpKTsK
IAotICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKGhhbmRsZS5nZXQoKSwgZC0+
bV9yZWFkQnVmZmVyUHRyLCBieXRlc1JlYWQsIGJ5dGVzUmVhZCk7CisgICAgU291cEJ1ZmZlciog
YnVmZmVyID0gc291cF9idWZmZXJfbmV3KGQtPm1fdXNlRXh0ZXJuYWxSZWFkQnVmZmVyID8gU09V
UF9NRU1PUllfQ09QWSA6IFNPVVBfTUVNT1JZX1RBS0UsIGQtPm1fcmVhZEJ1ZmZlclB0ciwgYnl0
ZXNSZWFkKTsKKyAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZS5n
ZXQoKSwgU2hhcmVkQnVmZmVyOjp3cmFwU291cEJ1ZmZlcihidWZmZXIpLCBieXRlc1JlYWQpOwog
Ci0gICAgLy8gZGlkUmVjZWl2ZURhdGEgbWF5IGNhbmNlbCB0aGUgbG9hZCwgd2hpY2ggbWF5IHJl
bGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlLgorICAgIC8vIGRpZFJlY2VpdmVCdWZmZXIgbWF5IGNh
bmNlbCB0aGUgbG9hZCwgd2hpY2ggbWF5IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlLgogICAg
IGlmIChoYW5kbGUtPmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKSB7CiAgICAgICAgIGNsZWFudXBT
b3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZDMzYjBmMzhlNmFhZDBiNTc2ZDUzZmExNDA2MjYwNTM2NTMwNTgwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3Vw
LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkg
MTAwIEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgIlB1cmdlYWJsZUJ1
ZmZlci5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihTb3Vw
QnVmZmVyKiBzb3VwQnVmZmVyKQorICAgIDogbV9zaXplKDApCit7CisgICAgQVNTRVJUKHNvdXBC
dWZmZXIpOworICAgIG1fc291cEJ1ZmZlci5zZXQoc291cEJ1ZmZlcik7Cit9CisKK1Bhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OndyYXBTb3VwQnVmZmVyKFNvdXBCdWZmZXIq
IHNvdXBCdWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoc291
cEJ1ZmZlcikpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEoKQor
eworICAgIG1fc291cEJ1ZmZlci5jbGVhcigpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6bWF5
YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCit7CisgICAgaWYgKCFtX3NvdXBCdWZmZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9zaXplKTsKKworICAgIC8vIEhhbmcgb24gdG8g
dGhlIG1fc291cEJ1ZmZlciBwb2ludGVyIGluIGEgbG9jYWwgcG9pbnRlciBhcyBhcHBlbmQoKSB3
aWxsIHJlLWVudGVyIG1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQorICAgIC8vIGFuZCB3ZSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0byBlYXJseSByZXR1cm4gd2hlbiBpdCBkb2VzLgorICAgIEdPd25Q
dHI8U291cEJ1ZmZlcj4gc291cEJ1ZmZlcjsKKyAgICBzb3VwQnVmZmVyLnN3YXAobV9zb3VwQnVm
ZmVyKTsKKworICAgIGFwcGVuZChzb3VwQnVmZmVyLT5kYXRhLCBzb3VwQnVmZmVyLT5sZW5ndGgp
OworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aGFzUGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zb3VwQnVmZmVyLmdldCgpOworfQorCitjb25zdCBjaGFyKiBTaGFyZWRCdWZm
ZXI6OnBsYXRmb3JtRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc291cEJ1ZmZlci0+ZGF0
YTsKK30KKwordW5zaWduZWQgU2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGFTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zb3VwQnVmZmVyLT5sZW5ndGg7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213986</attachid>
            <date>2013-10-11 06:48:31 -0700</date>
            <delta_ts>2013-12-09 00:42:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118598-20131011154829.patch</filename>
            <type>text/plain</type>
            <size>14845</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2VhMmM2OGI5OTc0ZWYw
MmJkYmYyNGU1OTg4YzIyZmQ5Yjg5OGU5Zi4uOGNjMGY5MjdhNmNhNjQ3NGIxYzAxYmI2ZWQwNjZh
NzM1MjYxMWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEzLTEwLTExICBDc2Fi
YSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl1bU291cF0g
VXNlIGRpZFJlY2VpdmVCdWZmZXIgaW5zdGVhZCBvZiBkaWRSZWNlaXZlRGF0YQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3JpZ2luYWwgcGF0Y2ggYnkg
S3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENoYW5nZWQg
dG8gdXNlIFNvdXBCdWZmZXIgYXMgZGF0YSBvYmplY3RzIGFuZCBkZWxpdmVyIHRoZW0gdG8KKyAg
ICAgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQuIEF1Z21lbnRlZCBTaGFyZWRCdWZmZXIgdG8gd3Jh
cCBTb3VwQnVmZmVyLiBJdCBpcworICAgICAgICBhIGZvbGxvdy11cCBwYXRjaCBvZiByMTQ1ODIw
LgorCisgICAgICAgIEdvdCByaWQgb2YgdGhlIGRlZmF1bHQgcmVhZCBidWZmZXIgYW5kIGFsbG9j
YXRlIGEgcmVhZCBidWZmZXIgZm9yIGVhY2gKKyAgICAgICAgcmVhZCByZXF1ZXN0LiBPbmNlIHJl
YWQgaXMgZG9uZSwgd3JhcCB0aGUgYnVmZmVyIGluIGEgU291cEJ1ZmZlciBhbmQKKyAgICAgICAg
cGFzc2VkIGl0IHRvIFJlc291cmNlSGFuZGxlQ2xpZW50IHRocm91Z2ggZGlkUmVjZWl2ZUJ1ZmZl
ciBjYWxsYmFjay4KKworICAgICAgICBIZXJlIHdlIGNyZWF0ZSBhIFNvdXBCdWZmZXIgZnJvbSBy
YXcgcG9pbnRlcnMgYW5kIGxlbmd0aHMsIGJ1dCBsYXRlciB3ZQorICAgICAgICBjYW4gY2hhbmdl
IG91ciBpbXBsZW1lbnRhdGlvbiB0byBnZXQgYSBTb3VwQnVmZmVyIG9iamVjdCBkaXJlY3RseSBm
cm9tCisgICAgICAgICJnb3QtY2h1bmsiIHNpZ25hbC4gSG93ZXZlciwgdGhlcmUgaXMgYSBwcm9i
bGVtIHdpdGggdGhpcyBzaWduYWwgYXQgdGhlCisgICAgICAgIG1vbWVudCBiZWNhdXNlIGl0IGRv
ZXMgbm90IHByb3Blcmx5IHN1cHBvcnQgZGlzayBjYWNoaW5nLgorCisgICAgICAgIFRoaXMgaXMg
aW4gcHJlcGFyYXRpb24gZm9yIHBvcnRpbmcgTmV0d29ya1Byb2Nlc3Mgd2hpY2ggZG9lcyBub3QK
KyAgICAgICAgc3VwcG9ydCBkaWRSZWNlaXZlRGF0YS4KKworICAgICAgICBUaGUgZm9sbG93aW5n
IHRoaW5ncyB3ZXJlIGZpeGVkIGJ5IENzYWJhIE9zenRyb2dvbsOhYzoKKyAgICAgICAgLSByZXNv
bHZlZCBhIHRyaXZpYWwgY29uZmxpY3QgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcCBhZnRlciBRdCByZW1vdmFsCisgICAgICAgIC0gaW5pdGlhbGl6ZWQgZGVzdGlu
YXRpb24gdmFyaWFibGUgaW4gU2hhcmVkQnVmZmVyLmNwcCAoLVdtYXliZS11bmluaXRpYWxpemVk
KQorICAgICAgICAtIGFkZGVkIHRoZSBuZXcgU2hhcmVkQnVmZmVyU291cC5jcHAgdG8gUGxhdGZv
cm1HVEsuY21ha2UgdG9vCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAg
ICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNv
dXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgR2V0IHJpZCBvZiBtX2RlZmF1bHRSZWFkQnVm
ZmVyIGJlY2F1c2Ugd2Ugbm93IGFsbG9jYXRlIGEgcmVhZCBidWZmZXIKKyAgICAgICAgZm9yIGVh
Y2ggcmVhZCByZXF1ZXN0LiBBZGQgbV91c2VFeHRlcm5hbFJlYWRCdWZmZXIgZm9yIG1hcmtpbmcg
d2hlbgorICAgICAgICB0aGUgcmVhZCBidWZmZXIgaXMgZnJvbSBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL0dPd25QdHJTb3VwLmNwcDoKKyAgICAgICAgKFdURjo6U291cEJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmg6CisgICAgICAgIEFkZCBTb3Vw
QnVmZmVyIHRvIEdPd25QdHIgdG8gZGVhbGxvY2F0ZSBpdCBhdXRvbWF0aWNhbGx5LgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmVuc3VyZVJlYWRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIFVzZSBkaWRSZWNlaXZlQnVmZmVyIGlu
c3RlYWQgb2YgZGlkUmVjZWl2ZURhdGEuIENyZWF0ZSBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBm
cm9tIHRoZSByZWFkIGJ1ZmZlci4gQ2hlY2sgbV91c2VFeHRlcm5hbFJlYWRCdWZmZXIgdG8gZGV0
ZXJtaW5lCisgICAgICAgIFNvdXBNZW1vcnlVc2UgZmxhZy4KKworICAgICAgICAqIHBsYXRmb3Jt
L3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHA6IEFkZGVkLgorICAgICAgICBVc2UgU291cEJ1ZmZl
ciBhcyBwbGF0Zm9ybSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp3cmFwU291cEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc1BsYXRmb3JtRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YVNpemUpOgorCiAyMDEzLTEwLTEwICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYWZ0ZXIgZnJlZSBp
biBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OmZpcmVEaXNwbGF5UmVmcmVz
aElmTmVlZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhOTE3N2ZiN2JiNDg3
Zjc5M2U4ODU4YzI4NGZjYzYzNmIwMjBkNmJkLi5lZTI3ZmVjN2Y0YmNjNDYwYWUxYTY2MzcyYTJl
ZGI4ZjdiM2NiNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU0NzEsNiAr
NTQ3MSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IGM5OGI3YTNiMjQ5ZDM3Y2JjZmNjMDMzMjJjOTU4ZGNjYzk4ZmViZDMuLjQ1M2RjY2E4
YjUzNWFjNDBhYWE4MTBjNDhhNzMyMDdmMWVlNzRhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0xNjcsNiArMTY3LDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAogICAgIHBsYXRmb3JtL3Bvc2l4L1No
YXJlZEJ1ZmZlclBPU0lYLmNwcAogCisgICAgcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3Vw
LmNwcAorCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAKICAgICBwbGF0Zm9ybS90
ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCA4ZmY4MWY4ZTA1MDI2MjZhOGZkMTM1ODg5NjQyYTAwYjkzNGI4M2Rh
Li5kY2IzZTFmYmIwZjhlNmVlZDVlMTU2MWEyOTA2ZDQ4ZGU2ZGM1Y2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtMjA1LDYgKzIwNSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50U291cC5jcHAKIAorICAg
IHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKKwogICAgIHBsYXRmb3JtL3RleHQv
TG9jYWxlSUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3Bw
CiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1NTg3YWEzZDY1ZTMxMzc1ODdmMjQ0YmZhYTczNzY5
Njg2MzllYTA4Li4wYTMzNDZhNjAzM2FlYTZkY2IyYTAwYmNmZWUyNjg4MzJlYmRlNDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTIzMCw3ICsyMzAsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlUHVyZ2VhYmxlQnVmZmVyKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBjaGFyKiBkZXN0aW5hdGlvbjsKKyAgICBjaGFyKiBk
ZXN0aW5hdGlvbiA9IG51bGxwdHI7CiAgICAgbV9wdXJnZWFibGVCdWZmZXIgPSBQdXJnZWFibGVC
dWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9zaXplLCBkZXN0aW5hdGlvbik7CiAgICAgaWYg
KCFtX3B1cmdlYWJsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDUzLDcgKzQ1Myw3IEBA
IHVuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoY29uc3QgY2hhciomIHNvbWVEYXRh
LCB1bnNpZ25lZCBwb3NpdGlvbikgY29uCiAjZW5kaWYKIH0KIAotI2lmICFVU0UoQ0YpCisjaWYg
IShVU0UoQ0YpIHx8IFVTRShTT1VQKSkKIAogaW5saW5lIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVh
clBsYXRmb3JtRGF0YSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmlu
ZGV4IDc5ZGFlMWIzYzQwYzZlZWU4Y2U2N2E5NTg3MTI5ZDE3ZWI4Njk3ZDQuLjU0OTJjYTJhMjZk
ZmI1NGEyZTk4ZDlhNzQ2ZDIzZTllZWY1NTQ4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCkBAIC00MSw2ICs0MSwxMCBAQAogT0JKQ19DTEFTUyBOU0RhdGE7CiAjZW5k
aWYKIAorI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUHVyZ2VhYmxlQnVmZmVyOwpAQCAtODYs
NiArOTAsOSBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRh
KCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB3cmFwQ0ZEYXRhKENGRGF0
YVJlZik7CiAjZW5kaWYKKyNpZiBVU0UoU09VUCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHdyYXBTb3VwQnVmZmVyKFNvdXBCdWZmZXIqKTsKKyNlbmRpZgogCiAgICAgLy8g
Q2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgZm9yY2UgaW50ZXJuYWwgc2VnbWVudGVkIGJ1ZmZl
cnMKICAgICAvLyB0byBiZSBtZXJnZWQgaW50byBhIGZsYXQgYnVmZmVyLiBVc2UgZ2V0U29tZURh
dGEoKSB3aGVuZXZlciBwb3NzaWJsZQpAQCAtMTk3LDYgKzIwNCwxMCBAQCBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IG1fY2ZEYXRhOwogI2VuZGlmCisjaWYgVVNFKFNPVVApCisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFNvdXBCdWZmZXIqKTsKKyAgICBHT3duUHRyPFNvdXBCdWZmZXI+IG1fc291cEJ1ZmZl
cjsKKyNlbmRpZgogfTsKIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29u
c3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDliOGE4OWFlNjZkYWQzYzJjM2I4N2Yx
NzJhODA5MzU0MGRlNzQ2NjIuLmIyOTk1ZjU3OTEzYTIzNmU4ZTJkZWNmZmVmNzBiNGNiMGYzOGUy
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMDYsNiArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9y
ZWFkQnVmZmVyUHRyKDApCiAgICAgICAgICAgICAsIG1fcmVhZEJ1ZmZlclNpemUoMCkKKyAgICAg
ICAgICAgICwgbV91c2VFeHRlcm5hbFJlYWRCdWZmZXIoZmFsc2UpCiAgICAgICAgICAgICAsIG1f
Ym9keVNpemUoMCkKICAgICAgICAgICAgICwgbV9ib2R5RGF0YVNlbnQoMCkKICAgICAgICAgICAg
ICwgbV9yZWRpcmVjdENvdW50KDApCkBAIC0xOTIsOSArMTkzLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKICAgICAg
ICAgR1JlZlB0cjxHQXN5bmNSZXN1bHQ+IG1fZGVmZXJyZWRSZXN1bHQ7CiAgICAgICAgIEdSZWZQ
dHI8R1NvdXJjZT4gbV90aW1lb3V0U291cmNlOwotICAgICAgICBHT3duUHRyPGNoYXI+IG1fZGVm
YXVsdFJlYWRCdWZmZXI7CiAgICAgICAgIGNoYXIqIG1fcmVhZEJ1ZmZlclB0cjsKICAgICAgICAg
c2l6ZV90IG1fcmVhZEJ1ZmZlclNpemU7CisgICAgICAgIGJvb2wgbV91c2VFeHRlcm5hbFJlYWRC
dWZmZXI7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9ib2R5U2l6ZTsKICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtX2JvZHlEYXRhU2VudDsKICAgICAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093
blB0clNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25Q
dHJTb3VwLmNwcAppbmRleCBlNDk2NzA3OWI4MzhhOWRiNTcyZGRmZjNiYWFmYTgzZWVkN2UwY2Qw
Li5iZjkxMDJkMjJkMjNkM2EwMDg1YzQ3YzQyZDliMjY0MzFiZDkyNDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKQEAg
LTMwLDYgKzMwLDEyIEBAIHRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwVVJJPihT
b3VwVVJJKiBwdHIpCiAgICAgICAgIHNvdXBfdXJpX2ZyZWUocHRyKTsKIH0KIAordGVtcGxhdGUg
PD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBCdWZmZXI+KFNvdXBCdWZmZXIqIHB0cikKK3sKKyAg
ICBpZiAocHRyKQorICAgICAgICBzb3VwX2J1ZmZlcl9mcmVlKHB0cik7Cit9CisKIHRlbXBsYXRl
IDw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQ29va2llPihTb3VwQ29va2llKiBwdHIpCiB7CiAg
ICAgaWYgKHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9HT3duUHRyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0dPd25QdHJTb3VwLmgKaW5kZXggOWZlM2E4ZTc3MDJhNzljYjY2MWFlZjk4MTcxMGYzOGQ3OTY4
ZjBiZS4uZTM4YjQ0Mjk2YzE5YmZkN2M4NjY5OWRmNjdhNTFkMzNmOTgwNmQzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmgKQEAg
LTIwLDYgKzIwLDcgQEAKICNpZm5kZWYgR093blB0clNvdXBfaAogI2RlZmluZSBHT3duUHRyU291
cF9oCiAKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9Tb3VwVVJJIFNvdXBVUkk7CkBAIC0yOSw2ICsz
MCw3IEBAIHR5cGVkZWYgc3RydWN0IFNvdXBNZXNzYWdlSGVhZGVycyBTb3VwTWVzc2FnZUhlYWRl
cnM7CiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291
cFVSST4oU291cFVSSSogcHRyKTsKK3RlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBC
dWZmZXI+KFNvdXBCdWZmZXIqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxT
b3VwQ29va2llPihTb3VwQ29va2llKiBwdHIpOwogdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQ
dHI8U291cE1lc3NhZ2VIZWFkZXJzPihTb3VwTWVzc2FnZUhlYWRlcnMqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcAppbmRleCA4NDZlMjVhOGNmNTM4MTBiNDk5NDIzY2Q2YTU0YTBhMmIxZWEyZTEw
Li5kZWYwM2U3MDhmMDI2Yjk4ODNkMjJjZDU4NDk5MjBhMTg3NDY0NzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcApAQCAtMTQ0LDkgKzE0NCw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZXNwb25z
ZSA9IHJlc3BvbnNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCkKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCkKICAgICB7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgZG91YmxlKQpAQCAtMzA2LDE1ICszMDYsMTQgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6ZW5zdXJlUmVhZEJ1ZmZlcigpCiAgICAgc2l6ZV90IGJ1ZmZlclNpemU7CiAg
ICAgY2hhciogYnVmZmVyUHRyID0gY2xpZW50KCktPmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihkZWZh
dWx0UmVhZEJ1ZmZlclNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmIChidWZmZXJQdHIpIHsKLSAg
ICAgICAgZC0+bV9kZWZhdWx0UmVhZEJ1ZmZlci5jbGVhcigpOwogICAgICAgICBkLT5tX3JlYWRC
dWZmZXJQdHIgPSBidWZmZXJQdHI7CiAgICAgICAgIGQtPm1fcmVhZEJ1ZmZlclNpemUgPSBidWZm
ZXJTaXplOwotICAgIH0gZWxzZSBpZiAoIWQtPm1fZGVmYXVsdFJlYWRCdWZmZXIpIHsKLSAgICAg
ICAgZC0+bV9kZWZhdWx0UmVhZEJ1ZmZlci5zZXQoc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9j
KGRlZmF1bHRSZWFkQnVmZmVyU2l6ZSkpKTsKLSAgICAgICAgZC0+bV9yZWFkQnVmZmVyUHRyID0g
ZC0+bV9kZWZhdWx0UmVhZEJ1ZmZlci5nZXQoKTsKKyAgICAgICAgZC0+bV91c2VFeHRlcm5hbFJl
YWRCdWZmZXIgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIGQtPm1fcmVhZEJ1ZmZlclB0
ciA9IHN0YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyhkZWZhdWx0UmVhZEJ1ZmZlclNpemUpKTsK
ICAgICAgICAgZC0+bV9yZWFkQnVmZmVyU2l6ZSA9IGRlZmF1bHRSZWFkQnVmZmVyU2l6ZTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgZC0+bV9yZWFkQnVmZmVyUHRyID0gZC0+bV9kZWZhdWx0UmVhZEJ1
ZmZlci5nZXQoKTsKKyAgICAgICAgZC0+bV91c2VFeHRlcm5hbFJlYWRCdWZmZXIgPSBmYWxzZTsK
KyAgICB9CiAKICAgICBBU1NFUlQoZC0+bV9yZWFkQnVmZmVyUHRyKTsKICAgICBBU1NFUlQoZC0+
bV9yZWFkQnVmZmVyU2l6ZSk7CkBAIC01NjksOCArNTY4LDggQEAgc3RhdGljIHZvaWQgY2xlYW51
cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgaXNEZXN0
cm95aW4KIAogICAgIGlmIChkLT5tX3JlYWRCdWZmZXJQdHIpCiAgICAgICAgIGQtPm1fcmVhZEJ1
ZmZlclB0ciA9IDA7Ci0gICAgaWYgKCFkLT5tX2RlZmF1bHRSZWFkQnVmZmVyKQotICAgICAgICBk
LT5tX3JlYWRCdWZmZXJTaXplID0gMDsKKworICAgIGQtPm1fdXNlRXh0ZXJuYWxSZWFkQnVmZmVy
ID0gZmFsc2U7CiAKICAgICBpZiAoZC0+bV90aW1lb3V0U291cmNlKSB7CiAgICAgICAgIGdfc291
cmNlX2Rlc3Ryb3koZC0+bV90aW1lb3V0U291cmNlLmdldCgpKTsKQEAgLTEzMzQsOSArMTMzMywx
MCBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5
bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgLy8gSXQncyBtYW5kYXRvcnkgdG8gaGF2ZSBz
ZW50IGEgcmVzcG9uc2UgYmVmb3JlIHNlbmRpbmcgZGF0YQogICAgIEFTU0VSVCghZC0+bV9yZXNw
b25zZS5pc051bGwoKSk7CiAKLSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YSho
YW5kbGUuZ2V0KCksIGQtPm1fcmVhZEJ1ZmZlclB0ciwgYnl0ZXNSZWFkLCBieXRlc1JlYWQpOwor
ICAgIFNvdXBCdWZmZXIqIGJ1ZmZlciA9IHNvdXBfYnVmZmVyX25ldyhkLT5tX3VzZUV4dGVybmFs
UmVhZEJ1ZmZlciA/IFNPVVBfTUVNT1JZX0NPUFkgOiBTT1VQX01FTU9SWV9UQUtFLCBkLT5tX3Jl
YWRCdWZmZXJQdHIsIGJ5dGVzUmVhZCk7CisgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2
ZUJ1ZmZlcihoYW5kbGUuZ2V0KCksIFNoYXJlZEJ1ZmZlcjo6d3JhcFNvdXBCdWZmZXIoYnVmZmVy
KSwgYnl0ZXNSZWFkKTsKIAotICAgIC8vIGRpZFJlY2VpdmVEYXRhIG1heSBjYW5jZWwgdGhlIGxv
YWQsIHdoaWNoIG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZS4KKyAgICAvLyBkaWRSZWNl
aXZlQnVmZmVyIG1heSBjYW5jZWwgdGhlIGxvYWQsIHdoaWNoIG1heSByZWxlYXNlIHRoZSBsYXN0
IHJlZmVyZW5jZS4KICAgICBpZiAoaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3MoKSkgewog
ICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFy
ZWRCdWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVm
ZmVyU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQzM2IwZjM4ZTZhYWQwYjU3NmQ1M2ZhMTQwNjI2MDUz
NjUzMDU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAv
U2hhcmVkQnVmZmVyU291cC5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBDb21wYW55IDEwMCBJbmMuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNpbmNs
dWRlICJQdXJnZWFibGVCdWZmZXIuaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZlcikKKyAgICA6IG1fc2l6ZSgwKQorewor
ICAgIEFTU0VSVChzb3VwQnVmZmVyKTsKKyAgICBtX3NvdXBCdWZmZXIuc2V0KHNvdXBCdWZmZXIp
OworfQorCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp3cmFwU291cEJ1
ZmZlcihTb3VwQnVmZmVyKiBzb3VwQnVmZmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcmVkQnVmZmVyKHNvdXBCdWZmZXIpKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFy
UGxhdGZvcm1EYXRhKCkKK3sKKyAgICBtX3NvdXBCdWZmZXIuY2xlYXIoKTsKK30KKwordm9pZCBT
aGFyZWRCdWZmZXI6Om1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQoreworICAgIGlmICghbV9z
b3VwQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIW1fc2l6ZSk7CisKKyAg
ICAvLyBIYW5nIG9uIHRvIHRoZSBtX3NvdXBCdWZmZXIgcG9pbnRlciBpbiBhIGxvY2FsIHBvaW50
ZXIgYXMgYXBwZW5kKCkgd2lsbCByZS1lbnRlciBtYXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKCkK
KyAgICAvLyBhbmQgd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gZWFybHkgcmV0dXJuIHdoZW4gaXQg
ZG9lcy4KKyAgICBHT3duUHRyPFNvdXBCdWZmZXI+IHNvdXBCdWZmZXI7CisgICAgc291cEJ1ZmZl
ci5zd2FwKG1fc291cEJ1ZmZlcik7CisKKyAgICBhcHBlbmQoc291cEJ1ZmZlci0+ZGF0YSwgc291
cEJ1ZmZlci0+bGVuZ3RoKTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6Omhhc1BsYXRmb3JtRGF0
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc291cEJ1ZmZlci5nZXQoKTsKK30KKworY29uc3Qg
Y2hhciogU2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBt
X3NvdXBCdWZmZXItPmRhdGE7Cit9CisKK3Vuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6cGxhdGZvcm1E
YXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc291cEJ1ZmZlci0+bGVuZ3RoOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218729</attachid>
            <date>2013-12-09 00:42:58 -0800</date>
            <delta_ts>2013-12-09 01:02:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118598-20131209094257.patch</filename>
            <type>text/plain</type>
            <size>24256</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiM2Y2MDI1MGUxNzU5
ZjExNmNkODQ3NmQ0MjhkNWIzY2I3YzlkNi4uZDcyNjdjMGNkYzQ1YjkwY2QzYzIyNjg1ZGQ0YTky
NjkzZjIwYzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTEyLTA4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXVtTb3Vw
XSBVc2UgZGlkUmVjZWl2ZUJ1ZmZlciBpbnN0ZWFkIG9mIGRpZFJlY2VpdmVEYXRhCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBi
eSBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+IGFuZCBDc2FiYSBPc3p0cm9n
b27Dg8KhYyAgPG9zc3lAd2Via2l0Lm9yZz4uCisKKyAgICAgICAgU3dpdGNoIGZyb20gdXNpbmcg
ZGlkUmVjZWl2ZURhdGEgdG8gZGlkUmVjZWl2ZUJ1ZmZlciBmb3IgdGhlIFNvdXAgYmFja2VuZCBh
bmQKKyAgICAgICAgbGV0IFNoYXJlZEJ1ZmZlciB3cmFwIGEgU291cEJ1ZmZlci4gVGhpcyBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgb25seSBzdXBwb3J0
cyBnZXR0aW5nIGRhdGEgdmlhIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06IEFkZCB0aGUgbmV3IFNoYXJlZEJ1ZmZlclNvdXAuY3BwIGZpbGUgdG8gdGhlIGxp
c3QuCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1OaXguY21ha2U6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcDogV2Ugbm8gbG9uZ2VyIHVzZWQgdGhlIG5vLW9wIHZlcnNpb24gb2Yg
dGhlIHBsYXRmb3JtRm9vIG1ldGhvZHMuCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwOiAgVXNlIGRpZFJlY2VpdmVCdWZmZXIgaW5zdGVhZCBvZiBk
aWRSZWNlaXZlRGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaDogSGF2ZSBvbmx5IGEgbV9zb3VwQnVmZmVyIG1lbWJlciBpbnN0ZWFkIG9mIHRo
cmVlIHRvIG1hbmFnZSB0aGUgYnVmZmVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9HT3duUHRyU291cC5jcHA6IEFkZCBzdXBwb3J0IGZvciBTb3VwQnVmZmVyLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOiBBU1NFUlRf
Tk9UX1JFQUNIRUQgaGVyZSwgc2luY2UgaXQgc2hvdWxkIG5ldmVyIGJlCisgICAgICAgIGNhbGxl
ZCBub3cuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOiBIYW5kbGUgdGhpcyBjYWxsIHByb3Blcmx5LgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmVuc3VyZVJlYWRCdWZmZXIpOiBOb3cgd2UgcGFja2FnZSB1cCBv
dXIgYnVmZmVyIGludG8gYSBTb3VwQnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6cmVkaXJlY3RT
a2lwQ2FsbGJhY2spOiBVc2UgdGhlIG5ldyBtX3NvdXBCdWZmZXIgbWVtYmVyLgorICAgICAgICAo
V2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2spOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OnNlbmRSZXF1ZXN0Q2FsbGJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJT
b3VwLmNwcDogQWRkZWQuCisKIDIwMTMtMTItMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01TRV0gQnJpbmcgZW5kLW9mLXN0cmVhbSBhbGdvcml0aG0gc2Vj
dGlvbiB1cCB0byBjdXJyZW50IHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2Q3NmMyNDAyYzNm
MzIxZmI3MGRmM2JjMTZmNWJhNGM0NTMwNzZiMC4uMTA2Y2RkOTgxYjMxMTBhNDcwMTdlMzYyZjc0
MDY5MDY5YjY1NjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTEy
LTA4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBb
V0syXVtTb3VwXSBVc2UgZGlkUmVjZWl2ZUJ1ZmZlciBpbnN0ZWFkIG9mIGRpZFJlY2VpdmVEYXRh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1OTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5h
bCBwYXRjaCBieSBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+IGFuZCBDc2Fi
YSBPc3p0cm9nb27Dg8KhYyAgPG9zc3lAd2Via2l0Lm9yZz4uCisKKyAgICAgICAgU3dpdGNoIGZy
b20gdXNpbmcgZGlkUmVjZWl2ZURhdGEgdG8gZGlkUmVjZWl2ZUJ1ZmZlciBmb3IgdGhlIFNvdXAg
YmFja2VuZCBhbmQKKyAgICAgICAgbGV0IFNoYXJlZEJ1ZmZlciB3cmFwIGEgU291cEJ1ZmZlci4g
VGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgb25s
eSBzdXBwb3J0cyBnZXR0aW5nIGRhdGEgdmlhIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHA6CisgICAgICAgIChEb3dubG9hZENsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOiBSZXBsYWNlIHdpdGggQVNTRVJUX05PVF9SRUFDSEVELgorICAgICAgICAoRG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOiBVc2UgdGhpcyB0byBwcm9jZXNzIGluY29t
aW5nIGRhdGEuCisKIDIwMTMtMTItMDcgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9t
ZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4cGVjdGF0aW9uIGZvbGxvd2luZyAxNjAy
MjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2YjQ1YjkzNTZmMmQ5ZGZkOWVk
ZWRmNzg4ZTdiMTMyN2Y4YzViOThhLi40YjJhZDE5YjkzYzRiNDQ1YmFmMmNlNmRlNGVhMjA2NmU2
NTc0ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU5MzgsNiArNTkzOCw3
IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDFlOTk1ODg3NmYwODM5MjY3MDk2YTA2MjQ0NjYxYzcwNmI3NjI5MTMu
LjZhZTBlZjY5NDk2Y2I4OGFlZDE2OTQwOTJkN2ZlNGUzYjU2MGExZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xNzEsNiArMTcxLDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAogICAgIHBsYXRmb3Jt
L3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAogCisgICAgcGxhdGZvcm0vc291cC9TaGFyZWRC
dWZmZXJTb3VwLmNwcAorCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAKICAgICBw
bGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA1NTc3NzQyYTVhMjU5MWQ0MmQ2YjEzZmVjODRmNGYx
MGU3M2Q0NjA2Li4zMjk5MDA5YWFjZmFhMWI2NTdkNTFmMWM0OGIwM2UwOTI2YjBjZmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjAzLDYgKzIwMyw4IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50U291cC5j
cHAKIAorICAgIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKKwogICAgIHBsYXRm
b3JtL3RleHQvTG9jYWxlSUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3JJQ1UuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU5peC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTml4LmNtYWtlCmluZGV4IDFkNTI3MDBiZDM3ODc0ODc4ZGMxNWU2ZjYzNDI1YzkxZDViOWNm
ZmIuLmFiNmZlZmVlNzcxNjMwNTM1YTc1Yzc4MWQzNzc3Njc4YmYyYTgzODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTml4LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTml4LmNtYWtlCkBAIC03OSw2ICs3OSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9T
aGFyZWRCdWZmZXJHdGsuY3BwCiAKKyAgICBwbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmVyU291cC5j
cHAKKwogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcAogCiAgICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMzBlMjRmYjcyOGFmNTE0ZjIw
MGRkOTc3MzFmYzFkNzQ0NDkxNzcxNy4uZDA1OGZlZmU0NDVjZTI1MmM5ODFiYTM5YjRmY2VjMDZk
ZTU3Y2Q1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00
NTQsNyArNDU0LDcgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShjb25zdCBj
aGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24KICNlbmRpZgogfQogCi0jaWYg
IVVTRShDRikKKyNpZiAhVVNFKENGKSAmJiAhVVNFKFNPVVApCiAKIGlubGluZSB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCAzYzNkZGE2ZDQxYzU5MjAxODI2ZGQ5MjZjMjc4MGQzNTAxOWIwMTNi
Li40OWNkMTkyODI5MzljNmVhNDg2YTkxMTQ1MmYyMzZkZDUyMzBkYmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIAorI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgIkdPd25Q
dHJTb3VwLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNEYXRh
OwogI2VuZGlmCkBAIC04Nyw2ICs5MSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB3cmFwQ0ZEYXRhKENGRGF0YVJlZik7CiAjZW5kaWYKIAorI2lmIFVT
RShTT1VQKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gd3JhcFNvdXBCdWZm
ZXIoU291cEJ1ZmZlciopOworI2VuZGlmCisKICAgICAvLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24g
d2lsbCBmb3JjZSBpbnRlcm5hbCBzZWdtZW50ZWQgYnVmZmVycwogICAgIC8vIHRvIGJlIG1lcmdl
ZCBpbnRvIGEgZmxhdCBidWZmZXIuIFVzZSBnZXRTb21lRGF0YSgpIHdoZW5ldmVyIHBvc3NpYmxl
CiAgICAgLy8gZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KQEAgLTE5Nyw2ICsyMDUsMTEgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKICNlbmRpZgorCisjaWYgVVNFKFNPVVApCisgICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKFNvdXBCdWZmZXIqKTsKKyAgICBHT3duUHRyPFNvdXBCdWZmZXI+
IG1fc291cEJ1ZmZlcjsKKyNlbmRpZgogfTsKIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCmluZGV4IGQ5OGEzNWVmYjgwYTNhNzlmN2Q5NzRhNjYxZDc1YjBjOTE2MGM2
ZTYuLjJhN2JiZmY4NzEzYzBhN2EwMTQ3MTcwYzVhZDI4NzBlNjM0MWE1MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CkBAIC05OSw2ICsx
MDAsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCA6IHB1YmxpYyBSZXNv
dXJjZUhhbmRsZUNsaWVudCwgcHVibGljIFN0cmVhbQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50
LCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgaW50IGVuY29kZWRMZW5ndGgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJs
ZSAvKmZpbmlzaFRpbWUqLyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopOwpAQCAtMTExNyw3ICsxMTE5LDE4IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCwgaW50KQogewotICAgIGhhbmRsZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpOworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xp
ZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciwgaW50IC8qIGVuY29kZWRMZW5ndGggKi8pCit7CisgICAgLy8gVGhpcyBw
YXR0ZXJuIGlzIHN1Z2dlc3RlZCBieSBTaGFyZWRCdWZmZXIuaC4KKyAgICBjb25zdCBjaGFyKiBz
ZWdtZW50OworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKKyAgICB3aGlsZSAodW5zaWduZWQg
bGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShzZWdtZW50LCBwb3NpdGlvbikpIHsKKyAgICAg
ICAgaGFuZGxlRGF0YVJlY2VpdmVkKHNlZ21lbnQsIGxlbmd0aCk7CisgICAgICAgIHBvc2l0aW9u
ICs9IGxlbmd0aDsKKyAgICB9CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oCmluZGV4IDc1ZTIyN2I2NjcyOWU0MGZiMjk1YzE2YTVhZWUxNWI3MDVmMDcwZDIuLjM2MWNk
YWE4ZjcxZmJlZTY5NTVhMTY1YjdlMDEwNGJjYzhkNzUyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBA
IC0xMDYsOCArMTA2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgVVNFKFNP
VVApCiAgICAgICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX3Jl
YWRCdWZmZXJQdHIoMCkKLSAgICAgICAgICAgICwgbV9yZWFkQnVmZmVyU2l6ZSgwKQogICAgICAg
ICAgICAgLCBtX2JvZHlTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCiAg
ICAgICAgICAgICAsIG1fcmVkaXJlY3RDb3VudCgwKQpAQCAtMTk2LDkgKzE5NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFi
bGU7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0PiBtX2RlZmVycmVkUmVzdWx0OwogICAg
ICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNvdXJjZTsKLSAgICAgICAgR093blB0cjxj
aGFyPiBtX2RlZmF1bHRSZWFkQnVmZmVyOwotICAgICAgICBjaGFyKiBtX3JlYWRCdWZmZXJQdHI7
Ci0gICAgICAgIHNpemVfdCBtX3JlYWRCdWZmZXJTaXplOworICAgICAgICBHT3duUHRyPFNvdXBC
dWZmZXI+IG1fc291cEJ1ZmZlcjsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwog
ICAgICAgICB1bnNpZ25lZCBsb25nIG1fYm9keURhdGFTZW50OwogICAgICAgICBTb3VwU2Vzc2lv
biogc291cFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvR093blB0clNvdXAuY3BwCmluZGV4IGU0OTY3MDc5YjgzOGE5ZGI1NzJkZGZmM2Jh
YWZhODNlZWQ3ZTBjZDAuLjliYjQ0YjNkM2ExZDNkMzc0ZWM3MDRlY2MzM2IyM2JiN2JhMjU3MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRy
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25Q
dHJTb3VwLmNwcApAQCAtNDIsNCArNDIsMTAgQEAgdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRH
UHRyPFNvdXBNZXNzYWdlSGVhZGVycz4oU291cE1lc3NhZ2VIZWFkZXJzKiBwdHIpCiAgICAgICAg
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUocHRyKTsKIH0KIAordGVtcGxhdGUgPD4gdm9pZCBm
cmVlT3duZWRHUHRyPFNvdXBCdWZmZXI+KFNvdXBCdWZmZXIqIHB0cikKK3sKKyAgICBpZiAocHRy
KQorICAgICAgICBzb3VwX2J1ZmZlcl9mcmVlKHB0cik7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25Q
dHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNv
dXAuaAppbmRleCA5ZmUzYThlNzcwMmE3OWNiNjYxYWVmOTgxNzEwZjM4ZDc5NjhmMGJlLi5kZTI1
M2JkYmQ3YzNiYjAyMDAxNTc0ZmFjYWMzOGI1MWIwZmFhZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaApAQCAtMjAsMTcgKzIw
LDE3IEBACiAjaWZuZGVmIEdPd25QdHJTb3VwX2gKICNkZWZpbmUgR093blB0clNvdXBfaAogCisv
LyBXZSBuZWVkIHRvIGluY2x1ZGUgbGlic291cCBoZWFkZXJzIGhlcmUgYmVjYXVzZSB0aGUgd2F5
IHRoYXQgU291cEJ1ZmZlcgorLy8gaXMgZGVmaW5lZCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGZv
cndhcmQgZGVjbGFyYXRpb24uCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogCi10eXBlZGVmIHN0cnVjdCBfU291cFVSSSBTb3VwVVJJ
OwotdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWUgU291cENvb2tpZTsKLXR5cGVkZWYgc3RydWN0
IFNvdXBNZXNzYWdlSGVhZGVycyBTb3VwTWVzc2FnZUhlYWRlcnM7Ci0KIG5hbWVzcGFjZSBXVEYg
ewogCiB0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwVVJJPihTb3VwVVJJKiBwdHIp
OwogdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cENvb2tpZT4oU291cENvb2tpZSog
cHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBNZXNzYWdlSGVhZGVycz4o
U291cE1lc3NhZ2VIZWFkZXJzKik7Cit0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3Vw
QnVmZmVyPihTb3VwQnVmZmVyKik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCBj
MzJiMDFjY2FiYTNkZTIyMTY4Y2Y3MWI4YWU1MGE4ZmRkNWNjMmI0Li5iNDgwMDQ0ODZiZTQyYmU5
OTg0N2VlMWJkMGIyMTY1Yjg1Y2FlMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtODIs
NyArODIsNyBAQCBpbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIoU291cExvZ2dlcios
IFNvdXBMb2dnZXJMb2dMZXZlbCwgY2hhciBkaXJlY3RpbwogfQogCiBzdGF0aWMgYm9vbCBsb2Fk
aW5nU3luY2hyb25vdXNSZXF1ZXN0ID0gZmFsc2U7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IGRlZmF1
bHRSZWFkQnVmZmVyU2l6ZSA9IDgxOTI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IGdEZWZhdWx0UmVh
ZEJ1ZmZlclNpemUgPSA4MTkyOwogCiBjbGFzcyBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgOiBw
dWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcik7CkBAIC0xNDYsNyArMTQ2LDE4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGludCkKICAgICB7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBpbnQgLyogZW5jb2RlZExlbmd0aCAqLykKKyAgICB7
CisgICAgICAgIC8vIFRoaXMgcGF0dGVybiBpcyBzdWdnZXN0ZWQgYnkgU2hhcmVkQnVmZmVyLmgu
CisgICAgICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQ7CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9u
ID0gMDsKKyAgICAgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoc2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAgICAgICBtX2RhdGEuYXBwZW5kKHNlZ21l
bnQsIGxlbmd0aCk7CisgICAgICAgICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSosIGRvdWJsZSkKQEAgLTMwMSwyMSArMzEyLDIwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmVu
c3VyZVJlYWRCdWZmZXIoKQogewogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJ
bnRlcm5hbCgpOwogCisgICAgaWYgKGQtPm1fc291cEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gTm9uLU5ldHdvcmtQcm9jZXNzIGNsaWVudHMgYXJlIGFibGUgdG8gZ2l2ZSBhIGJ1
ZmZlciB0byB0aGUgUmVzb3VyY2VIYW5kbGUgdG8gYXZvaWQgZXhwZW5zaXZlIGNvcGllcy4gSWYK
KyAgICAvLyB3ZSBkbyBnZXQgYSBidWZmZXIgZnJvbSB0aGUgY2xpZW50LCB3ZSB3YW50IHRoZSBj
bGllbnQgdG8gZnJlZSBpdCwgc28gd2UgY3JlYXRlIHRoZSBzb3VwIGJ1ZmZlciB3aXRoCisgICAg
Ly8gU09VUF9NRU1PUllfVEVNUE9SQVJZLgogICAgIHNpemVfdCBidWZmZXJTaXplOwotICAgIGNo
YXIqIGJ1ZmZlclB0ciA9IGNsaWVudCgpLT5nZXRPckNyZWF0ZVJlYWRCdWZmZXIoZGVmYXVsdFJl
YWRCdWZmZXJTaXplLCBidWZmZXJTaXplKTsKLSAgICBpZiAoYnVmZmVyUHRyKSB7Ci0gICAgICAg
IGQtPm1fZGVmYXVsdFJlYWRCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgZC0+bV9yZWFkQnVmZmVy
UHRyID0gYnVmZmVyUHRyOwotICAgICAgICBkLT5tX3JlYWRCdWZmZXJTaXplID0gYnVmZmVyU2l6
ZTsKLSAgICB9IGVsc2UgaWYgKCFkLT5tX2RlZmF1bHRSZWFkQnVmZmVyKSB7Ci0gICAgICAgIGQt
Pm1fZGVmYXVsdFJlYWRCdWZmZXIuc2V0KHN0YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyhkZWZh
dWx0UmVhZEJ1ZmZlclNpemUpKSk7Ci0gICAgICAgIGQtPm1fcmVhZEJ1ZmZlclB0ciA9IGQtPm1f
ZGVmYXVsdFJlYWRCdWZmZXIuZ2V0KCk7Ci0gICAgICAgIGQtPm1fcmVhZEJ1ZmZlclNpemUgPSBk
ZWZhdWx0UmVhZEJ1ZmZlclNpemU7Ci0gICAgfSBlbHNlCi0gICAgICAgIGQtPm1fcmVhZEJ1ZmZl
clB0ciA9IGQtPm1fZGVmYXVsdFJlYWRCdWZmZXIuZ2V0KCk7CisgICAgY2hhciogYnVmZmVyRnJv
bUNsaWVudCA9IGNsaWVudCgpLT5nZXRPckNyZWF0ZVJlYWRCdWZmZXIoZ0RlZmF1bHRSZWFkQnVm
ZmVyU2l6ZSwgYnVmZmVyU2l6ZSk7CisgICAgaWYgKGJ1ZmZlckZyb21DbGllbnQpCisgICAgICAg
IGQtPm1fc291cEJ1ZmZlci5zZXQoc291cF9idWZmZXJfbmV3KFNPVVBfTUVNT1JZX1RFTVBPUkFS
WSwgYnVmZmVyRnJvbUNsaWVudCwgYnVmZmVyU2l6ZSkpOworICAgIGVsc2UKKyAgICAgICAgZC0+
bV9zb3VwQnVmZmVyLnNldChzb3VwX2J1ZmZlcl9uZXcoU09VUF9NRU1PUllfVEFLRSwgc3RhdGlj
X2Nhc3Q8Y2hhcio+KGdfbWFsbG9jKGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpKSwgZ0RlZmF1bHRS
ZWFkQnVmZmVyU2l6ZSkpOwogCi0gICAgQVNTRVJUKGQtPm1fcmVhZEJ1ZmZlclB0cik7Ci0gICAg
QVNTRVJUKGQtPm1fcmVhZEJ1ZmZlclNpemUpOworICAgIEFTU0VSVChkLT5tX3NvdXBCdWZmZXIp
OwogfQogCiBzdGF0aWMgYm9vbCBpc0F1dGhlbnRpY2F0aW9uRmFpbHVyZVN0YXR1c0NvZGUoaW50
IGh0dHBTdGF0dXNDb2RlKQpAQCAtNTI0LDcgKzUzNCw3IEBAIHN0YXRpYyB2b2lkIHJlZGlyZWN0
U2tpcENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRl
ciBkCiAgICAgfQogCiAgICAgaWYgKGJ5dGVzU2tpcHBlZCA+IDApIHsKLSAgICAgICAgZ19pbnB1
dF9zdHJlYW1fc2tpcF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkZWZhdWx0UmVhZEJ1
ZmZlclNpemUsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgZ19pbnB1dF9zdHJlYW1fc2tp
cF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplLCBH
X1BSSU9SSVRZX0RFRkFVTFQsCiAgICAgICAgICAgICBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCBy
ZWRpcmVjdFNraXBDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTU1Nyw2ICs1NjcsNyBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwU291cFJlcXVlc3RPcGVy
YXRpb24oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbgogICAgIGQtPm1f
aW5wdXRTdHJlYW0uY2xlYXIoKTsKICAgICBkLT5tX211bHRpcGFydElucHV0U3RyZWFtLmNsZWFy
KCk7CiAgICAgZC0+bV9jYW5jZWxsYWJsZS5jbGVhcigpOworICAgIGQtPm1fc291cEJ1ZmZlci5j
bGVhcigpOwogCiAgICAgaWYgKGQtPm1fc291cE1lc3NhZ2UpIHsKICAgICAgICAgZ19zaWduYWxf
aGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksIEdfU0lH
TkFMX01BVENIX0RBVEEsCkBAIC01NjUsMTEgKzU3Niw2IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBT
b3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJv
eWluCiAgICAgICAgIGQtPm1fc291cE1lc3NhZ2UuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAo
ZC0+bV9yZWFkQnVmZmVyUHRyKQotICAgICAgICBkLT5tX3JlYWRCdWZmZXJQdHIgPSAwOwotICAg
IGlmICghZC0+bV9kZWZhdWx0UmVhZEJ1ZmZlcikKLSAgICAgICAgZC0+bV9yZWFkQnVmZmVyU2l6
ZSA9IDA7Ci0KICAgICBpZiAoZC0+bV90aW1lb3V0U291cmNlKSB7CiAgICAgICAgIGdfc291cmNl
X2Rlc3Ryb3koZC0+bV90aW1lb3V0U291cmNlLmdldCgpKTsKICAgICAgICAgZC0+bV90aW1lb3V0
U291cmNlLmNsZWFyKCk7CkBAIC02MzksNyArNjQ1LDcgQEAgc3RhdGljIHZvaWQgbmV4dE11bHRp
cGFydFJlc3BvbnNlUGFydENhbGxiYWNrKEdPYmplY3QqIC8qc291cmNlKi8sIEdBc3luY1Jlc3Vs
dCoKICAgICB9CiAKICAgICBoYW5kbGUtPmVuc3VyZVJlYWRCdWZmZXIoKTsKLSAgICBnX2lucHV0
X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fcmVhZEJ1ZmZl
clB0ciwgZC0+bV9yZWFkQnVmZmVyU2l6ZSwKKyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5j
KGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGNvbnN0X2Nhc3Q8Y2hhcio+KGQtPm1fc291cEJ1ZmZl
ci0+ZGF0YSksIGQtPm1fc291cEJ1ZmZlci0+bGVuZ3RoLAogICAgICAgICBHX1BSSU9SSVRZX0RF
RkFVTFQsIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgp
KTsKIH0KIApAQCAtNjY5LDEyICs2NzUsMTAgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxs
YmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoIWQtPm1fcmVhZEJ1ZmZlclB0cik7Ci0K
ICAgICBpZiAoc291cE1lc3NhZ2UpIHsKICAgICAgICAgaWYgKFNPVVBfU1RBVFVTX0lTX1JFRElS
RUNUSU9OKHNvdXBNZXNzYWdlLT5zdGF0dXNfY29kZSkgJiYgc2hvdWxkUmVkaXJlY3QoaGFuZGxl
LmdldCgpKSkgewogICAgICAgICAgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGlucHV0U3RyZWFtOwot
ICAgICAgICAgICAgZ19pbnB1dF9zdHJlYW1fc2tpcF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdl
dCgpLCBkZWZhdWx0UmVhZEJ1ZmZlclNpemUsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAg
ICAgIGdfaW5wdXRfc3RyZWFtX3NraXBfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZ0Rl
ZmF1bHRSZWFkQnVmZmVyU2l6ZSwgR19QUklPUklUWV9ERUZBVUxULAogICAgICAgICAgICAgICAg
IGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlZGlyZWN0U2tpcENhbGxiYWNrLCBoYW5kbGUuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC03MTUsNyArNzE5LDcgQEAg
c3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGlucHV0U3RyZWFt
OwogCiAgICAgaGFuZGxlLT5lbnN1cmVSZWFkQnVmZmVyKCk7Ci0gICAgZ19pbnB1dF9zdHJlYW1f
cmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX3JlYWRCdWZmZXJQdHIsIGQt
Pm1fcmVhZEJ1ZmZlclNpemUsCisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lu
cHV0U3RyZWFtLmdldCgpLCBjb25zdF9jYXN0PGNoYXIqPihkLT5tX3NvdXBCdWZmZXItPmRhdGEp
LCBkLT5tX3NvdXBCdWZmZXItPmxlbmd0aCwKICAgICAgICAgR19QUklPUklUWV9ERUZBVUxULCBk
LT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAK
QEAgLTEzMzIsMTYgKzEzMzYsMjAgQEAgc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3Qq
LCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgIC8vIEl0J3Mg
bWFuZGF0b3J5IHRvIGhhdmUgc2VudCBhIHJlc3BvbnNlIGJlZm9yZSBzZW5kaW5nIGRhdGEKICAg
ICBBU1NFUlQoIWQtPm1fcmVzcG9uc2UuaXNOdWxsKCkpOwogCi0gICAgaGFuZGxlLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLmdldCgpLCBkLT5tX3JlYWRCdWZmZXJQdHIsIGJ5dGVz
UmVhZCwgYnl0ZXNSZWFkKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlbmQgdGhlIGVuY29k
ZWQgZGF0YSBzaXplIGhlcmUgYW5kIG5vdCB0aGUgZGVjb2RlZCBzaXplCisgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU0MTAKKyAgICBBU1NFUlQo
ZC0+bV9zb3VwQnVmZmVyKTsKKyAgICBkLT5tX3NvdXBCdWZmZXItPmxlbmd0aCA9IGJ5dGVzUmVh
ZDsgLy8gVGhlIGJ1ZmZlciBtaWdodCBiZSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGJ5dGVz
IHJlYWQuIFNoYXJlZEJ1ZmZlciBsb29rcyBhdCB0aGUgbGVuZ3RoIHByb3BlcnR5LgorICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLmdldCgpLCBTaGFyZWRCdWZm
ZXI6OndyYXBTb3VwQnVmZmVyKGQtPm1fc291cEJ1ZmZlci5yZWxlYXNlKCkpLCBieXRlc1JlYWQp
OwogCi0gICAgLy8gZGlkUmVjZWl2ZURhdGEgbWF5IGNhbmNlbCB0aGUgbG9hZCwgd2hpY2ggbWF5
IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlLgorICAgIC8vIGRpZFJlY2VpdmVCdWZmZXIgbWF5
IGNhbmNlbCB0aGUgbG9hZCwgd2hpY2ggbWF5IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlLgog
ICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKSB7CiAgICAgICAgIGNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaGFuZGxlLT5lbnN1cmVSZWFkQnVmZmVyKCk7Ci0gICAgZ19pbnB1dF9zdHJl
YW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX3JlYWRCdWZmZXJQdHIs
IGQtPm1fcmVhZEJ1ZmZlclNpemUsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICBnX2lucHV0X3N0
cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGNvbnN0X2Nhc3Q8Y2hhcio+
KGQtPm1fc291cEJ1ZmZlci0+ZGF0YSksIGQtPm1fc291cEJ1ZmZlci0+bGVuZ3RoLCBHX1BSSU9S
SVRZX0RFRkFVTFQsCiAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFj
aywgaGFuZGxlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nv
dXAvU2hhcmVkQnVmZmVyU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI1NTczODI2NWQzOWJkMjY1ZThj
YzQ1ZTkxNjY0MmI2NDUyNDRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCBJbmMuCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCisKKyNpbmNsdWRlICJQdXJnZWFibGVCdWZmZXIuaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihTb3VwQnVmZmVyKiBzb3VwQnVmZmVyKQorICAgIDogbV9zaXplKDApCit7CisgICAgQVNTRVJU
KHNvdXBCdWZmZXIpOworICAgIG1fc291cEJ1ZmZlci5zZXQoc291cEJ1ZmZlcik7Cit9CisKK1Bh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OndyYXBTb3VwQnVmZmVyKFNvdXBC
dWZmZXIqIHNvdXBCdWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZm
ZXIoc291cEJ1ZmZlcikpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURh
dGEoKQoreworICAgIG1fc291cEJ1ZmZlci5jbGVhcigpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZl
cjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciogbmV3
Q29udGVudHMpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgU2hhcmVk
QnVmZmVyOjptYXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKCkKK3sKKyAgICBpZiAoIW1fc291cEJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFtX3NpemUpOworCisgICAgLy8g
SGFuZyBvbiB0byB0aGUgbV9zb3VwQnVmZmVyIHBvaW50ZXIgaW4gYSBsb2NhbCBwb2ludGVyIGFz
IGFwcGVuZCgpIHdpbGwgcmUtZW50ZXIgbWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCisgICAg
Ly8gYW5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGVhcmx5IHJldHVybiB3aGVuIGl0IGRvZXMu
CisgICAgR093blB0cjxTb3VwQnVmZmVyPiBzb3VwQnVmZmVyOworICAgIHNvdXBCdWZmZXIuc3dh
cChtX3NvdXBCdWZmZXIpOworCisgICAgYXBwZW5kKHNvdXBCdWZmZXItPmRhdGEsIHNvdXBCdWZm
ZXItPmxlbmd0aCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NvdXBCdWZmZXI7Cit9CisKK2NvbnN0IGNoYXIqIFNoYXJl
ZEJ1ZmZlcjo6cGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zb3VwQnVmZmVy
LT5kYXRhOworfQorCit1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YVNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NvdXBCdWZmZXItPmxlbmd0aDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5j
cHAKaW5kZXggYzc0OGM2NTgxY2YzN2YxMjZkMTA3ZWJjZTYyNDhlMzEwMmE2YTMxZC4uMWY1NTAw
YzQ1ZmQ0MzcwNGYwNTYzODUzNDA2NTA4YWY2YjhjM2JiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZHByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVt
dHlwZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzLmgiCkBAIC02MSwxOCArNjIsMjAgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVibGlj
IFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9h
ZENsaWVudCk7Ci0gICAgcHVibGljOgotICAgICAgICBEb3dubG9hZENsaWVudChXZWJLaXREb3du
bG9hZCopOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwg
ZG91YmxlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKFJl
c291cmNlSGFuZGxlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKFJlc291
cmNlSGFuZGxlKik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBXZWJLaXREb3dubG9hZCogbV9k
b3dubG9hZDsKKworcHVibGljOgorICAgIERvd25sb2FkQ2xpZW50KFdlYktpdERvd25sb2FkKik7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2RlZExlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1
YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKik7CisgICAgdmlydHVhbCB2b2lkIGNh
bm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXREb3du
bG9hZCogbV9kb3dubG9hZDsKIH07CiAKIHN0cnVjdCBfV2ViS2l0RG93bmxvYWRQcml2YXRlIHsK
QEAgLTk0MCw3ICs5NDMsMTggQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKIAogdm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgd2Via2l0X2Rv
d25sb2FkX3JlY2VpdmVkX2RhdGEobV9kb3dubG9hZCwgZGF0YSwgbGVuZ3RoKTsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGlu
dCBlbmNvZGVkTGVuZ3RoKQoreworICAgIC8vIFRoaXMgcGF0dGVybiBpcyBzdWdnZXN0ZWQgYnkg
U2hhcmVkQnVmZmVyLmguCisgICAgY29uc3QgY2hhciogc2VnbWVudDsKKyAgICB1bnNpZ25lZCBw
b3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoc2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAgIHdlYmtpdF9kb3dubG9hZF9yZWNl
aXZlZF9kYXRhKG1fZG93bmxvYWQsIHNlZ21lbnQsIGxlbmd0aCk7CisgICAgICAgIHBvc2l0aW9u
ICs9IGxlbmd0aDsKKyAgICB9CiB9CiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218734</attachid>
            <date>2013-12-09 01:02:23 -0800</date>
            <delta_ts>2013-12-09 04:40:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118598-20131209100221.patch</filename>
            <type>text/plain</type>
            <size>24534</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiM2Y2MDI1MGUxNzU5
ZjExNmNkODQ3NmQ0MjhkNWIzY2I3YzlkNi4uZDcyNjdjMGNkYzQ1YjkwY2QzYzIyNjg1ZGQ0YTky
NjkzZjIwYzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTEyLTA4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXVtTb3Vw
XSBVc2UgZGlkUmVjZWl2ZUJ1ZmZlciBpbnN0ZWFkIG9mIGRpZFJlY2VpdmVEYXRhCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBi
eSBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+IGFuZCBDc2FiYSBPc3p0cm9n
b27Dg8KhYyAgPG9zc3lAd2Via2l0Lm9yZz4uCisKKyAgICAgICAgU3dpdGNoIGZyb20gdXNpbmcg
ZGlkUmVjZWl2ZURhdGEgdG8gZGlkUmVjZWl2ZUJ1ZmZlciBmb3IgdGhlIFNvdXAgYmFja2VuZCBh
bmQKKyAgICAgICAgbGV0IFNoYXJlZEJ1ZmZlciB3cmFwIGEgU291cEJ1ZmZlci4gVGhpcyBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgb25seSBzdXBwb3J0
cyBnZXR0aW5nIGRhdGEgdmlhIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06IEFkZCB0aGUgbmV3IFNoYXJlZEJ1ZmZlclNvdXAuY3BwIGZpbGUgdG8gdGhlIGxp
c3QuCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1OaXguY21ha2U6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcDogV2Ugbm8gbG9uZ2VyIHVzZWQgdGhlIG5vLW9wIHZlcnNpb24gb2Yg
dGhlIHBsYXRmb3JtRm9vIG1ldGhvZHMuCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwOiAgVXNlIGRpZFJlY2VpdmVCdWZmZXIgaW5zdGVhZCBvZiBk
aWRSZWNlaXZlRGF0YS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaDogSGF2ZSBvbmx5IGEgbV9zb3VwQnVmZmVyIG1lbWJlciBpbnN0ZWFkIG9mIHRo
cmVlIHRvIG1hbmFnZSB0aGUgYnVmZmVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9HT3duUHRyU291cC5jcHA6IEFkZCBzdXBwb3J0IGZvciBTb3VwQnVmZmVyLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOiBBU1NFUlRf
Tk9UX1JFQUNIRUQgaGVyZSwgc2luY2UgaXQgc2hvdWxkIG5ldmVyIGJlCisgICAgICAgIGNhbGxl
ZCBub3cuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOiBIYW5kbGUgdGhpcyBjYWxsIHByb3Blcmx5LgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmVuc3VyZVJlYWRCdWZmZXIpOiBOb3cgd2UgcGFja2FnZSB1cCBv
dXIgYnVmZmVyIGludG8gYSBTb3VwQnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6cmVkaXJlY3RT
a2lwQ2FsbGJhY2spOiBVc2UgdGhlIG5ldyBtX3NvdXBCdWZmZXIgbWVtYmVyLgorICAgICAgICAo
V2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2spOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OnNlbmRSZXF1ZXN0Q2FsbGJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJT
b3VwLmNwcDogQWRkZWQuCisKIDIwMTMtMTItMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01TRV0gQnJpbmcgZW5kLW9mLXN0cmVhbSBhbGdvcml0aG0gc2Vj
dGlvbiB1cCB0byBjdXJyZW50IHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2Q3NmMyNDAyYzNm
MzIxZmI3MGRmM2JjMTZmNWJhNGM0NTMwNzZiMC4uMTA2Y2RkOTgxYjMxMTBhNDcwMTdlMzYyZjc0
MDY5MDY5YjY1NjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTEy
LTA4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBb
V0syXVtTb3VwXSBVc2UgZGlkUmVjZWl2ZUJ1ZmZlciBpbnN0ZWFkIG9mIGRpZFJlY2VpdmVEYXRh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1OTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5h
bCBwYXRjaCBieSBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+IGFuZCBDc2Fi
YSBPc3p0cm9nb27Dg8KhYyAgPG9zc3lAd2Via2l0Lm9yZz4uCisKKyAgICAgICAgU3dpdGNoIGZy
b20gdXNpbmcgZGlkUmVjZWl2ZURhdGEgdG8gZGlkUmVjZWl2ZUJ1ZmZlciBmb3IgdGhlIFNvdXAg
YmFja2VuZCBhbmQKKyAgICAgICAgbGV0IFNoYXJlZEJ1ZmZlciB3cmFwIGEgU291cEJ1ZmZlci4g
VGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgb25s
eSBzdXBwb3J0cyBnZXR0aW5nIGRhdGEgdmlhIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHA6CisgICAgICAgIChEb3dubG9hZENsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOiBSZXBsYWNlIHdpdGggQVNTRVJUX05PVF9SRUFDSEVELgorICAgICAgICAoRG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOiBVc2UgdGhpcyB0byBwcm9jZXNzIGluY29t
aW5nIGRhdGEuCisKIDIwMTMtMTItMDcgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9t
ZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4cGVjdGF0aW9uIGZvbGxvd2luZyAxNjAy
MjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2YjQ1YjkzNTZmMmQ5ZGZkOWVk
ZWRmNzg4ZTdiMTMyN2Y4YzViOThhLi40YjJhZDE5YjkzYzRiNDQ1YmFmMmNlNmRlNGVhMjA2NmU2
NTc0ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU5MzgsNiArNTkzOCw3
IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDFlOTk1ODg3NmYwODM5MjY3MDk2YTA2MjQ0NjYxYzcwNmI3NjI5MTMu
LjZhZTBlZjY5NDk2Y2I4OGFlZDE2OTQwOTJkN2ZlNGUzYjU2MGExZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xNzEsNiArMTcxLDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAogICAgIHBsYXRmb3Jt
L3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAogCisgICAgcGxhdGZvcm0vc291cC9TaGFyZWRC
dWZmZXJTb3VwLmNwcAorCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAKICAgICBw
bGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA1NTc3NzQyYTVhMjU5MWQ0MmQ2YjEzZmVjODRmNGYx
MGU3M2Q0NjA2Li4zMjk5MDA5YWFjZmFhMWI2NTdkNTFmMWM0OGIwM2UwOTI2YjBjZmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjAzLDYgKzIwMyw4IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50U291cC5j
cHAKIAorICAgIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKKwogICAgIHBsYXRm
b3JtL3RleHQvTG9jYWxlSUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3JJQ1UuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU5peC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTml4LmNtYWtlCmluZGV4IDFkNTI3MDBiZDM3ODc0ODc4ZGMxNWU2ZjYzNDI1YzkxZDViOWNm
ZmIuLmFiNmZlZmVlNzcxNjMwNTM1YTc1Yzc4MWQzNzc3Njc4YmYyYTgzODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTml4LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTml4LmNtYWtlCkBAIC03OSw2ICs3OSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9T
aGFyZWRCdWZmZXJHdGsuY3BwCiAKKyAgICBwbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmVyU291cC5j
cHAKKwogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcAogCiAgICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMzBlMjRmYjcyOGFmNTE0ZjIw
MGRkOTc3MzFmYzFkNzQ0NDkxNzcxNy4uZjg0OGNlNjAwNmFjZjFlZDkzM2Y2Yzc2NWY4NjA3N2Nl
NzVhMzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0y
MzEsNyArMjMxLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVB1cmdlYWJsZUJ1ZmZlcigp
IGNvbnN0CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgY2hhciogZGVzdGluYXRpb247
CisgICAgY2hhciogZGVzdGluYXRpb24gPSAwOwogICAgIG1fcHVyZ2VhYmxlQnVmZmVyID0gUHVy
Z2VhYmxlQnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKG1fc2l6ZSwgZGVzdGluYXRpb24pOwog
ICAgIGlmICghbV9wdXJnZWFibGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1NCw3ICs0
NTQsNyBAQCB1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBz
b21lRGF0YSwgdW5zaWduZWQgcG9zaXRpb24pIGNvbgogI2VuZGlmCiB9CiAKLSNpZiAhVVNFKENG
KQorI2lmICFVU0UoQ0YpICYmICFVU0UoU09VUCkKIAogaW5saW5lIHZvaWQgU2hhcmVkQnVmZmVy
OjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCmluZGV4IDNjM2RkYTZkNDFjNTkyMDE4MjZkZDkyNmMyNzgwZDM1MDE5YjAxM2IuLjQ5Y2Qx
OTI4MjkzOWM2ZWE0ODZhOTExNDUyZjIzNmRkNTIzMGRiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiR093blB0clNvdXAu
aCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU0RhdGE7CiAjZW5k
aWYKQEAgLTg3LDYgKzkxLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHdyYXBDRkRhdGEoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCisjaWYgVVNFKFNPVVAp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB3cmFwU291cEJ1ZmZlcihTb3Vw
QnVmZmVyKik7CisjZW5kaWYKKwogICAgIC8vIENhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGZv
cmNlIGludGVybmFsIHNlZ21lbnRlZCBidWZmZXJzCiAgICAgLy8gdG8gYmUgbWVyZ2VkIGludG8g
YSBmbGF0IGJ1ZmZlci4gVXNlIGdldFNvbWVEYXRhKCkgd2hlbmV2ZXIgcG9zc2libGUKICAgICAv
LyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgpAQCAtMTk3LDYgKzIwNSwxMSBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IG1fY2ZEYXRhOwogI2VuZGlmCisKKyNpZiBVU0UoU09VUCkKKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoU291cEJ1ZmZlciopOworICAgIEdPd25QdHI8U291cEJ1ZmZlcj4gbV9zb3Vw
QnVmZmVyOworI2VuZGlmCiB9OwogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKaW5kZXggZDk4YTM1ZWZiODBhM2E3OWY3ZDk3NGE2NjFkNzViMGM5MTYwYzZlNi4uMmE3
YmJmZjg3MTNjMGE3YTAxNDcxNzBjNWFkMjg3MGU2MzQxYTUwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNp
bmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KQEAgLTk5LDYgKzEwMCw3IEBA
IGNsYXNzIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFu
ZGxlQ2xpZW50LCBwdWJsaWMgU3RyZWFtCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZExlbmd0aCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmlu
aXNoVGltZSovKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2Vk
KFJlc291cmNlSGFuZGxlKik7CkBAIC0xMTE3LDcgKzExMTksMTggQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmUKIAogdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQp
CiB7Ci0gICAgaGFuZGxlRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCk7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyLCBpbnQgLyogZW5jb2RlZExlbmd0aCAqLykKK3sKKyAgICAvLyBUaGlzIHBhdHRlcm4g
aXMgc3VnZ2VzdGVkIGJ5IFNoYXJlZEJ1ZmZlci5oLgorICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQ7
CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGgg
PSBidWZmZXItPmdldFNvbWVEYXRhKHNlZ21lbnQsIHBvc2l0aW9uKSkgeworICAgICAgICBoYW5k
bGVEYXRhUmVjZWl2ZWQoc2VnbWVudCwgbGVuZ3RoKTsKKyAgICAgICAgcG9zaXRpb24gKz0gbGVu
Z3RoOworICAgIH0KIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5k
ZXggNzVlMjI3YjY2NzI5ZTQwZmIyOTVjMTZhNWFlZTE1YjcwNWYwNzBkMi4uMzYxY2RhYThmNzFm
YmVlNjk1NWExNjViN2UwMTA0YmNjOGQ3NTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEwNiw4
ICsxMDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAg
ICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fcmVhZEJ1ZmZl
clB0cigwKQotICAgICAgICAgICAgLCBtX3JlYWRCdWZmZXJTaXplKDApCiAgICAgICAgICAgICAs
IG1fYm9keVNpemUoMCkKICAgICAgICAgICAgICwgbV9ib2R5RGF0YVNlbnQoMCkKICAgICAgICAg
ICAgICwgbV9yZWRpcmVjdENvdW50KDApCkBAIC0xOTYsOSArMTk0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKICAg
ICAgICAgR1JlZlB0cjxHQXN5bmNSZXN1bHQ+IG1fZGVmZXJyZWRSZXN1bHQ7CiAgICAgICAgIEdS
ZWZQdHI8R1NvdXJjZT4gbV90aW1lb3V0U291cmNlOwotICAgICAgICBHT3duUHRyPGNoYXI+IG1f
ZGVmYXVsdFJlYWRCdWZmZXI7Ci0gICAgICAgIGNoYXIqIG1fcmVhZEJ1ZmZlclB0cjsKLSAgICAg
ICAgc2l6ZV90IG1fcmVhZEJ1ZmZlclNpemU7CisgICAgICAgIEdPd25QdHI8U291cEJ1ZmZlcj4g
bV9zb3VwQnVmZmVyOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1fYm9keVNpemU7CiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbV9ib2R5RGF0YVNlbnQ7CiAgICAgICAgIFNvdXBTZXNzaW9uKiBzb3Vw
U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0dPd25QdHJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9HT3duUHRyU291cC5jcHAKaW5kZXggZTQ5NjcwNzliODM4YTlkYjU3MmRkZmYzYmFhZmE4M2Vl
ZDdlMGNkMC4uOWJiNDRiM2QzYTFkM2QzNzRlYzcwNGVjYzMzYjIzYmI3YmEyNTcwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAu
Y3BwCkBAIC00Miw0ICs0MiwxMCBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291
cE1lc3NhZ2VIZWFkZXJzPihTb3VwTWVzc2FnZUhlYWRlcnMqIHB0cikKICAgICAgICAgc291cF9t
ZXNzYWdlX2hlYWRlcnNfZnJlZShwdHIpOwogfQogCit0ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25l
ZEdQdHI8U291cEJ1ZmZlcj4oU291cEJ1ZmZlciogcHRyKQoreworICAgIGlmIChwdHIpCisgICAg
ICAgIHNvdXBfYnVmZmVyX2ZyZWUocHRyKTsKIH0KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oCmlu
ZGV4IDlmZTNhOGU3NzAyYTc5Y2I2NjFhZWY5ODE3MTBmMzhkNzk2OGYwYmUuLmRlMjUzYmRiZDdj
M2JiMDIwMDE1NzRmYWNhYzM4YjUxYjBmYWFmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5oCkBAIC0yMCwxNyArMjAsMTcgQEAK
ICNpZm5kZWYgR093blB0clNvdXBfaAogI2RlZmluZSBHT3duUHRyU291cF9oCiAKKy8vIFdlIG5l
ZWQgdG8gaW5jbHVkZSBsaWJzb3VwIGhlYWRlcnMgaGVyZSBiZWNhdXNlIHRoZSB3YXkgdGhhdCBT
b3VwQnVmZmVyCisvLyBpcyBkZWZpbmVkIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggZm9yd2FyZCBk
ZWNsYXJhdGlvbi4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CiAKLXR5cGVkZWYgc3RydWN0IF9Tb3VwVVJJIFNvdXBVUkk7Ci10eXBl
ZGVmIHN0cnVjdCBfU291cENvb2tpZSBTb3VwQ29va2llOwotdHlwZWRlZiBzdHJ1Y3QgU291cE1l
c3NhZ2VIZWFkZXJzIFNvdXBNZXNzYWdlSGVhZGVyczsKLQogbmFtZXNwYWNlIFdURiB7CiAKIHRl
bXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBVUkk+KFNvdXBVUkkqIHB0cik7CiB0ZW1w
bGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQ29va2llPihTb3VwQ29va2llKiBwdHIpOwog
dGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cE1lc3NhZ2VIZWFkZXJzPihTb3VwTWVz
c2FnZUhlYWRlcnMqKTsKK3RlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBCdWZmZXI+
KFNvdXBCdWZmZXIqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IGMzMmIwMWNj
YWJhM2RlMjIxNjhjZjcxYjhhZTUwYThmZGQ1Y2MyYjQuLmI0ODAwNDQ4NmJlNDJiZTk5ODQ3ZWUx
YmQwYjIxNjViODVjYWUwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIGlubGluZSBzdGF0aWMgdm9pZCBzb3VwTG9nUHJpbnRlcihTb3VwTG9nZ2VyKiwgU291cExv
Z2dlckxvZ0xldmVsLCBjaGFyIGRpcmVjdGlvCiB9CiAKIHN0YXRpYyBib29sIGxvYWRpbmdTeW5j
aHJvbm91c1JlcXVlc3QgPSBmYWxzZTsKLXN0YXRpYyBjb25zdCBzaXplX3QgZGVmYXVsdFJlYWRC
dWZmZXJTaXplID0gODE5MjsKK3N0YXRpYyBjb25zdCBzaXplX3QgZ0RlZmF1bHRSZWFkQnVmZmVy
U2l6ZSA9IDgxOTI7CiAKIGNsYXNzIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciA6IHB1YmxpYyBS
ZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZVN5
bmNocm9ub3VzTG9hZGVyKTsKQEAgLTE0Niw3ICsxNDYsMTggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgaW50KQogICAgIHsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIsIGludCAvKiBlbmNvZGVkTGVuZ3RoICovKQorICAgIHsKKyAgICAg
ICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1Z2dlc3RlZCBieSBTaGFyZWRCdWZmZXIuaC4KKyAgICAg
ICAgY29uc3QgY2hhciogc2VnbWVudDsKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOwor
ICAgICAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShzZWdt
ZW50LCBwb3NpdGlvbikpIHsKKyAgICAgICAgICAgIG1fZGF0YS5hcHBlbmQoc2VnbWVudCwgbGVu
Z3RoKTsKKyAgICAgICAgICAgIHBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91
YmxlKQpAQCAtMzAxLDIxICszMTIsMjAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZW5zdXJlUmVh
ZEJ1ZmZlcigpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFs
KCk7CiAKKyAgICBpZiAoZC0+bV9zb3VwQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBOb24tTmV0d29ya1Byb2Nlc3MgY2xpZW50cyBhcmUgYWJsZSB0byBnaXZlIGEgYnVmZmVyIHRv
IHRoZSBSZXNvdXJjZUhhbmRsZSB0byBhdm9pZCBleHBlbnNpdmUgY29waWVzLiBJZgorICAgIC8v
IHdlIGRvIGdldCBhIGJ1ZmZlciBmcm9tIHRoZSBjbGllbnQsIHdlIHdhbnQgdGhlIGNsaWVudCB0
byBmcmVlIGl0LCBzbyB3ZSBjcmVhdGUgdGhlIHNvdXAgYnVmZmVyIHdpdGgKKyAgICAvLyBTT1VQ
X01FTU9SWV9URU1QT1JBUlkuCiAgICAgc2l6ZV90IGJ1ZmZlclNpemU7Ci0gICAgY2hhciogYnVm
ZmVyUHRyID0gY2xpZW50KCktPmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihkZWZhdWx0UmVhZEJ1ZmZl
clNpemUsIGJ1ZmZlclNpemUpOwotICAgIGlmIChidWZmZXJQdHIpIHsKLSAgICAgICAgZC0+bV9k
ZWZhdWx0UmVhZEJ1ZmZlci5jbGVhcigpOwotICAgICAgICBkLT5tX3JlYWRCdWZmZXJQdHIgPSBi
dWZmZXJQdHI7Ci0gICAgICAgIGQtPm1fcmVhZEJ1ZmZlclNpemUgPSBidWZmZXJTaXplOwotICAg
IH0gZWxzZSBpZiAoIWQtPm1fZGVmYXVsdFJlYWRCdWZmZXIpIHsKLSAgICAgICAgZC0+bV9kZWZh
dWx0UmVhZEJ1ZmZlci5zZXQoc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9jKGRlZmF1bHRSZWFk
QnVmZmVyU2l6ZSkpKTsKLSAgICAgICAgZC0+bV9yZWFkQnVmZmVyUHRyID0gZC0+bV9kZWZhdWx0
UmVhZEJ1ZmZlci5nZXQoKTsKLSAgICAgICAgZC0+bV9yZWFkQnVmZmVyU2l6ZSA9IGRlZmF1bHRS
ZWFkQnVmZmVyU2l6ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgZC0+bV9yZWFkQnVmZmVyUHRyID0g
ZC0+bV9kZWZhdWx0UmVhZEJ1ZmZlci5nZXQoKTsKKyAgICBjaGFyKiBidWZmZXJGcm9tQ2xpZW50
ID0gY2xpZW50KCktPmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihnRGVmYXVsdFJlYWRCdWZmZXJTaXpl
LCBidWZmZXJTaXplKTsKKyAgICBpZiAoYnVmZmVyRnJvbUNsaWVudCkKKyAgICAgICAgZC0+bV9z
b3VwQnVmZmVyLnNldChzb3VwX2J1ZmZlcl9uZXcoU09VUF9NRU1PUllfVEVNUE9SQVJZLCBidWZm
ZXJGcm9tQ2xpZW50LCBidWZmZXJTaXplKSk7CisgICAgZWxzZQorICAgICAgICBkLT5tX3NvdXBC
dWZmZXIuc2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9UQUtFLCBzdGF0aWNfY2FzdDxj
aGFyKj4oZ19tYWxsb2MoZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSkpLCBnRGVmYXVsdFJlYWRCdWZm
ZXJTaXplKSk7CiAKLSAgICBBU1NFUlQoZC0+bV9yZWFkQnVmZmVyUHRyKTsKLSAgICBBU1NFUlQo
ZC0+bV9yZWFkQnVmZmVyU2l6ZSk7CisgICAgQVNTRVJUKGQtPm1fc291cEJ1ZmZlcik7CiB9CiAK
IHN0YXRpYyBib29sIGlzQXV0aGVudGljYXRpb25GYWlsdXJlU3RhdHVzQ29kZShpbnQgaHR0cFN0
YXR1c0NvZGUpCkBAIC01MjQsNyArNTM0LDcgQEAgc3RhdGljIHZvaWQgcmVkaXJlY3RTa2lwQ2Fs
bGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGQKICAg
ICB9CiAKICAgICBpZiAoYnl0ZXNTa2lwcGVkID4gMCkgewotICAgICAgICBnX2lucHV0X3N0cmVh
bV9za2lwX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGRlZmF1bHRSZWFkQnVmZmVyU2l6
ZSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICBnX2lucHV0X3N0cmVhbV9za2lwX2FzeW5j
KGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUsIEdfUFJJT1JJ
VFlfREVGQVVMVCwKICAgICAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlZGlyZWN0
U2tpcENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NTU3LDYgKzU2Nyw3IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluCiAgICAgZC0+bV9pbnB1dFN0
cmVhbS5jbGVhcigpOwogICAgIGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uY2xlYXIoKTsKICAg
ICBkLT5tX2NhbmNlbGxhYmxlLmNsZWFyKCk7CisgICAgZC0+bV9zb3VwQnVmZmVyLmNsZWFyKCk7
CiAKICAgICBpZiAoZC0+bV9zb3VwTWVzc2FnZSkgewogICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X21hdGNoZWQoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSwgR19TSUdOQUxfTUFU
Q0hfREFUQSwKQEAgLTU2NSwxMSArNTc2LDYgQEAgc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1
ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgaXNEZXN0cm95aW4KICAg
ICAgICAgZC0+bV9zb3VwTWVzc2FnZS5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChkLT5tX3Jl
YWRCdWZmZXJQdHIpCi0gICAgICAgIGQtPm1fcmVhZEJ1ZmZlclB0ciA9IDA7Ci0gICAgaWYgKCFk
LT5tX2RlZmF1bHRSZWFkQnVmZmVyKQotICAgICAgICBkLT5tX3JlYWRCdWZmZXJTaXplID0gMDsK
LQogICAgIGlmIChkLT5tX3RpbWVvdXRTb3VyY2UpIHsKICAgICAgICAgZ19zb3VyY2VfZGVzdHJv
eShkLT5tX3RpbWVvdXRTb3VyY2UuZ2V0KCkpOwogICAgICAgICBkLT5tX3RpbWVvdXRTb3VyY2Uu
Y2xlYXIoKTsKQEAgLTYzOSw3ICs2NDUsNyBAQCBzdGF0aWMgdm9pZCBuZXh0TXVsdGlwYXJ0UmVz
cG9uc2VQYXJ0Q2FsbGJhY2soR09iamVjdCogLypzb3VyY2UqLywgR0FzeW5jUmVzdWx0KgogICAg
IH0KIAogICAgIGhhbmRsZS0+ZW5zdXJlUmVhZEJ1ZmZlcigpOwotICAgIGdfaW5wdXRfc3RyZWFt
X3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9yZWFkQnVmZmVyUHRyLCBk
LT5tX3JlYWRCdWZmZXJTaXplLAorICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9p
bnB1dFN0cmVhbS5nZXQoKSwgY29uc3RfY2FzdDxjaGFyKj4oZC0+bV9zb3VwQnVmZmVyLT5kYXRh
KSwgZC0+bV9zb3VwQnVmZmVyLT5sZW5ndGgsCiAgICAgICAgIEdfUFJJT1JJVFlfREVGQVVMVCwg
ZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQog
CkBAIC02NjksMTIgKzY3NSwxMCBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdP
YmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCghZC0+bV9yZWFkQnVmZmVyUHRyKTsKLQogICAgIGlm
IChzb3VwTWVzc2FnZSkgewogICAgICAgICBpZiAoU09VUF9TVEFUVVNfSVNfUkVESVJFQ1RJT04o
c291cE1lc3NhZ2UtPnN0YXR1c19jb2RlKSAmJiBzaG91bGRSZWRpcmVjdChoYW5kbGUuZ2V0KCkp
KSB7CiAgICAgICAgICAgICBkLT5tX2lucHV0U3RyZWFtID0gaW5wdXRTdHJlYW07Ci0gICAgICAg
ICAgICBnX2lucHV0X3N0cmVhbV9za2lwX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGRl
ZmF1bHRSZWFkQnVmZmVyU2l6ZSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICAgICAgZ19p
bnB1dF9zdHJlYW1fc2tpcF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBnRGVmYXVsdFJl
YWRCdWZmZXJTaXplLCBHX1BSSU9SSVRZX0RFRkFVTFQsCiAgICAgICAgICAgICAgICAgZC0+bV9j
YW5jZWxsYWJsZS5nZXQoKSwgcmVkaXJlY3RTa2lwQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTcxNSw3ICs3MTksNyBAQCBzdGF0aWMg
dm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
Z3BvaW50ZXIgZGF0YSkKICAgICBkLT5tX2lucHV0U3RyZWFtID0gaW5wdXRTdHJlYW07CiAKICAg
ICBoYW5kbGUtPmVuc3VyZVJlYWRCdWZmZXIoKTsKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2Fz
eW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fcmVhZEJ1ZmZlclB0ciwgZC0+bV9yZWFk
QnVmZmVyU2l6ZSwKKyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJl
YW0uZ2V0KCksIGNvbnN0X2Nhc3Q8Y2hhcio+KGQtPm1fc291cEJ1ZmZlci0+ZGF0YSksIGQtPm1f
c291cEJ1ZmZlci0+bGVuZ3RoLAogICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtMTMz
MiwxNiArMTMzNiwyMCBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3lu
Y1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgLy8gSXQncyBtYW5kYXRv
cnkgdG8gaGF2ZSBzZW50IGEgcmVzcG9uc2UgYmVmb3JlIHNlbmRpbmcgZGF0YQogICAgIEFTU0VS
VCghZC0+bV9yZXNwb25zZS5pc051bGwoKSk7CiAKLSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlRGF0YShoYW5kbGUuZ2V0KCksIGQtPm1fcmVhZEJ1ZmZlclB0ciwgYnl0ZXNSZWFkLCBi
eXRlc1JlYWQpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2VuZCB0aGUgZW5jb2RlZCBkYXRh
IHNpemUgaGVyZSBhbmQgbm90IHRoZSBkZWNvZGVkIHNpemUKKyAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTQxMAorICAgIEFTU0VSVChkLT5tX3Nv
dXBCdWZmZXIpOworICAgIGQtPm1fc291cEJ1ZmZlci0+bGVuZ3RoID0gYnl0ZXNSZWFkOyAvLyBU
aGUgYnVmZmVyIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4g
U2hhcmVkQnVmZmVyIGxvb2tzIGF0IHRoZSBsZW5ndGggcHJvcGVydHkuCisgICAgaGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUuZ2V0KCksIFNoYXJlZEJ1ZmZlcjo6d3Jh
cFNvdXBCdWZmZXIoZC0+bV9zb3VwQnVmZmVyLnJlbGVhc2UoKSksIGJ5dGVzUmVhZCk7CiAKLSAg
ICAvLyBkaWRSZWNlaXZlRGF0YSBtYXkgY2FuY2VsIHRoZSBsb2FkLCB3aGljaCBtYXkgcmVsZWFz
ZSB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgLy8gZGlkUmVjZWl2ZUJ1ZmZlciBtYXkgY2FuY2Vs
IHRoZSBsb2FkLCB3aGljaCBtYXkgcmVsZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UuCiAgICAgaWYg
KGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpIHsKICAgICAgICAgY2xlYW51cFNvdXBS
ZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBoYW5kbGUtPmVuc3VyZVJlYWRCdWZmZXIoKTsKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFk
X2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fcmVhZEJ1ZmZlclB0ciwgZC0+bV9y
ZWFkQnVmZmVyU2l6ZSwgR19QUklPUklUWV9ERUZBVUxULAorICAgIGdfaW5wdXRfc3RyZWFtX3Jl
YWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgY29uc3RfY2FzdDxjaGFyKj4oZC0+bV9z
b3VwQnVmZmVyLT5kYXRhKSwgZC0+bV9zb3VwQnVmZmVyLT5sZW5ndGgsIEdfUFJJT1JJVFlfREVG
QVVMVCwKICAgICAgICAgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwgcmVhZENhbGxiYWNrLCBoYW5k
bGUuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3Vw
L1NoYXJlZEJ1ZmZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFy
ZWRCdWZmZXJTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjU1NzM4MjY1ZDM5YmQyNjVlOGNjNDVlOTE2
NjQyYjY0NTI0NGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENvbXBhbnkgMTAwIEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKwor
I2luY2x1ZGUgIlB1cmdlYWJsZUJ1ZmZlci5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFNvdXBC
dWZmZXIqIHNvdXBCdWZmZXIpCisgICAgOiBtX3NpemUoMCkKK3sKKyAgICBBU1NFUlQoc291cEJ1
ZmZlcik7CisgICAgbV9zb3VwQnVmZmVyLnNldChzb3VwQnVmZmVyKTsKK30KKworUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcFNvdXBCdWZmZXIoU291cEJ1ZmZlciog
c291cEJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihzb3Vw
QnVmZmVyKSk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCit7
CisgICAgbV9zb3VwQnVmZmVyLmNsZWFyKCk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyOjp0cnlS
ZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyKiBuZXdDb250ZW50
cykKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6
Om1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQoreworICAgIGlmICghbV9zb3VwQnVmZmVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIW1fc2l6ZSk7CisKKyAgICAvLyBIYW5nIG9u
IHRvIHRoZSBtX3NvdXBCdWZmZXIgcG9pbnRlciBpbiBhIGxvY2FsIHBvaW50ZXIgYXMgYXBwZW5k
KCkgd2lsbCByZS1lbnRlciBtYXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKCkKKyAgICAvLyBhbmQg
d2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gZWFybHkgcmV0dXJuIHdoZW4gaXQgZG9lcy4KKyAgICBH
T3duUHRyPFNvdXBCdWZmZXI+IHNvdXBCdWZmZXI7CisgICAgc291cEJ1ZmZlci5zd2FwKG1fc291
cEJ1ZmZlcik7CisKKyAgICBhcHBlbmQoc291cEJ1ZmZlci0+ZGF0YSwgc291cEJ1ZmZlci0+bGVu
Z3RoKTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6Omhhc1BsYXRmb3JtRGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc291cEJ1ZmZlcjsKK30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVy
OjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3NvdXBCdWZmZXItPmRhdGE7
Cit9CisKK3Vuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6cGxhdGZvcm1EYXRhU2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc291cEJ1ZmZlci0+bGVuZ3RoOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcAppbmRl
eCBjNzQ4YzY1ODFjZjM3ZjEyNmQxMDdlYmNlNjI0OGUzMTAyYTZhMzFkLi4xZjU1MDBjNDVmZDQz
NzA0ZjA1NjM4NTM0MDY1MDhhZjZiOGMzYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIndlYmtpdGRvd25sb2FkcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGVudW10eXBlcy5o
IgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHMuaCIKQEAgLTYxLDE4ICs2MiwyMCBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkQ2xpZW50
KTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERvd25sb2FkQ2xpZW50KFdlYktpdERvd25sb2FkKik7
Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCwgaW50KTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5k
bGUqKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFdlYktpdERvd25sb2FkKiBtX2Rvd25sb2Fk
OworCitwdWJsaWM6CisgICAgRG93bmxvYWRDbGllbnQoV2ViS2l0RG93bmxvYWQqKTsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCwgaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIsIGludCBlbmNvZGVkTGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdmlydHVhbCB2b2lk
IHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hv
d1VSTChSZXNvdXJjZUhhbmRsZSopOworCitwcml2YXRlOgorICAgIFdlYktpdERvd25sb2FkKiBt
X2Rvd25sb2FkOwogfTsKIAogc3RydWN0IF9XZWJLaXREb3dubG9hZFByaXZhdGUgewpAQCAtOTQw
LDcgKzk0MywxOCBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogCiB2b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICB3ZWJraXRfZG93bmxvYWRf
cmVjZWl2ZWRfZGF0YShtX2Rvd25sb2FkLCBkYXRhLCBsZW5ndGgpOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgaW50IGVuY29k
ZWRMZW5ndGgpCit7CisgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1Z2dlc3RlZCBieSBTaGFyZWRC
dWZmZXIuaC4KKyAgICBjb25zdCBjaGFyKiBzZWdtZW50OworICAgIHVuc2lnbmVkIHBvc2l0aW9u
ID0gMDsKKyAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShz
ZWdtZW50LCBwb3NpdGlvbikpIHsKKyAgICAgICAgd2Via2l0X2Rvd25sb2FkX3JlY2VpdmVkX2Rh
dGEobV9kb3dubG9hZCwgc2VnbWVudCwgbGVuZ3RoKTsKKyAgICAgICAgcG9zaXRpb24gKz0gbGVu
Z3RoOworICAgIH0KIH0KIAogdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkK
</data>
<flag name="review"
          id="242230"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>