<?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>17147</bug_id>
          
          <creation_ts>2008-02-01 17:37:30 -0800</creation_ts>
          <short_desc>[GTK] API: Stream-based loader API</short_desc>
          <delta_ts>2014-04-08 17:56:10 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>15843</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>a.butenka</cc>
    
    <cc>acmay</cc>
    
    <cc>christian</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pbloomfield</cc>
    
    <cc>pmuellr</cc>
    
    <cc>svillar</cc>
    
    <cc>talby</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69150</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-01 17:37:30 -0800</bug_when>
    <thetext>We need to support applications that load custom resources into WebView. Evolution, tnymail, Yelp, Monodoc are the apps that come to mind.

Something like WebDataSource, or perhaps the ability to register URL protocol handlers, or both. GIO could be useful for stream classes, perhaps as a counterpart to NSData in the Mac API.

The Mac Obj-C code is quite tangly and looks like parts are deprecated. We don&apos;t necessarily want to copy everything there.

(Bug #15843 is a request from application authors that we provide additional metadata to the loader application, such as image scale which might be worth keeping in mind when designing a stream-based loader API.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85939</commentid>
    <comment_count>1</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2008-07-15 05:17:16 -0700</bug_when>
    <thetext>I would very interested in helping on this. Unfortunately, I still don&apos;t have enough knowledge on the parts I should touch to add this feature (webcore and webkit architecture elements involved, the interaction among them, etc).

Some additional points for things we need in tinymail and modest:
   * We need to be able to feed a custom stream.
   * We also need that webkit provide a way to provide a custom stream for specific uris (for example, for loading images).

Currently, talking about the implementation we use, in gtkhtml, it provides:
   * A signal &quot;url-requested&quot;. This signal offers a GtkHTMLStream you can feed (from your own stream or whatever you need). This is used for loading images or other resources included inside the document (we hook to this for cid: uris, and also for managing internally fetching or blocking external image uris).
   * An api to obtain a GtkHTMLStream from the gtkhtml widget, you can write to. This API is used for loading the document itself to the html widget.

Maybe it would be good if we could use a standard GIO channel for this, so that we can use as much standard glib/gtk api as possible.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93508</commentid>
    <comment_count>2</comment_count>
      <attachid>23967</attachid>
    <who name="Andrew May">acmay</who>
    <bug_when>2008-09-30 22:32:43 -0700</bug_when>
    <thetext>Created attachment 23967
Add signal before an image load, and add in API function to load in an image

I don&apos;t do any glib/gtk devel or WebKit stuff, so I don&apos;t expect this to be perfect or correct. There is some left over junk in the patch with &quot;notimplemented&quot; macro to help me see what else is missing.
But I did try to dive into the classes and get something working. I did get this working with a patch to the unreleased mayflower plugin for claws mail.

So I am looking to see if this is anywhere close to being the correct approach and what needs to be done to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100401</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Bloomfield">pbloomfield</who>
    <bug_when>2008-11-26 05:55:02 -0800</bug_when>
    <thetext>I&apos;m exploring WebKitWebView as an alternative to gtkhtml{2,3} in an email UA (Balsa).  We would need some feature like this, to (a) meet &quot;cid:&quot; requests, and (b) optionally block loading of images or anything else from remote sites--some users have privacy concerns.

I&apos;m completely unfamiliar with the WebKit codebase, so I&apos;m not going to be much help with coding, but I&apos;d be very interested in helping out with testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146955</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-09-12 16:03:23 -0700</bug_when>
    <thetext>I ran into Peter Bloomfield at a conference, and had another idea about how to solve a particular problem related to this bug.  Peter described the problem of dealing with html email with embedded images.  My suggestion was to make use of the data: url to avoid having to do anything more complicated.  Reference here:

   http://en.wikipedia.org/wiki/Data_URI_scheme

So the basic idea would be to extract the embedded images out of the email payload, and replace the &lt;img src=&quot;xxx&quot;&gt; with &lt;img src=&quot;data:yyy&quot;&gt; in the actual html email section.  This could be done in either the primary code dealing with the message (C?), or could probably be done in JavaScript with something like an onload handler.

May be off-base, but it sounded like it might be an easy way to work around this particular problem, but not a general purpose solution (I don&apos;t think).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175305</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Bloomfield">pbloomfield</who>
    <bug_when>2009-12-28 14:12:46 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I ran into Peter Bloomfield at a conference, and had another idea about how to
&gt; solve a particular problem related to this bug.

Hi Patrick:

I enjoyed the opportunity to chat with you about this.  I finally got around to trying some rewriting of the HTML source text.  To avoid interpolating potentially large amounts of data, I first tried saving the matching message part as a temporary file, then replacing the &quot;cid:&quot; protocol with &quot;file:///tmp/&quot;.  But that ran afoul of WebKit&apos;s resolute refusal to use &quot;file:&quot; links.

So then I tried your suggestion of a &quot;data:&quot; URI, and it works!  Well, in a small number of tests.  But at least it requires *zero* patches to WebKit, which means we don&apos;t have to wait indefinitely to see a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175380</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Butenko">a.butenka</who>
    <bug_when>2009-12-28 20:04:57 -0800</bug_when>
    <thetext>webview has resource-request-starting and navigation-decission-requested signal to redirect request

resource_request_set_uri(request, &quot;file://tmp/blabla.jpg&quot;) should do the job as i understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175682</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Bloomfield">pbloomfield</who>
    <bug_when>2009-12-29 12:21:02 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; webview has resource-request-starting and navigation-decission-requested signal
&gt; to redirect request
&gt; 
&gt; resource_request_set_uri(request, &quot;file://tmp/blabla.jpg&quot;) should do the job as
&gt; i understand.

Thanks for pointing out the &quot;resource-request-starting&quot; signal--I must have started working with WebKit before it appeared in 1.1.14!  It does indeed provide a very clean solution to the cid: problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297734</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-21 17:11:13 -0700</bug_when>
    <thetext>If I&apos;m not mistaken, this functionality is provided will be provider by SoupURILoader in the future. Sergio, can you comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297737</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-21 17:14:54 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; If I&apos;m not mistaken, this functionality is provided will be provider by SoupURILoader in the future. Sergio, can you comment?

That came out mangled: If I&apos;m not mistaken this functionality will be provided by SoupURILoader in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297860</commentid>
    <comment_count>10</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2010-10-22 00:47:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; If I&apos;m not mistaken, this functionality is provided will be provider by SoupURILoader in the future. Sergio, can you comment?
&gt; 
&gt; That came out mangled: If I&apos;m not mistaken this functionality will be provided by SoupURILoader in the future.

Well, actually we *do* support this functionality right now as we imported the SoupURILoader code in webkit as a basement for the new HTTP cache. So we currently have a stream-based loader API for all the protocols we support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297987</commentid>
    <comment_count>11</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-22 08:34:15 -0700</bug_when>
    <thetext>&gt; Well, actually we *do* support this functionality right now as we imported the SoupURILoader code in webkit as a basement for the new HTTP cache. So we currently have a stream-based loader API for all the protocols we support.

Correct me if I&apos;m wrong, but my understanding is that WebKit doesn&apos;t expose an API for it and it isn&apos;t officially part of libsoup yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297994</commentid>
    <comment_count>12</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2010-10-22 08:42:06 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Well, actually we *do* support this functionality right now as we imported the SoupURILoader code in webkit as a basement for the new HTTP cache. So we currently have a stream-based loader API for all the protocols we support.
&gt; 
&gt; Correct me if I&apos;m wrong, but my understanding is that WebKit doesn&apos;t expose an API for it and it isn&apos;t officially part of libsoup yet.

Oh my fault, I didn&apos;t read the bug properly. As you said, we do not currently expose any API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480388</commentid>
    <comment_count>13</comment_count>
    <who name="">talby</who>
    <bug_when>2011-10-07 16:47:31 -0700</bug_when>
    <thetext>I have been using the &quot;resource-request-starting&quot; signal to call webkit_network_request_set_uri() updating the uri to a data: url, which works wonderfully to embed media resources, however embedding html is problematic.

I am attempting to sandbox a browser display of html content, but since this technique alters the urls visible to the DOM, onDomain policies get mangled and relative urls can not be resolved properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480394</commentid>
    <comment_count>14</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-07 16:55:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I have been using the &quot;resource-request-starting&quot; signal to call webkit_network_request_set_uri() updating the uri to a data: url, which works wonderfully to embed media resources, however embedding html is problematic.
&gt; 
&gt; I am attempting to sandbox a browser display of html content, but since this technique alters the urls visible to the DOM, onDomain policies get mangled and relative urls can not be resolved properly.

Have you tried using http://webkitgtk.org/reference/webkitgtk-webkitwebview.html#webkit-web-view-load-string ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480589</commentid>
    <comment_count>15</comment_count>
    <who name="">talby</who>
    <bug_when>2011-10-08 12:21:50 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; 
&gt; Have you tried using http://webkitgtk.org/reference/webkitgtk-webkitwebview.html#webkit-web-view-load-string ?

That&apos;s a great suggestion, and yes I am, for the main frame load.  However my trouble shows up when the page has child frames (or child windows).  If I use a &quot;resource-request-starting&quot; handler to rewrite the url to a data: url, the DOM is unable to resolve relative links and onDomain policies are not honored.  If instead I use a &quot;resource-request-starting&quot; handler to call webkit_web_frame_load_string(), it seems to mangle the WebKitWebFrame and lead to segfaults.  I think the DocumentLoader ends up in a bad state where a new load attempt has partially initiated, yet the last attempt has not finished failing.  So, it doesn&apos;t seem like webkit_web_frame_load_string() is intended for use in signal handlers, at least not &quot;resource-request-starting&quot; (or &quot;navigation-policy-decision-requested&quot;).

I can&apos;t find a way to satisfy a pending load attempt with a *_load_string() call, so it doesn&apos;t seem to help me with child frames where the load is initiated as a side effect of a parent load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480590</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-08 12:26:11 -0700</bug_when>
    <thetext>Hrm. Perhaps you&apos;ll have better luck handling the load-started signal. The documentation claims it&apos;s deprecated, but I&apos;m in favor of undeprecating it.

Also the fact that calling load_data in a signal handler causes a crash, sounds like a bug! Do you have a stack trace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481036</commentid>
    <comment_count>17</comment_count>
    <who name="">talby</who>
    <bug_when>2011-10-10 11:44:05 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Hrm. Perhaps you&apos;ll have better luck handling the load-started signal. The documentation claims it&apos;s deprecated, but I&apos;m in favor of undeprecating it.
&gt; 
&gt; Also the fact that calling load_data in a signal handler causes a crash, sounds like a bug! Do you have a stack trace?

&quot;load-started&quot; on the WebKitWebView only seems to fire for the main frame.  WebKitWebFrame doesn&apos;t emit a &quot;load-started&quot; signal, so I don&apos;t think that can help me.

I have since been able to call webkit_web_frame_load_string() from within &quot;navigation-policy-decision-requested&quot;.  On the first pass I didn&apos;t notice that webkit_web_frame_load_string() from with the signal handler emits second &quot;navigation-policy-decision-requested&quot; signal, and my naive attempt was simply blowing the stack.  If I don&apos;t call _load_string() in the second emit, it seems to load smoothly.

I still have a segfault attempting to use webkit_web_view_load_string() from within &quot;resource-request-starting&quot;, and can provide the stack trace if it&apos;s still interesting to you.  It may not be worth investigating because there&apos;s a workaround, but that one is not a handler recursion issue, it&apos;s something more complex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998941</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-04-08 17:56:10 -0700</bug_when>
    <thetext>We have an API to implement custom protocols now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23967</attachid>
            <date>2008-09-30 22:32:43 -0700</date>
            <delta_ts>2010-06-10 20:01:36 -0700</delta_ts>
            <desc>Add signal before an image load, and add in API function to load in an image</desc>
            <filename>webkit_image_load2.patch</filename>
            <type>text/plain</type>
            <size>18380</size>
            <attacher name="Andrew May">acmay</attacher>
            
              <data encoding="base64">ZGlmZiAtdXIgd2Via2l0LTEuMC4xLm9yaWcvV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcCB3
ZWJraXQtMS4wLjEvV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAotLS0gd2Via2l0LTEuMC4x
Lm9yaWcvV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkyMDA4LTA2LTE1IDE2OjQwOjA2LjAw
MDAwMDAwMCAtMDcwMAorKysgd2Via2l0LTEuMC4xL1dlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5j
cHAJMjAwOC0wOS0yNiAyMzowNzowNS4wMDAwMDAwMDAgLTA3MDAKQEAgLTk0LDYgKzk0LDkgQEAK
IENhY2hlZEltYWdlKiBEb2NMb2FkZXI6OnJlcXVlc3RJbWFnZShjb25zdCBTdHJpbmcmIHVybCkK
IHsKICAgICBDYWNoZWRJbWFnZSogcmVzb3VyY2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+
KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgdXJsLCBTdHJp
bmcoKSkpOworCisgICAgbV9mcmFtZS0+bG9hZGVyKCktPndpbGxTZW5kSW1hZ2VSZXF1ZXN0KCB1
cmwgKTsKKwogICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYmIHJlc291cmNl
LT5zdGlsbE5lZWRzTG9hZCgpKSB7CiAgICAgICAgIHJlc291cmNlLT5zZXRMb2FkaW5nKHRydWUp
OwogICAgICAgICBjYWNoZSgpLT5sb2FkZXIoKS0+bG9hZCh0aGlzLCByZXNvdXJjZSwgdHJ1ZSk7
CkBAIC0xMDEsNiArMTA0LDIxIEBACiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCitib29sIERv
Y0xvYWRlcjo6bG9hZFJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSkKK3sKKyAgICAgICAgQ2FjaGVkSW1hZ2UqIHJlc291cmNlID0gc3RhdGlj
X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2UsIHVybCwgU3RyaW5nKCkpKTsKKworICAgICAgICBzZXRMb2FkSW5Qcm9ncmVzcyh0
cnVlKTsKKworICAgICAgICByZXNvdXJjZS0+ZGF0YShkYXRhLCB0cnVlKTsKKyAgICAgICAgcmVz
b3VyY2UtPmZpbmlzaCgpOworCisgICAgICAgIHNldExvYWRJblByb2dyZXNzKGZhbHNlKTsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKK30KKworCiBDYWNoZWRGb250KiBEb2NMb2FkZXI6OnJlcXVl
c3RGb250KGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNo
ZWRGb250Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2UsIHVy
bCwgU3RyaW5nKCkpKTsKZGlmZiAtdXIgd2Via2l0LTEuMC4xLm9yaWcvV2ViQ29yZS9sb2FkZXIv
RG9jTG9hZGVyLmggd2Via2l0LTEuMC4xL1dlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCi0tLSB3
ZWJraXQtMS4wLjEub3JpZy9XZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAkyMDA4LTA2LTE1IDE2
OjQwOjA2LjAwMDAwMDAwMCAtMDcwMAorKysgd2Via2l0LTEuMC4xL1dlYkNvcmUvbG9hZGVyL0Rv
Y0xvYWRlci5oCTIwMDgtMDktMjUgMjM6MTg6MzEuMDAwMDAwMDAwIC0wNzAwCkBAIC03MCw2ICs3
MCw4IEBACiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdCB7IHJldHVybiBtX2RvY1Jlc291cmNlcy5nZXQodXJsKTsgfQogICAgIGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZSo+JiBhbGxDYWNoZWRSZXNvdXJjZXMoKSBj
b25zdCB7IHJldHVybiBtX2RvY1Jlc291cmNlczsgfQogCisgICAgYm9vbCBsb2FkUmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKTsKKwogICAg
IGJvb2wgYXV0b0xvYWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9
CiAgICAgdm9pZCBzZXRBdXRvTG9hZEltYWdlcyhib29sKTsKICAgICAKZGlmZiAtdXIgd2Via2l0
LTEuMC4xLm9yaWcvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIHdlYmtpdC0xLjAuMS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKLS0tIHdlYmtpdC0xLjAuMS5vcmlnL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkyMDA4LTA2LTE1IDE2OjQwOjA2LjAwMDAwMDAwMCAt
MDcwMAorKysgd2Via2l0LTEuMC4xL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkyMDA4
LTA5LTIzIDA4OjU1OjAyLjAwMDAwMDAwMCAtMDcwMApAQCAtNDkyMSw2ICs0OTIxLDEwIEBACiAg
ICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkRmluaXNoTG9hZGluZyhsb2Fk
ZXIsIGlkZW50aWZpZXIpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjp3aWxsU2VuZEltYWdlUmVx
dWVzdCggY29uc3QgU3RyaW5nJiB1cmkgKQoreworICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hX
aWxsTG9hZEltYWdlKCB1cmkgKTsKK30KICNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQog
CiBib29sIEZyYW1lTG9hZGVyOjphZGRMb3dCYW5kd2lkdGhEaXNwbGF5UmVxdWVzdChDYWNoZWRS
ZXNvdXJjZSogY2FjaGUpCmRpZmYgLXVyIHdlYmtpdC0xLjAuMS5vcmlnL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggd2Via2l0LTEuMC4xL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
LS0tIHdlYmtpdC0xLjAuMS5vcmlnL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJMjAwOC0w
Ni0xNSAxNjo0MDowNi4wMDAwMDAwMDAgLTA3MDAKKysrIHdlYmtpdC0xLjAuMS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCTIwMDgtMDktMjMgMTE6NTY6MzguMDAwMDAwMDAwIC0wNzAwCkBA
IC0yMTAsNiArMjEwLDggQEAKICAgICAgICAgdm9pZCByZWNlaXZlZE1haW5SZXNvdXJjZUVycm9y
KGNvbnN0IFJlc291cmNlRXJyb3ImLCBib29sIGlzQ29tcGxldGUpOwogICAgICAgICB2b2lkIHJl
Y2VpdmVkRGF0YShjb25zdCBjaGFyKiwgaW50KTsKIAorICAgICAgICB2b2lkIHdpbGxTZW5kSW1h
Z2VSZXF1ZXN0KGNvbnN0IFN0cmluZyAmdXJpKTsKKwogICAgICAgICB2b2lkIGhhbmRsZUZhbGxi
YWNrQ29udGVudCgpOwogICAgICAgICBib29sIGlzU3RvcHBpbmcoKSBjb25zdDsKIApkaWZmIC11
ciB3ZWJraXQtMS4wLjEub3JpZy9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIHdl
YmtpdC0xLjAuMS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCi0tLSB3ZWJraXQt
MS4wLjEub3JpZy9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCTIwMDgtMDYtMTUg
MTY6NDA6MDYuMDAwMDAwMDAwIC0wNzAwCisrKyB3ZWJraXQtMS4wLjEvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkyMDA4LTA5LTIzIDEyOjE3OjU3LjAwMDAwMDAwMCAtMDcwMApA
QCAtMTIzLDYgKzEyMyw4IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSA9IDA7CiAK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbExvYWRJbWFnZShjb25zdCBTdHJpbmcg
JnVyaSkgeyB9IDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxl
bWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPikgPSAwOwpkaWZmIC11ciB3ZWJraXQtMS4wLjEub3JpZy9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIHdlYmtpdC0xLjAuMS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCi0tLSB3ZWJraXQtMS4wLjEub3JpZy9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCTIwMDgtMDYtMTUgMTY6
NDA6MDYuMDAwMDAwMDAwIC0wNzAwCisrKyB3ZWJraXQtMS4wLjEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkyMDA4LTA5LTI2IDAwOjI4OjM0LjAwMDAwMDAwMCAt
MDcwMApAQCAtNjgsNyArNjgsMzQgQEAKIAogU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkg
Y29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KIAotUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0KKy8vUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0KKworUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBnY2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21f
dXRmOChmaWxlUGF0aC51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgMCk7CisgICAgaWYgKCFmaWxl
bmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnY2hhciogY29udGVudHM7CisgICAgZ3Np
emUgc2l6ZTsKKyAgICBHRXJyb3IqIGVycm9yID0gMDsKKyAgICBpZiAoIWdfZmlsZV9nZXRfY29u
dGVudHMoZmlsZW5hbWUsICZjb250ZW50cywgJnNpemUsICZlcnJvcikpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzIC0gJXMiLCBm
aWxlUGF0aC51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGdfZXJyb3Jf
ZnJlZShlcnJvcik7CisgICAgICAgIGdfZnJlZShmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNvbnRlbnRzLCBzaXplKTsKKyAgICBnX2ZyZWUoZmlsZW5hbWUpOworICAgIGdf
ZnJlZShjb250ZW50cyk7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30KKwogCiB9
CiAKZGlmZiAtdXIgd2Via2l0LTEuMC4xLm9yaWcvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAgd2Via2l0LTEuMC4xL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCi0tLSB3ZWJraXQtMS4wLjEub3JpZy9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkyMDA4LTA2LTE1
IDE2OjQwOjA2LjAwMDAwMDAwMCAtMDcwMAorKysgd2Via2l0LTEuMC4xL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCTIwMDgtMDktMjMgMTY6NDM6MTEu
MDAwMDAwMDAwIC0wNzAwCkBAIC01Miw2ICs1MiwxMCBAQAogI2luY2x1ZGUgPHN5cy91dHNuYW1l
Lmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dwcmludGYu
aD4KKworI2RlZmluZSBOT1RJTVBMRU1FTlRFRCBnX3ByaW50ZiggIiVzOiBub3QgZG9uZVxuIiwg
X19GVU5DVElPTl9fICk7IG5vdEltcGxlbWVudGVkCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw3ICs4MCw3IEBACiAjZWxpZiBkZWZpbmVkKEdE
S19XSU5ET1dJTkdfRElSRUNURkIpCiAgICAgcmV0dXJuICJEaXJlY3RGQiI7CiAjZWxzZQotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gIlVu
a25vd24iOwogI2VuZGlmCiB9CkBAIC05OSw3ICsxMDMsNyBAQAogICAgIC8vIEZJWE1FOiBDb21w
dXRlIHRoZSBXaW5kb3dzIHZlcnNpb24KICAgICByZXR1cm4gIldpbmRvd3MiOwogI2Vsc2UKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuICJV
bmtub3duIjsKICNlbmRpZgogfQpAQCAtMTkyLDIyICsxOTYsMjIgQEAKIAogdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1F
TlRFRCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRl
bnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpCkBA
IC0yMTYsNiArMjIwLDEzIEBACiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJs
b2FkLXN0YXJ0ZWQiLCBtX2ZyYW1lKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hXaWxsTG9hZEltYWdlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAmdXJpKQoreworICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiaW1hZ2UtcmVxdWVzdGVkIiwgdXJpLnV0Zjgo
KS5kYXRhKCkpOworICAgIE5PVElNUExFTUVOVEVEKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7CiAgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CkBAIC0z
MjUsNyArMzM2LDcgQEAKIFdpZGdldCogRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKICAg
ICByZXR1cm4gMDsKIH0KIApAQCAtMzUzLDcgKzM2NCw3IEBACiAKIFN0cmluZyBGcmFtZUxvYWRl
ckNsaWVudDo6b3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKQEAg
LTM4OCw3ICszOTksNyBAQAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpyZWdpc3RlckZvcklj
b25Ob3RpZmljYXRpb24oYm9vbCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElN
UExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldE1haW5GcmFtZURv
Y3VtZW50UmVhZHkoYm9vbCkKQEAgLTM5OCwxMyArNDA5LDEzIEBACiAKIGJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnQ6Omhhc1dlYlZpZXcoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgTk9USU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBGcmFtZUxv
YWRlckNsaWVudDo6aGFzRnJhbWVWaWV3KCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIE5PVElNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQxNSwx
NyArNDI2LDE3IEBACiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZENvbXBsZXRl
ZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogfQog
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVt
KikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnJlc3RvcmVWaWV3U3RhdGUoKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRl
ckNsaWVudDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdApA
QCAtNDM4LDM3ICs0NDksMzcgQEAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6bWFrZVJlcHJl
c2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5
b3V0KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRDb3BpZXNPblNjcm9sbCgpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkZXRhY2hlZEZyb21QYXJlbnQxKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5P
VElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQo
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MygpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogfQogCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQ0KCkKQEAgLTQ4MCwzNyArNDkx
LDM3IEBACiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZEZyb21DYWNoZWRQYWdlKCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVO
VEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5U
RUQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoV2lsbENsb3NlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKQpAQCAtNTUxLDM3ICs1NjIsMzcgQEAKIAogdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFNob3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5U
RUQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291cmNlKERvY3VtZW50
TG9hZGVyKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShE
b2N1bWVudExvYWRlciopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1F
TlRFRCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5U
RUQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1l
bnRMb2FkZXIgKmwpCkBAIC01OTEsMjUgKzYwMiwyNSBAQAogCiBib29sIEZyYW1lTG9hZGVyQ2xp
ZW50OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0CiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoY29uc3Qg
U3RyaW5nJikgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVO
VEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OnJl
cHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0CiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAogU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50OjpnZW5lcmF0ZWRNSU1FVHlwZUZv
clVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgTk9USU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKQEAgLTYy
NywxNCArNjM4LDE0IEBACiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQo
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZCgpIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSB7IG5vdEltcGxl
bWVudGVkKCk7IH0KK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNl
UmVwbGFjZW1lbnQoKSB7IE5PVElNUExFTUVOVEVEKCk7IH0KIAogdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQogewpA
QCAtNjQ1LDIyICs2NTYsMjIgQEAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgTk9USU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogfQogCiBi
b29sIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
Tk9USU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTY3Niw0OCArNjg3
LDQ4IEBACiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRvd25sb2FkKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBM
RU1FTlRFRCgpOwogfQogCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxs
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgTk9USU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigpOwogfQog
CiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVO
VEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoKTsKIH0KIAogUmVzb3VyY2VFcnJvciBG
cmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKCk7CiB9CiAKIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJD
bGllbnQ6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKCk7CiB9CiAKIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJD
bGllbnQ6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKICAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcigpOwogfQogCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50
OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBOT1RJTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKCk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZhbGxCYWNr
KGNvbnN0IFJlc291cmNlRXJyb3ImKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTk9U
SU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTcyOCwxMyArNzM5LDEz
IEBACiAKIEZyYW1lKiBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5PVElNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBOT1RJTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzZXRN
YWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQpAQCAtNzQ4LDEyICs3NTksMTIgQEAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c3Rh
cnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgTk9USU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6
dXBkYXRlR2xvYmFsSGlzdG9yeShjb25zdCBLVVJMJikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIE5PVElNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNh
dmVQbGF0Zm9ybURhdGFUb0NhY2hlZFBhZ2UoQ2FjaGVkUGFnZSopCmRpZmYgLXVyIHdlYmtpdC0x
LjAuMS5vcmlnL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
aCB3ZWJraXQtMS4wLjEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCi0tLSB3ZWJraXQtMS4wLjEub3JpZy9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgJMjAwOC0wNi0xNSAxNjo0MDowNi4wMDAwMDAwMDAgLTA3MDAK
KysrIHdlYmtpdC0xLjAuMS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgJMjAwOC0wOS0yMyAxMjowNTo0My4wMDAwMDAwMDAgLTA3MDAKQEAgLTk3LDYgKzk3
LDggQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUG9saWN5Q2hlY2soKTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsTG9h
ZEltYWdlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyAmdXJpKTsKKwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0o
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1TdGF0ZT4pOwpkaWZmIC11ciB3ZWJraXQtMS4wLjEub3JpZy9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCB3ZWJraXQtMS4wLjEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKLS0tIHdlYmtpdC0xLjAuMS5vcmlnL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCTIwMDgtMDYtMTUgMTY6NDA6MDYuMDAwMDAwMDAwIC0wNzAwCisrKyB3ZWJraXQt
MS4wLjEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJMjAwOC0wOS0yNiAyMzow
OTozOS4wMDAwMDAwMDAgLTA3MDAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0
TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRHdGsuaCIKQEAgLTg5
LDYgKzkwLDcgQEAKICAgICBDT1BZX0NMSVBCT0FSRCwKICAgICBQQVNURV9DTElQQk9BUkQsCiAg
ICAgQ1VUX0NMSVBCT0FSRCwKKyAgICBJTUFHRV9SRVFVRVNURUQsCiAgICAgTEFTVF9TSUdOQUwK
IH07CiAKQEAgLTkyNyw2ICs5MjksMTcgQEAKICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsCiAg
ICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsKIAorCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25h
bHNbSU1BR0VfUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygiaW1hZ2UtcmVxdWVzdGVkIiwKKyAg
ICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAo
R1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAg
ICAgICB3ZWJraXRfbWFyc2hhbF9WT0lEX19TVFJJTkcsCisgICAgICAgICAgICBHX1RZUEVfTk9O
RSwgMSwKKyAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcgKTsKKwogICAgIC8qKgogICAgICAqIFdl
YktpdFdlYlZpZXc6OnBvcHVsYXRlLXBvcHVwOgogICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVj
dCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTE2ODIsNiArMTY5NSwxNCBAQAog
ICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50LCBOVUxMLCBO
VUxMLCBiYXNlVXJpKTsKIH0KIAordm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9pbWcoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIGJhc2VVcmksIGNvbnN0IGdjaGFyKmZuYW1l
ICkKK3sKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7
CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKCBTdHJpbmcoZm5hbWUpICk7CisKKyAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5sb2FkUmVzb3VyY2UoIFN0cmluZyhiYXNl
VXJpKSwgc2hhcmVkQnVmZmVyICk7Cit9CisKIHZvaWQgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9h
ZGluZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKZGlmZiAtdXIgd2Via2l0LTEuMC4xLm9yaWcvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oIHdlYmtpdC0xLjAuMS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKLS0tIHdlYmtpdC0xLjAuMS5vcmlnL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaAkyMDA4LTA2LTE1IDE2OjQwOjA2LjAwMDAwMDAwMCAtMDcwMAor
Kysgd2Via2l0LTEuMC4xL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAkyMDA4LTA5
LTI2IDAwOjE1OjEyLjAwMDAwMDAwMCAtMDcwMApAQCAtMTUyLDYgKzE1Miw5IEBACiB3ZWJraXRf
d2ViX3ZpZXdfc3RvcF9sb2FkaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9pbWcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIGJhc2VVcmksIGNvbnN0
IGdjaGFyKmZuYW1lICk7CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X29wZW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmll
dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciAgICAgICAgICAqdXJpKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>