<?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>44721</bug_id>
          
          <creation_ts>2010-08-26 14:49:35 -0700</creation_ts>
          <short_desc>XHR.responseBlob</short_desc>
          <delta_ts>2013-02-18 15:29:43 -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>XML</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>44722</dependson>
    
    <dependson>44133</dependson>
    
    <dependson>47321</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>fishd</cc>
    
    <cc>jarred</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>leo.yang</cc>
    
    <cc>me</cc>
    
    <cc>mjs</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270131</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-26 14:49:35 -0700</bug_when>
    <thetext>This is an umbrella bug for adding support for getting the response as a blob.

Two new additions for the XHR interface in support of this. This is not entirely solidified yet, still pending some discussion on the public lists.

boolean attribute asBlob;
// Prepares the XHR to make the response available as a blob object.
// Defaults to false, must be set after calling open() and
// prior to calling send(). Gets reset upon subsequent calls to open().
// Throws INVALID_STATE_ERR if set at an invalid time. Maybe read at
// anytime without exception.

Blob attribute responseBlob;
// Returns a blob the contains the response body.
// Only valid to access when asBlob is true and when the request is in
// a terminal state. Throws INVALID_STATE_ERR if accessed at an
// invalid time.

When asBlob is true, the other response accessors (responseText, resonseXML, responseBody) throw INVALID_STATE_ERR if accessed.

We&apos;re making this &quot;modal&quot; for the benefit of the browser vendors, to make it easier for them to know how to handle the response data as it comes in. With a priori knowlege that the data need never be made available thru the responseText attribute, life is a little easier for them/us.

Also see http://code.google.com/p/chromium/issues/detail?id=52486</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270132</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-26 14:50:26 -0700</bug_when>
    <thetext>Script bindings are being taken care of in...
https://bugs.webkit.org/show_bug.cgi?id=44133</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270157</commentid>
    <comment_count>2</comment_count>
      <attachid>65629</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-26 15:33:03 -0700</bug_when>
    <thetext>Created attachment 65629
n/a

ChangeLog comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270158</commentid>
    <comment_count>3</comment_count>
      <attachid>65629</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-08-26 15:33:47 -0700</bug_when>
    <thetext>Comment on attachment 65629
n/a

ooops... attached patch to the wrong bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516258</commentid>
    <comment_count>4</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-06 14:36:30 -0800</bug_when>
    <thetext>Any updates on this?  I&apos;m volunteering...

The spec has changed and responseBlob/asBlob are no longer applicable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516287</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-12-06 15:19:27 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Any updates on this?  I&apos;m volunteering...
&gt; The spec has changed and responseBlob/asBlob are no longer applicable.

Hi Jarred,

I&apos;ve been dragging my feet on this for two reasons.

1) The &quot;arraybuffer&quot; type can be used to satisfy many cases &quot;blob&quot; would also work well for. And constructing a Blob given an ArrayBuffer is pretty straightforward if you really want/need a blob. 

2) Our (chromium&apos;s) preferred strategy of implementing this requires some contentious &apos;layering violations&apos;. In the &quot;blob&quot; case, the data need never be present in a renderer process in order to return a Blob. For that to work, the ResourceHandle (platform layer) logically needs to produce a Blob (webcore layer), hence the layering violation.

Getting to a workable solution that achieves the goal outlined in #2 is not so straightforward, and given #1, the motivation just hasn&apos;t been there to do it.

Having the API be functional would certainly be nice, and there is a relatively self contained approach to getting it working for XHR by using a BlobBuilder from within XHR (similar to how m_binaryResponseBuilder is used for the &quot;arraybuffer&quot; case). I&apos;ve been hesitant to do that because its inferior to #2, and honestly am concerned that it&apos;s presence could be used as a reason to reject later efforts to actually realize #2.

So long as we (chrome) can come back latter an actually realize #2 for our port, doing an impl for the general case would probably be a good thing. At least then the API would be functional.

Anyway... that&apos;s the update... what did you have in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516448</commentid>
    <comment_count>6</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-06 19:32:04 -0800</bug_when>
    <thetext>Understood completely.

(In reply to comment #5)
&gt; Anyway... that&apos;s the update... what did you have in mind?

I was just curious if this was still in the back of someone&apos;s mind.  I understand the layering issue and the optimal case for a Blob to be able to be a handle to an out-of-memory resource that can have its data streamed on demand.  I&apos;m impartial to providing the working API in the interim, or not.  But I&apos;d like to think the optimal case wouldn&apos;t be forgotten nor argued just because we have something that works already in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835791</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-18 15:29:43 -0800</bug_when>
    <thetext>There is no responseBlob property now, as response one took over it. Anyway, the feature is obviously implemented, and tracking it with a meta bug is not useful.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65629</attachid>
            <date>2010-08-26 15:33:03 -0700</date>
            <delta_ts>2010-08-26 15:50:17 -0700</delta_ts>
            <desc>n/a</desc>
            <filename>not_applicable</filename>
            <type>text/plain</type>
            <size>22879</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjEzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDgtMjYgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yICJkb3dubG9hZFRvRmlsZSIgdG8gUmVzb3VyY2VSZXF1ZXN0QmFz
ZSBhbmQgUmVzb3VyY2VSZXNwb25zZUJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0NzIyCisgICAgICAgIC0gQWRkcyBhIFJlc291cmNlUmVxdWVz
dEJhc2UubV9kb3dubG9hZFRvRmlsZSBib29sIGRhdGEgbWVtYmVyIHdpdGggYSBnZXR0ZXIgYW5k
IHNldHRlci4KKyAgICAgICAgLSBBZGRzIGEgUmVzb3VyY2VSZXNwb25zZUJhc2UubV9kb3dubG9h
ZEZpbGVQYXRoIFN0cmluZyBkYXRhIG1lbWJlciB3aXRoIGEgZ2V0dGVyIGFuZCBzZXR0ZXIuCisg
ICAgICAgIC0gQWRkcyBhIGRpZFJlY2VpdmVGaWxlRGF0YSgpIG1ldGhvZCB0byByZXBvcnQgcHJv
Z3Jlc3Mgd2l0aG91dCByZXBvcnRpbmcgdGhlIGRhdGEgZm9yCisgICAgICAgICAgc3VjaCByZXF1
ZXN0cyBpbiBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCBhbmQgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC4KKyAgICAgICAgLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwg
V29ya2VyVGhyZWFkYWJsZUxvYWRlciwgYW5kCisgICAgICAgICAgVGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXIgdG8gcGx1bWIgdGhlIGRpZFJlY2VpdmVGaWxlRGF0YSgpIGNhbGxzIGFyb3Vu
ZC4KKworICAgICAgICBObyBuZXcgY29udGVudCBhY2Nlc3NpYmxlIGZ1bmN0aW9uYWxpdHksIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNl
aXZlRmlsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVxdWVzdCk6IERvbid0IGNhbGwgZGlkUmVjZWl2ZURhdGEgZm9yIGRvd25sb2FkVG9G
aWxlIHJlcXVlc3RzLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6IEFkZGVk
IGEgY29tbWVudCBhYm91dCBub3QgYmVpbmcgY2FsbGVkIGZvciBkb3dubG9hZFRvRmlsZSByZXF1
ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRmlsZURhdGEpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSk6IEFkZGVkIGEgY29tbWVudCBhYm91dCBub3QgYmVpbmcgY2FsbGVkIGZvciBkb3dubG9hZFRv
RmlsZSByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVGaWxlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJD
bGllbnRXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZUZpbGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkUmVj
ZWl2ZUZpbGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVGaWxlRGF0YSk6CisgICAgICAgICogbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6YWRvcHQpOiBDb3B5IG1fZG93bmxvYWRUb0ZpbGUuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSk6IENvcHkgbV9kb3dubG9hZFRvRmlsZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmVxdWFsSWdub3JpbmdIZWFkZXJGaWVsZHMpOiBDb21wYXJlIG1fZG93
bmxvYWRUb0ZpbGUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpkb3dubG9hZFRv
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXREb3dubG9h
ZFRvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9w
dCk6IENvcHkgbV9kb3dubG9hZGVkRmlsZVBhdGguCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6Y29weURhdGEpOiBDb3B5IG1fZG93bmxvYWRlZEZpbGVQYXRoLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRvd25sb2FkRmlsZVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldERvd25sb2FkRmlsZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUpOiBD
b21wYXJlIG1fZG93bmxvYWRlZEZpbGVQYXRoLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxMC0wOC0yNiAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA2NjEz
OSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZFJlY2VpdgogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGhS
ZWNlaXZlZCk7CiB9CiAKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZUZpbGVEYXRhKFN1YnJlc291cmNlTG9hZGVy
KiBsb2FkZXIsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOwor
ICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBsb2FkZXIgPT0gbV9sb2FkZXIpOworCisgICAgLy8g
SWdub3JlIHJlc3BvbnNlIGJvZHkgb2YgcHJlZmxpZ2h0IHJlcXVlc3RzLgorICAgIGlmIChtX2Fj
dHVhbFJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RmlsZURhdGEobGVuZ3RoUmVjZWl2ZWQpOworfQorI2VuZGlmCisKIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIp
CiB7CiAgICAgQVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlcik7CkBAIC0zNTAsOSArMzY0LDE1IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWUKIAogICAgIGRpZFJlY2Vp
dmVSZXNwb25zZSgwLCByZXNwb25zZSk7CiAKLSAgICBjb25zdCBjaGFyKiBieXRlcyA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSk7Ci0gICAgaW50IGxlbiA9IHN0YXRpY19j
YXN0PGludD4oZGF0YS5zaXplKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhKDAsIGJ5dGVzLCBsZW4p
OworI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikKKyAgICBpZiAoIXJlcXVlc3QuZG93bmxv
YWRUb0ZpbGUoKSkgeworI2VuZGlmCisgICAgICAgIGNvbnN0IGNoYXIqIGJ5dGVzID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICAgICAgaW50IGxlbiA9IHN0YXRp
Y19jYXN0PGludD4oZGF0YS5zaXplKCkpOworICAgICAgICBkaWRSZWNlaXZlRGF0YSgwLCBieXRl
cywgbGVuKTsKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCisgICAgfQorI2VuZGlmCiAK
ICAgICBkaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOwogfQpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDYgKzc2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGxlbmd0aFJl
Y2VpdmVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3Vy
Y2VMb2FkZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9C
KQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZpbGVEYXRhKFN1YnJlc291cmNlTG9h
ZGVyKiwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQqLyk7CisjZW5kaWYKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBi
b29sJiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA2NjEzOSkKKysrIFdlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0NiwxNCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAv
KnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgY2hhciosIGludCAvKmxlbmd0aFJlY2VpdmVkKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgLypsZW5n
dGhSZWNlaXZlZCovKSB7IH0gLy8gTm90IGNhbGxlZCBpZiByZXF1ZXN0LmRvd25sb2FkVG9GaWxl
IGlzIHNldC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFN1YnJl
c291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCAvKmxlbmd0aFJlY2VpdmVkKi8pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9Ci0gICAgCisjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQorICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRmlsZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBpbnQg
LypsZW5ndGhSZWNlaXZlZCovKSB7IH0gLy8gT25seSBjYWxsZWQgaWYgcmVxdWVzdC5kb3dubG9h
ZFRvRmlsZSBpcyBzZXQuCisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBnZXRTaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShTdWJyZXNvdXJjZUxvYWRlciosIGJvb2wmIC8qc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UqLykgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRD
YW5jZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gNjYxMzkpCisrKyBXZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypi
eXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsg
fQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciosIGludCAvKmxlbmd0aFJlY2VpdmVkKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCAvKmxlbmd0aFJlY2VpdmVkKi8pIHsg
fSAvLyBOb3QgY2FsbGVkIHdoZW4gcmVxdWVzdC5kb3dubG9hZFRvRmlsZQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovKSB7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSB7IH0KLQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0Ip
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRmlsZURhdGEoaW50IC8qIGxlbmd0aFJl
Y2VpdmVkKi8pIHsgfSAvLyBPbmx5IGNhbGxlZCBmb3IgcmVxdWVzdC5kb3dubG9hZFRvRmlsZQor
I2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgflRocmVhZGFibGVMb2Fk
ZXJDbGllbnQoKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXIuaAkocmV2aXNpb24gNjYxMzkpCisrKyBXZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKICAgICAgICAgfQogCisjaWYgRU5BQkxF
KFhIUl9SRVNQT05TRV9CTE9CKQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVGaWxlRGF0YShpbnQg
bGVuZ3RoUmVjZWl2ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUZpbGVEYXRhKGxlbmd0aFJlY2VpdmVk
KTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKICAgICAgICAgewogICAgICAgICAgICAgbV9kb25lID0g
dHJ1ZTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCShy
ZXZpc2lvbiA2NjEzOSkKKysrIFdlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDE0IEBAIHN0YXRpYyB2b2lkIHdvcmtl
ckNvbnRleHREaWRSZWNlaXZlRGF0YSgKICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNl
aXZlRGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCksIHZlY3RvckRhdGEtPnNpemUoKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCitzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlk
UmVjZWl2ZUZpbGVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgaW50IGxl
bmd0aFJlY2VpdmVkKQoreworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNX
b3JrZXJDb250ZXh0KCkpOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVGaWxl
RGF0YShsZW5ndGhSZWNlaXZlZCk7Cit9CisjZW5kaWYKKwogdm9pZCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCiB7CiAgICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+IHZlY3Rv
ciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4obGVuZ3RoUmVjZWl2ZWQpKTsgLy8gbmVlZHMg
dG8gYmUgYW4gT3duUHRyIGZvciB1c2FnZSB3aXRoIGNyZWF0ZUNhbGxiYWNrVGFzay4KQEAgLTE5
OCw2ICsyMDYsMTMgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQgog
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVEYXRhLCBtX3dvcmtlckNsaWVudFdy
YXBwZXIsIHZlY3Rvci5yZWxlYXNlKCkpLCBtX3Rhc2tNb2RlKTsKIH0KIAorI2lmIEVOQUJMRShY
SFJfUkVTUE9OU0VfQkxPQikKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVh
ZEJyaWRnZTo6ZGlkUmVjZWl2ZUZpbGVEYXRhKGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFj
a1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlRmlsZURhdGEsIG1fd29ya2VyQ2xpZW50V3Jh
cHBlciwgbGVuZ3RoUmVjZWl2ZWQpLCBtX3Rhc2tNb2RlKTsKK30KKyNlbmRpZgorCiBzdGF0aWMg
dm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
NiArMTE4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUZpbGVEYXRhKGludCBsZW5ndGhSZWNlaXZlZCk7CisjZW5kaWYKIAogICAgICAg
ICAgICAgLy8gT25seSB0byBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgICAg
IFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX21haW5UaHJlYWRMb2FkZXI7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZp
c2lvbiA2NjEzOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQCBQYXNzT3duUHRyPFJlc291
cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1CiAgICAgcmVxdWVzdC0+c2V0Rmlyc3RQYXJ0eUZvckNv
b2tpZXMoZGF0YS0+bV9maXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmVxdWVzdC0+c2V0SFRU
UE1ldGhvZChkYXRhLT5tX2h0dHBNZXRob2QpOwogICAgIHJlcXVlc3QtPnNldFRhcmdldFR5cGUo
ZGF0YS0+bV90YXJnZXRUeXBlKTsKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCisgICAg
cmVxdWVzdC0+c2V0RG93bmxvYWRUb0ZpbGUoZGF0YS0+bV9kb3dubG9hZFRvRmlsZSk7CisjZW5k
aWYKIAogICAgIHJlcXVlc3QtPnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwogICAgIHJlcXVlc3Qt
Pm1faHR0cEhlYWRlckZpZWxkcy5hZG9wdChkYXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSk7
CkBAIC03OCw2ICs4MSw5IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3RE
YXQKICAgICBkYXRhLT5tX2h0dHBNZXRob2QgPSBodHRwTWV0aG9kKCkuY3Jvc3NUaHJlYWRTdHJp
bmcoKTsKICAgICBkYXRhLT5tX2h0dHBIZWFkZXJzID0gaHR0cEhlYWRlckZpZWxkcygpLmNvcHlE
YXRhKCk7CiAgICAgZGF0YS0+bV90YXJnZXRUeXBlID0gbV90YXJnZXRUeXBlOworI2lmIEVOQUJM
RShYSFJfUkVTUE9OU0VfQkxPQikKKyAgICBkYXRhLT5tX2Rvd25sb2FkVG9GaWxlID0gbV9kb3du
bG9hZFRvRmlsZTsKKyNlbmRpZgogCiAgICAgZGF0YS0+bV9yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpKTsKICAgICBz
aXplX3QgZW5jb2RpbmdBcnJheVNpemUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKQEAgLTM0MCw3ICszNDYsMTIgQEAgYm9vbCBlcXVh
bElnbm9yaW5nSGVhZGVyRmllbGRzKGNvbnN0IFJlcwogICAgIAogICAgIGlmIChhLmFsbG93Q29v
a2llcygpICE9IGIuYWxsb3dDb29raWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
KworI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikKKyAgICBpZiAoYS5kb3dubG9hZFRvRmls
ZSgpICE9IGIuZG93bmxvYWRUb0ZpbGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CisKICAgICBGb3JtRGF0YSogZm9ybURhdGFBID0gYS5odHRwQm9keSgpOwogICAgIEZvcm1EYXRh
KiBmb3JtRGF0YUIgPSBiLmh0dHBCb2R5KCk7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDY2MTM5KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDYgKzE0MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRh
cmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0VHlwZTsgfQogICAg
ICAgICB2b2lkIHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSB0eXBlKSB7IG1fdGFyZ2V0VHlwZSA9
IHR5cGU7IH0KIAorI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikKKyAgICAgICAgLy8gSWYg
dHJ1ZSwgdGhlIHJlc3BvbnNlIGJvZHkgd2lsbCBiZSBkb3dubG9hZGVkIHRvIGEgZmlsZSBtYW5h
Z2VkIGJ5IHRoZSBuZXR3b3JrIGxheWVyLgorICAgICAgICAvLyBTZWUgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmRvd25sb2FkZWRGaWxlUGF0aC4KKyAgICAgICAgYm9vbCBkb3dubG9hZFRvRmlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRUb0ZpbGU7IH0KKyAgICAgICAgdm9pZCBzZXREb3du
bG9hZFRvRmlsZShib29sIGRvd25sb2FkKSB7IG1fZG93bmxvYWRUb0ZpbGUgPSBkb3dubG9hZDsg
fQorI2VuZGlmCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBVc2VkIHdoZW4gUmVzb3VyY2VS
ZXF1ZXN0IGlzIGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgcmVxdWVzdAogICAgICAgICBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKQEAgLTE0OCw2ICsxNTQs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcmVwb3J0VXBsb2FkUHJv
Z3Jlc3MoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0TG9hZFRpbWluZyhmYWxzZSkKICAg
ICAgICAgICAgICwgbV90YXJnZXRUeXBlKFRhcmdldElzU3VicmVzb3VyY2UpCisjaWYgRU5BQkxF
KFhIUl9SRVNQT05TRV9CTE9CKQorICAgICAgICAgICAgLCBtX2Rvd25sb2FkVG9GaWxlKGZhbHNl
KQorI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0xNjIsNiArMTcxLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzKGZh
bHNlKQogICAgICAgICAgICAgLCBtX3JlcG9ydExvYWRUaW1pbmcoZmFsc2UpCiAgICAgICAgICAg
ICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1YnJlc291cmNlKQorI2lmIEVOQUJMRShYSFJfUkVT
UE9OU0VfQkxPQikKKyAgICAgICAgICAgICwgbV9kb3dubG9hZFRvRmlsZShmYWxzZSkKKyNlbmRp
ZgogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtMTgzLDYgKzE5NSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzOwogICAgICAgICBi
b29sIG1fcmVwb3J0TG9hZFRpbWluZzsKICAgICAgICAgVGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7
CisjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQorICAgICAgICBib29sIG1fZG93bmxvYWRU
b0ZpbGU7CisjZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgYXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsKQEAgLTIwNiw2ICsyMjEsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsKICAg
ICAgICAgYm9vbCBtX2FsbG93Q29va2llczsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
VGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7CisjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQor
ICAgICAgICBib29sIG1fZG93bmxvYWRUb0ZpbGU7CisjZW5kaWYKICAgICB9OwogICAgIAogICAg
IHVuc2lnbmVkIGluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QoKTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcAkocmV2aXNpb24gNjYxMzkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDkgQEAg
UGFzc093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlcwogICAgIHJlc3BvbnNlLT5t
X2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQoZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNlKCkpOwog
ICAgIHJlc3BvbnNlLT5zZXRMYXN0TW9kaWZpZWREYXRlKGRhdGEtPm1fbGFzdE1vZGlmaWVkRGF0
ZSk7CiAgICAgcmVzcG9uc2UtPnNldFJlc291cmNlTG9hZFRpbWluZyhkYXRhLT5tX3Jlc291cmNl
TG9hZFRpbWluZy5yZWxlYXNlKCkpOworI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikKKyAg
ICByZXNwb25zZS0+c2V0RG93bmxvYWRGaWxlUGF0aChkYXRhLT5tX2Rvd25sb2FkRmlsZVBhdGgp
OworI2VuZGlmCiAKICAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOwogfQpAQCAtMTI1LDYg
KzEyOCw5IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGEKICAgICBk
YXRhLT5tX2xhc3RNb2RpZmllZERhdGUgPSBsYXN0TW9kaWZpZWREYXRlKCk7CiAgICAgaWYgKG1f
cmVzb3VyY2VMb2FkVGltaW5nKQogICAgICAgICBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZyA9
IG1fcmVzb3VyY2VMb2FkVGltaW5nLT5kZWVwQ29weSgpOworI2lmIEVOQUJMRShYSFJfUkVTUE9O
U0VfQkxPQikKKyAgICBkYXRhLT5tX2Rvd25sb2FkRmlsZVBhdGggPSBkb3dubG9hZEZpbGVQYXRo
KCkuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKKyNlbmRpZgogICAgIHJldHVybiBkYXRhLnJlbGVhc2Uo
KTsKIH0KIApAQCAtNTE1LDYgKzUyMSwyMiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpz
ZXRSZXNvdXJjZUxvCiAgICAgbV9yZXNvdXJjZUxvYWRUaW1pbmcgPSByZXNvdXJjZUxvYWRUaW1p
bmc7CiB9CiAKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCitjb25zdCBTdHJpbmcmIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpkb3dubG9hZEZpbGVQYXRoKCkgY29uc3QKK3sKKyAgICBsYXp5
SW5pdCgpOworCisgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKK30KKwordm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0RG93bmxvYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgbGF6eUluaXQoKTsKKworICAgIG1fZG93bmxvYWRGaWxlUGF0aCAgPSBwYXRoOwor
fQorI2VuZGlmCisKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmxhenlJbml0KCkgY29uc3QK
IHsKICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVzcG9uc2UqPihzdGF0aWNfY2FzdDxjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlKj4odGhpcykpLT5wbGF0Zm9ybUxhenlJbml0KCk7CkBAIC01NDQsNiAr
NTY2LDEwIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QKICAgICAg
ICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKICAgICBp
ZiAoYS5yZXNvdXJjZUxvYWRUaW1pbmcoKSAhPSBiLnJlc291cmNlTG9hZFRpbWluZygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQorICAgIGlm
IChhLmRvd25sb2FkRmlsZVBhdGgoKSAhPSBiLmRvd25sb2FkRmlsZVBhdGgoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtQ29tcGFyZShhLCBiKTsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwOSw2ICsxMDksMTQgQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3Vy
Y2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRUaW1pbmcoUGFz
c1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+KTsKIAorI2lmIEVOQUJMRShYSFJfUkVTUE9OU0Vf
QkxPQikKKyAgICAvLyBUaGlzIGluZGljYXRlcyB0aGUgbG9jYXRpb24gb2YgYSBkb3dubG9hZGVk
IHJlc3BvbnNlIGlmIHRoZQorICAgIC8vIFJlc291cmNlUmVxdWVzdCBoYWQgdGhlIGRvd25sb2Fk
VG9GaWxlIGZsYWcgc2V0IHRvIHRydWUuCisgICAgLy8gVEJEOiBIb3cgaXMgdGhlIGxpZmV0aW1l
IG9mIHRoaXMgZmlsZSBpcyBtYW5hZ2VkPworICAgIGNvbnN0IFN0cmluZyYgZG93bmxvYWRGaWxl
UGF0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0RG93bmxvYWRGaWxlUGF0aChjb25zdCBTdHJpbmcm
IHBhdGgpOworI2VuZGlmCisKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBt
YXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gcHJvdmlkZSBwbGF0Zm9ybS1zcGVjaWZpYyBtZW1v
cnkgdXNhZ2UgaW5mb3JtYXRpb24KICAgICB1bnNpZ25lZCBtZW1vcnlVc2FnZSgpIGNvbnN0CiAg
ICAgewpAQCAtMTQzLDYgKzE1MSw5IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2Nvbm5l
Y3Rpb25JRDsKICAgICBib29sIG1fY29ubmVjdGlvblJldXNlZCA6IDE7CiAgICAgUmVmUHRyPFJl
c291cmNlTG9hZFRpbWluZz4gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CisjaWYgRU5BQkxFKFhIUl9S
RVNQT05TRV9CTE9CKQorICAgIFN0cmluZyBtX2Rvd25sb2FkRmlsZVBhdGg7CisjZW5kaWYKIAog
ICAgIGJvb2wgbV9pc051bGwgOiAxOwogICAgIApAQCAtMTgwLDYgKzE5MSw5IEBAIHN0cnVjdCBD
cm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhIDoKICAgICBPd25QdHI8Q3Jvc3NUaHJlYWRI
VFRQSGVhZGVyTWFwRGF0YT4gbV9odHRwSGVhZGVyczsKICAgICB0aW1lX3QgbV9sYXN0TW9kaWZp
ZWREYXRlOwogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGlt
aW5nOworI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikKKyAgICBTdHJpbmcgbV9kb3dubG9h
ZEZpbGVQYXRoOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA4LTI2ICBNaWNoYWVsIE5vcmRt
YW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciAiZG93bmxvYWRUb0ZpbGUiIHRvIFJl
c291cmNlUmVxdWVzdEJhc2UgYW5kIFJlc291cmNlUmVzcG9uc2VCYXNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcyMgorICAgICAgICAtIE1vdmVk
IHN0b3JhZ2UgZm9yIHRoZXNlIGRhdGEgbWVtYmVycyBmcm9tIG91ciBXZWJLaXRBUEkgY2xhc3Nl
cworICAgICAgICAgIHRvIHRoZSBXZWJDb3JlIGNsYXNzZXMuCisKKyAgICAgICAgKiBzcmMvV2Vi
VVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlcXVlc3RQcml2YXRlSW1w
bDo6V2ViVVJMUmVxdWVzdFByaXZhdGVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVx
dWVzdDo6ZG93bmxvYWRUb0ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0Ojpz
ZXREb3dubG9hZFRvRmlsZSk6CisgICAgICAgICogc3JjL1dlYlVSTFJlcXVlc3RQcml2YXRlLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlcXVlc3RQcml2YXRlOjpXZWJVUkxSZXF1ZXN0UHJp
dmF0ZSk6CisgICAgICAgICogc3JjL1dlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMUmVzcG9uc2VQcml2YXRlSW1wbDo6V2ViVVJMUmVzcG9uc2VQcml2YXRlSW1wbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpkb3dubG9hZEZpbGVQYXRoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OnNldERvd25sb2FkRmlsZVBhdGgpOgorICAg
ICAgICAqIHNyYy9XZWJVUkxSZXNwb25zZVByaXZhdGUuaDoKKwogMjAxMC0wOC0yNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24g
NjYxMzkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlcXVlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fcmVzb3Vy
Y2VSZXF1ZXN0ID0gJm1fcmVzb3VyY2VSZXF1ZXN0QWxsb2NhdGlvbjsKICAgICAgICAgbV9hbGxv
d1N0b3JlZENyZWRlbnRpYWxzID0gcC0+bV9hbGxvd1N0b3JlZENyZWRlbnRpYWxzOwotICAgICAg
ICBtX2Rvd25sb2FkVG9GaWxlID0gcC0+bV9kb3dubG9hZFRvRmlsZTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcG9zZSgpIHsgZGVsZXRlIHRoaXM7IH0KQEAgLTI0OSwxMiArMjQ4LDE4
IEBAIHZvaWQgV2ViVVJMUmVxdWVzdDo6c2V0QXBwQ2FjaGVIb3N0SUQoaW4KIAogYm9vbCBXZWJV
UkxSZXF1ZXN0Ojpkb3dubG9hZFRvRmlsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bV9kb3dubG9hZFRvRmlsZTsKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlcXVlc3QtPmRvd25sb2FkVG9GaWxlKCk7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlVSTFJlcXVlc3Q6
OnNldERvd25sb2FkVG9GaWxlKGJvb2wgZG93bmxvYWRUb0ZpbGUpCiB7Ci0gICAgbV9wcml2YXRl
LT5tX2Rvd25sb2FkVG9GaWxlID0gZG93bmxvYWRUb0ZpbGU7CisjaWYgRU5BQkxFKFhIUl9SRVNQ
T05TRV9CTE9CKQorICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlcXVlc3QtPnNldERvd25sb2Fk
VG9GaWxlKGRvd25sb2FkVG9GaWxlKTsKKyNlbmRpZgogfQogCiBSZXNvdXJjZVJlcXVlc3QmIFdl
YlVSTFJlcXVlc3Q6OnRvTXV0YWJsZVJlc291cmNlUmVxdWVzdCgpCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlVSTFJlcXVlc3RQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJVUkxSZXF1ZXN0UHJpdmF0ZS5oCShyZXZpc2lvbiA2NjEzOSkKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVxdWVzdFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTcgKzM5LDEzIEBAIGNsYXNzIFdlYlVSTFJlcXVlc3RQcml2YXRlIHsKIHB1YmxpYzoK
ICAgICBXZWJVUkxSZXF1ZXN0UHJpdmF0ZSgpCiAgICAgICAgIDogbV9yZXNvdXJjZVJlcXVlc3Qo
MCkKLSAgICAgICAgLCBtX2FsbG93U3RvcmVkQ3JlZGVudGlhbHModHJ1ZSkKLSAgICAgICAgLCBt
X2Rvd25sb2FkVG9GaWxlKGZhbHNlKSB7IH0KKyAgICAgICAgLCBtX2FsbG93U3RvcmVkQ3JlZGVu
dGlhbHModHJ1ZSkgeyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViVVJMUmVxdWVzdCB3aGVuIGl0
IG5vIGxvbmdlciBuZWVkcyB0aGlzIG9iamVjdC4KICAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgp
ID0gMDsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCogbV9yZXNvdXJjZVJlcXVlc3Q7
CiAgICAgYm9vbCBtX2FsbG93U3RvcmVkQ3JlZGVudGlhbHM7Ci0KLSAgICAvLyBGSVhNRTogTW92
ZSB0aGlzIHRvIFJlc291cmNlUmVxdWVzdCBvbmNlIHdlIGhhdmUgYW4gaW50ZXJuYWwgY29uc3Vt
ZXIuCi0gICAgYm9vbCBtX2Rvd25sb2FkVG9GaWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24g
NjYxMzkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9yZXNvdXJjZVJl
c3BvbnNlQWxsb2NhdGlvbigqcC0+bV9yZXNvdXJjZVJlc3BvbnNlKQogICAgIHsKICAgICAgICAg
bV9yZXNvdXJjZVJlc3BvbnNlID0gJm1fcmVzb3VyY2VSZXNwb25zZUFsbG9jYXRpb247Ci0gICAg
ICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IHAtPm1fZG93bmxvYWRGaWxlUGF0aDsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpIHsgZGVsZXRlIHRoaXM7IH0KQEAgLTM2NSwxMiAr
MzY0LDE4IEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OnNldElzTXVsdGlwYXJ0UGF5bG8KIAogV2Vi
U3RyaW5nIFdlYlVSTFJlc3BvbnNlOjpkb3dubG9hZEZpbGVQYXRoKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5tX2Rvd25sb2FkRmlsZVBhdGg7CisjaWYgRU5BQkxFKFhIUl9SRVNQ
T05TRV9CTE9CKQorICAgIHJldHVybiBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+ZG93
bmxvYWRGaWxlUGF0aCgpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBXZWJVUkxSZXNwb25zZTo6c2V0RG93bmxvYWRGaWxlUGF0aChjb25zdCBXZWJT
dHJpbmcmIGRvd25sb2FkRmlsZVBhdGgpCiB7Ci0gICAgbV9wcml2YXRlLT5tX2Rvd25sb2FkRmls
ZVBhdGggPSBkb3dubG9hZEZpbGVQYXRoOworI2lmIEVOQUJMRShYSFJfUkVTUE9OU0VfQkxPQikK
KyAgICBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+c2V0RG93bmxvYWRGaWxlUGF0aChk
b3dubG9hZEZpbGVQYXRoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlVSTFJlc3BvbnNlOjphc3Np
Z24oV2ViVVJMUmVzcG9uc2VQcml2YXRlKiBwKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJVUkxSZXNwb25zZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oCShyZXZpc2lvbiA2NjEzOSkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVVJMUmVzcG9uc2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkg
KzQ1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOwogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSogbV9yZXNvdXJjZVJlc3BvbnNlOwotCi0gICAgLy8g
RklYTUU6IE1vdmUgdGhpcyB0byBSZXNvdXJjZVJlc3BvbnNlIG9uY2Ugd2UgaGF2ZSBhbiBpbnRl
cm5hbCBjb25zdW1lci4KLSAgICBXZWJTdHJpbmcgbV9kb3dubG9hZEZpbGVQYXRoOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>