<?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>112593</bug_id>
          
          <creation_ts>2013-03-18 10:51:57 -0700</creation_ts>
          <short_desc>Merge MainResourceLoader::responseReceived into DocumentLoader</short_desc>
          <delta_ts>2013-03-19 18:17:37 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>104969</blocked>
    
    <blocked>112745</blocked>
    
    <blocked>112765</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>mkwst+watchlist</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>857297</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-18 10:51:57 -0700</bug_when>
    <thetext>...as well as content policy handling, which is started within responseReceived().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857311</commentid>
    <comment_count>1</comment_count>
      <attachid>193605</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-18 10:59:03 -0700</bug_when>
    <thetext>Created attachment 193605
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857431</commentid>
    <comment_count>2</comment_count>
      <attachid>193605</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 12:40:39 -0700</bug_when>
    <thetext>Comment on attachment 193605
patch

Attachment 193605 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17205560

New failing tests:
platform/chromium/http/tests/security/mixedContent/insecure-iframe-in-main-frame-blocked.html
http/tests/security/contentSecurityPolicy/1.1/form-action-src-blocked.html
http/tests/security/contentSecurityPolicy/1.1/form-action-src-get-blocked.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857447</commentid>
    <comment_count>3</comment_count>
      <attachid>193634</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-18 12:56:09 -0700</bug_when>
    <thetext>Created attachment 193634
attempted fix to test failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857573</commentid>
    <comment_count>4</comment_count>
      <attachid>193634</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-18 14:40:47 -0700</bug_when>
    <thetext>Comment on attachment 193634
attempted fix to test failure

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

&gt; Source/WebCore/loader/MainResourceLoader.cpp:-327
&gt; -    ref(); // balanced by deref in continueAfterContentPolicy and cancel

Why don&apos;t you need these manual ref counts anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857584</commentid>
    <comment_count>5</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-18 14:48:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 193634 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193634&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/MainResourceLoader.cpp:-327
&gt; &gt; -    ref(); // balanced by deref in continueAfterContentPolicy and cancel
&gt; 
&gt; Why don&apos;t you need these manual ref counts anymore?

I don&apos;t fully understand why they were there in the first place (they date back to the initial &quot;make the loader platform-independent&quot; effort). I can&apos;t find any other place we have raw ref/deref calls to protect an object during policy callbacks. Also, as far as I can tell, DocumentLoader is a little tougher to assassinate than MainResourceLoader.

My best guess is that these are already vestigial, but it&apos;s hard to prove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857803</commentid>
    <comment_count>6</comment_count>
      <attachid>193634</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-18 17:44:25 -0700</bug_when>
    <thetext>Comment on attachment 193634
attempted fix to test failure

Ok.  That&apos;s the part of this change that seems the scariest, but maybe I&apos;ve got my rose colored glasses on today.  ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858405</commentid>
    <comment_count>7</comment_count>
      <attachid>193634</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 10:10:38 -0700</bug_when>
    <thetext>Comment on attachment 193634
attempted fix to test failure

Clearing flags on attachment: 193634

Committed r146216: &lt;http://trac.webkit.org/changeset/146216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858406</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 10:10:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193605</attachid>
            <date>2013-03-18 10:59:03 -0700</date>
            <delta_ts>2013-03-18 12:56:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>dl_mrl_response.txt</filename>
            <type>text/plain</type>
            <size>27328</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAzLTE4ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2UgTWFpblJlc291cmNl
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkIGludG8gRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjU5MworCisgICAgICAgIFBh
cnQgb2YgdGhlIG9uZ29pbmcgZWZmb3J0IHRvIG1lcmdlIE1haW5SZXNvdXJjZUxvYWRlciBlbnRp
cmVseQorICAgICAgICBpbnRvIERvY3VtZW50TG9hZGVyLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Igb25seS4K
KworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpmaW5pc2hlZExvYWRpbmcpOiBUaGUgb25seSB0aGluZyBsZWZ0IGluCisgICAgICAgICAg
ICBNYWluUmVzb3VyY2VMb2FkZXIgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uIHdhcyBhIFJlZlB0
ciB3aGljaCBpbmRpcmVjdGx5CisgICAgICAgICAgICBwcm90ZWN0ZWQgRG9jdW1lbnRMb2FkZXIu
IE1vdmUgdGhlIFJlZlB0ciBoZXJlIGFuZCBwcm90ZWN0IERvY3VtZW50TG9hZGVyIGRpcmVjdGx5
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBN
b3ZlZCBmcm9tIE1haW5SZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpjYWxsQ29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOiBNb3ZlZCBmcm9tIE1haW5S
ZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51
ZUFmdGVyQ29udGVudFBvbGljeSk6IE1vdmVkIGZyb20gTWFpblJlc291cmNlTG9hZGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IpOiBNb3ZlZCBmcm9tIE1haW5SZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSk6IE1vdmVkIGZyb20g
TWFpblJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJl
Y2VpdmVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFp
blJlc291cmNlTG9hZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6
IFN0b3JlIG11bHRpcGFydCBiaXQgaGVyZS4KKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6TWFpblJl
c291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNl
aXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmg6CisKIDIwMTMtMDMt
MTggIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gVGhlIDxzZWxlY3Q+IGVsZW1lbnQgb24gQW5kcm9pZCBzaG91bGQgYWxzbyBzd2l0Y2gg
dG8gbmV3LWZsZXhib3gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CShyZXZpc2lvbiAxNDYwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw3IEBACiAgICAgICAgIHZvaWQgZ2V0
SWNvbkRhdGFGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICAgICAgYm9v
bCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0xvYWRpbmdN
dWx0aXBhcnRDb250ZW50KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsgfQog
CiAgICAgICAgIHZvaWQgc3RvcExvYWRpbmdQbHVnSW5zKCk7CiAgICAgICAgIHZvaWQgc3RvcExv
YWRpbmdTdWJyZXNvdXJjZXMoKTsKQEAgLTI4NSw2ICsyODUsMTIgQEAKICAgICAgICAgc3RhdGlj
IHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUp
OwogICAgICAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGJvb2wgc2hvdWxkQ29udGludWUpOwogCisgICAgICAgIHN0YXRpYyB2b2lk
IGNhbGxDb250aW51ZUFmdGVyQ29udGVudFBvbGljeSh2b2lkKiwgUG9saWN5QWN0aW9uKTsKKyAg
ICAgICAgdm9pZCBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24pOworCisg
ICAgICAgIHZvaWQgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICAgICAgUmVzb3Vy
Y2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkgY29uc3Q7CisKICAgICAg
ICAgdm9pZCBkZWxpdmVyU3Vic3RpdHV0ZVJlc291cmNlc0FmdGVyRGVsYXkoKTsKICAgICAgICAg
dm9pZCBzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnRM
b2FkZXI+Kik7CiAgICAgICAgICAgICAgICAgCkBAIC0zMjUsNiArMzMxLDcgQEAKICAgICAgICAg
Ym9vbCBtX2lzU3RvcHBpbmc7CiAgICAgICAgIGJvb2wgbV9nb3RGaXJzdEJ5dGU7CiAgICAgICAg
IGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OworICAgICAgICBib29sIG1faXNMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudDsKICAgICAgICAgYm9vbCBtX2xvYWRpbmdFbXB0eURvY3VtZW50OwogCiAgICAg
ICAgIC8vIEZJWE1FOiBEb2N1bWVudDo6bV9wcm9jZXNzaW5nTG9hZEV2ZW50IGFuZCBEb2N1bWVu
dExvYWRlcjo6bV93YXNPbmxvYWRIYW5kbGVkIGFyZSByb3VnaGx5IHRoZSBzYW1lCkBAIC0zNjgs
NiArMzc1LDggQEAKICAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5nIG1fZG9jdW1lbnRMb2FkVGlt
aW5nOwogCiAgICAgICAgIGRvdWJsZSBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQ7CisKKyAgICAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5OwogICAgIAogICAgICAgICBSZWZQdHI8
SWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrPiBtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjazsKICAg
ICAgICAgUmVmUHRyPEljb25EYXRhQ2FsbGJhY2s+IG1faWNvbkRhdGFDYWxsYmFjazsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAxNDYwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsOCArNjgsNiBAQAogTWFpblJlc291cmNlTG9hZGVyOjpN
YWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQogICAgIDog
bV9kYXRhTG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1
dGVEYXRhTG9hZE5vdykKICAgICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCi0g
ICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNlKQotICAgICwgbV93YWl0aW5nRm9y
Q29udGVudFBvbGljeShmYWxzZSkKICAgICAsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXIoMCkKIHsKIH0KQEAgLTExMywxNCArMTExLDYgQEAKICAgICBSZXNvdXJjZUVy
cm9yIHJlc291cmNlRXJyb3IgPSBlcnJvci5pc051bGwoKSA/IGZyYW1lTG9hZGVyKCktPmNhbmNl
bGxlZEVycm9yKHJlcXVlc3QoKSkgOiBlcnJvcjsKIAogICAgIG1fZGF0YUxvYWRUaW1lci5zdG9w
KCk7Ci0KLSAgICBpZiAobV93YWl0aW5nRm9yQ29udGVudFBvbGljeSkgewotICAgICAgICBmcmFt
ZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNhbmNlbENoZWNrKCk7Ci0gICAgICAgIEFTU0VS
VChtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5KTsKLSAgICAgICAgbV93YWl0aW5nRm9yQ29udGVu
dFBvbGljeSA9IGZhbHNlOwotICAgICAgICBkZXJlZigpOyAvLyBiYWxhbmNlcyByZWYgaW4gcmVz
cG9uc2VSZWNlaXZlZAotICAgIH0KLQogICAgIGlmIChsb2FkZXIoKSkKICAgICAgICAgbG9hZGVy
KCktPmNhbmNlbChyZXNvdXJjZUVycm9yKTsKIApAQCAtMTQ2LDE4ICsxMzYsNiBAQAogICAgIHJl
dHVybiBtX3Jlc291cmNlID8gbV9yZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkgOiBtX2luaXRp
YWxSZXF1ZXN0OwogfQogCi1SZXNvdXJjZUVycm9yIE1haW5SZXNvdXJjZUxvYWRlcjo6aW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLT5pbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKHJlcXVlc3Qo
KSk7Ci19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0ZvclBvbGljeUNo
YW5nZSgpCi17Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IGludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoKTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKLSAgICBj
YW5jZWwoZXJyb3IpOwotfQotCiBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBNYWluUmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2UpCkBAIC0xNzEs
MTc3ICsxNDksMTAgQEAKICAgICBtX2RvY3VtZW50TG9hZGVyLT53aWxsU2VuZFJlcXVlc3QocmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpj
b250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gY29udGVudFBvbGljeSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcikKLXsKLSAgICBLVVJMIHVybCA9IHJlcXVlc3QoKS51cmwo
KTsKLSAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gci5taW1lVHlwZSgpOwotICAgIAotICAg
IHN3aXRjaCAoY29udGVudFBvbGljeSkgewotICAgIGNhc2UgUG9saWN5VXNlOiB7Ci0gICAgICAg
IC8vIFByZXZlbnQgcmVtb3RlIHdlYiBhcmNoaXZlcyBmcm9tIGxvYWRpbmcgYmVjYXVzZSB0aGV5
IGNhbiBjbGFpbSB0byBiZSBmcm9tIGFueSBkb21haW4gYW5kIHRodXMgYXZvaWQgY3Jvc3MtZG9t
YWluIHNlY3VyaXR5IGNoZWNrcyAoNDEyMDI1NSkuCi0gICAgICAgIGJvb2wgaXNSZW1vdGVXZWJB
cmNoaXZlID0gKGVxdWFsSWdub3JpbmdDYXNlKCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiLCBt
aW1lVHlwZSkKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKCJtZXNzYWdlL3JmYzgyMiIsIG1pbWVUeXBlKQot
I2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKCJtdWx0aXBhcnQvcmVsYXRlZCIsIG1pbWVUeXBlKSkKLSAgICAgICAgICAgICYmICFt
X2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhU2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSk7Ci0gICAg
ICAgIGlmICghZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmNhblNob3dNSU1FVHlwZShtaW1lVHlw
ZSkgfHwgaXNSZW1vdGVXZWJBcmNoaXZlKSB7Ci0gICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5w
b2xpY3lDaGVja2VyKCktPmNhbm5vdFNob3dNSU1FVHlwZShyKTsKLSAgICAgICAgICAgIC8vIENo
ZWNrIHJlYWNoZWRUZXJtaW5hbFN0YXRlIHNpbmNlIHRoZSBsb2FkIG1heSBoYXZlIGFscmVhZHkg
YmVlbiBjYW5jZWxlZCBpbnNpZGUgb2YgX2hhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeVdpdGhF
cnJvckNvZGU6Oi4KLSAgICAgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgY2FzZSBQb2xpY3lEb3dubG9hZDogewotICAgICAgICAvLyBtX3Jlc291cmNlIGNhbiBiZSBu
dWxsLCBlLmcuIHdoZW4gbG9hZGluZyBhIHN1YnN0aXR1dGUgcmVzb3VyY2UgZnJvbSBhcHBsaWNh
dGlvbiBjYWNoZS4KLSAgICAgICAgaWYgKCFtX3Jlc291cmNlKSB7Ci0gICAgICAgICAgICByZWNl
aXZlZEVycm9yKGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5jYW5ub3RTaG93VVJMRXJyb3IocmVx
dWVzdCgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZChtX2RvY3VtZW50
TG9hZGVyLT5mcmFtZSgpLCBkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIHIpOwotCi0g
ICAgICAgIC8vIFdoZW4gc3RhcnRpbmcgdGhlIHJlcXVlc3QsIHdlIGRpZG4ndCBrbm93IHRoYXQg
aXQgd291bGQgcmVzdWx0IGluIGRvd25sb2FkIGFuZCBub3QgbmF2aWdhdGlvbi4gTm93IHdlIGtu
b3cgdGhhdCBtYWluIGRvY3VtZW50IFVSTCBkaWRuJ3QgY2hhbmdlLgotICAgICAgICAvLyBEb3du
bG9hZCBtYXkgdXNlIHRoaXMga25vd2xlZGdlIGZvciBwdXJwb3NlcyB1bnJlbGF0ZWQgdG8gY29v
a2llcywgbm90YWJseSBmb3Igc2V0dGluZyBmaWxlIHF1YXJhbnRpbmUgZGF0YS4KLSAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSB0aGlzLT5yZXF1ZXN0KCk7Ci0gICAgICAgIGZyYW1l
TG9hZGVyKCktPnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwotCi0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5jb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCwgcik7Ci0KLSAgICAgICAgLy8gSXQg
bWlnaHQgaGF2ZSBnb25lIG1pc3NpbmcKLSAgICAgICAgaWYgKGxvYWRlcigpKQotICAgICAgICAg
ICAgbG9hZGVyKCktPmRpZEZhaWwoaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIFBvbGljeUlnbm9yZToKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUobV9kb2N1
bWVudExvYWRlci0+ZnJhbWUoKSwgZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByKTsK
LSAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
LQotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBp
ZiAoci5pc0hUVFAoKSkgewotICAgICAgICBpbnQgc3RhdHVzID0gci5odHRwU3RhdHVzQ29kZSgp
OwotICAgICAgICBpZiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+PSAzMDApIHsKLSAgICAgICAg
ICAgIGJvb2wgaG9zdGVkQnlPYmplY3QgPSBmcmFtZUxvYWRlcigpLT5pc0hvc3RlZEJ5T2JqZWN0
RWxlbWVudCgpOwotCi0gICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5oYW5kbGVGYWxsYmFja0Nv
bnRlbnQoKTsKLSAgICAgICAgICAgIC8vIG9iamVjdCBlbGVtZW50cyBhcmUgbm8gbG9uZ2VyIHJl
bmRlcmVkIGFmdGVyIHdlIGZhbGxiYWNrLCBzbyBkb24ndAotICAgICAgICAgICAgLy8ga2VlcCB0
cnlpbmcgdG8gcHJvY2VzcyBkYXRhIGZyb20gdGhlaXIgbG9hZAotCi0gICAgICAgICAgICBpZiAo
aG9zdGVkQnlPYmplY3QpCi0gICAgICAgICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXItPmlzU3RvcHBpbmcoKSAmJiBtX2RvY3Vt
ZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSkgewotICAgICAgICBpZiAobV9k
b2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSkKLSAgICAg
ICAgICAgIGRhdGFSZWNlaXZlZCgwLCBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgp
LmNvbnRlbnQoKS0+ZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmNv
bnRlbnQoKS0+c2l6ZSgpKTsKLSAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPmlzTG9hZGlu
Z01haW5SZXNvdXJjZSgpKQotICAgICAgICAgICAgZGlkRmluaXNoTG9hZGluZygwKTsKLSAgICB9
Ci19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjYWxsQ29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3kodm9pZCogYXJndW1lbnQsIFBvbGljeUFjdGlvbiBwb2xpY3kpCi17Ci0gICAgc3RhdGlj
X2Nhc3Q8TWFpblJlc291cmNlTG9hZGVyKj4oYXJndW1lbnQpLT5jb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeShwb2xpY3kpOwotfQotCi12b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVB
ZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKLXsKLSAgICBBU1NFUlQobV93
YWl0aW5nRm9yQ29udGVudFBvbGljeSk7Ci0gICAgbV93YWl0aW5nRm9yQ29udGVudFBvbGljeSA9
IGZhbHNlOwotICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+aXNTdG9wcGluZygpKQotICAgICAg
ICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3ksIG1fcmVzcG9uc2UpOwotICAgIGRl
cmVmKCk7IC8vIGJhbGFuY2VzIHJlZiBpbiByZXNwb25zZVJlY2VpdmVkCi19Ci0KIHZvaWQgTWFp
blJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCBtX3Jlc291cmNlID09IHJlc291cmNlKTsKLSAgICBib29sIHdpbGxMb2FkRmFsbGJhY2sg
PSBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxs
YmFja0Zvck1haW5SZXNwb25zZShyZXF1ZXN0KCksIHIpOwotCi0gICAgLy8gVGhlIG1lbW9yeSBj
YWNoZSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIG9yIGl0cyBjYWNo
aW5nIHJ1bGVzLiBTbyBpZiBhIG1haW4gcmVzb3VyY2UgaXMgc2VydmVkCi0gICAgLy8gZnJvbSB0
aGUgYXBwbGljYXRpb24gY2FjaGUsIGVuc3VyZSB3ZSBkb24ndCBzYXZlIHRoZSByZXN1bHQgZm9y
IGZ1dHVyZSB1c2UuCi0gICAgYm9vbCBzaG91bGRSZW1vdmVSZXNvdXJjZUZyb21DYWNoZSA9IHdp
bGxMb2FkRmFsbGJhY2s7Ci0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgLy8gY2hyb21pdW0n
cyBBcHBsaWNhdGlvbkNhY2hlSG9zdCBpbXBsZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyB0cnVl
IGZvciBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZSgpLiBIb3dldmVyLCBhbGwgcmVz
cG9uc2VzIGxvYWRlZAotICAgIC8vIGZyb20gYXBwY2FjaGUgd2lsbCBoYXZlIGEgbm9uLXplcm8g
YXBwQ2FjaGVJRCgpLgotICAgIGlmIChyLmFwcENhY2hlSUQoKSkKLSAgICAgICAgc2hvdWxkUmVt
b3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKHNob3VsZFJlbW92
ZVJlc291cmNlRnJvbUNhY2hlKQotICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9yZXNv
dXJjZS5nZXQoKSk7Ci0KLSAgICBpZiAod2lsbExvYWRGYWxsYmFjaykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhGcmFtZU9wdGlvbkhl
YWRlciwgKCJ4LWZyYW1lLW9wdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByLmh0dHBIZWFk
ZXJGaWVsZHMoKS5maW5kKHhGcmFtZU9wdGlvbkhlYWRlcik7Ci0gICAgaWYgKGl0ICE9IHIuaHR0
cEhlYWRlckZpZWxkcygpLmVuZCgpKSB7Ci0gICAgICAgIFN0cmluZyBjb250ZW50ID0gaXQtPnZh
bHVlOwotICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c2hvdWxkSW50ZXJydXB0TG9hZEZvclhG
cmFtZU9wdGlvbnMoY29udGVudCwgci51cmwoKSwgaWRlbnRpZmllcigpKSkgewotICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0Rl
bmllZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBkb2N1bWVudExvYWRlcigpLCBpZGVudGlm
aWVyKCksIHIpOwotICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNw
bGF5ICciICsgci51cmwoKS5lbGlkZWRTdHJpbmcoKSArICInIGluIGEgZnJhbWUgYmVjYXVzZSBp
dCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250ZW50ICsgIicuIjsKLSAgICAgICAg
ICAgIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlk
ZW50aWZpZXIoKSk7Ci0KLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlcmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3Jr
IHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hlZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRl
ZmVycmVkLgotICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjMwNDYwMD4gZm9yIG1vcmUgZGV0
YWlscy4KLSNpZiAhVVNFKENGKQotICAgIEFTU0VSVCghZGVmZXJzTG9hZGluZygpKTsKLSNlbmRp
ZgotCi0gICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKLSAgICAgICAgbV9kb2N1
bWVudExvYWRlci0+c2V0dXBGb3JSZXBsYWNlKCk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPmNsZWFy
KCk7Ci0gICAgfQotICAgIAotICAgIGlmIChyLmlzTXVsdGlwYXJ0KCkpIHsKLSAgICAgICAgRmVh
dHVyZU9ic2VydmVyOjpvYnNlcnZlKG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50
KCksIEZlYXR1cmVPYnNlcnZlcjo6TXVsdGlwYXJ0TWFpblJlc291cmNlKTsKLSAgICAgICAgbV9s
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCA9IHRydWU7Ci0gICAgfQotICAgICAgICAKLSAgICAvLyBU
aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2li
bHkgcmVtb3ZpbmcgdGhlIGxhc3QKLSAgICAvLyByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9u
ZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWZQdHI8TWFpblJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0KHRoaXMpOwotCiAgICAgbV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2VSZWNl
aXZlZChyKTsKLQotICAgIG1fcmVzcG9uc2UgPSByOwotCi0gICAgaWYgKG1faWRlbnRpZmllckZv
ckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCktPmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50
aWZpZXIoKSwgbV9yZXNwb25zZSwgMCk7Ci0KLSAgICBBU1NFUlQoIW1fd2FpdGluZ0ZvckNvbnRl
bnRQb2xpY3kpOwotICAgIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kgPSB0cnVlOwotICAgIHJl
ZigpOyAvLyBiYWxhbmNlZCBieSBkZXJlZiBpbiBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeSBh
bmQgY2FuY2VsCi0KLSAgICAvLyBBbHdheXMgc2hvdyBjb250ZW50IHdpdGggdmFsaWQgc3Vic3Rp
dHV0ZSBkYXRhLgotICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlz
VmFsaWQoKSkgewotICAgICAgICBjYWxsQ29udGludWVBZnRlckNvbnRlbnRQb2xpY3kodGhpcywg
UG9saWN5VXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIEVOQUJMRShGVFBESVIp
Ci0gICAgLy8gUmVzcGVjdCB0aGUgaGlkZGVuIEZUUCBEaXJlY3RvcnkgTGlzdGluZyBwcmVmIHNv
IGl0IGNhbiBiZSB0ZXN0ZWQgZXZlbiBpZiB0aGUgcG9saWN5IGRlbGVnYXRlIG1pZ2h0IG90aGVy
d2lzZSBkaXNhbGxvdyBpdAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5m
b3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKCkgJiYgbV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJh
cHBsaWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiKSB7Ci0gICAgICAgIGNhbGxDb250aW51ZUFmdGVy
Q29udGVudFBvbGljeSh0aGlzLCBQb2xpY3lVc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNoZWNrQ29udGVu
dFBvbGljeShtX3Jlc3BvbnNlLCBjYWxsQ29udGludWVBZnRlckNvbnRlbnRQb2xpY3ksIHRoaXMp
OwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTM1MCwyMCAr
MTYxLDEyIEBACiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVjZWl2ZWREYXRhKGRhdGEsIGxlbmd0
aCk7CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJs
ZSBmaW5pc2hUaW1lKQotewotICAgIC8vIFRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRv
IGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZW1vdmluZyB0aGUgbGFzdAotICAgIC8vIHJl
ZmVyZW5jZSB0byB0aGlzIG9iamVjdC4KLSAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBw
cm90ZWN0KHRoaXMpOwotICAgIGRvY3VtZW50TG9hZGVyKCktPmZpbmlzaGVkTG9hZGluZyhmaW5p
c2hUaW1lKTsKLX0KLQogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBt
X3Jlc291cmNlID09IHJlc291cmNlKTsKICAgICBBU1NFUlQobV9yZXNvdXJjZSk7CiAgICAgaWYg
KCFtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIW1fcmVzb3VyY2UtPndhc0NhbmNlbGVk
KCkpIHsKLSAgICAgICAgZGlkRmluaXNoTG9hZGluZyhtX3Jlc291cmNlLT5sb2FkRmluaXNoVGlt
ZSgpKTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5nKG1fcmVzb3Vy
Y2UtPmxvYWRGaW5pc2hUaW1lKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDE0NjA3MykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNSwxMiArMTA1LDE0IEBACiAgICAgLCBtX2lzU3RvcHBpbmcoZmFsc2UpCiAgICAg
LCBtX2dvdEZpcnN0Qnl0ZShmYWxzZSkKICAgICAsIG1faXNDbGllbnRSZWRpcmVjdChmYWxzZSkK
KyAgICAsIG1faXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fbG9hZGlu
Z0VtcHR5RG9jdW1lbnQoZmFsc2UpCiAgICAgLCBtX3dhc09ubG9hZEhhbmRsZWQoZmFsc2UpCiAg
ICAgLCBtX3N0b3BSZWNvcmRpbmdSZXNwb25zZXMoZmFsc2UpCiAgICAgLCBtX3N1YnN0aXR1dGVS
ZXNvdXJjZURlbGl2ZXJ5VGltZXIodGhpcywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVz
b3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2RpZENyZWF0ZUdsb2JhbEhpc3RvcnlF
bnRyeShmYWxzZSkKICAgICAsIG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCgwLjApCisgICAgLCBt
X3dhaXRpbmdGb3JDb250ZW50UG9saWN5KGZhbHNlKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hl
SG9zdChhZG9wdFB0cihuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QodGhpcykpKQogewogfQpAQCAt
Mjc2LDcgKzI3OCw3IEBACiAgICAgCiAgICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyKQogICAg
ICAgICAvLyBTdG9wIHRoZSBtYWluIHJlc291cmNlIGxvYWRlciBhbmQgbGV0IGl0IHNlbmQgdGhl
IGNhbmNlbGxlZCBtZXNzYWdlLgotICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+Y2FuY2Vs
KCk7CisgICAgICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5jYW5jZWwoZnJhbWVMb2FkZXItPmNh
bmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOwogICAgIGVsc2UgaWYgKCFtX3N1YnJlc291cmNlTG9h
ZGVycy5pc0VtcHR5KCkpCiAgICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIGxvYWRlciBhbHJl
YWR5IGZpbmlzaGVkIGxvYWRpbmcuIFNldCB0aGUgY2FuY2VsbGVkIGVycm9yIG9uIHRoZSAKICAg
ICAgICAgLy8gZG9jdW1lbnQgYW5kIGxldCB0aGUgc3VicmVzb3VyY2VMb2FkZXJzIHNlbmQgaW5k
aXZpZHVhbCBjYW5jZWxsZWQgbWVzc2FnZXMgYmVsb3cuCkBAIC0zMjAsNiArMzIyLDggQEAKICAg
ICBBU1NFUlQoIW1fZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIHx8IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aXNEZWJ1Z2dlclBhdXNlZChtX2ZyYW1lKSk7CiAjZW5kaWYKIAorICAg
IFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKwogICAgIGlmIChtX21haW5S
ZXNvdXJjZUxvYWRlciAmJiBtX21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXIoKSkgewogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmll
cigpLT5kaXNwYXRjaERpZEZpbmlzaExvYWRpbmcodGhpcywgbV9tYWluUmVzb3VyY2VMb2FkZXIt
PmlkZW50aWZpZXIoKSwgZmluaXNoVGltZSk7CiAgICAgICAgIG1fbWFpblJlc291cmNlTG9hZGVy
LT5jbGVhcklkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCk7CkBAIC00NTcs
NyArNDYxLDcgQEAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRDb250aW51
ZSkKIHsKICAgICBpZiAoIXNob3VsZENvbnRpbnVlKQotICAgICAgICBtX21haW5SZXNvdXJjZUxv
YWRlci0+c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICAgICAgc3RvcExvYWRpbmdG
b3JQb2xpY3lDaGFuZ2UoKTsKICAgICBlbHNlIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkgewogICAgICAgICAvLyBBIHJlZGlyZWN0IHJlc3VsdGVkIGluIGxvYWRpbmcgc3Vic3RpdHV0
ZSBkYXRhLgogICAgICAgICBBU1NFUlQodGltaW5nKCktPnJlZGlyZWN0Q291bnQoKSk7CkBAIC00
NzksMTUgKzQ4MywxNjQgQEAKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKKyAgICBib29sIHdpbGxMb2Fk
RmFsbGJhY2sgPSBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYXliZUxvYWRGYWxsYmFja0Zvck1h
aW5SZXNwb25zZShyZXF1ZXN0KCksIHJlc3BvbnNlKTsKKworICAgIC8vIFRoZSBtZW1vcnkgY2Fj
aGUgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBvciBpdHMgY2FjaGlu
ZyBydWxlcy4gU28gaWYgYSBtYWluIHJlc291cmNlIGlzIHNlcnZlZAorICAgIC8vIGZyb20gdGhl
IGFwcGxpY2F0aW9uIGNhY2hlLCBlbnN1cmUgd2UgZG9uJ3Qgc2F2ZSB0aGUgcmVzdWx0IGZvciBm
dXR1cmUgdXNlLgorICAgIGJvb2wgc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB3aWxs
TG9hZEZhbGxiYWNrOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIC8vIGNocm9taXVtJ3Mg
QXBwbGljYXRpb25DYWNoZUhvc3QgaW1wbGVtZW50YXRpb24gYWx3YXlzIHJldHVybnMgdHJ1ZSBm
b3IgbWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UoKS4gSG93ZXZlciwgYWxsIHJlc3Bv
bnNlcyBsb2FkZWQKKyAgICAvLyBmcm9tIGFwcGNhY2hlIHdpbGwgaGF2ZSBhIG5vbi16ZXJvIGFw
cENhY2hlSUQoKS4KKyAgICBpZiAocmVzcG9uc2UuYXBwQ2FjaGVJRCgpKQorICAgICAgICBzaG91
bGRSZW1vdmVSZXNvdXJjZUZyb21DYWNoZSA9IHRydWU7CisjZW5kaWYKKyAgICBpZiAoc2hvdWxk
UmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUpCisgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZSht
X21haW5SZXNvdXJjZUxvYWRlci0+Y2FjaGVkTWFpblJlc291cmNlKCkpOworCisgICAgaWYgKHdp
bGxMb2FkRmFsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCB4RnJhbWVPcHRpb25IZWFkZXIsICgieC1mcmFtZS1vcHRpb25zIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIEhUVFBIZWFkZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmZpbmQoeEZy
YW1lT3B0aW9uSGVhZGVyKTsKKyAgICBpZiAoaXQgIT0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
cygpLmVuZCgpKSB7CisgICAgICAgIFN0cmluZyBjb250ZW50ID0gaXQtPnZhbHVlOworICAgICAg
ICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBtX21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRp
ZmllcigpOworICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoY29udGVudCwgcmVzcG9uc2UudXJsKCksIGlkZW50aWZpZXIpKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVP
cHRpb25zRGVuaWVkKG1fZnJhbWUsIHRoaXMsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAg
ICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHJlc3BvbnNl
LnVybCgpLmVsaWRlZFN0cmluZygpICsgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1G
cmFtZS1PcHRpb25zJyB0byAnIiArIGNvbnRlbnQgKyAiJy4iOworICAgICAgICAgICAgZnJhbWUo
KS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVz
dCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhl
cmUgaXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hl
ZCBldmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgorICAgIC8vIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNjMwNDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KKyNpZiAhVVNFKENGKQorICAgIEFTU0VSVCgh
bV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkpOworI2VuZGlmCisKKyAgICBpZiAobV9p
c0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CisgICAgICAgIHNldHVwRm9yUmVwbGFjZSgpOwor
ICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+Y2FjaGVkTWFpblJlc291cmNlKCktPmNsZWFy
KCk7CisgICAgfSBlbHNlIGlmIChyZXNwb25zZS5pc011bHRpcGFydCgpKSB7CisgICAgICAgIEZl
YXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBGZWF0dXJlT2JzZXJ2
ZXI6Ok11bHRpcGFydE1haW5SZXNvdXJjZSk7CisgICAgICAgIG1faXNMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCA9IHRydWU7CisgICAgfQorCiAgICAgc2V0UmVzcG9uc2UocmVzcG9uc2UpOwogCisg
ICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX21haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmll
ckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSwgbV9yZXNwb25zZSwgMCk7CisKKyAgICBB
U1NFUlQoIW1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kpOworICAgIG1fd2FpdGluZ0ZvckNvbnRl
bnRQb2xpY3kgPSB0cnVlOworCisgICAgLy8gQWx3YXlzIHNob3cgY29udGVudCB3aXRoIHZhbGlk
IHN1YnN0aXR1dGUgZGF0YS4KKyAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgY29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5VXNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworI2lmIEVOQUJMRShGVFBESVIpCisgICAgLy8gUmVzcGVjdCB0aGUg
aGlkZGVuIEZUUCBEaXJlY3RvcnkgTGlzdGluZyBwcmVmIHNvIGl0IGNhbiBiZSB0ZXN0ZWQgZXZl
biBpZiB0aGUgcG9saWN5IGRlbGVnYXRlIG1pZ2h0IG90aGVyd2lzZSBkaXNhbGxvdyBpdAorICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5mb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKCkgJiYgbV9yZXNwb25z
ZS5taW1lVHlwZSgpID09ICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiKSB7CisgICAgICAg
IGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeVVzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKwogI2lmIFVTRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAocmVz
cG9uc2UudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBDb250ZW50RmlsdGVyOjppc0VuYWJs
ZWQoKSkKICAgICAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKHJl
c3BvbnNlKTsKICNlbmRpZgogCisgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT5j
aGVja0NvbnRlbnRQb2xpY3kobV9yZXNwb25zZSwgY2FsbENvbnRpbnVlQWZ0ZXJDb250ZW50UG9s
aWN5LCB0aGlzKTsKIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6Y2FsbENvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KHZvaWQqIGFyZ3VtZW50LCBQb2xpY3lBY3Rpb24gcG9saWN5KQoreworICAg
IHN0YXRpY19jYXN0PERvY3VtZW50TG9hZGVyKj4oYXJndW1lbnQpLT5jb250aW51ZUFmdGVyQ29u
dGVudFBvbGljeShwb2xpY3kpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFm
dGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQoreworICAgIEFTU0VSVChtX3dh
aXRpbmdGb3JDb250ZW50UG9saWN5KTsKKyAgICBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5ID0g
ZmFsc2U7CisgICAgaWYgKGlzU3RvcHBpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgS1VS
TCB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CisgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IG1f
cmVzcG9uc2UubWltZVR5cGUoKTsKKyAgICAKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNh
c2UgUG9saWN5VXNlOiB7CisgICAgICAgIC8vIFByZXZlbnQgcmVtb3RlIHdlYiBhcmNoaXZlcyBm
cm9tIGxvYWRpbmcgYmVjYXVzZSB0aGV5IGNhbiBjbGFpbSB0byBiZSBmcm9tIGFueSBkb21haW4g
YW5kIHRodXMgYXZvaWQgY3Jvc3MtZG9tYWluIHNlY3VyaXR5IGNoZWNrcyAoNDEyMDI1NSkuCisg
ICAgICAgIGJvb2wgaXNSZW1vdGVXZWJBcmNoaXZlID0gKGVxdWFsSWdub3JpbmdDYXNlKCJhcHBs
aWNhdGlvbi94LXdlYmFyY2hpdmUiLCBtaW1lVHlwZSkKKyNpZiBQTEFURk9STShHVEspCisgICAg
ICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZSgibWVzc2FnZS9yZmM4MjIiLCBtaW1lVHlwZSkK
KyNlbmRpZgorICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoIm11bHRpcGFydC9yZWxh
dGVkIiwgbWltZVR5cGUpKQorICAgICAgICAgICAgJiYgIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5w
cm90b2NvbCgpKTsKKyAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Y2FuU2hv
d01JTUVUeXBlKG1pbWVUeXBlKSB8fCBpc1JlbW90ZVdlYkFyY2hpdmUpIHsKKyAgICAgICAgICAg
IGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2Fubm90U2hvd01JTUVUeXBlKG1fcmVz
cG9uc2UpOworICAgICAgICAgICAgLy8gQ2hlY2sgcmVhY2hlZFRlcm1pbmFsU3RhdGUgc2luY2Ug
dGhlIGxvYWQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGVkIGluc2lkZSBvZiBfaGFuZGxl
VW5pbXBsZW1lbnRhYmxlUG9saWN5V2l0aEVycm9yQ29kZTo6LgorICAgICAgICAgICAgc3RvcExv
YWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFBvbGljeURvd25sb2FkOiB7CisgICAg
ICAgIC8vIFRoZSBtYWluIENhY2hlZFJlc291cmNlIGNhbiBiZSBudWxsLCBlLmcuIHdoZW4gbG9h
ZGluZyBhIHN1YnN0aXR1dGUgcmVzb3VyY2UgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4KKyAgICAg
ICAgaWYgKCFtX21haW5SZXNvdXJjZUxvYWRlci0+Y2FjaGVkTWFpblJlc291cmNlKCkpIHsKKyAg
ICAgICAgICAgIG1haW5SZWNlaXZlZEVycm9yKGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5jYW5u
b3RTaG93VVJMRXJyb3IobV9yZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lE
b3dubG9hZChtX2ZyYW1lLCB0aGlzLCBtYWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRpZmllcigp
LCBtX3Jlc3BvbnNlKTsKKworICAgICAgICAvLyBXaGVuIHN0YXJ0aW5nIHRoZSByZXF1ZXN0LCB3
ZSBkaWRuJ3Qga25vdyB0aGF0IGl0IHdvdWxkIHJlc3VsdCBpbiBkb3dubG9hZCBhbmQgbm90IG5h
dmlnYXRpb24uIE5vdyB3ZSBrbm93IHRoYXQgbWFpbiBkb2N1bWVudCBVUkwgZGlkbid0IGNoYW5n
ZS4KKyAgICAgICAgLy8gRG93bmxvYWQgbWF5IHVzZSB0aGlzIGtub3dsZWRnZSBmb3IgcHVycG9z
ZXMgdW5yZWxhdGVkIHRvIGNvb2tpZXMsIG5vdGFibHkgZm9yIHNldHRpbmcgZmlsZSBxdWFyYW50
aW5lIGRhdGEuCisgICAgICAgIGZyYW1lTG9hZGVyKCktPnNldE9yaWdpbmFsVVJMRm9yRG93bmxv
YWRSZXF1ZXN0KG1fcmVxdWVzdCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5j
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodGhpcywgbV9yZXF1ZXN0LCBtX3Jlc3Bv
bnNlKTsKKworICAgICAgICAvLyBJdCBtaWdodCBoYXZlIGdvbmUgbWlzc2luZworICAgICAgICBp
ZiAobWFpblJlc291cmNlTG9hZGVyKCkpCisgICAgICAgICAgICBtYWluUmVzb3VyY2VMb2FkZXIo
KS0+ZGlkRmFpbChpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGNhc2UgUG9saWN5SWdub3JlOgorICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZShtX2ZyYW1lLCB0aGlzLCBt
YWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRpZmllcigpLCBtX3Jlc3BvbnNlKTsKKyAgICAgICAg
c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlm
IChtX3Jlc3BvbnNlLmlzSFRUUCgpKSB7CisgICAgICAgIGludCBzdGF0dXMgPSBtX3Jlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCk7CisgICAgICAgIGlmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID49
IDMwMCkgeworICAgICAgICAgICAgYm9vbCBob3N0ZWRCeU9iamVjdCA9IGZyYW1lTG9hZGVyKCkt
PmlzSG9zdGVkQnlPYmplY3RFbGVtZW50KCk7CisKKyAgICAgICAgICAgIGZyYW1lTG9hZGVyKCkt
PmhhbmRsZUZhbGxiYWNrQ29udGVudCgpOworICAgICAgICAgICAgLy8gb2JqZWN0IGVsZW1lbnRz
IGFyZSBubyBsb25nZXIgcmVuZGVyZWQgYWZ0ZXIgd2UgZmFsbGJhY2ssIHNvIGRvbid0CisgICAg
ICAgICAgICAvLyBrZWVwIHRyeWluZyB0byBwcm9jZXNzIGRhdGEgZnJvbSB0aGVpciBsb2FkCisK
KyAgICAgICAgICAgIGlmIChob3N0ZWRCeU9iamVjdCkKKyAgICAgICAgICAgICAgICBjYW5jZWxN
YWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkp
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFpc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVu
dCgpLT5zaXplKCkpCisgICAgICAgICAgICByZWNlaXZlZERhdGEobV9zdWJzdGl0dXRlRGF0YS5j
b250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSk7Cisg
ICAgICAgIGlmIChpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKKyAgICAgICAgICAgIGZpbmlzaGVk
TG9hZGluZygwKTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICAvLyBCb3RoIHVubG9hZGluZyB0
aGUgb2xkIHBhZ2UgYW5kIHBhcnNpbmcgdGhlIG5ldyBwYWdlIG1heSBleGVjdXRlIEphdmFTY3Jp
cHQgd2hpY2ggZGVzdHJveXMgdGhlIGRhdGFzb3VyY2UKQEAgLTUwNiw2ICs2NTksMTggQEAKICAg
ICBmcmFtZUxvYWRlci0+Y2xpZW50KCktPmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSwgbGVuZ3Ro
KTsKIH0KIAorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aW50ZXJydXB0ZWRGb3JQb2xp
Y3lDaGFuZ2VFcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVu
dCgpLT5pbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKHJlcXVlc3QoKSk7Cit9CisKK3Zv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCkKK3sKKyAgICBS
ZXNvdXJjZUVycm9yIGVycm9yID0gaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpOwor
ICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOworICAgIGNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoZXJyb3IpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICghbV9nb3RGaXJzdEJ5dGUp
IHsKQEAgLTYyNiw3ICs3OTEsNyBAQAogCiAjaWYgVVNFKENPTlRFTlRfRklMVEVSSU5HKQogICAg
IGlmIChsb2FkV2FzQmxvY2tlZEJlZm9yZUZpbmlzaGluZykKLSAgICAgICAgY2FuY2VsTWFpblJl
c291cmNlTG9hZChSZXNvdXJjZUVycm9yKCkpOworICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOwogI2VuZGlmCiB9
CiAKQEAgLTEwOTgsMTEgKzEyNjMsNiBAQAogICAgIHJldHVybiAhIW1fbWFpblJlc291cmNlTG9h
ZGVyIHx8IG1fbG9hZGluZ0VtcHR5RG9jdW1lbnQ7CiB9CiAKLWJvb2wgRG9jdW1lbnRMb2FkZXI6
OmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX21haW5S
ZXNvdXJjZUxvYWRlciAmJiBtX21haW5SZXNvdXJjZUxvYWRlci0+aXNMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCgpOwotfQotCiBib29sIERvY3VtZW50TG9hZGVyOjppc011bHRpcGFydFJlcGxhY2lu
Z0xvYWQoKSBjb25zdAogewogICAgIHJldHVybiBpc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkg
JiYgZnJhbWVMb2FkZXIoKS0+aXNSZXBsYWNpbmcoKTsKQEAgLTExNjUsNyArMTMyNSwxNiBAQAog
CiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5jYW5jZWwoZXJy
b3IpOworICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkpOworCisgICAgaWYgKG1fd2FpdGluZ0Zv
ckNvbnRlbnRQb2xpY3kpIHsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigp
LT5jYW5jZWxDaGVjaygpOworICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yQ29udGVudFBvbGlj
eSk7CisgICAgICAgIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kgPSBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAobWFpblJlc291cmNlTG9hZGVyKCkpCisgICAgICAgIG1haW5SZXNvdXJjZUxvYWRl
cigpLT5jYW5jZWwoZXJyb3IpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJj
ZUxvYWRlckZpbmlzaGVkTG9hZGluZ09uZVBhcnQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9u
IDE0NjA3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNzIsMTIgKzcyLDEwIEBACiAgICAgdm9pZCBjbGVhcklkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgeyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyID0gMDsgfQogCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsgfQogCiAgICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICB2b2lkIHRha2VJZGVudGlm
aWVyRnJvbVJlc291cmNlTG9hZGVyKCkgeyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyID0gaWRlbnRpZmllcigpOyB9Ci0gICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGlj
eUNoYW5nZSgpOwogICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2UoKTsKIApAQCAtODksMTcg
Kzg3LDExIEBACiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSos
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBPVkVSUklERTsKIAotICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBoYW5kbGVT
dWJzdGl0dXRlRGF0YUxvYWROb3coTWFpblJlc291cmNlTG9hZGVyVGltZXIqKTsKIAogICAgIHZv
aWQgc3RhcnREYXRhTG9hZFRpbWVyKCk7CiAKICAgICB2b2lkIHJlY2VpdmVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwotICAgIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcigpIGNvbnN0OwotCi0gICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KHZvaWQqLCBQb2xpY3lBY3Rpb24pOwotICAgIHZvaWQgY29udGludWVBZnRl
ckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uKTsKLSAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJDb250
ZW50UG9saWN5KFBvbGljeUFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIAog
I2lmIFBMQVRGT1JNKFFUKQogICAgIHZvaWQgc3Vic3RpdHV0ZU1JTUVUeXBlRnJvbVBsdWdpbkRh
dGFiYXNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTExNSwxMyArMTA3LDEwIEBACiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CiAK
ICAgICBSZXNvdXJjZVJlcXVlc3QgbV9pbml0aWFsUmVxdWVzdDsKLSAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CiAKICAgICBNYWluUmVzb3VyY2VMb2FkZXJUaW1lciBtX2RhdGFMb2Fk
VGltZXI7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVyOwogCi0g
ICAgYm9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50OwotICAgIGJvb2wgbV93YWl0aW5nRm9y
Q29udGVudFBvbGljeTsKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXI7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="215180"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193634</attachid>
            <date>2013-03-18 12:56:09 -0700</date>
            <delta_ts>2013-03-19 10:10:38 -0700</delta_ts>
            <desc>attempted fix to test failure</desc>
            <filename>dl_mrl_response2.txt</filename>
            <type>text/plain</type>
            <size>27163</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAzLTE4ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2UgTWFpblJlc291cmNl
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkIGludG8gRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjU5MworCisgICAgICAgIFBh
cnQgb2YgdGhlIG9uZ29pbmcgZWZmb3J0IHRvIG1lcmdlIE1haW5SZXNvdXJjZUxvYWRlciBlbnRp
cmVseQorICAgICAgICBpbnRvIERvY3VtZW50TG9hZGVyLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Igb25seS4K
KworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpmaW5pc2hlZExvYWRpbmcpOiBUaGUgb25seSB0aGluZyBsZWZ0IGluCisgICAgICAgICAg
ICBNYWluUmVzb3VyY2VMb2FkZXIgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uIHdhcyBhIFJlZlB0
ciB3aGljaCBpbmRpcmVjdGx5CisgICAgICAgICAgICBwcm90ZWN0ZWQgRG9jdW1lbnRMb2FkZXIu
IE1vdmUgdGhlIFJlZlB0ciBoZXJlIGFuZCBwcm90ZWN0IERvY3VtZW50TG9hZGVyIGRpcmVjdGx5
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBN
b3ZlZCBmcm9tIE1haW5SZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpjYWxsQ29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOiBNb3ZlZCBmcm9tIE1haW5S
ZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51
ZUFmdGVyQ29udGVudFBvbGljeSk6IE1vdmVkIGZyb20gTWFpblJlc291cmNlTG9hZGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IpOiBNb3ZlZCBmcm9tIE1haW5SZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSk6IE1vdmVkIGZyb20g
TWFpblJlc291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJl
Y2VpdmVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFp
blJlc291cmNlTG9hZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6
IFN0b3JlIG11bHRpcGFydCBiaXQgaGVyZS4KKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6TWFpblJl
c291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNl
aXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmg6CisKIDIwMTMtMDMt
MTggIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gVGhlIDxzZWxlY3Q+IGVsZW1lbnQgb24gQW5kcm9pZCBzaG91bGQgYWxzbyBzd2l0Y2gg
dG8gbmV3LWZsZXhib3gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3Vy
Y2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDYwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsOCArNjgsNiBAQAog
TWFpblJlc291cmNlTG9hZGVyOjpNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyKQogICAgIDogbV9kYXRhTG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VM
b2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKICAgICAsIG1fZG9jdW1lbnRMb2Fk
ZXIoZG9jdW1lbnRMb2FkZXIpCi0gICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNl
KQotICAgICwgbV93YWl0aW5nRm9yQ29udGVudFBvbGljeShmYWxzZSkKICAgICAsIG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoMCkKIHsKIH0KQEAgLTExMywxNCArMTEx
LDYgQEAKICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBlcnJvci5pc051bGwoKSA/
IGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKHJlcXVlc3QoKSkgOiBlcnJvcjsKIAogICAg
IG1fZGF0YUxvYWRUaW1lci5zdG9wKCk7Ci0KLSAgICBpZiAobV93YWl0aW5nRm9yQ29udGVudFBv
bGljeSkgewotICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNhbmNlbENo
ZWNrKCk7Ci0gICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5KTsKLSAgICAg
ICAgbV93YWl0aW5nRm9yQ29udGVudFBvbGljeSA9IGZhbHNlOwotICAgICAgICBkZXJlZigpOyAv
LyBiYWxhbmNlcyByZWYgaW4gcmVzcG9uc2VSZWNlaXZlZAotICAgIH0KLQogICAgIGlmIChsb2Fk
ZXIoKSkKICAgICAgICAgbG9hZGVyKCktPmNhbmNlbChyZXNvdXJjZUVycm9yKTsKIApAQCAtMTQ2
LDE4ICsxMzYsNiBAQAogICAgIHJldHVybiBtX3Jlc291cmNlID8gbV9yZXNvdXJjZS0+cmVzb3Vy
Y2VSZXF1ZXN0KCkgOiBtX2luaXRpYWxSZXF1ZXN0OwogfQogCi1SZXNvdXJjZUVycm9yIE1haW5S
ZXNvdXJjZUxvYWRlcjo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5pbnRlcnJ1cHRlZEZvclBvbGlj
eUNoYW5nZUVycm9yKHJlcXVlc3QoKSk7Ci19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpz
dG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpCi17Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvciA9
IGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoKTsKLSAgICBlcnJvci5zZXRJc0NhbmNl
bGxhdGlvbih0cnVlKTsKLSAgICBjYW5jZWwoZXJyb3IpOwotfQotCiBQYXNzUmVmUHRyPFJlc291
cmNlQnVmZmVyPiBNYWluUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpCiB7CiAgICAgaWYg
KG1fcmVzb3VyY2UpCkBAIC0xNzEsMTc3ICsxNDksMTAgQEAKICAgICBtX2RvY3VtZW50TG9hZGVy
LT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKLXZvaWQg
TWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rp
b24gY29udGVudFBvbGljeSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKLXsKLSAgICBLVVJM
IHVybCA9IHJlcXVlc3QoKS51cmwoKTsKLSAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gci5t
aW1lVHlwZSgpOwotICAgIAotICAgIHN3aXRjaCAoY29udGVudFBvbGljeSkgewotICAgIGNhc2Ug
UG9saWN5VXNlOiB7Ci0gICAgICAgIC8vIFByZXZlbnQgcmVtb3RlIHdlYiBhcmNoaXZlcyBmcm9t
IGxvYWRpbmcgYmVjYXVzZSB0aGV5IGNhbiBjbGFpbSB0byBiZSBmcm9tIGFueSBkb21haW4gYW5k
IHRodXMgYXZvaWQgY3Jvc3MtZG9tYWluIHNlY3VyaXR5IGNoZWNrcyAoNDEyMDI1NSkuCi0gICAg
ICAgIGJvb2wgaXNSZW1vdGVXZWJBcmNoaXZlID0gKGVxdWFsSWdub3JpbmdDYXNlKCJhcHBsaWNh
dGlvbi94LXdlYmFyY2hpdmUiLCBtaW1lVHlwZSkKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKCJtZXNzYWdl
L3JmYzgyMiIsIG1pbWVUeXBlKQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKCJtdWx0aXBhcnQvcmVsYXRlZCIsIG1pbWVUeXBl
KSkKLSAgICAgICAgICAgICYmICFtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlz
VmFsaWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1
cmwucHJvdG9jb2woKSk7Ci0gICAgICAgIGlmICghZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmNh
blNob3dNSU1FVHlwZShtaW1lVHlwZSkgfHwgaXNSZW1vdGVXZWJBcmNoaXZlKSB7Ci0gICAgICAg
ICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNhbm5vdFNob3dNSU1FVHlwZShy
KTsKLSAgICAgICAgICAgIC8vIENoZWNrIHJlYWNoZWRUZXJtaW5hbFN0YXRlIHNpbmNlIHRoZSBs
b2FkIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxlZCBpbnNpZGUgb2YgX2hhbmRsZVVuaW1w
bGVtZW50YWJsZVBvbGljeVdpdGhFcnJvckNvZGU6Oi4KLSAgICAgICAgICAgIHN0b3BMb2FkaW5n
Rm9yUG9saWN5Q2hhbmdlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBQb2xpY3lEb3dubG9hZDogewotICAgICAgICAv
LyBtX3Jlc291cmNlIGNhbiBiZSBudWxsLCBlLmcuIHdoZW4gbG9hZGluZyBhIHN1YnN0aXR1dGUg
cmVzb3VyY2UgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4KLSAgICAgICAgaWYgKCFtX3Jlc291cmNl
KSB7Ci0gICAgICAgICAgICByZWNlaXZlZEVycm9yKGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5j
YW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xp
Y3lEb3dubG9hZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBkb2N1bWVudExvYWRlcigpLCBp
ZGVudGlmaWVyKCksIHIpOwotCi0gICAgICAgIC8vIFdoZW4gc3RhcnRpbmcgdGhlIHJlcXVlc3Qs
IHdlIGRpZG4ndCBrbm93IHRoYXQgaXQgd291bGQgcmVzdWx0IGluIGRvd25sb2FkIGFuZCBub3Qg
bmF2aWdhdGlvbi4gTm93IHdlIGtub3cgdGhhdCBtYWluIGRvY3VtZW50IFVSTCBkaWRuJ3QgY2hh
bmdlLgotICAgICAgICAvLyBEb3dubG9hZCBtYXkgdXNlIHRoaXMga25vd2xlZGdlIGZvciBwdXJw
b3NlcyB1bnJlbGF0ZWQgdG8gY29va2llcywgbm90YWJseSBmb3Igc2V0dGluZyBmaWxlIHF1YXJh
bnRpbmUgZGF0YS4KLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSB0aGlzLT5yZXF1
ZXN0KCk7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRS
ZXF1ZXN0KHJlcXVlc3QpOwotCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5jb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCwg
cik7Ci0KLSAgICAgICAgLy8gSXQgbWlnaHQgaGF2ZSBnb25lIG1pc3NpbmcKLSAgICAgICAgaWYg
KGxvYWRlcigpKQotICAgICAgICAgICAgbG9hZGVyKCktPmRpZEZhaWwoaW50ZXJydXB0ZWRGb3JQ
b2xpY3lDaGFuZ2VFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIFBv
bGljeUlnbm9yZToKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdp
dGhQb2xpY3lJZ25vcmUobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSwgZG9jdW1lbnRMb2FkZXIo
KSwgaWRlbnRpZmllcigpLCByKTsKLSAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2Uo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QodGhpcyk7Ci0KLSAgICBpZiAoci5pc0hUVFAoKSkgewotICAgICAgICBpbnQgc3RhdHVz
ID0gci5odHRwU3RhdHVzQ29kZSgpOwotICAgICAgICBpZiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1
cyA+PSAzMDApIHsKLSAgICAgICAgICAgIGJvb2wgaG9zdGVkQnlPYmplY3QgPSBmcmFtZUxvYWRl
cigpLT5pc0hvc3RlZEJ5T2JqZWN0RWxlbWVudCgpOwotCi0gICAgICAgICAgICBmcmFtZUxvYWRl
cigpLT5oYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKLSAgICAgICAgICAgIC8vIG9iamVjdCBlbGVt
ZW50cyBhcmUgbm8gbG9uZ2VyIHJlbmRlcmVkIGFmdGVyIHdlIGZhbGxiYWNrLCBzbyBkb24ndAot
ICAgICAgICAgICAgLy8ga2VlcCB0cnlpbmcgdG8gcHJvY2VzcyBkYXRhIGZyb20gdGhlaXIgbG9h
ZAotCi0gICAgICAgICAgICBpZiAoaG9zdGVkQnlPYmplY3QpCi0gICAgICAgICAgICAgICAgY2Fu
Y2VsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXItPmlz
U3RvcHBpbmcoKSAmJiBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQo
KSkgewotICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250
ZW50KCktPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFSZWNlaXZlZCgwLCBtX2RvY3VtZW50TG9h
ZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX2RvY3VtZW50TG9hZGVy
LT5zdWJzdGl0dXRlRGF0YSgpLmNvbnRlbnQoKS0+c2l6ZSgpKTsKLSAgICAgICAgaWYgKG1fZG9j
dW1lbnRMb2FkZXItPmlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQotICAgICAgICAgICAgZGlkRmlu
aXNoTG9hZGluZygwKTsKLSAgICB9Ci19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjYWxs
Q29udGludWVBZnRlckNvbnRlbnRQb2xpY3kodm9pZCogYXJndW1lbnQsIFBvbGljeUFjdGlvbiBw
b2xpY3kpCi17Ci0gICAgc3RhdGljX2Nhc3Q8TWFpblJlc291cmNlTG9hZGVyKj4oYXJndW1lbnQp
LT5jb250aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3kpOwotfQotCi12b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGlj
eSkKLXsKLSAgICBBU1NFUlQobV93YWl0aW5nRm9yQ29udGVudFBvbGljeSk7Ci0gICAgbV93YWl0
aW5nRm9yQ29udGVudFBvbGljeSA9IGZhbHNlOwotICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+
aXNTdG9wcGluZygpKQotICAgICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3ks
IG1fcmVzcG9uc2UpOwotICAgIGRlcmVmKCk7IC8vIGJhbGFuY2VzIHJlZiBpbiByZXNwb25zZVJl
Y2VpdmVkCi19Ci0KIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09IHJlc291cmNlKTsKLSAgICBi
b29sIHdpbGxMb2FkRmFsbGJhY2sgPSBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShyZXF1ZXN0KCksIHIpOwot
Ci0gICAgLy8gVGhlIG1lbW9yeSBjYWNoZSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIGFwcGxpY2F0
aW9uIGNhY2hlIG9yIGl0cyBjYWNoaW5nIHJ1bGVzLiBTbyBpZiBhIG1haW4gcmVzb3VyY2UgaXMg
c2VydmVkCi0gICAgLy8gZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUsIGVuc3VyZSB3ZSBkb24n
dCBzYXZlIHRoZSByZXN1bHQgZm9yIGZ1dHVyZSB1c2UuCi0gICAgYm9vbCBzaG91bGRSZW1vdmVS
ZXNvdXJjZUZyb21DYWNoZSA9IHdpbGxMb2FkRmFsbGJhY2s7Ci0jaWYgUExBVEZPUk0oQ0hST01J
VU0pCi0gICAgLy8gY2hyb21pdW0ncyBBcHBsaWNhdGlvbkNhY2hlSG9zdCBpbXBsZW1lbnRhdGlv
biBhbHdheXMgcmV0dXJucyB0cnVlIGZvciBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25z
ZSgpLiBIb3dldmVyLCBhbGwgcmVzcG9uc2VzIGxvYWRlZAotICAgIC8vIGZyb20gYXBwY2FjaGUg
d2lsbCBoYXZlIGEgbm9uLXplcm8gYXBwQ2FjaGVJRCgpLgotICAgIGlmIChyLmFwcENhY2hlSUQo
KSkKLSAgICAgICAgc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB0cnVlOwotI2VuZGlm
Ci0gICAgaWYgKHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlKQotICAgICAgICBtZW1vcnlD
YWNoZSgpLT5yZW1vdmUobV9yZXNvdXJjZS5nZXQoKSk7Ci0KLSAgICBpZiAod2lsbExvYWRGYWxs
YmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHhGcmFtZU9wdGlvbkhlYWRlciwgKCJ4LWZyYW1lLW9wdGlvbnMiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSByLmh0dHBIZWFkZXJGaWVsZHMoKS5maW5kKHhGcmFtZU9wdGlvbkhlYWRlcik7
Ci0gICAgaWYgKGl0ICE9IHIuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpKSB7Ci0gICAgICAgIFN0
cmluZyBjb250ZW50ID0gaXQtPnZhbHVlOwotICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c2hv
dWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29udGVudCwgci51cmwoKSwgaWRlbnRp
ZmllcigpKSkgewotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51
ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBkb2N1
bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIHIpOwotICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSAiUmVmdXNlZCB0byBkaXNwbGF5ICciICsgci51cmwoKS5lbGlkZWRTdHJpbmcoKSArICIn
IGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250
ZW50ICsgIicuIjsKLSAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3Vt
ZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSk7Ci0KLSAgICAgICAgICAgIGNhbmNlbCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlcmUg
aXMgYSBidWcgaW4gQ0ZOZXR3b3JrIHdoZXJlIGNhbGxiYWNrcyBjYW4gYmUgZGlzcGF0Y2hlZCBl
dmVuIHdoZW4gbG9hZHMgYXJlIGRlZmVycmVkLgotICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0v
NjMwNDYwMD4gZm9yIG1vcmUgZGV0YWlscy4KLSNpZiAhVVNFKENGKQotICAgIEFTU0VSVCghZGVm
ZXJzTG9hZGluZygpKTsKLSNlbmRpZgotCi0gICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRl
bnQpIHsKLSAgICAgICAgbV9kb2N1bWVudExvYWRlci0+c2V0dXBGb3JSZXBsYWNlKCk7Ci0gICAg
ICAgIG1fcmVzb3VyY2UtPmNsZWFyKCk7Ci0gICAgfQotICAgIAotICAgIGlmIChyLmlzTXVsdGlw
YXJ0KCkpIHsKLSAgICAgICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKG1fZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCktPmRvY3VtZW50KCksIEZlYXR1cmVPYnNlcnZlcjo6TXVsdGlwYXJ0TWFpblJl
c291cmNlKTsKLSAgICAgICAgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCA9IHRydWU7Ci0gICAg
fQotICAgICAgICAKLSAgICAvLyBUaGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbyBhbnl0
aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVtb3ZpbmcgdGhlIGxhc3QKLSAgICAvLyByZWZlcmVu
Y2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBS
ZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCiAgICAgbV9kb2N1bWVu
dExvYWRlci0+cmVzcG9uc2VSZWNlaXZlZChyKTsKLQotICAgIG1fcmVzcG9uc2UgPSByOwotCi0g
ICAgaWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCi0gICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGRv
Y3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgbV9yZXNwb25zZSwgMCk7Ci0KLSAgICBBU1NF
UlQoIW1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kpOwotICAgIG1fd2FpdGluZ0ZvckNvbnRlbnRQ
b2xpY3kgPSB0cnVlOwotICAgIHJlZigpOyAvLyBiYWxhbmNlZCBieSBkZXJlZiBpbiBjb250aW51
ZUFmdGVyQ29udGVudFBvbGljeSBhbmQgY2FuY2VsCi0KLSAgICAvLyBBbHdheXMgc2hvdyBjb250
ZW50IHdpdGggdmFsaWQgc3Vic3RpdHV0ZSBkYXRhLgotICAgIGlmIChtX2RvY3VtZW50TG9hZGVy
LT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSkgewotICAgICAgICBjYWxsQ29udGludWVBZnRl
ckNvbnRlbnRQb2xpY3kodGhpcywgUG9saWN5VXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotI2lmIEVOQUJMRShGVFBESVIpCi0gICAgLy8gUmVzcGVjdCB0aGUgaGlkZGVuIEZUUCBEaXJl
Y3RvcnkgTGlzdGluZyBwcmVmIHNvIGl0IGNhbiBiZSB0ZXN0ZWQgZXZlbiBpZiB0aGUgcG9saWN5
IGRlbGVnYXRlIG1pZ2h0IG90aGVyd2lzZSBkaXNhbGxvdyBpdAotICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgaWYgKHNl
dHRpbmdzICYmIHNldHRpbmdzLT5mb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKCkgJiYgbV9yZXNw
b25zZS5taW1lVHlwZSgpID09ICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiKSB7Ci0gICAg
ICAgIGNhbGxDb250aW51ZUFmdGVyQ29udGVudFBvbGljeSh0aGlzLCBQb2xpY3lVc2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lD
aGVja2VyKCktPmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3BvbnNlLCBjYWxsQ29udGludWVBZnRl
ckNvbnRlbnRQb2xpY3ksIHRoaXMpOwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKQEAgLTM1MCwyMCArMTYxLDEyIEBACiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVj
ZWl2ZWREYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQotewotICAgIC8vIFRoZSBhZGRpdGlv
bmFsIHByb2Nlc3NpbmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZW1vdmlu
ZyB0aGUgbGFzdAotICAgIC8vIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdC4KLSAgICBSZWZQdHI8
TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotICAgIGRvY3VtZW50TG9hZGVyKCkt
PmZpbmlzaGVkTG9hZGluZyhmaW5pc2hUaW1lKTsKLX0KLQogdm9pZCBNYWluUmVzb3VyY2VMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09IHJlc291cmNlKTsKICAgICBBU1NFUlQo
bV9yZXNvdXJjZSk7CiAgICAgaWYgKCFtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIW1f
cmVzb3VyY2UtPndhc0NhbmNlbGVkKCkpIHsKLSAgICAgICAgZGlkRmluaXNoTG9hZGluZyhtX3Jl
c291cmNlLT5sb2FkRmluaXNoVGltZSgpKTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+Zmlu
aXNoZWRMb2FkaW5nKG1fcmVzb3VyY2UtPmxvYWRGaW5pc2hUaW1lKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAxNDYwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEyICs3MiwxMCBAQAogICAgIHZv
aWQgY2xlYXJJZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIHsgbV9pZGVu
dGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IDA7IH0KIAogICAgIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwotICAgIGJvb2wgaXNMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7IH0KIAogICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiAgICAg
dm9pZCB0YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxvYWRlcigpIHsgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IGlkZW50aWZpZXIoKTsgfQotICAgIHZvaWQgc3Rv
cExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRh
TG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjbGVhclJlc291cmNl
KCk7CiAKQEAgLTg5LDE3ICs4NywxMSBAQAogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgT1ZF
UlJJREU7CiAKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwog
ICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KE1haW5SZXNvdXJjZUxvYWRlclRp
bWVyKik7CiAKICAgICB2b2lkIHN0YXJ0RGF0YUxvYWRUaW1lcigpOwogCiAgICAgdm9pZCByZWNl
aXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBSZXNvdXJjZUVycm9yIGludGVy
cnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoKSBjb25zdDsKLQotICAgIHN0YXRpYyB2b2lkIGNh
bGxDb250aW51ZUFmdGVyQ29udGVudFBvbGljeSh2b2lkKiwgUG9saWN5QWN0aW9uKTsKLSAgICB2
b2lkIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbik7Ci0gICAgdm9pZCBj
b250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24sIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICAKICNpZiBQTEFURk9STShRVCkKICAgICB2b2lkIHN1YnN0aXR1dGVNSU1F
VHlwZUZyb21QbHVnaW5EYXRhYmFzZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0xMTUs
MTMgKzEwNywxMCBAQAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBtX3Jlc291cmNlOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1faW5pdGlhbFJlcXVlc3Q7Ci0g
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgTWFpblJlc291cmNlTG9hZGVy
VGltZXIgbV9kYXRhTG9hZFRpbWVyOwogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1
bWVudExvYWRlcjsKIAotICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsKLSAgICBi
b29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3k7CiAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDE0NjA3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyAr
MjEyLDcgQEAKICAgICAgICAgdm9pZCBnZXRJY29uRGF0YUZvckljb25VUkwoY29uc3QgU3RyaW5n
Jik7CiAgICAgICAgIAogICAgICAgICBib29sIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIGNvbnN0
OwotICAgICAgICBib29sIGlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBpc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0xv
YWRpbmdNdWx0aXBhcnRDb250ZW50OyB9CiAKICAgICAgICAgdm9pZCBzdG9wTG9hZGluZ1BsdWdJ
bnMoKTsKICAgICAgICAgdm9pZCBzdG9wTG9hZGluZ1N1YnJlc291cmNlcygpOwpAQCAtMjg1LDYg
KzI4NSwxMiBAQAogICAgICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVBZnRlck5hdmlnYXRp
b25Qb2xpY3kodm9pZCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAgICAgICAgIHZvaWQgY29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51
ZSk7CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5
KHZvaWQqLCBQb2xpY3lBY3Rpb24pOworICAgICAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJDb250ZW50
UG9saWN5KFBvbGljeUFjdGlvbik7CisKKyAgICAgICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGlj
eUNoYW5nZSgpOworICAgICAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hh
bmdlRXJyb3IoKSBjb25zdDsKKwogICAgICAgICB2b2lkIGRlbGl2ZXJTdWJzdGl0dXRlUmVzb3Vy
Y2VzQWZ0ZXJEZWxheSgpOwogICAgICAgICB2b2lkIHN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5
VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudExvYWRlcj4qKTsKICAgICAgICAgICAgICAgICAKQEAg
LTMyNSw2ICszMzEsNyBAQAogICAgICAgICBib29sIG1faXNTdG9wcGluZzsKICAgICAgICAgYm9v
bCBtX2dvdEZpcnN0Qnl0ZTsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3Q7CisgICAg
ICAgIGJvb2wgbV9pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50OwogICAgICAgICBib29sIG1fbG9h
ZGluZ0VtcHR5RG9jdW1lbnQ7CiAKICAgICAgICAgLy8gRklYTUU6IERvY3VtZW50OjptX3Byb2Nl
c3NpbmdMb2FkRXZlbnQgYW5kIERvY3VtZW50TG9hZGVyOjptX3dhc09ubG9hZEhhbmRsZWQgYXJl
IHJvdWdobHkgdGhlIHNhbWUKQEAgLTM2OCw2ICszNzUsOCBAQAogICAgICAgICBEb2N1bWVudExv
YWRUaW1pbmcgbV9kb2N1bWVudExvYWRUaW1pbmc7CiAKICAgICAgICAgZG91YmxlIG1fdGltZU9m
TGFzdERhdGFSZWNlaXZlZDsKKworICAgICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xp
Y3k7CiAgICAgCiAgICAgICAgIFJlZlB0cjxJY29uTG9hZERlY2lzaW9uQ2FsbGJhY2s+IG1faWNv
bkxvYWREZWNpc2lvbkNhbGxiYWNrOwogICAgICAgICBSZWZQdHI8SWNvbkRhdGFDYWxsYmFjaz4g
bV9pY29uRGF0YUNhbGxiYWNrOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCShyZXZpc2lvbiAxNDYwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTIgKzEwNSwxNCBAQAogICAg
ICwgbV9pc1N0b3BwaW5nKGZhbHNlKQogICAgICwgbV9nb3RGaXJzdEJ5dGUoZmFsc2UpCiAgICAg
LCBtX2lzQ2xpZW50UmVkaXJlY3QoZmFsc2UpCisgICAgLCBtX2lzTG9hZGluZ011bHRpcGFydENv
bnRlbnQoZmFsc2UpCiAgICAgLCBtX2xvYWRpbmdFbXB0eURvY3VtZW50KGZhbHNlKQogICAgICwg
bV93YXNPbmxvYWRIYW5kbGVkKGZhbHNlKQogICAgICwgbV9zdG9wUmVjb3JkaW5nUmVzcG9uc2Vz
KGZhbHNlKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKHRoaXMsICZE
b2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKQogICAg
ICwgbV9kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoZmFsc2UpCiAgICAgLCBtX3RpbWVPZkxh
c3REYXRhUmVjZWl2ZWQoMC4wKQorICAgICwgbV93YWl0aW5nRm9yQ29udGVudFBvbGljeShmYWxz
ZSkKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QoYWRvcHRQdHIobmV3IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0KHRoaXMpKSkKIHsKIH0KQEAgLTI3Niw3ICsyNzgsNyBAQAogICAgIAogICAgIGlm
IChtX21haW5SZXNvdXJjZUxvYWRlcikKICAgICAgICAgLy8gU3RvcCB0aGUgbWFpbiByZXNvdXJj
ZSBsb2FkZXIgYW5kIGxldCBpdCBzZW5kIHRoZSBjYW5jZWxsZWQgbWVzc2FnZS4KLSAgICAgICAg
bV9tYWluUmVzb3VyY2VMb2FkZXItPmNhbmNlbCgpOworICAgICAgICBtX21haW5SZXNvdXJjZUxv
YWRlci0+Y2FuY2VsKGZyYW1lTG9hZGVyLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKICAg
ICBlbHNlIGlmICghbV9zdWJyZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKQogICAgICAgICAvLyBU
aGUgbWFpbiByZXNvdXJjZSBsb2FkZXIgYWxyZWFkeSBmaW5pc2hlZCBsb2FkaW5nLiBTZXQgdGhl
IGNhbmNlbGxlZCBlcnJvciBvbiB0aGUgCiAgICAgICAgIC8vIGRvY3VtZW50IGFuZCBsZXQgdGhl
IHN1YnJlc291cmNlTG9hZGVycyBzZW5kIGluZGl2aWR1YWwgY2FuY2VsbGVkIG1lc3NhZ2VzIGJl
bG93LgpAQCAtMzIwLDYgKzMyMiw4IEBACiAgICAgQVNTRVJUKCFtX2ZyYW1lLT5wYWdlKCktPmRl
ZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVz
ZWQobV9mcmFtZSkpOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7CisKICAgICBpZiAobV9tYWluUmVzb3VyY2VMb2FkZXIgJiYgbV9tYWluUmVzb3Vy
Y2VMb2FkZXItPmlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkpIHsKICAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5n
KHRoaXMsIG1fbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCksIGZpbmlzaFRpbWUpOwog
ICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+Y2xlYXJJZGVudGlmaWVyRm9yTG9hZFdpdGhv
dXRSZXNvdXJjZUxvYWRlcigpOwpAQCAtNDU3LDcgKzQ2MSw3IEBACiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgc2hvdWxkQ29udGludWUpCiB7CiAgICAgaWYgKCFzaG91bGRDb250aW51
ZSkKLSAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPnN0b3BMb2FkaW5nRm9yUG9saWN5Q2hh
bmdlKCk7CisgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CiAgICAgZWxzZSBp
ZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gQSByZWRpcmVjdCBy
ZXN1bHRlZCBpbiBsb2FkaW5nIHN1YnN0aXR1dGUgZGF0YS4KICAgICAgICAgQVNTRVJUKHRpbWlu
ZygpLT5yZWRpcmVjdENvdW50KCkpOwpAQCAtNDc5LDE1ICs0ODMsMTY0IEBACiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CisgICAgYm9vbCB3aWxsTG9hZEZhbGxiYWNrID0gbV9hcHBsaWNhdGlvbkNhY2hl
SG9zdC0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByZXNwb25z
ZSk7CisKKyAgICAvLyBUaGUgbWVtb3J5IGNhY2hlIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgYXBw
bGljYXRpb24gY2FjaGUgb3IgaXRzIGNhY2hpbmcgcnVsZXMuIFNvIGlmIGEgbWFpbiByZXNvdXJj
ZSBpcyBzZXJ2ZWQKKyAgICAvLyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSwgZW5zdXJlIHdl
IGRvbid0IHNhdmUgdGhlIHJlc3VsdCBmb3IgZnV0dXJlIHVzZS4KKyAgICBib29sIHNob3VsZFJl
bW92ZVJlc291cmNlRnJvbUNhY2hlID0gd2lsbExvYWRGYWxsYmFjazsKKyNpZiBQTEFURk9STShD
SFJPTUlVTSkKKyAgICAvLyBjaHJvbWl1bSdzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IGltcGxlbWVu
dGF0aW9uIGFsd2F5cyByZXR1cm5zIHRydWUgZm9yIG1heWJlTG9hZEZhbGxiYWNrRm9yTWFpblJl
c3BvbnNlKCkuIEhvd2V2ZXIsIGFsbCByZXNwb25zZXMgbG9hZGVkCisgICAgLy8gZnJvbSBhcHBj
YWNoZSB3aWxsIGhhdmUgYSBub24temVybyBhcHBDYWNoZUlEKCkuCisgICAgaWYgKHJlc3BvbnNl
LmFwcENhY2hlSUQoKSkKKyAgICAgICAgc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB0
cnVlOworI2VuZGlmCisgICAgaWYgKHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlKQorICAg
ICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9tYWluUmVzb3VyY2VMb2FkZXItPmNhY2hlZE1h
aW5SZXNvdXJjZSgpKTsKKworICAgIGlmICh3aWxsTG9hZEZhbGxiYWNrKQorICAgICAgICByZXR1
cm47CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeEZyYW1lT3B0aW9u
SGVhZGVyLCAoIngtZnJhbWUtb3B0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZHMoKS5maW5kKHhGcmFtZU9wdGlvbkhlYWRlcik7CisgICAgaWYgKGl0
ICE9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKSkgeworICAgICAgICBTdHJpbmcg
Y29udGVudCA9IGl0LT52YWx1ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0g
bV9tYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKGZyYW1lTG9h
ZGVyKCktPnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRlbnQsIHJlc3Bv
bnNlLnVybCgpLCBpZGVudGlmaWVyKSkgeworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2ZyYW1lLCB0aGlzLCBp
ZGVudGlmaWVyLCByZXNwb25zZSk7CisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1
c2VkIHRvIGRpc3BsYXkgJyIgKyByZXNwb25zZS51cmwoKS5lbGlkZWRTdHJpbmcoKSArICInIGlu
IGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250ZW50
ICsgIicuIjsKKyAgICAgICAgICAgIGZyYW1lKCktPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlk
ZW50aWZpZXIpOworICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRl
cigpLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVy
ZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJl
ZC4KKyAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYzMDQ2MDA+IGZvciBtb3JlIGRldGFpbHMu
CisjaWYgIVVTRShDRikKKyAgICBBU1NFUlQoIW1fZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGlu
ZygpKTsKKyNlbmRpZgorCisgICAgaWYgKG1faXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewor
ICAgICAgICBzZXR1cEZvclJlcGxhY2UoKTsKKyAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIt
PmNhY2hlZE1haW5SZXNvdXJjZSgpLT5jbGVhcigpOworICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkgeworICAgICAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUobV9mcmFt
ZS0+ZG9jdW1lbnQoKSwgRmVhdHVyZU9ic2VydmVyOjpNdWx0aXBhcnRNYWluUmVzb3VyY2UpOwor
ICAgICAgICBtX2lzTG9hZGluZ011bHRpcGFydENvbnRlbnQgPSB0cnVlOworICAgIH0KKwogICAg
IHNldFJlc3BvbnNlKHJlc3BvbnNlKTsKIAorICAgIGlmIChtX21haW5SZXNvdXJjZUxvYWRlci0+
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSkKKyAgICAgICAgZnJhbWVM
b2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9t
YWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
KCksIG1fcmVzcG9uc2UsIDApOworCisgICAgQVNTRVJUKCFtX3dhaXRpbmdGb3JDb250ZW50UG9s
aWN5KTsKKyAgICBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5ID0gdHJ1ZTsKKworICAgIC8vIEFs
d2F5cyBzaG93IGNvbnRlbnQgd2l0aCB2YWxpZCBzdWJzdGl0dXRlIGRhdGEuCisgICAgaWYgKG1f
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50
UG9saWN5KFBvbGljeVVzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBFTkFCTEUo
RlRQRElSKQorICAgIC8vIFJlc3BlY3QgdGhlIGhpZGRlbiBGVFAgRGlyZWN0b3J5IExpc3Rpbmcg
cHJlZiBzbyBpdCBjYW4gYmUgdGVzdGVkIGV2ZW4gaWYgdGhlIHBvbGljeSBkZWxlZ2F0ZSBtaWdo
dCBvdGhlcndpc2UgZGlzYWxsb3cgaXQKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1l
LT5zZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+Zm9yY2VGVFBEaXJl
Y3RvcnlMaXN0aW5ncygpICYmIG1fcmVzcG9uc2UubWltZVR5cGUoKSA9PSAiYXBwbGljYXRpb24v
eC1mdHAtZGlyZWN0b3J5IikgeworICAgICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lVc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICNpZiBVU0UoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKHJlc3BvbnNlLnVybCgpLnByb3RvY29sSXMoImh0dHBz
IikgJiYgQ29udGVudEZpbHRlcjo6aXNFbmFibGVkKCkpCiAgICAgICAgIG1fY29udGVudEZpbHRl
ciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShyZXNwb25zZSk7CiAjZW5kaWYKIAorICAgIGZyYW1l
TG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2Us
IGNhbGxDb250aW51ZUFmdGVyQ29udGVudFBvbGljeSwgdGhpcyk7CiB9CiAKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNhbGxDb250aW51ZUFmdGVyQ29udGVudFBvbGljeSh2b2lkKiBhcmd1bWVudCwg
UG9saWN5QWN0aW9uIHBvbGljeSkKK3sKKyAgICBzdGF0aWNfY2FzdDxEb2N1bWVudExvYWRlcio+
KGFyZ3VtZW50KS0+Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kocG9saWN5KTsKK30KKwordm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9u
IHBvbGljeSkKK3sKKyAgICBBU1NFUlQobV93YWl0aW5nRm9yQ29udGVudFBvbGljeSk7CisgICAg
bV93YWl0aW5nRm9yQ29udGVudFBvbGljeSA9IGZhbHNlOworICAgIGlmIChpc1N0b3BwaW5nKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEtVUkwgdXJsID0gbV9yZXF1ZXN0LnVybCgpOworICAg
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CisgICAgCisg
ICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFBvbGljeVVzZTogeworICAgICAgICAvLyBQ
cmV2ZW50IHJlbW90ZSB3ZWIgYXJjaGl2ZXMgZnJvbSBsb2FkaW5nIGJlY2F1c2UgdGhleSBjYW4g
Y2xhaW0gdG8gYmUgZnJvbSBhbnkgZG9tYWluIGFuZCB0aHVzIGF2b2lkIGNyb3NzLWRvbWFpbiBz
ZWN1cml0eSBjaGVja3MgKDQxMjAyNTUpLgorICAgICAgICBib29sIGlzUmVtb3RlV2ViQXJjaGl2
ZSA9IChlcXVhbElnbm9yaW5nQ2FzZSgiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiwgbWltZVR5
cGUpCisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
Im1lc3NhZ2UvcmZjODIyIiwgbWltZVR5cGUpCisjZW5kaWYKKyAgICAgICAgICAgIHx8IGVxdWFs
SWdub3JpbmdDYXNlKCJtdWx0aXBhcnQvcmVsYXRlZCIsIG1pbWVUeXBlKSkKKyAgICAgICAgICAg
ICYmICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSk7CisgICAgICAgIGlmICghZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCktPmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkgfHwgaXNSZW1v
dGVXZWJBcmNoaXZlKSB7CisgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2Vy
KCktPmNhbm5vdFNob3dNSU1FVHlwZShtX3Jlc3BvbnNlKTsKKyAgICAgICAgICAgIC8vIENoZWNr
IHJlYWNoZWRUZXJtaW5hbFN0YXRlIHNpbmNlIHRoZSBsb2FkIG1heSBoYXZlIGFscmVhZHkgYmVl
biBjYW5jZWxlZCBpbnNpZGUgb2YgX2hhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeVdpdGhFcnJv
ckNvZGU6Oi4KKyAgICAgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBQb2xpY3lEb3dubG9hZDogeworICAgICAgICAvLyBUaGUgbWFpbiBDYWNoZWRSZXNvdXJj
ZSBjYW4gYmUgbnVsbCwgZS5nLiB3aGVuIGxvYWRpbmcgYSBzdWJzdGl0dXRlIHJlc291cmNlIGZy
b20gYXBwbGljYXRpb24gY2FjaGUuCisgICAgICAgIGlmICghbV9tYWluUmVzb3VyY2VMb2FkZXIt
PmNhY2hlZE1haW5SZXNvdXJjZSgpKSB7CisgICAgICAgICAgICBtYWluUmVjZWl2ZWRFcnJvcihm
cmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Y2Fubm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5RG93bmxvYWQobV9mcmFtZSwgdGhpcywgbWFpblJl
c291cmNlTG9hZGVyKCktPmlkZW50aWZpZXIoKSwgbV9yZXNwb25zZSk7CisKKyAgICAgICAgLy8g
V2hlbiBzdGFydGluZyB0aGUgcmVxdWVzdCwgd2UgZGlkbid0IGtub3cgdGhhdCBpdCB3b3VsZCBy
ZXN1bHQgaW4gZG93bmxvYWQgYW5kIG5vdCBuYXZpZ2F0aW9uLiBOb3cgd2Uga25vdyB0aGF0IG1h
aW4gZG9jdW1lbnQgVVJMIGRpZG4ndCBjaGFuZ2UuCisgICAgICAgIC8vIERvd25sb2FkIG1heSB1
c2UgdGhpcyBrbm93bGVkZ2UgZm9yIHB1cnBvc2VzIHVucmVsYXRlZCB0byBjb29raWVzLCBub3Rh
Ymx5IGZvciBzZXR0aW5nIGZpbGUgcXVhcmFudGluZSBkYXRhLgorICAgICAgICBmcmFtZUxvYWRl
cigpLT5zZXRPcmlnaW5hbFVSTEZvckRvd25sb2FkUmVxdWVzdChtX3JlcXVlc3QpOworICAgICAg
ICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKHRoaXMsIG1fcmVxdWVzdCwgbV9yZXNwb25zZSk7CisKKyAgICAgICAgLy8gSXQgbWlnaHQg
aGF2ZSBnb25lIG1pc3NpbmcKKyAgICAgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcigpKQorICAg
ICAgICAgICAgbWFpblJlc291cmNlTG9hZGVyKCktPmRpZEZhaWwoaW50ZXJydXB0ZWRGb3JQb2xp
Y3lDaGFuZ2VFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIFBvbGlj
eUlnbm9yZToKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQ
b2xpY3lJZ25vcmUobV9mcmFtZSwgdGhpcywgbWFpblJlc291cmNlTG9hZGVyKCktPmlkZW50aWZp
ZXIoKSwgbV9yZXNwb25zZSk7CisgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAobV9yZXNwb25zZS5pc0hUVFAoKSkgeworICAg
ICAgICBpbnQgc3RhdHVzID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgICAgICBp
ZiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+PSAzMDApIHsKKyAgICAgICAgICAgIGJvb2wgaG9z
dGVkQnlPYmplY3QgPSBmcmFtZUxvYWRlcigpLT5pc0hvc3RlZEJ5T2JqZWN0RWxlbWVudCgpOwor
CisgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5oYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKKyAg
ICAgICAgICAgIC8vIG9iamVjdCBlbGVtZW50cyBhcmUgbm8gbG9uZ2VyIHJlbmRlcmVkIGFmdGVy
IHdlIGZhbGxiYWNrLCBzbyBkb24ndAorICAgICAgICAgICAgLy8ga2VlcCB0cnlpbmcgdG8gcHJv
Y2VzcyBkYXRhIGZyb20gdGhlaXIgbG9hZAorCisgICAgICAgICAgICBpZiAoaG9zdGVkQnlPYmpl
Y3QpCisgICAgICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigp
LT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAg
IGlmIChtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKQorICAgICAgICAgICAgcmVj
ZWl2ZWREYXRhKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1fc3Vic3RpdHV0
ZURhdGEuY29udGVudCgpLT5zaXplKCkpOworICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291
cmNlKCkpCisgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmcoMCk7CisgICAgfQorfQorCiB2b2lk
IERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
CiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBu
ZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291
cmNlCkBAIC01MDYsNiArNjU5LDE4IEBACiAgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLT5jb21t
aXR0ZWRMb2FkKHRoaXMsIGRhdGEsIGxlbmd0aCk7CiB9CiAKK1Jlc291cmNlRXJyb3IgRG9jdW1l
bnRMb2FkZXI6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoKSBjb25zdAoreworICAg
IHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFu
Z2VFcnJvcihyZXF1ZXN0KCkpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGlu
Z0ZvclBvbGljeUNoYW5nZSgpCit7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IGludGVycnVw
dGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoKTsKKyAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0
cnVlKTsKKyAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwogdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7CkBAIC02MjYsNyArNzkxLDcgQEAKIAogI2lm
IFVTRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobG9hZFdhc0Jsb2NrZWRCZWZvcmVGaW5p
c2hpbmcpCi0gICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoUmVzb3VyY2VFcnJvcigpKTsK
KyAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRF
cnJvcihtX3JlcXVlc3QpKTsKICNlbmRpZgogfQogCkBAIC0xMDk4LDExICsxMjYzLDYgQEAKICAg
ICByZXR1cm4gISFtX21haW5SZXNvdXJjZUxvYWRlciB8fCBtX2xvYWRpbmdFbXB0eURvY3VtZW50
OwogfQogCi1ib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VMb2FkZXIgJiYgbV9tYWluUmVzb3Vy
Y2VMb2FkZXItPmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKTsKLX0KLQogYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkgY29uc3QKIHsKICAgICByZXR1cm4g
aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpICYmIGZyYW1lTG9hZGVyKCktPmlzUmVwbGFjaW5n
KCk7CkBAIC0xMTY1LDYgKzEzMjUsMTMgQEAKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2Vs
TWFpblJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICBBU1NF
UlQoIWVycm9yLmlzTnVsbCgpKTsKKworICAgIGlmIChtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5
KSB7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2FuY2VsQ2hlY2so
KTsKKyAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kpOworICAgICAgICBt
X3dhaXRpbmdGb3JDb250ZW50UG9saWN5ID0gZmFsc2U7CisgICAgfQogICAgIG1fbWFpblJlc291
cmNlTG9hZGVyLT5jYW5jZWwoZXJyb3IpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>