<?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>164364</bug_id>
          
          <creation_ts>2016-11-03 05:08:31 -0700</creation_ts>
          <short_desc>Downloads started by context menu actions should also have a web view associated</short_desc>
          <delta_ts>2016-11-17 23:51:12 -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>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1247686</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-03 05:08:31 -0700</bug_when>
    <thetext>When a request is converted to a download WebPageProxy calls handleDownloadRequest() and clients handle that to associate the web view to the download. When a download is started by a context menu action, WebPageProxy calls WebProcessPool::download() with this as initiatingPage parameter, but clients are not notified in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247687</commentid>
    <comment_count>1</comment_count>
      <attachid>293758</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-03 05:14:21 -0700</bug_when>
    <thetext>Created attachment 293758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247688</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 05:15:02 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250761</commentid>
    <comment_count>3</comment_count>
      <attachid>293758</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-12 18:33:33 -0800</bug_when>
    <thetext>Comment on attachment 293758
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:1237
&gt; +    return download.leakRef();

Where is this ref adopted? Normally we leave a comment in situations like this.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:816
&gt; +    if (initiatingPage)
&gt; +        initiatingPage-&gt;handleDownloadRequest(downloadProxy);

We need an owner to approve this part. Alex?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252616</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-17 23:23:16 -0800</bug_when>
    <thetext>Ping Owners?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252618</commentid>
    <comment_count>5</comment_count>
      <attachid>293758</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-17 23:29:20 -0800</bug_when>
    <thetext>Comment on attachment 293758
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:816
&gt;&gt; +        initiatingPage-&gt;handleDownloadRequest(downloadProxy);
&gt; 
&gt; We need an owner to approve this part. Alex?

I approve this part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252619</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-17 23:50:29 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 293758 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293758&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:1237
&gt; &gt; +    return download.leakRef();
&gt; 
&gt; Where is this ref adopted? Normally we leave a comment in situations like
&gt; this.

This is returned by public API in transfer-full methods. To clarify it, instead of adding a comment, I&apos;ve changed it to leak the ref from webkit_web_context_download_uri() and webkit_web_view_download_uri().

&gt; &gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:816
&gt; &gt; +    if (initiatingPage)
&gt; &gt; +        initiatingPage-&gt;handleDownloadRequest(downloadProxy);
&gt; 
&gt; We need an owner to approve this part. Alex?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252620</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-17 23:51:12 -0800</bug_when>
    <thetext>Committed r208882: &lt;http://trac.webkit.org/changeset/208882&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293758</attachid>
            <date>2016-11-03 05:14:21 -0700</date>
            <delta_ts>2016-11-12 18:33:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-context-menu-downloads.diff</filename>
            <type>text/plain</type>
            <size>17911</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1NWI3MWM2Li44ZjBmMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTYtMTEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERvd25sb2FkcyBzdGFydGVkIGJ5IGNvbnRleHQgbWVudSBhY3Rpb25zIHNo
b3VsZCBhbHNvIGhhdmUgYSB3ZWIgdmlldyBhc3NvY2lhdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQzNjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgcmVxdWVzdCBpcyBjb252ZXJ0ZWQg
dG8gYSBkb3dubG9hZCBXZWJQYWdlUHJveHkgY2FsbHMgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KCkg
YW5kIGNsaWVudHMgaGFuZGxlIHRoYXQgdG8KKyAgICAgICAgYXNzb2NpYXRlIHRoZSB3ZWIgdmll
dyB0byB0aGUgZG93bmxvYWQuIFdoZW4gYSBkb3dubG9hZCBpcyBzdGFydGVkIGJ5IGEgY29udGV4
dCBtZW51IGFjdGlvbiwgV2ViUGFnZVByb3h5IGNhbGxzCisgICAgICAgIFdlYlByb2Nlc3NQb29s
Ojpkb3dubG9hZCgpIHdpdGggdGhpcyBhcyBpbml0aWF0aW5nUGFnZSBwYXJhbWV0ZXIsIGJ1dCBj
bGllbnRzIGFyZSBub3Qgbm90aWZpZWQgaW4gdGhpcyBjYXNlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3BwOgorICAgICAgICAod2Via2l0RG93bmxvYWRD
cmVhdGVGb3JSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXREb3dubG9hZFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2Fk
KTogVXNlIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCkgYWZ0ZXIgV2ViUHJv
Y2Vzc1Bvb2w6OmRvd25sb2FkKCkKKyAgICAgICAgYmVjYXVzZSB0aGUgV2ViS2l0RG93bmxvYWQg
Y291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY3JlYXRlZCBieSB0aGUgd2ViIHZpZXcgZG93bmxvYWQg
aGFuZGxlciBhdCB0aGlzIHBvaW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rvd25sb2FkX3VyaSk6IFdl
IG5vIGxvbmdlciBuZWVkIHRvIGFzc29jaWF0ZSB0aGUgd2ViIHZpZXcgdG8gdGhlIGRvd25sb2Fk
IGhlcmUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKTogSWYgYW4gaW5pdGlhdGluZ1BhZ2Ug
aGFzIGJlZW4gcGFzc2VkLCBjYWxsIGhhbmRsZURvd25sb2FkUmVxdWVzdCgpIHRvIG5vdGlmeQor
ICAgICAgICB0aGUgcGFnZSBjbGllbnQuCisKIDIwMTYtMTEtMDIgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWcgMTY0MzMzOiBBZGQgbG9nZ2luZyBmb3Ig
IldlYktpdCBlbmNvdW50ZXJlZCBhbiBpbnRlcm5hbCBlcnJvciIgbWVzc2FnZXMgZHVlIHRvIE5l
dHdvcmsgcHJvY2VzcyBjcmFzaGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKaW5kZXggODZjMDViMi4uZTE0MmJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNw
cApAQCAtMzIyLDEzICszMjIsNiBAQCBXZWJLaXREb3dubG9hZCogd2Via2l0RG93bmxvYWRDcmVh
dGUoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9
CiAKLVdlYktpdERvd25sb2FkKiB3ZWJraXREb3dubG9hZENyZWF0ZUZvclJlcXVlc3QoRG93bmxv
YWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQot
ewotICAgIFdlYktpdERvd25sb2FkKiBkb3dubG9hZCA9IHdlYmtpdERvd25sb2FkQ3JlYXRlKGRv
d25sb2FkUHJveHkpOwotICAgIGRvd25sb2FkLT5wcml2LT5yZXF1ZXN0ID0gYWRvcHRHUmVmKHdl
YmtpdFVSSVJlcXVlc3RDcmVhdGVGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwotICAgIHJl
dHVybiBkb3dubG9hZDsKLX0KLQogdm9pZCB3ZWJraXREb3dubG9hZFNldFJlc3BvbnNlKFdlYktp
dERvd25sb2FkKiBkb3dubG9hZCwgV2ViS2l0VVJJUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAg
IGRvd25sb2FkLT5wcml2LT5yZXNwb25zZSA9IHJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZFByaXZhdGUuaAppbmRl
eCBiOTg2Y2EyLi40MTMwYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXREb3dubG9hZFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZFByaXZhdGUuaApAQCAtMjcsNyArMjcsNiBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogV2ViS2l0RG93bmxvYWQqIHdlYmtpdERv
d25sb2FkQ3JlYXRlKFdlYktpdDo6RG93bmxvYWRQcm94eSopOwotV2ViS2l0RG93bmxvYWQqIHdl
YmtpdERvd25sb2FkQ3JlYXRlRm9yUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIGJvb2wgd2Via2l0RG93bmxvYWRJc0NhbmNl
bGxlZChXZWJLaXREb3dubG9hZCopOwogdm9pZCB3ZWJraXREb3dubG9hZFNldFJlc3BvbnNlKFdl
YktpdERvd25sb2FkKiwgV2ViS2l0VVJJUmVzcG9uc2UqKTsKIHZvaWQgd2Via2l0RG93bmxvYWRT
ZXRXZWJWaWV3KFdlYktpdERvd25sb2FkKiwgV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRl
eCBmMDc3YjBjLi5lMDY3ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTIzMyw5ICsxMjMzLDggQEAgV2Vi
S2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2FkKFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGMKIHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2Fk
UHJveHkgPSBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+ZG93bmxvYWQoaW5pdGlhdGluZ1Bh
Z2UsIHJlcXVlc3QpOwotICAgIFdlYktpdERvd25sb2FkKiBkb3dubG9hZCA9IHdlYmtpdERvd25s
b2FkQ3JlYXRlRm9yUmVxdWVzdChkb3dubG9hZFByb3h5LCByZXF1ZXN0KTsKLSAgICBkb3dubG9h
ZHNNYXAoKS5zZXQoZG93bmxvYWRQcm94eSwgZG93bmxvYWQpOwotICAgIHJldHVybiBkb3dubG9h
ZDsKKyAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRl
eHRHZXRPckNyZWF0ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOworICAgIHJldHVybiBkb3dubG9h
ZC5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKERv
d25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDNjYTUyNDIuLmQxZmU3OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC0zMzUxLDEzICszMzUxLDEwIEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19zYXZl
X3RvX2ZpbGVfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsCiAgKi8K
IFdlYktpdERvd25sb2FkKiB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHVyaSwgMCk7Ci0KLSAgICBXZWJLaXREb3dubG9hZCogZG93bmxvYWQgPSB3ZWJraXRXZWJD
b250ZXh0U3RhcnREb3dubG9hZCh3ZWJWaWV3LT5wcml2LT5jb250ZXh0LmdldCgpLCB1cmksIGdl
dFBhZ2Uod2ViVmlldykpOwotICAgIHdlYmtpdERvd25sb2FkU2V0V2ViVmlldyhkb3dubG9hZCwg
d2ViVmlldyk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
YlZpZXcpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIp
OwogCi0gICAgcmV0dXJuIGRvd25sb2FkOworICAgIHJldHVybiB3ZWJraXRXZWJDb250ZXh0U3Rh
cnREb3dubG9hZCh3ZWJWaWV3LT5wcml2LT5jb250ZXh0LmdldCgpLCB1cmksIGdldFBhZ2Uod2Vi
VmlldykpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IDY5MWE0OGQuLmIwZmI3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODEyLDYgKzgxMiw5IEBAIERvd25sb2FkUHJveHkq
IFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBj
b25zdCBSZXNvCiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25s
b2FkUHJveHkocmVxdWVzdCk7CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCk7CiAKKyAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpCisgICAgICAgIGluaXRpYXRpbmdQ
YWdlLT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWRQcm94eSk7CisKICAgICBpZiAobmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgdXBkYXRlZFJlcXVlc3Qo
cmVxdWVzdCk7CiAgICAgICAgIC8vIFJlcXVlc3QncyBmaXJzdFBhcnR5Rm9yQ29va2llcyB3aWxs
IGJlIHVzZWQgYXMgT3JpZ2luYWwgVVJMIG9mIHRoZSBkb3dubG9hZCByZXF1ZXN0LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBjNzFkMzMuLjcy
OGJiMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMS0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgRG93bmxvYWRzIHN0YXJ0ZWQgYnkgY29udGV4dCBt
ZW51IGFjdGlvbnMgc2hvdWxkIGFsc28gaGF2ZSBhIHdlYiB2aWV3IGFzc29jaWF0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDM2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEdUSysgdW5p
dCB0ZXN0cyB0byBjaGVjayB0aGF0IGRvd25sb2FkcyBzdGFydGVkIGJ5IHRoZSBjb250ZXh0IG1l
bnUgaGF2ZSBhIHdlYiB2aWV3IGFzc29jaWF0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25sb2Fkcy5jcHA6CisgICAgICAgIChkb3dubG9hZExv
Y2FsRmlsZVN1Y2Nlc3NmdWxseSk6CisgICAgICAgICh0ZXN0RG93bmxvYWRPdmVyd3JpdGVEZXN0
aW5hdGlvbkRpc2FsbG93ZWQpOgorICAgICAgICAodGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3Ip
OgorICAgICAgICAodGVzdERvd25sb2FkUmVtb3RlRmlsZSk6CisgICAgICAgICh0ZXN0RG93bmxv
YWRSZW1vdGVGaWxlRXJyb3IpOgorICAgICAgICAodGVzdERvd25sb2FkTUlNRVR5cGUpOgorICAg
ICAgICAoY29udGV4dE1lbnVDYWxsYmFjayk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVEb3du
bG9hZEFjdGlvbnMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNi0xMS0wMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBC
YXR0ZXJ5IFN0YXR1cyBBUEkgZnJvbSB0aGUgdHJlZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwCmluZGV4IDIwZmRlOWUu
LmQyODM2ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0RG93bmxvYWRzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdERvd25sb2Fkcy5jcHAKQEAgLTE1OSwxNiArMTU5LDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgd2Via2l0X2Rvd25sb2FkX3NldF9kZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRp
b25VUkkuZ2V0KCkpOwogICAgIH0KIAotICAgIFdlYktpdERvd25sb2FkKiBkb3dubG9hZFVSSUFu
ZFdhaXRVbnRpbEZpbmlzaGVzKGNvbnN0IENTdHJpbmcmIHJlcXVlc3RVUkkpCisgICAgR1JlZlB0
cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhjb25zdCBD
U3RyaW5nJiByZXF1ZXN0VVJJKQogICAgIHsKLSAgICAgICAgV2ViS2l0RG93bmxvYWQqIGRvd25s
b2FkID0gd2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaShtX3dlYkNvbnRleHQuZ2V0KCks
IHJlcXVlc3RVUkkuZGF0YSgpKTsKLSAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZCkpOworICAgICAgICBHUmVmUHRyPFdlYktpdERv
d25sb2FkPiBkb3dubG9hZCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfZG93bmxvYWRf
dXJpKG1fd2ViQ29udGV4dC5nZXQoKSwgcmVxdWVzdFVSSS5kYXRhKCkpKTsKKyAgICAgICAgYXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZC5nZXQo
KSkpOwogCi0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X2FsbG93X292ZXJ3
cml0ZShkb3dubG9hZCkpOwotICAgICAgICB3ZWJraXRfZG93bmxvYWRfc2V0X2FsbG93X292ZXJ3
cml0ZShkb3dubG9hZCwgbV9hbGxvd092ZXJ3cml0ZSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF9kb3dubG9hZF9nZXRfYWxsb3dfb3ZlcndyaXRlKGRvd25sb2FkKSA9PSBtX2FsbG93T3Zlcndy
aXRlKTsKKyAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfYWxsb3dfb3Zlcndy
aXRlKGRvd25sb2FkLmdldCgpKSk7CisgICAgICAgIHdlYmtpdF9kb3dubG9hZF9zZXRfYWxsb3df
b3ZlcndyaXRlKGRvd25sb2FkLmdldCgpLCBtX2FsbG93T3ZlcndyaXRlKTsKKyAgICAgICAgZ19h
c3NlcnQod2Via2l0X2Rvd25sb2FkX2dldF9hbGxvd19vdmVyd3JpdGUoZG93bmxvYWQuZ2V0KCkp
ID09IG1fYWxsb3dPdmVyd3JpdGUpOwogCi0gICAgICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVl
c3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3QoZG93bmxvYWQpOworICAgICAgICBXZWJL
aXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0KGRvd25s
b2FkLmdldCgpKTsKICAgICAgICAgZ19hc3NlcnQocmVxdWVzdCk7CiAgICAgICAgIEFTU0VSVF9D
TVBfQ1NUUklORyh3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSwgPT0sIHJlcXVl
c3RVUkkpOwogCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIEdSZWZQdHI8V2ViS2l0RG93bmxv
YWQ+IGRvd25sb2FkTG9jYWxGaWxlU3VjY2Vzc2Z1bGx5KERvd25sb2FkVGVzdCogdGVzdCwKICAg
ICBHUmVmUHRyPEdGaWxlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChz
b3VyY2VQYXRoLmdldCgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IHNvdXJjZUluZm8gPSBh
ZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oc291cmNlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRF
X1NUQU5EQVJEX1NJWkUsIHN0YXRpY19jYXN0PEdGaWxlUXVlcnlJbmZvRmxhZ3M+KDApLCAwLCAw
KSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzb3VyY2VVUkkoZ19maWxlX2dldF91cmkoc291cmNl
LmdldCgpKSk7Ci0gICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9wdEdS
ZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhzb3VyY2VVUkkuZ2V0KCkp
KTsKKyAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHRlc3QtPmRvd25sb2Fk
VVJJQW5kV2FpdFVudGlsRmluaXNoZXMoc291cmNlVVJJLmdldCgpKTsKICAgICBnX2Fzc2VydCgh
d2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgVmVj
dG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxv
YWRFdmVudHM7CkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkT3Zl
cndyaXRlRGVzdGluYXRpb25EaXNhbGxvd2VkKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LAogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gc291cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJl
c291cmNlc0RpcigpLmRhdGEoKSwgZmlsZW5hbWUsIG51bGxwdHIpKTsKICAgICBHUmVmUHRyPEdG
aWxlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VQYXRoLmdl
dCgpKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzb3VyY2VVUkkoZ19maWxlX2dldF91cmkoc291
cmNlLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9w
dEdSZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhzb3VyY2VVUkkuZ2V0
KCkpKTsKKyAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHRlc3QtPmRvd25s
b2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoc291cmNlVVJJLmdldCgpKTsKICAgICBnX2Fzc2Vy
dCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAg
VmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93
bmxvYWRFdmVudHM7CkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
T3ZlcndyaXRlRGVzdGluYXRpb25EaXNhbGxvd2VkKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LAog
c3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0gRG93
bmxvYWRFcnJvclRlc3Q6Ok5ldHdvcmtFcnJvcjsKLSAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IGFkb3B0R1JlZih0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlz
aGVzKCJmaWxlOi8vL2Zvby9iYXIiKSk7CisgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93
bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVzKCJmaWxlOi8vL2Zv
by9iYXIiKTsKICAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3du
bG9hZC5nZXQoKSkpOwogCiAgICAgVmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4m
IGV2ZW50cyA9IHRlc3QtPm1fZG93bmxvYWRFdmVudHM7CkBAIC0zNTMsNyArMzUzLDcgQEAgc3Rh
dGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfYnVpbGRfZmls
ZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0YSgpLCAidGVzdC5wZGYiLCBudWxscHRy
KSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKHBhdGguZ2V0KCkpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3Vy
aShmaWxlLmdldCgpKSk7Ci0gICAgZG93bmxvYWQgPSBhZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRV
UklBbmRXYWl0VW50aWxGaW5pc2hlcyh1cmkuZ2V0KCkpKTsKKyAgICBkb3dubG9hZCA9IHRlc3Qt
PmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXModXJpLmdldCgpKTsKICAgICBnX2Fzc2Vy
dCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAg
Z19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKQEAgLTM2Niw3ICszNjYsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRMb2NhbEZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5kRGVs
ZXRlRmlsZShkb3dubG9hZC5nZXQoKSwgImJhciIpOwogCiAgICAgdGVzdC0+bV9leHBlY3RlZEVy
cm9yID0gRG93bmxvYWRFcnJvclRlc3Q6OkRvd25sb2FkQ2FuY2VsbGVkOwotICAgIGRvd25sb2Fk
ID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXModXJpLmdl
dCgpKSk7CisgICAgZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlz
aGVzKHVyaS5nZXQoKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3Zp
ZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgp
LCA9PSwgNCk7CkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2so
U291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIAog
c3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7Ci0gICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBh
ZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKSkpOworICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3du
bG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIFZlY3RvcjxEb3dubG9h
ZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwpA
QCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGUoRG93
bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
UmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IERvd25sb2FkRXJyb3JUZXN0OjpOZXR3b3Jr
RXJyb3I7Ci0gICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9wdEdSZWYo
dGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvZm9vIikpKTsKKyAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHRl
c3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoa1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiL2ZvbyIpKTsKICAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhk
b3dubG9hZC5nZXQoKSkpOwogCiAgICAgVmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVu
dD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxvYWRFdmVudHM7CkBAIC00NzgsNyArNDc4LDcgQEAg
c3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3du
bG9hZF9nZXRfZXN0aW1hdGVkX3Byb2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPCwgMSk7CiAKICAg
ICB0ZXN0LT5tX2V4cGVjdGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6SW52YWxpZERlc3Rp
bmF0aW9uOwotICAgIGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2Fp
dFVudGlsRmluaXNoZXMoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikpKTsKKyAg
ICBkb3dubG9hZCA9IHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoa1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93
bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKICAgICBnX2Fzc2VydF9jbXBp
bnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOwpAQCAtNDkxLDcgKzQ5MSw3IEBAIHN0YXRpYyB2b2lk
IHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5kRGVsZXRlRmlsZShkb3du
bG9hZC5nZXQoKSwgImJhciIpOwogCiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0gRG93bmxv
YWRFcnJvclRlc3Q6OkRvd25sb2FkQ2FuY2VsbGVkOwotICAgIGRvd25sb2FkID0gYWRvcHRHUmVm
KHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoa1NlcnZlci0+Z2V0VVJJRm9y
UGF0aCgiL2NhbmNlbC1hZnRlci1kZXN0aW5hdGlvbiIpKSk7CisgICAgZG93bmxvYWQgPSB0ZXN0
LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVzKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii9jYW5jZWwtYWZ0ZXItZGVzdGluYXRpb24iKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3du
bG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CkBAIC02NDMsNyArNjQzLDcgQEAgc3RhdGljIHZvaWQg
dGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWRDYW5jZWwoUG9saWN5UmVzcG9uc2VEb3dubG9hZFRl
c3QqIHRlc3QsIGcKIAogc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTUlNRVR5cGUoRG93bmxvYWRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNo
ZXMoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Vua25vd24iKSkpOworICAgIEdSZWZQdHI8V2Vi
S2l0RG93bmxvYWQ+IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5p
c2hlcyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdW5rbm93biIpKTsKICAgICBnX2Fzc2VydCgh
d2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgVmVj
dG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxv
YWRFdmVudHM7CkBAIC02NjgsNiArNjY4LDYyIEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZE1J
TUVUeXBlKERvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVj
a0Rlc3RpbmF0aW9uQW5kRGVsZXRlRmlsZShkb3dubG9hZC5nZXQoKSwga1NlcnZlclN1Z2dlc3Rl
ZEZpbGVuYW1lKTsKIH0KIAorc3RhdGljIGdib29sZWFuIGNvbnRleHRNZW51Q2FsbGJhY2soV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29udGV4dE1lbnUqIGNvbnRleHRNZW51LCBHZGtF
dmVudCosIFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIFdlYlZpZXdEb3dubG9h
ZFRlc3QqIHRlc3QpCit7CisgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVCho
aXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgIEdMaXN0KiBpdGVtcyA9IHdlYmtpdF9j
b250ZXh0X21lbnVfZ2V0X2l0ZW1zKGNvbnRleHRNZW51KTsKKyAgICBHUmVmUHRyPFdlYktpdENv
bnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtOworICAgIGZvciAoR0xpc3QqIGwgPSBpdGVt
czsgbDsgbCA9IGdfbGlzdF9uZXh0KGwpKSB7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19D
T05URVhUX01FTlVfSVRFTShsLT5kYXRhKSk7CisgICAgICAgIGF1dG8qIGl0ZW0gPSBXRUJLSVRf
Q09OVEVYVF9NRU5VX0lURU0obC0+ZGF0YSk7CisgICAgICAgIGlmICh3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbihpdGVtKSA9PSBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9ET1dOTE9BRF9MSU5LX1RPX0RJU0spIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51SXRl
bSA9IGl0ZW07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBnX2Fz
c2VydChjb250ZXh0TWVudUl0ZW0uZ2V0KCkpOworICAgIHdlYmtpdF9jb250ZXh0X21lbnVfcmVt
b3ZlX2FsbChjb250ZXh0TWVudSk7CisgICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29u
dGV4dE1lbnUsIGNvbnRleHRNZW51SXRlbS5nZXQoKSk7CisgICAgdGVzdC0+cXVpdE1haW5Mb29w
KCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVE
b3dubG9hZEFjdGlvbnMoV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBsaW5rSFRNTEZvcm1hdCA9ICI8aHRtbD48Ym9keT48YSBzdHlsZT0n
cG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjEnIGhyZWY9JyVzJz5Eb3dubG9hZCBNZTwv
YT48L2JvZHk+PC9odG1sPiI7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBsaW5rSFRNTChnX3N0cmR1
cF9wcmludGYobGlua0hUTUxGb3JtYXQsIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBk
ZiIpLmRhdGEoKSkpOworICAgIHRlc3QtPmxvYWRIdG1sKGxpbmtIVE1MLmdldCgpLCBrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAiY29udGV4
dC1tZW51IiwgR19DQUxMQkFDSyhjb250ZXh0TWVudUNhbGxiYWNrKSwgdGVzdCk7CisgICAgZ19p
ZGxlX2FkZChbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICBhdXRv
KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0Rvd25sb2FkVGVzdCo+KHVzZXJEYXRhKTsKKyAg
ICAgICAgdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbigxLCAxLCAzKTsKKyAgICAgICAgcmV0dXJuIEZB
TFNFOworICAgIH0sIHRlc3QpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKKworICAgIGdfaWRsZV9hZGQoW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsK
KyAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PFdlYlZpZXdEb3dubG9hZFRlc3QqPih1
c2VyRGF0YSk7CisgICAgICAgIC8vIFNlbGVjdCBhbmQgYWN0aXZhdGUgdGhlIGNvbnRleHQgbWVu
dSBhY3Rpb24uCisgICAgICAgIHRlc3QtPmtleVN0cm9rZShHREtfS0VZX0Rvd24pOworICAgICAg
ICB0ZXN0LT5rZXlTdHJva2UoR0RLX0tFWV9SZXR1cm4pOworICAgICAgICByZXR1cm4gRkFMU0U7
CisgICAgfSwgdGVzdCk7CisgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVkKCk7CisK
KyAgICBnX2Fzc2VydCh0ZXN0LT5tX3dlYlZpZXcgPT0gd2Via2l0X2Rvd25sb2FkX2dldF93ZWJf
dmlldyh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7CisgICAgdGVzdC0+d2FpdFVudGlsRG93bmxv
YWRGaW5pc2hlZCgpOworCisgICAgR1JlZlB0cjxHRmlsZT4gZG93bmxvYWRGaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3VyaSh3ZWJraXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKHRl
c3QtPm1fZG93bmxvYWQuZ2V0KCkpKSk7CisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGRvd25sb2Fk
RmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oZG93bmxvYWRGaWxlLmdldCgp
LCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIHN0YXRpY19jYXN0PEdGaWxlUXVlcnlJ
bmZvRmxhZ3M+KDApLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21waW50KGdf
ZmlsZV9pbmZvX2dldF9zaXplKGRvd25sb2FkRmlsZUluZm8uZ2V0KCkpLCA+LCAwKTsKKyAgICBn
X2ZpbGVfZGVsZXRlKGRvd25sb2FkRmlsZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisK
IHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIo
KTsKQEAgLTY4Myw2ICs3MzksNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgUG9saWN5UmVzcG9u
c2VEb3dubG9hZFRlc3Q6OmFkZCgiRG93bmxvYWRzIiwgInBvbGljeS1kZWNpc2lvbi1kb3dubG9h
ZCIsIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkKTsKICAgICBQb2xpY3lSZXNwb25zZURvd25s
b2FkVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAicG9saWN5LWRlY2lzaW9uLWRvd25sb2FkLWNhbmNl
bCIsIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkQ2FuY2VsKTsKICAgICBEb3dubG9hZFRlc3Q6
OmFkZCgiRG93bmxvYWRzIiwgIm1pbWUtdHlwZSIsIHRlc3REb3dubG9hZE1JTUVUeXBlKTsKKyAg
ICBXZWJWaWV3RG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJjb250ZXgtbWVudS1kb3du
bG9hZC1hY3Rpb25zIiwgdGVzdENvbnRleHRNZW51RG93bmxvYWRBY3Rpb25zKTsKIH0KIAogdm9p
ZCBhZnRlckFsbCgpCg==
</data>
<flag name="review"
          id="316597"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>