<?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>88087</bug_id>
          
          <creation_ts>2012-06-01 06:38:20 -0700</creation_ts>
          <short_desc>[SOUP] WebSoupRequestManager should handle loading errors and zero-length replies</short_desc>
          <delta_ts>2012-06-07 02:11:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84133</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>639282</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-01 06:38:20 -0700</bug_when>
    <thetext>When an error happens while loading the resource, the WebSoupRequestManager doesn&apos;t notice it and the ui process keeps reading more data from the input stream. Zero-length replies are considered errors by WebSoupRequestManager in this moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639290</commentid>
    <comment_count>1</comment_count>
      <attachid>145292</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-01 06:48:28 -0700</bug_when>
    <thetext>Created attachment 145292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642550</commentid>
    <comment_count>2</comment_count>
      <attachid>145292</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-06-06 09:48:26 -0700</bug_when>
    <thetext>Comment on attachment 145292
Patch

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

&gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:50
&gt; +        // If the struct contains a null request is because the request failed.

Nit: request is -&gt; request, it is

&gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:65
&gt; +    GSimpleAsyncResult* releaseResult()

It would make sense for this to return a GRefPtr to avoid a leak.

&gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:147
&gt; +    if (!data)
&gt; +        return;

Above you ASSERT data and here you return. Is there a situation where you expect data to be null here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643247</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-06 23:12:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 145292 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145292&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:50
&gt; &gt; +        // If the struct contains a null request is because the request failed.
&gt; 
&gt; Nit: request is -&gt; request, it is

Ok.

&gt; &gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:65
&gt; &gt; +    GSimpleAsyncResult* releaseResult()
&gt; 
&gt; It would make sense for this to return a GRefPtr to avoid a leak.

The only user of that method already adopts the ref, so it&apos;s not leaked.

&gt; &gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:147
&gt; &gt; +    if (!data)
&gt; &gt; +        return;
&gt; 
&gt; Above you ASSERT data and here you return. Is there a situation where you expect data to be null here?

Yes, it&apos;s unlikely but possible. If there are more than one chunk messages sent by the UI process and the first one fails. The data is removed from the map, and a message is sent to the UI process to stop sending more chunk messages. The next chunk message already sent will be silently ignored if there&apos;s no data for for it in the request map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643251</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-06-06 23:30:55 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; &gt; It would make sense for this to return a GRefPtr to avoid a leak.
&gt; The only user of that method already adopts the ref, so it&apos;s not leaked.

Returning a RefPtr here would make it less likely for someone to misuse the new reference.
 
&gt; Yes, it&apos;s unlikely but possible. If there are more than one chunk messages sent by the UI process and the first one fails. The data is removed from the map, and a message is sent to the UI process to stop sending more chunk messages. The next chunk message already sent will be silently ignored if there&apos;s no data for for it in the request map.

That makes sense. Do you mind putting that in a comment before the early return?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643256</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-06 23:34:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; &gt; It would make sense for this to return a GRefPtr to avoid a leak.
&gt; &gt; The only user of that method already adopts the ref, so it&apos;s not leaked.
&gt; 
&gt; Returning a RefPtr here would make it less likely for someone to misuse the new reference.

fair enough.

&gt; &gt; Yes, it&apos;s unlikely but possible. If there are more than one chunk messages sent by the UI process and the first one fails. The data is removed from the map, and a message is sent to the UI process to stop sending more chunk messages. The next chunk message already sent will be silently ignored if there&apos;s no data for for it in the request map.
&gt; 
&gt; That makes sense. Do you mind putting that in a comment before the early return?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643342</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-07 02:11:29 -0700</bug_when>
    <thetext>Committed r119695: &lt;http://trac.webkit.org/changeset/119695&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145292</attachid>
            <date>2012-06-01 06:48:28 -0700</date>
            <delta_ts>2012-06-06 09:48:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-soup-request-fixes.diff</filename>
            <type>text/plain</type>
            <size>17879</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwNTcwODEyLi45OGQ3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDYtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBXZWJTb3VwUmVxdWVzdE1hbmFnZXIgc2hvdWxkIGhhbmRsZSBs
b2FkaW5nIGVycm9ycyBhbmQgemVyby1sZW5ndGggcmVwbGllcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgwODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cFJlcXVlc3RNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5h
Z2VyQ2xpZW50OjpkaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCk6CisgICAgICAgIENhbGwgZGlkRmFp
bFRvTG9hZFVSSVJlcXVlc3QgaW4gdGhlIGNsaWVudCBpZiBwcmVzZW50LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5KToKKyAgICAgICAgSW5pdGlhbGl6ZSBtX2xvYWRGYWlsZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEpOgor
ICAgICAgICBEb24ndCBzZW5kIG1vcmUgZGF0YSB0byB0aGUgd2ViIHByb2Nlc3MgaWYgdGhlIHJl
c291cmNlIGZhaWxlZCB0bworICAgICAgICBsb2FkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkRmFpbFRvTG9hZFVSSVJlcXVlc3QpOiBTZXQKKyAgICAg
ICAgbV9sb2FkRmFpbGVkIGFuZCBub3RpZml5IHRoZSBjbGllbnQgY2FsbGluZyBkaWRGYWlsVG9M
b2FkVVJJUmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGQKKyAgICAgICAgRGlkRmFpbFRvTG9hZFVSSVJlcXVl
c3QgbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljLmNwcDoKKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk6
IFBhc3MgdGhlIGNhbmNlbGxhYmxlIHRvIHRoZQorICAgICAgICBXZWJTb3VwUmVxdWVzdE1hbmFn
ZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhOjpXZWJTb3VwUmVxdWVz
dEFzeW5jRGF0YSk6IEhlbHBlcgorICAgICAgICBzdHJ1Y3QgdG8gc2F2ZSByZXF1ZXN0cy4KKyAg
ICAgICAgKFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKTogQWRkIGEgd2VhayBwb2ludGVyIHRvIGlu
dmFsaWRhdGUgdGhlCisgICAgICAgIHJlcXVlc3Qgd2hlbiBpdCdzIGRlc3Ryb3llZCBiZWZvcmUg
dGhlIG9wZXJhdGlvbiBoYXMgZmluaXNoZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1
ZXN0QXN5bmNEYXRhOjp+V2ViU291cFJlcXVlc3RBc3luY0RhdGEpOgorICAgICAgICBSZW1vdmUg
dGhlIHdlYWsgcG9pbnRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0Rh
dGE6OnJlcXVlc3RGYWlsZWQpOiBSZXR1cm4gd2h0aGVyCisgICAgICAgIHRoZSByZXF1ZXN0IGZh
aWxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE6OnJlbGVhc2VS
ZXN1bHQpOiBSZXR1cm4gdGhlCisgICAgICAgIHJlc3VsdCBhbmQgY2xlYXIgdGhlIHBvaW50ZXIu
CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkSGFuZGxlVVJJUmVx
dWVzdCk6IENyZWF0ZSBhbmQKKyAgICAgICAgZW1wdHkgbWVtb3J5IHN0cmVhbSBmb3IgemVyby1s
ZW5ndGggcmVwbGllcyBpbnN0ZWFkIG9mIGNyZWF0aW5nIGFuCisgICAgICAgIGVycm9yLgorICAg
ICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVUklSZXF1ZXN0
RGF0YSk6IElmIHRoZQorICAgICAgICByZXF1ZXN0IGZhaWxlZCBhbmQgbW9yZSBkYXRhIGV4cGVj
dGVkIGZyb20gdGhlIFVJIHByb2Nlc3MsIHNlbmQgYQorICAgICAgICBtZXNzYWdlIHRvIHRoZSBV
SSBwcm9jZXNzIHRvIG5vdGlmeSB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIGZhaWxlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpzZW5kKTogU2F2ZSByZXF1ZXN0IGlu
Zm9ybWF0aW9uIGluCisgICAgICAgIHRoZSByZXF1ZXN0IG1hcC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmg6CisKIDIwMTItMDUtMzEgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCB3
ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3QgdG8gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RN
YW5hZ2VyLmgKaW5kZXggMjczZWI3Yy4uMWM5YzAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oCkBA
IC0zNCwxMSArMzQsMTMgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogdHlwZWRlZiB2b2lkICgq
V0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdENhbGxiYWNrKShXS1NvdXBS
ZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJMUmVmIHVybFJlZiwg
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9p
ZCAoKldLU291cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjayko
V0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnQgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotICAgIFdLU291cFJlcXVlc3RNYW5hZ2Vy
RGlkUmVjZWl2ZVVSSVJlcXVlc3RDYWxsYmFjayBkaWRSZWNlaXZlVVJJUmVxdWVzdDsKKyAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpZW50SW5mbzsKKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2VpdmVVUklSZXF1
ZXN0Q2FsbGJhY2sgICAgZGlkUmVjZWl2ZVVSSVJlcXVlc3Q7CisgICAgV0tTb3VwUmVxdWVzdE1h
bmFnZXJEaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdENhbGxiYWNrIGRpZEZhaWxUb0xvYWRVUklSZXF1
ZXN0OwogfTsKIHR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IFdLU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBk
ZWJlZjQ3Li5iZTJjNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKQEAgLTMzLDQgKzMz
LDEwIEBAIGJvb2wgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpkaWRSZWNlaXZlVVJJUmVx
dWVzdChXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpkaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdChX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSogc291cFJlcXVlc3RNYW5hZ2VyLCB1aW50NjRfdCBy
ZXF1ZXN0SUQpCit7CisgICAgaWYgKG1fY2xpZW50LmRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KQor
ICAgICAgICBtX2NsaWVudC5kaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCh0b0FQSShzb3VwUmVxdWVz
dE1hbmFnZXIpLCByZXF1ZXN0SUQsIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3Vw
L1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKaW5kZXggYWZiYmE3MC4uZGMxNzU1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2Vi
U291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgV2ViVVJM
OwogY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxX
S1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCwga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50Q3Vy
cmVudFZlcnNpb24+IHsKIHB1YmxpYzoKICAgICBib29sIGRpZFJlY2VpdmVVUklSZXF1ZXN0KFdl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KiwgV2ViVVJMKiwgdWludDY0X3QgcmVxdWVzdElEKTsK
KyAgICB2b2lkIGRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KFdlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5KiwgdWludDY0X3QgcmVxdWVzdElEKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDUxMjMzNDYuLmM3NjZiMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAgUGFzc1JlZlB0cjxXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eT4gV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJDb24K
IAogV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
KFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX3dlYkNvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fbG9hZEZhaWxlZChmYWxzZSkKIHsKIH0KIApAQCAtNjgsNiArNjksOSBAQCB2b2lkIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRIYW5kbGVVUklSZXF1ZXN0KGNvbnN0IFdlYkRhdGEq
IHJlcXVlc3REYXRhLAogCiB2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNl
aXZlVVJJUmVxdWVzdERhdGEoY29uc3QgV2ViRGF0YSogcmVxdWVzdERhdGEsIHVpbnQ2NF90IHJl
cXVlc3RJRCkKIHsKKyAgICBpZiAobV9sb2FkRmFpbGVkKQorICAgICAgICByZXR1cm47CisKICAg
ICBBU1NFUlQobV93ZWJDb250ZXh0KTsKICAgICBtX3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpEaWRSZWNlaXZlVVJJUmVxdWVz
dERhdGEocmVxdWVzdERhdGEtPmRhdGFSZWZlcmVuY2UoKSwgcmVxdWVzdElEKSk7CiB9CkBAIC03
OCw0ICs4MiwxMCBAQCB2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZl
VVJJUmVxdWVzdChjb25zdCBTdHJpbmcmIHVyaVN0cmluZywgdQogICAgICAgICBkaWRIYW5kbGVV
UklSZXF1ZXN0KFdlYkRhdGE6OmNyZWF0ZSgwLCAwKS5nZXQoKSwgMCwgU3RyaW5nKCksIHJlcXVl
c3RJRCk7CiB9CiAKK3ZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZEZhaWxUb0xv
YWRVUklSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBtX2xvYWRGYWlsZWQgPSB0
cnVlOworICAgIG1fY2xpZW50LmRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KHRoaXMsIHJlcXVlc3RJ
RCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXgg
ZjQzZjdjZS4uOTJiZDYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJJU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KTsKICAgICB2b2lkIGRpZEhhbmRsZVVSSVJlcXVlc3QoY29uc3QgV2ViRGF0YSosIHVpbnQ2NF90
IGNvbnRlbnRMZW5ndGgsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJ
RCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoY29uc3QgV2ViRGF0YSosIHVp
bnQ2NF90IHJlcXVlc3RJRCk7CisgICAgdm9pZCBkaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCh1aW50
NjRfdCByZXF1ZXN0SUQpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKIApAQCAtNjYsNiArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29udGV4dCogbV93ZWJD
b250ZXh0OwogICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCBtX2NsaWVudDsKKyAgICBi
b29sIG1fbG9hZEZhaWxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhM2QwNTI1Li44MTU5MWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9X
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNCArMjIsNSBAQAog
CiBtZXNzYWdlcyAtPiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSB7CiAgICAgRGlkUmVjZWl2
ZVVSSVJlcXVlc3QoV1RGOjpTdHJpbmcgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpOwor
ICAgIERpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWMuY3BwCmluZGV4IDgwODkwOTYuLmE4NTEwOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVy
aWMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX3JlcXVlc3Rf
Z2VuZXJpY19pbml0KFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCkKIHN0YXRpYyB2
b2lkIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyhTb3VwUmVxdWVzdCogcmVxdWVz
dCwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFj
aywgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQg
PSBnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHJlcXVlc3QpLCBjYWxsYmFjaywg
dXNlckRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y1NlbmRBc3luYykpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnNvdXBSZXF1ZXN0TWFuYWdl
cigpLnNlbmQocmVzdWx0KTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zb3VwUmVxdWVzdE1h
bmFnZXIoKS5zZW5kKHJlc3VsdCwgY2FuY2VsbGFibGUpOwogfQogCiBzdGF0aWMgR0lucHV0U3Ry
ZWFtKiB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoKFNvdXBSZXF1ZXN0KiByZXF1
ZXN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3Bw
CmluZGV4IDIyYjA5ZmQuLmJiYzRkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC00MSw2ICs0MSw0
MCBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVTb3VwUmVxdWVzdElEKCkKICAgICByZXR1cm4g
dW5pcXVlU291cFJlcXVlc3RJRCsrOwogfQogCitzdHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0Rh
dGEgeworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdTaW1wbGVBc3luY1Jlc3VsdCogcmVz
dWx0LCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqIHJlcXVlc3RHZW5lcmljLCBHQ2FuY2VsbGFi
bGUqIGNhbmNlbGxhYmxlKQorICAgICAgICA6IHJlc3VsdChyZXN1bHQpCisgICAgICAgICwgcmVx
dWVzdChyZXF1ZXN0R2VuZXJpYykKKyAgICAgICAgLCBjYW5jZWxsYWJsZShjYW5jZWxsYWJsZSkK
KyAgICB7CisgICAgICAgIC8vIElmIHRoZSBzdHJ1Y3QgY29udGFpbnMgYSBudWxsIHJlcXVlc3Qg
aXMgYmVjYXVzZSB0aGUgcmVxdWVzdCBmYWlsZWQuCisgICAgICAgIGdfb2JqZWN0X2FkZF93ZWFr
X3BvaW50ZXIoR19PQkpFQ1QocmVxdWVzdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmcmVx
dWVzdCkpOworICAgIH0KKworICAgIH5XZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSgpCisgICAgewor
ICAgICAgICBpZiAocmVxdWVzdCkKKyAgICAgICAgICAgIGdfb2JqZWN0X3JlbW92ZV93ZWFrX3Bv
aW50ZXIoR19PQkpFQ1QocmVxdWVzdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmcmVxdWVz
dCkpOworICAgIH0KKworICAgIGJvb2wgcmVxdWVzdEZhaWxlZCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ19jYW5jZWxsYWJsZV9pc19jYW5jZWxsZWQoY2FuY2VsbGFibGUuZ2V0KCkpIHx8ICFy
ZXF1ZXN0OworICAgIH0KKworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogcmVsZWFzZVJlc3VsdCgp
CisgICAgeworICAgICAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJldHVyblZhbHVlID0gcmVzdWx0
OworICAgICAgICByZXN1bHQgPSAwOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAg
fQorCisgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQ7CisgICAgV2ViS2l0U291cFJlcXVl
c3RHZW5lcmljKiByZXF1ZXN0OworICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJs
ZTsKKyAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gc3RyZWFtOworfTsKKwogV2ViU291cFJlcXVl
c3RNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXIoV2ViUHJvY2VzcyogcHJvY2VzcykKICAg
ICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9zY2hlbWVzKGFkb3B0R1JlZihnX3B0cl9h
cnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMoZ19mcmVlKSkpCkBAIC03OCw1MSArMTEyLDY2IEBAIHZv
aWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclVSSVNjaGVtZShjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIAogdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmRpZEhhbmRsZVVSSVJlcXVl
c3QoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IGNv
bnRlbnRMZW5ndGgsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCkK
IHsKLSAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKG1f
cmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCkpOworICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRh
KiBkYXRhID0gbV9yZXF1ZXN0TWFwLmdldChyZXF1ZXN0SUQpOworICAgIEFTU0VSVChkYXRhKTsK
KyAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKGRhdGEt
PnJlbGVhc2VSZXN1bHQoKSk7CiAgICAgQVNTRVJUKHJlc3VsdC5nZXQoKSk7CiAKICAgICBHUmVm
UHRyPFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYz4gcmVxdWVzdCA9IGFkb3B0R1JlZihXRUJLSVRf
U09VUF9SRVFVRVNUX0dFTkVSSUMoZ19hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV9vYmplY3QoR19B
U1lOQ19SRVNVTFQocmVzdWx0LmdldCgpKSkpKTsKLSAgICBpZiAocmVxdWVzdERhdGEuc2l6ZSgp
KSB7Ci0gICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRMZW5ndGgocmVx
dWVzdC5nZXQoKSwgY29udGVudExlbmd0aCA/IGNvbnRlbnRMZW5ndGggOiAtMSk7Ci0gICAgICAg
IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBlKHJlcXVlc3QuZ2V0KCksICFt
aW1lVHlwZS5pc0VtcHR5KCkgPyBtaW1lVHlwZS51dGY4KCkuZGF0YSgpIDogMCk7Ci0KLSAgICAg
ICAgR0lucHV0U3RyZWFtKiBkYXRhU3RyZWFtOwotICAgICAgICBpZiAocmVxdWVzdERhdGEuc2l6
ZSgpID09IGNvbnRlbnRMZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCBt
b3JlIGRhdGEsIHNvIHdlIGNhbiBqdXN0IGNyZWF0ZSBhIEdNZW1vcnlJbnB1dFN0cmVhbSB3aXRo
IGFsbCB0aGUgZGF0YS4KLSAgICAgICAgICAgIGRhdGFTdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9z
dHJlYW1fbmV3X2Zyb21fZGF0YShnX21lbWR1cChyZXF1ZXN0RGF0YS5kYXRhKCksIHJlcXVlc3RE
YXRhLnNpemUoKSksIGNvbnRlbnRMZW5ndGgsIGdfZnJlZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBkYXRhU3RyZWFtID0gd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyhj
b250ZW50TGVuZ3RoKTsKLSAgICAgICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1B
ZGREYXRhKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGFTdHJlYW0pLCByZXF1
ZXN0RGF0YS5kYXRhKCksIHJlcXVlc3REYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBtX3JlcXVl
c3RTdHJlYW1NYXAuc2V0KHJlcXVlc3RJRCwgZGF0YVN0cmVhbSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgp
LCBkYXRhU3RyZWFtLCBnX29iamVjdF91bnJlZik7CisgICAgd2Via2l0U291cFJlcXVlc3RHZW5l
cmljU2V0Q29udGVudExlbmd0aChyZXF1ZXN0LmdldCgpLCBjb250ZW50TGVuZ3RoID8gY29udGVu
dExlbmd0aCA6IC0xKTsKKyAgICB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50VHlw
ZShyZXF1ZXN0LmdldCgpLCAhbWltZVR5cGUuaXNFbXB0eSgpID8gbWltZVR5cGUudXRmOCgpLmRh
dGEoKSA6IDApOworCisgICAgR0lucHV0U3RyZWFtKiBkYXRhU3RyZWFtOworICAgIGlmICghcmVx
dWVzdERhdGEuc2l6ZSgpKSB7CisgICAgICAgIC8vIEVtcHR5IHJlcGx5LCBqdXN0IGNyZWF0ZSBh
bmQgZW1wdHkgR01lbW9yeUlucHV0U3RyZWFtLgorICAgICAgICBkYXRhU3RyZWFtID0gZ19tZW1v
cnlfaW5wdXRfc3RyZWFtX25ldygpOworICAgICAgICBtX3JlcXVlc3RNYXAucmVtb3ZlKHJlcXVl
c3RJRCk7CisgICAgfSBlbHNlIGlmIChyZXF1ZXN0RGF0YS5zaXplKCkgPT0gY29udGVudExlbmd0
aCkgeworICAgICAgICAvLyBXZSBkb24ndCBleHBlY3QgbW9yZSBkYXRhLCBzbyB3ZSBjYW4ganVz
dCBjcmVhdGUgYSBHTWVtb3J5SW5wdXRTdHJlYW0gd2l0aCBhbGwgdGhlIGRhdGEuCisgICAgICAg
IGRhdGFTdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShnX21lbWR1
cChyZXF1ZXN0RGF0YS5kYXRhKCksIHJlcXVlc3REYXRhLnNpemUoKSksIGNvbnRlbnRMZW5ndGgs
IGdfZnJlZSk7CisgICAgICAgIG1fcmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKICAgICB9
IGVsc2UgewotICAgICAgICBHT3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJp
bmcoc291cF9yZXF1ZXN0X2dldF91cmkoU09VUF9SRVFVRVNUKHJlcXVlc3QuZ2V0KCkpKSwgRkFM
U0UpKTsKLSAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChT
dHJpbmc6OmZyb21VVEY4KHVyaVN0cmluZy5nZXQoKSkpOwotICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIHJlc291cmNlRXJyb3IoY2Fubm90U2hvd1VSTEVycm9yKHJlc291cmNlUmVxdWVz
dCkpOwotICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X2Vycm9yKHJlc3VsdC5nZXQo
KSwgZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJy
b3IuZXJyb3JDb2RlKCksICIlcyIsIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgLy8gV2UgZXhwZWN0IG1vcmUgZGF0YSBjaHVua3Mg
ZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgZGF0YVN0cmVhbSA9IHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1OZXcoY29udGVudExlbmd0aCk7CisgICAgICAgIGRhdGEtPnN0cmVhbSA9
IGRhdGFTdHJlYW07CisgICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRh
KFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGFTdHJlYW0pLCByZXF1ZXN0RGF0
YS5kYXRhKCksIHJlcXVlc3REYXRhLnNpemUoKSk7CiAgICAgfQorICAgIGdfc2ltcGxlX2FzeW5j
X3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSwgZGF0YVN0cmVhbSwgZ19v
YmplY3RfdW5yZWYpOwogICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQu
Z2V0KCkpOwogfQogCiB2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVSSVJl
cXVlc3REYXRhKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJlcXVlc3REYXRhLCB1aW50
NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgR0lucHV0U3RyZWFtKiBkYXRhU3RyZWFtID0gbV9yZXF1
ZXN0U3RyZWFtTWFwLmdldChyZXF1ZXN0SUQpOwotICAgIEFTU0VSVChkYXRhU3RyZWFtKTsKLSAg
ICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0YShXRUJLSVRfU09VUF9SRVFVRVNU
X0lOUFVUX1NUUkVBTShkYXRhU3RyZWFtKSwgcmVxdWVzdERhdGEuZGF0YSgpLCByZXF1ZXN0RGF0
YS5zaXplKCkpOwotICAgIGlmICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQo
V0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0YVN0cmVhbSkpKQotICAgICAgICBt
X3JlcXVlc3RTdHJlYW1NYXAucmVtb3ZlKHJlcXVlc3RJRCk7CisgICAgV2ViU291cFJlcXVlc3RB
c3luY0RhdGEqIGRhdGEgPSBtX3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3RJRCk7CisgICAgaWYgKCFk
YXRhKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGRhdGEtPnN0cmVhbS5nZXQoKSk7CisK
KyAgICBpZiAoZGF0YS0+cmVxdWVzdEZhaWxlZCgpKSB7CisgICAgICAgIC8vIFJlc291cmNlUmVx
dWVzdCBmYWlsZWQgb3IgaXQgd2FzIGNhbmNlbGxlZC4gSXQgZG9lc24ndCBtYXR0ZXIgaGVyZSB0
aGUgZXJyb3Igb3IgaWYgaXQgd2FzIGNhbmNlbGxlZCwKKyAgICAgICAgLy8gYmVjYXVzZSB0aGF0
J3MgYWxyZWFkeSBoYW5kbGVkIGJ5IHRoZSByZXNvdXJjZSBoYW5kbGUgY2xpZW50LCB3ZSBqdXN0
IHdhbnQgdG8gbm90aWZ5IHRoZSBVSSBwcm9jZXNzCisgICAgICAgIC8vIHRvIHN0b3AgcmVhZGlu
ZyBkYXRhIGZyb20gdGhlIHVzZXIgaW5wdXQgc3RyZWFtLiBJZiBVSSBwcm9jZXNzIGFscmVhZHkg
c2VudCBhbGwgdGhlIGRhdGEgd2Ugc2ltcGx5CisgICAgICAgIC8vIGZpbmlzaCBzaWxlbnRseS4K
KyAgICAgICAgaWYgKCF3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQoV0VCS0lU
X1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0YS0+c3RyZWFtLmdldCgpKSkpCisgICAgICAg
ICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHk6OkRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KHJlcXVlc3RJRCksIDApOwor
ICAgICAgICBtX3JlcXVlc3RNYXAucmVtb3ZlKHJlcXVlc3RJRCk7CisKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRhKFdFQktJ
VF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGEtPnN0cmVhbS5nZXQoKSksIHJlcXVlc3RE
YXRhLmRhdGEoKSwgcmVxdWVzdERhdGEuc2l6ZSgpKTsKKyAgICBpZiAod2Via2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbUZpbmlzaGVkKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRh
dGEtPnN0cmVhbS5nZXQoKSkpKQorICAgICAgICBtX3JlcXVlc3RNYXAucmVtb3ZlKHJlcXVlc3RJ
RCk7CiB9CiAKLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpzZW5kKEdTaW1wbGVBc3luY1Jl
c3VsdCogcmVzdWx0KQordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQoR1NpbXBsZUFz
eW5jUmVzdWx0KiByZXN1bHQsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUpCiB7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJlcXVlc3QgPSBhZG9wdEdSZWYoV0VCS0lU
X1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vfb2JqZWN0KEdf
QVNZTkNfUkVTVUxUKHJlc3VsdCkpKSk7CiAgICAgU291cFVSSSogdXJpID0gc291cF9yZXF1ZXN0
X2dldF91cmkoU09VUF9SRVFVRVNUKHJlcXVlc3QuZ2V0KCkpKTsKICAgICBHT3duUHRyPGNoYXI+
IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOwogCiAgICAgdWludDY0
X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVTb3VwUmVxdWVzdElEKCk7Ci0gICAgbV9yZXF1ZXN0TWFw
LnNldChyZXF1ZXN0SUQsIHJlc3VsdCk7CisgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0SUQs
IGFkb3B0UHRyKG5ldyBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShyZXN1bHQsIHJlcXVlc3QuZ2V0
KCksIGNhbmNlbGxhYmxlKSkpOwogICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6RGlkUmVjZWl2ZVVSSVJlcXVlc3Qo
U3RyaW5nOjpmcm9tVVRGOCh1cmlTdHJpbmcuZ2V0KCkpLCByZXF1ZXN0SUQpLCAwKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlci5oCmluZGV4IDJmYTdhMWMuLjc2NTQ0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgKQEAgLTIyLDYg
KzIyLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgsNiAr
MzksNyBAQCBjbGFzcyBNZXNzYWdlSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
UHJvY2VzczsKK3N0cnVjdCBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YTsKIAogY2xhc3MgV2ViU291
cFJlcXVlc3RNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJTb3VwUmVxdWVz
dE1hbmFnZXIpOwpAQCAtNDUsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViU291
cFJlcXVlc3RNYW5hZ2VyKFdlYlByb2Nlc3MqKTsKICAgICB+V2ViU291cFJlcXVlc3RNYW5hZ2Vy
KCk7CiAKLSAgICB2b2lkIHNlbmQoR1NpbXBsZUFzeW5jUmVzdWx0Kik7CisgICAgdm9pZCBzZW5k
KEdTaW1wbGVBc3luY1Jlc3VsdCosIEdDYW5jZWxsYWJsZSopOwogICAgIEdJbnB1dFN0cmVhbSog
ZmluaXNoKEdTaW1wbGVBc3luY1Jlc3VsdCopOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKQEAgLTU5LDggKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlByb2Nl
c3MqIG1fcHJvY2VzczsKICAgICBHUmVmUHRyPEdQdHJBcnJheT4gbV9zY2hlbWVzOwotICAgIEhh
c2hNYXA8dWludDY0X3QsIEdTaW1wbGVBc3luY1Jlc3VsdCo+IG1fcmVxdWVzdE1hcDsKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBHSW5wdXRTdHJlYW0qPiBtX3JlcXVlc3RTdHJlYW1NYXA7CisgICAg
SGFzaE1hcDx1aW50NjRfdCwgT3duUHRyPFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPiA+IG1fcmVx
dWVzdE1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="152380"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>