<?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>27415</bug_id>
          
          <creation_ts>2009-07-18 10:23:38 -0700</creation_ts>
          <short_desc>[V8] Phase 2: Remove event listener methods from V8Proxy</short_desc>
          <delta_ts>2009-07-19 00:39:12 -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>Evangelism</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>132922</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-18 10:23:38 -0700</bug_when>
    <thetext>Now that all the event listener list logic has been removed from V8Proxy, we can remove the API and let clients talk to the lists directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132923</commentid>
    <comment_count>1</comment_count>
      <attachid>33027</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-18 10:25:50 -0700</bug_when>
    <thetext>Created attachment 33027
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132924</commentid>
    <comment_count>2</comment_count>
      <attachid>33028</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-18 10:31:28 -0700</bug_when>
    <thetext>Created attachment 33028
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132977</commentid>
    <comment_count>3</comment_count>
      <attachid>33028</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-19 00:16:22 -0700</bug_when>
    <thetext>Comment on attachment 33028
patch

Looks like a pretty mechanical change and the mechanics look correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132979</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-19 00:39:12 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/v8/V8ObjectEventListener.cpp
	M	WebCore/bindings/v8/V8Proxy.cpp
	M	WebCore/bindings/v8/V8Proxy.h
	M	WebCore/bindings/v8/custom/V8AbstractWorkerCustom.cpp
	M	WebCore/bindings/v8/custom/V8CustomEventListener.cpp
	M	WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
	M	WebCore/bindings/v8/custom/V8ElementCustom.cpp
	M	WebCore/bindings/v8/custom/V8MessagePortCustom.cpp
	M	WebCore/bindings/v8/custom/V8NodeCustom.cpp
	M	WebCore/bindings/v8/custom/V8SVGElementInstanceCustom.cpp
	M	WebCore/bindings/v8/custom/V8WorkerCustom.cpp
	M	WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp
	M	WebCore/bindings/v8/custom/V8XMLHttpRequestUploadCustom.cpp
Committed r46102
	M	WebCore/ChangeLog
	M	WebCore/bindings/v8/V8Proxy.h
	M	WebCore/bindings/v8/V8ObjectEventListener.cpp
	M	WebCore/bindings/v8/V8Proxy.cpp
	M	WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
	M	WebCore/bindings/v8/custom/V8WorkerCustom.cpp
	M	WebCore/bindings/v8/custom/V8NodeCustom.cpp
	M	WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp
	M	WebCore/bindings/v8/custom/V8ElementCustom.cpp
	M	WebCore/bindings/v8/custom/V8XMLHttpRequestUploadCustom.cpp
	M	WebCore/bindings/v8/custom/V8CustomEventListener.cpp
	M	WebCore/bindings/v8/custom/V8MessagePortCustom.cpp
	M	WebCore/bindings/v8/custom/V8AbstractWorkerCustom.cpp
	M	WebCore/bindings/v8/custom/V8SVGElementInstanceCustom.cpp
r46102 = 29bb1e81e533faab62dd627defd6b4343f9c9179 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46102</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33027</attachid>
            <date>2009-07-18 10:25:50 -0700</date>
            <delta_ts>2009-07-18 10:31:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-27415-20090718102549.patch</filename>
            <type>text/plain</type>
            <size>19250</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjA5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDctMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbVjhd
IFBoYXNlIDI6IFJlbW92ZSBldmVudCBsaXN0ZW5lciBtZXRob2RzIGZyb20gVjhQcm94eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0MTUKKworICAg
ICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE9iamVj
dEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vha09iamVjdEV2ZW50TGlz
dGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdEV2ZW50TGlzdGVuZXI6
On5WOE9iamVjdEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6ZGlzY29ubmVjdEV2ZW50TGlzdGVuZXJz
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpW
OFByb3h5OjpldmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpvYmpl
Y3RMaXN0ZW5lcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhFdmVudExpc3RlbmVyOjp+VjhFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09S
X1NFVFRFUik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QUNDRVNTT1JfU0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVD
TCk6CisKIDIwMDktMDctMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4T2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE9iamVjdEV2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhPYmplY3RFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWFrT2JqZWN0RXZlbnRMaXN0ZW5lckNhbGxi
CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUoZnJhbWUpOwogICAgICAgICBpZiAocHJveHkpCi0gICAgICAgICAgICBwcm94eS0+cmVt
b3ZlT2JqZWN0RXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgICAgICBwcm94eS0+b2Jq
ZWN0TGlzdGVuZXJzKCktPnJlbW92ZShsaXN0ZW5lcik7CiAKICAgICAgICAgLy8gQmVjYXVzZSB0
aGUgbGlzdGVuZXIgaXMgbm8gbG9uZ2VyIGluIHRoZSBsaXN0LCBpdCBtdXN0IGJlIGRpc2Nvbm5l
Y3RlZCBmcm9tIHRoZSBmcmFtZSB0byBhdm9pZCBkYW5nbGluZyBmcmFtZSBwb2ludGVyCiAgICAg
ICAgIC8vIGluIHRoZSBkZXN0cnVjdG9yLgpAQCAtODUsNyArODUsNyBAQCBWOE9iamVjdEV2ZW50
TGlzdGVuZXI6On5WOE9iamVjdEV2ZW50TGlzCiAgICAgICAgIEFTU0VSVCghbV9saXN0ZW5lci5J
c0VtcHR5KCkpOwogICAgICAgICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKG1f
ZnJhbWUpOwogICAgICAgICBpZiAocHJveHkpCi0gICAgICAgICAgICBwcm94eS0+cmVtb3ZlT2Jq
ZWN0RXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIHByb3h5LT5vYmplY3RMaXN0ZW5l
cnMoKS0+cmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSwzNiArMzYx
LDYgQEAgdm9pZCBWOFByb3h5OjpkZXN0cm95R2xvYmFsKCkKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8VjhFdmVudExpc3RlbmVyPiBWOFByb3h5OjpmaW5kVjhFdmVudExpc3RlbmVyKHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IG9iamVjdCwgYm9vbCBpc0F0dHJpYnV0ZSkKLXsKLSAgICByZXR1cm4gbV9l
dmVudExpc3RlbmVycy5maW5kV3JhcHBlcihvYmplY3QsIGlzQXR0cmlidXRlKTsKLX0KLQotUGFz
c1JlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IFY4UHJveHk6OmZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0
ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIGJvb2wgaXNBdHRyaWJ1dGUpCi17Ci0g
ICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnMuZmluZE9yQ3JlYXRlV3JhcHBlcjxWOEV2ZW50TGlz
dGVuZXI+KG1fZnJhbWUsIG9iamVjdCwgaXNBdHRyaWJ1dGUpOwotfQotCi12b2lkIFY4UHJveHk6
OnJlbW92ZVY4RXZlbnRMaXN0ZW5lcihWOEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAg
IG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLX0KLQotUGFzc1JlZlB0cjxWOEV2
ZW50TGlzdGVuZXI+IFY4UHJveHk6OmZpbmRPYmplY3RFdmVudExpc3RlbmVyKCB2ODo6TG9jYWw8
djg6OlZhbHVlPiBvYmplY3QsIGJvb2wgaXNBdHRyaWJ1dGUpCi17Ci0gICAgcmV0dXJuIG1feGhy
TGlzdGVuZXJzLmZpbmRXcmFwcGVyKG9iamVjdCwgaXNBdHRyaWJ1dGUpOwotfQotCi1QYXNzUmVm
UHRyPFY4RXZlbnRMaXN0ZW5lcj4gVjhQcm94eTo6ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0
ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIGJvb2wgaXNBdHRyaWJ1dGUpCi17Ci0g
ICAgcmV0dXJuIG1feGhyTGlzdGVuZXJzLmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVu
dExpc3RlbmVyPihtX2ZyYW1lLCBvYmplY3QsIGlzQXR0cmlidXRlKTsKLX0KLQotdm9pZCBWOFBy
b3h5OjpyZW1vdmVPYmplY3RFdmVudExpc3RlbmVyKFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIpCi17Ci0gICAgbV94aHJMaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLX0KLQogc3Rh
dGljIHZvaWQgZGlzY29ubmVjdEV2ZW50TGlzdGVuZXJzSW5MaXN0KFY4RXZlbnRMaXN0ZW5lckxp
c3QmIGxpc3QpCiB7CiAgICAgVjhFdmVudExpc3RlbmVyTGlzdDo6aXRlcmF0b3IgaXQgPSBsaXN0
LmJlZ2luKCk7CkBAIC00MDQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgZGlzY29ubmVjdEV2ZW50
TGlzdGVuZXJzSW5MaQogdm9pZCBWOFByb3h5OjpkaXNjb25uZWN0RXZlbnRMaXN0ZW5lcnMoKQog
ewogICAgIGRpc2Nvbm5lY3RFdmVudExpc3RlbmVyc0luTGlzdChtX2V2ZW50TGlzdGVuZXJzKTsK
LSAgICBkaXNjb25uZWN0RXZlbnRMaXN0ZW5lcnNJbkxpc3QobV94aHJMaXN0ZW5lcnMpOworICAg
IGRpc2Nvbm5lY3RFdmVudExpc3RlbmVyc0luTGlzdChtX29iamVjdExpc3RlbmVycyk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gVjhQcm94eTo6Y29tcGlsZVNjcmlwdCh2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IGNvZGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGludCBiYXNlTGluZSkK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTUgKzE5Niw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzRW5hYmxlZCgpOwogCi0gICAgICAg
IC8vIEZJWE1FOiBSZXBsYWNlIHRoZXNlIEFQSXMgd2l0aCBhIGdldHRlciBmb3IgbV9ldmVudExp
c3RlbmVycwotICAgICAgICBQYXNzUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gZmluZFY4RXZlbnRM
aXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiBsaXN0ZW5lciwgYm9vbCBpc0h0bWwpOwotICAg
ICAgICBQYXNzUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gZmluZE9yQ3JlYXRlVjhFdmVudExpc3Rl
bmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxpc3RlbmVyLCBib29sIGlzSHRtbCk7Ci0gICAgICAg
IHZvaWQgcmVtb3ZlVjhFdmVudExpc3RlbmVyKFY4RXZlbnRMaXN0ZW5lciopOwotCi0gICAgICAg
IC8vIEZJWE1FOiBSZXBsYWNlIHRoZXNlIEFQSXMgd2l0aCBhIGdldHRlciBmb3IgbV94aHJMaXN0
ZW5lcnMKLSAgICAgICAgUGFzc1JlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGZpbmRPYmplY3RFdmVu
dExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxpc3RlbmVyLCBib29sIGlzSHRtbCk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBmaW5kT3JDcmVhdGVPYmplY3RFdmVu
dExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxpc3RlbmVyLCBib29sIGlzSHRtbCk7Ci0g
ICAgICAgIHZvaWQgcmVtb3ZlT2JqZWN0RXZlbnRMaXN0ZW5lcihWOE9iamVjdEV2ZW50TGlzdGVu
ZXIqKTsKKyAgICAgICAgVjhFdmVudExpc3RlbmVyTGlzdCogZXZlbnRMaXN0ZW5lcnMoKSB7IHJl
dHVybiAmbV9ldmVudExpc3RlbmVyczsgfQorICAgICAgICBWOEV2ZW50TGlzdGVuZXJMaXN0KiBv
YmplY3RMaXN0ZW5lcnMoKSB7IHJldHVybiAmbV9vYmplY3RMaXN0ZW5lcnM7IH0KIAogI2lmIEVO
QUJMRShTVkcpCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldFNWR0NvbnRleHQodm9pZCosIFNWR0Vs
ZW1lbnQqKTsKQEAgLTQyOSw3ICs0MjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgLy8gQSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyBjcmVhdGUgZm9yIFhNTEh0dHBSZXF1ZXN0
IG9iamVjdCBmb3IgdGhpcyBmcmFtZSwKICAgICAgICAgLy8gdGhlIGxpc3QgZ2V0cyBjbGVhcmVk
IHdoZW4gcmVtb3ZpbmcgYWxsIHRpbWVvdXRzLgotICAgICAgICBWOEV2ZW50TGlzdGVuZXJMaXN0
IG1feGhyTGlzdGVuZXJzOworICAgICAgICBWOEV2ZW50TGlzdGVuZXJMaXN0IG1fb2JqZWN0TGlz
dGVuZXJzOwogCiAgICAgICAgIC8vIFRydWUgZm9yIDxhIGhyZWY9ImphdmFzY3JpcHQ6Zm9vKCki
PiBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+Zm9vKCk8L3NjcmlwdD4uCiAgICAgICAgIC8vIE9ubHkg
dmFsaWQgZHVyaW5nIGV4ZWN1dGlvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCwxMCBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGdldEV2ZW50TGlzdGVuCiAgICAgfQogCiAgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5
OjpyZXRyaWV2ZSh3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKHBy
b3h5KQotICAgICAgICByZXR1cm4gZmluZE9ubHkgPyBwcm94eS0+ZmluZE9iamVjdEV2ZW50TGlz
dGVuZXIodmFsdWUsIGZhbHNlKSA6IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExpc3Rl
bmVyKHZhbHVlLCBmYWxzZSk7CisgICAgaWYgKHByb3h5KSB7CisJCVY4RXZlbnRMaXN0ZW5lckxp
c3QqIGxpc3QgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCk7CisgICAgICAgIHJldHVybiBmaW5k
T25seSA/IGxpc3QtPmZpbmRXcmFwcGVyKHZhbHVlLCBmYWxzZSkgOiBsaXN0LT5maW5kT3JDcmVh
dGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0ZW5lcj4ocHJveHktPmZyYW1lKCksIHZhbHVlLCBm
YWxzZSk7CisJfQogCiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDQ2
MDkxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExpc3RlbmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBWOEV2ZW50TGlzdGVuZXI6On5W
OEV2ZW50TGlzdGVuZXIoKQogICAgIGlmIChtX2ZyYW1lKSB7CiAgICAgICAgIFY4UHJveHkqIHBy
b3h5ID0gVjhQcm94eTo6cmV0cmlldmUobV9mcmFtZSk7CiAgICAgICAgIGlmIChwcm94eSkKLSAg
ICAgICAgICAgIHByb3h5LT5yZW1vdmVWOEV2ZW50TGlzdGVuZXIodGhpcyk7CisgICAgICAgICAg
ICBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+cmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIGRp
c3Bvc2VMaXN0ZW5lck9iamVjdCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNDYwOTEpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxNCw3ICsyMTQsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93QWRkRXZlbnRM
aXN0CiAgICAgaWYgKCFwcm94eSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAot
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5kT3JDcmVhdGVW
OEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IHByb3h5LT5ldmVudExpc3RlbmVycygpLT5maW5kT3JDcmVhdGVXcmFwcGVy
PFY4RXZlbnRMaXN0ZW5lcj4ocHJveHktPmZyYW1lKCksIGFyZ3NbMV0sIGZhbHNlKTsKIAogICAg
IGlmIChsaXN0ZW5lcikgewogICAgICAgICBTdHJpbmcgZXZlbnRUeXBlID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChET01X
aW5kb3dSZW1vdmVFdmVudEwKICAgICBpZiAoIXByb3h5KQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHkt
PmZpbmRWOEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5ldmVudExpc3RlbmVycygpLT5maW5kV3JhcHBlcihh
cmdzWzFdLCBmYWxzZSk7CiAKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgU3RyaW5nIGV2
ZW50VHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKQEAgLTM5NSw4ICszOTUsNyBAQCBB
Q0NFU1NPUl9TRVRURVIoRE9NV2luZG93RXZlbnRIYW5kbGVyKQogICAgICAgICBpZiAoIXByb3h5
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciA9Ci0gICAgICAgICAgICBwcm94eS0+ZmluZE9yQ3JlYXRlVjhFdmVudExpc3RlbmVy
KHZhbHVlLCB0cnVlKTsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0g
cHJveHktPmV2ZW50TGlzdGVuZXJzKCktPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhFdmVudExpc3Rl
bmVyPihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICBpZiAobGlzdGVuZXIp
CiAgICAgICAgICAgICBpbXAtPnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBs
aXN0ZW5lcik7CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsx
NTEsNyBAQCBBQ0NFU1NPUl9TRVRURVIoRWxlbWVudEV2ZW50SGFuZGxlcikKICAgICAgICAgaWYg
KCFwcm94eSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0ZW5lcih2
YWx1ZSwgdHJ1ZSkpCisgICAgICAgIGlmIChSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIg
PSBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOEV2ZW50TGlz
dGVuZXI+KHByb3h5LT5mcmFtZSgpLCB2YWx1ZSwgdHJ1ZSkpCiAgICAgICAgICAgICBub2RlLT5z
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIpOwogICAgIH0gZWxz
ZQogICAgICAgICBub2RlLT5jbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRD
dXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IEFDQ0VTU09SX1NFVFRFUihNZXNzYWdlUG9ydE9ubWVzc2FnZSkKICAgICAgICAgaWYgKCFwcm94
eSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIgPSBwcm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwg
ZmFsc2UpOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+
b2JqZWN0TGlzdGVuZXJzKCktPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVudExpc3Rl
bmVyPihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIGZhbHNlKTsKICAgICAgICAgaWYgKGxpc3RlbmVy
KSB7CiAgICAgICAgICAgICBtZXNzYWdlUG9ydC0+c2V0T25tZXNzYWdlKGxpc3RlbmVyKTsKICAg
ICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4
Q3VzdG9tOjprTWVzc2FnZVBvcnRSZXF1ZXN0Q2FjaGVJbmRleCk7CkBAIC04Miw3ICs4Miw3IEBA
IENBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlUG9ydEFkZEV2ZW50TGkKICAgICBpZiAoIXByb3h5
KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIo
YXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHBy
b3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOE9iamVjdEV2ZW50
TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCBhcmdzWzFdLCBmYWxzZSk7CiAgICAgaWYgKGxpc3Rl
bmVyKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwog
ICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKQEAgLTEw
Miw3ICsxMDIsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woTWVzc2FnZVBvcnRSZW1vdmVFdmVuCiAg
ICAgaWYgKCFwcm94eSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsgLy8gcHJvYmFi
bHkgbGVha2VkCiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+
ZmluZE9iamVjdEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+ZmluZFdyYXBw
ZXIoYXJnc1sxXSwgZmFsc2UpOwogCiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIFN0cmlu
ZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vZGVBZGRFdmVudExpc3RlbmVyKQog
ICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZmluZE9yQ3JlYXRlVjhFdmVu
dExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlz
dGVuZXIgPSBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOEV2
ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCBhcmdzWzFdLCBmYWxzZSk7CiAgICAgaWYgKGxp
c3RlbmVyKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0p
OwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKQEAg
LTc0LDcgKzc0LDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vZGVSZW1vdmVFdmVudExpc3Rlbgog
ICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZmluZFY4RXZlbnRMaXN0ZW5l
cihhcmdzWzFdLCBmYWxzZSk7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0g
cHJveHktPmV2ZW50TGlzdGVuZXJzKCktPmZpbmRXcmFwcGVyKGFyZ3NbMV0sIGZhbHNlKTsKICAg
ICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmco
YXJnc1swXSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1
ZSgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50SW5zdGFu
Y2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNDYwOTEpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKFNWR0VsZW1lbnRJ
bnN0YW5jZUFkZAogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZmluZE9y
Q3JlYXRlVjhFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRl
V3JhcHBlcjxWOEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCBhcmdzWzFdLCBmYWxzZSk7
CiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKQEAgLTcyLDcgKzcyLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKFNWR0VsZW1lbnRJ
bnN0YW5jZVJlbQogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZmluZFY4
RXZlbnRMaXN0ZW5lcihhcmdzWzFdLCBmYWxzZSk7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyID0gcHJveHktPmV2ZW50TGlzdGVuZXJzKCktPmZpbmRXcmFwcGVyKGFyZ3NbMV0s
IGZhbHNlKTsKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dl
YkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0t
PkJvb2xlYW5WYWx1ZSgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gNDYwOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDEw
IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW4KICAgICB9CiAKICAg
ICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKHdvcmtlci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKLSAgICBpZiAocHJveHkpCi0gICAgICAgIHJldHVybiBmaW5kT25seSA/
IHByb3h5LT5maW5kT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpIDogcHJveHktPmZp
bmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKTsKKyAgICBpZiAocHJv
eHkpIHsKKwkJVjhFdmVudExpc3RlbmVyTGlzdCogbGlzdCA9IHByb3h5LT5vYmplY3RMaXN0ZW5l
cnMoKTsKKyAgICAgICAgcmV0dXJuIGZpbmRPbmx5ID8gbGlzdC0+ZmluZFdyYXBwZXIodmFsdWUs
IGZhbHNlKSA6IGxpc3QtPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVudExpc3RlbmVy
Pihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIGZhbHNlKTsKKwl9CiAKICAgICByZXR1cm4gMDsKIH0K
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5
ICs1MywxMSBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuCiAjZW5k
aWYKIAogICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoeG1sSHR0cFJlcXVl
c3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKHByb3h5KQotICAgICAgICBy
ZXR1cm4gZmluZE9ubHkgPyBwcm94eS0+ZmluZE9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZh
bHNlKSA6IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExpc3RlbmVyKHZhbHVlLCBmYWxz
ZSk7Ci0KKyAgICBpZiAocHJveHkpIHsKKwkJVjhFdmVudExpc3RlbmVyTGlzdCogbGlzdCA9IHBy
b3h5LT5vYmplY3RMaXN0ZW5lcnMoKTsKKyAgICAgICAgcmV0dXJuIGZpbmRPbmx5ID8gbGlzdC0+
ZmluZFdyYXBwZXIodmFsdWUsIGZhbHNlKSA6IGxpc3QtPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhP
YmplY3RFdmVudExpc3RlbmVyPihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIGZhbHNlKTsKKwl9CisJ
CiAgICAgcmV0dXJuIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4oKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVz
dFVwbG9hZEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ2MDkxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDcgKzc0LDcgQEAgQUNDRVNTT1JfU0VUVEVSKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25h
YgogICAgICAgICBpZiAoIXByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RF
dmVudExpc3RlbmVyKHZhbHVlLCBmYWxzZSk7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBl
cjxWOE9iamVjdEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCB2YWx1ZSwgZmFsc2UpOwog
ICAgICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0VXBsb2Fk
LT5zZXRPbmFib3J0KGxpc3RlbmVyKTsKICAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVu
Y3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprWE1MSHR0cFJlcXVlc3RDYWNoZUlu
ZGV4KTsKQEAgLTExMyw3ICsxMTMsNyBAQCBBQ0NFU1NPUl9TRVRURVIoWE1MSHR0cFJlcXVlc3RV
cGxvYWRPbmVyCiAgICAgICAgIGlmICghcHJveHkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0
ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKTsKKyAgICAgICAgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPm9iamVjdExpc3RlbmVycygpLT5maW5kT3JDcmVh
dGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0ZW5lcj4ocHJveHktPmZyYW1lKCksIHZhbHVlLCBm
YWxzZSk7CiAgICAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICAgICAgeG1sSHR0cFJlcXVl
c3RVcGxvYWQtPnNldE9uZXJyb3IobGlzdGVuZXIpOwogICAgICAgICAgICAgY3JlYXRlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtYTUxIdHRwUmVxdWVz
dENhY2hlSW5kZXgpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIEFDQ0VTU09SX1NFVFRFUihYTUxIdHRw
UmVxdWVzdFVwbG9hZE9ubG8KICAgICAgICAgaWYgKCFwcm94eSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+Zmlu
ZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpOworICAgICAgICBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCktPmZp
bmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVudExpc3RlbmVyPihwcm94eS0+ZnJhbWUoKSwg
dmFsdWUsIGZhbHNlKTsKICAgICAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgICAgICB4bWxI
dHRwUmVxdWVzdFVwbG9hZC0+c2V0T25sb2FkKGxpc3RlbmVyKTsKICAgICAgICAgICAgIGNyZWF0
ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprWE1MSHR0
cFJlcXVlc3RDYWNoZUluZGV4KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBBQ0NFU1NPUl9TRVRURVIo
WE1MSHR0cFJlcXVlc3RVcGxvYWRPbmxvCiAgICAgICAgIGlmICghcHJveHkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJv
eHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKTsKKyAgICAg
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPm9iamVjdExpc3RlbmVy
cygpLT5maW5kT3JDcmVhdGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0ZW5lcj4ocHJveHktPmZy
YW1lKCksIHZhbHVlLCBmYWxzZSk7CiAgICAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICAg
ICAgeG1sSHR0cFJlcXVlc3RVcGxvYWQtPnNldE9ubG9hZHN0YXJ0KGxpc3RlbmVyKTsKICAgICAg
ICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3Vz
dG9tOjprWE1MSHR0cFJlcXVlc3RDYWNoZUluZGV4KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBBQ0NF
U1NPUl9TRVRURVIoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbnByCiAgICAgICAgIGlmICghcHJveHkp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZh
bHNlKTsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPm9i
amVjdExpc3RlbmVycygpLT5maW5kT3JDcmVhdGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0ZW5l
cj4ocHJveHktPmZyYW1lKCksIHZhbHVlLCBmYWxzZSk7CiAgICAgICAgIGlmIChsaXN0ZW5lcikg
ewogICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3RVcGxvYWQtPnNldE9ucHJvZ3Jlc3MobGlzdGVu
ZXIpOwogICAgICAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2
YWx1ZSwgVjhDdXN0b206OmtYTUxIdHRwUmVxdWVzdENhY2hlSW5kZXgpOwpAQCAtMjQ4LDcgKzI0
OCw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdFVwbG9hZEEKICAgICBpZiAo
IXByb3h5KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlz
dGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOE9iamVj
dEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCBhcmdzWzFdLCBmYWxzZSk7CiAgICAgaWYg
KGxpc3RlbmVyKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3Nb
MF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsK
QEAgLTI2OSw3ICsyNjksNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RVcGxv
YWRSCiAgICAgaWYgKCFwcm94eSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsgLy8g
UHJvYmFibHkgbGVha2VkLgogCi0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0g
cHJveHktPmZpbmRPYmplY3RFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCktPmZp
bmRXcmFwcGVyKGFyZ3NbMV0sIGZhbHNlKTsKIAogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAg
ICBTdHJpbmcgdHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTs=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33028</attachid>
            <date>2009-07-18 10:31:28 -0700</date>
            <delta_ts>2009-07-19 00:16:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-27415-20090718103127.patch</filename>
            <type>text/plain</type>
            <size>19272</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjA5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDctMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbVjhd
IFBoYXNlIDI6IFJlbW92ZSBldmVudCBsaXN0ZW5lciBtZXRob2RzIGZyb20gVjhQcm94eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0MTUKKworICAg
ICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE9iamVj
dEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vha09iamVjdEV2ZW50TGlz
dGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdEV2ZW50TGlzdGVuZXI6
On5WOE9iamVjdEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6ZGlzY29ubmVjdEV2ZW50TGlzdGVuZXJz
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpW
OFByb3h5OjpldmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpvYmpl
Y3RMaXN0ZW5lcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29y
a2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhFdmVudExpc3RlbmVyOjp+VjhFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09S
X1NFVFRFUik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QUNDRVNTT1JfU0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVD
TCk6CisKIDIwMDktMDctMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4T2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE9iamVjdEV2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhPYmplY3RFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWFrT2JqZWN0RXZlbnRMaXN0ZW5lckNhbGxi
CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUoZnJhbWUpOwogICAgICAgICBpZiAocHJveHkpCi0gICAgICAgICAgICBwcm94eS0+cmVt
b3ZlT2JqZWN0RXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgICAgICBwcm94eS0+b2Jq
ZWN0TGlzdGVuZXJzKCktPnJlbW92ZShsaXN0ZW5lcik7CiAKICAgICAgICAgLy8gQmVjYXVzZSB0
aGUgbGlzdGVuZXIgaXMgbm8gbG9uZ2VyIGluIHRoZSBsaXN0LCBpdCBtdXN0IGJlIGRpc2Nvbm5l
Y3RlZCBmcm9tIHRoZSBmcmFtZSB0byBhdm9pZCBkYW5nbGluZyBmcmFtZSBwb2ludGVyCiAgICAg
ICAgIC8vIGluIHRoZSBkZXN0cnVjdG9yLgpAQCAtODUsNyArODUsNyBAQCBWOE9iamVjdEV2ZW50
TGlzdGVuZXI6On5WOE9iamVjdEV2ZW50TGlzCiAgICAgICAgIEFTU0VSVCghbV9saXN0ZW5lci5J
c0VtcHR5KCkpOwogICAgICAgICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKG1f
ZnJhbWUpOwogICAgICAgICBpZiAocHJveHkpCi0gICAgICAgICAgICBwcm94eS0+cmVtb3ZlT2Jq
ZWN0RXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIHByb3h5LT5vYmplY3RMaXN0ZW5l
cnMoKS0+cmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSwzNiArMzYx
LDYgQEAgdm9pZCBWOFByb3h5OjpkZXN0cm95R2xvYmFsKCkKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8VjhFdmVudExpc3RlbmVyPiBWOFByb3h5OjpmaW5kVjhFdmVudExpc3RlbmVyKHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IG9iamVjdCwgYm9vbCBpc0F0dHJpYnV0ZSkKLXsKLSAgICByZXR1cm4gbV9l
dmVudExpc3RlbmVycy5maW5kV3JhcHBlcihvYmplY3QsIGlzQXR0cmlidXRlKTsKLX0KLQotUGFz
c1JlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IFY4UHJveHk6OmZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0
ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIGJvb2wgaXNBdHRyaWJ1dGUpCi17Ci0g
ICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnMuZmluZE9yQ3JlYXRlV3JhcHBlcjxWOEV2ZW50TGlz
dGVuZXI+KG1fZnJhbWUsIG9iamVjdCwgaXNBdHRyaWJ1dGUpOwotfQotCi12b2lkIFY4UHJveHk6
OnJlbW92ZVY4RXZlbnRMaXN0ZW5lcihWOEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAg
IG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLX0KLQotUGFzc1JlZlB0cjxWOEV2
ZW50TGlzdGVuZXI+IFY4UHJveHk6OmZpbmRPYmplY3RFdmVudExpc3RlbmVyKCB2ODo6TG9jYWw8
djg6OlZhbHVlPiBvYmplY3QsIGJvb2wgaXNBdHRyaWJ1dGUpCi17Ci0gICAgcmV0dXJuIG1feGhy
TGlzdGVuZXJzLmZpbmRXcmFwcGVyKG9iamVjdCwgaXNBdHRyaWJ1dGUpOwotfQotCi1QYXNzUmVm
UHRyPFY4RXZlbnRMaXN0ZW5lcj4gVjhQcm94eTo6ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0
ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIGJvb2wgaXNBdHRyaWJ1dGUpCi17Ci0g
ICAgcmV0dXJuIG1feGhyTGlzdGVuZXJzLmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVu
dExpc3RlbmVyPihtX2ZyYW1lLCBvYmplY3QsIGlzQXR0cmlidXRlKTsKLX0KLQotdm9pZCBWOFBy
b3h5OjpyZW1vdmVPYmplY3RFdmVudExpc3RlbmVyKFY4T2JqZWN0RXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIpCi17Ci0gICAgbV94aHJMaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLX0KLQogc3Rh
dGljIHZvaWQgZGlzY29ubmVjdEV2ZW50TGlzdGVuZXJzSW5MaXN0KFY4RXZlbnRMaXN0ZW5lckxp
c3QmIGxpc3QpCiB7CiAgICAgVjhFdmVudExpc3RlbmVyTGlzdDo6aXRlcmF0b3IgaXQgPSBsaXN0
LmJlZ2luKCk7CkBAIC00MDQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgZGlzY29ubmVjdEV2ZW50
TGlzdGVuZXJzSW5MaQogdm9pZCBWOFByb3h5OjpkaXNjb25uZWN0RXZlbnRMaXN0ZW5lcnMoKQog
ewogICAgIGRpc2Nvbm5lY3RFdmVudExpc3RlbmVyc0luTGlzdChtX2V2ZW50TGlzdGVuZXJzKTsK
LSAgICBkaXNjb25uZWN0RXZlbnRMaXN0ZW5lcnNJbkxpc3QobV94aHJMaXN0ZW5lcnMpOworICAg
IGRpc2Nvbm5lY3RFdmVudExpc3RlbmVyc0luTGlzdChtX29iamVjdExpc3RlbmVycyk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gVjhQcm94eTo6Y29tcGlsZVNjcmlwdCh2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IGNvZGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGludCBiYXNlTGluZSkK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTUgKzE5Niw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzRW5hYmxlZCgpOwogCi0gICAgICAg
IC8vIEZJWE1FOiBSZXBsYWNlIHRoZXNlIEFQSXMgd2l0aCBhIGdldHRlciBmb3IgbV9ldmVudExp
c3RlbmVycwotICAgICAgICBQYXNzUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gZmluZFY4RXZlbnRM
aXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiBsaXN0ZW5lciwgYm9vbCBpc0h0bWwpOwotICAg
ICAgICBQYXNzUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gZmluZE9yQ3JlYXRlVjhFdmVudExpc3Rl
bmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxpc3RlbmVyLCBib29sIGlzSHRtbCk7Ci0gICAgICAg
IHZvaWQgcmVtb3ZlVjhFdmVudExpc3RlbmVyKFY4RXZlbnRMaXN0ZW5lciopOwotCi0gICAgICAg
IC8vIEZJWE1FOiBSZXBsYWNlIHRoZXNlIEFQSXMgd2l0aCBhIGdldHRlciBmb3IgbV94aHJMaXN0
ZW5lcnMKLSAgICAgICAgUGFzc1JlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGZpbmRPYmplY3RFdmVu
dExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxpc3RlbmVyLCBib29sIGlzSHRtbCk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBmaW5kT3JDcmVhdGVPYmplY3RFdmVu
dExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxpc3RlbmVyLCBib29sIGlzSHRtbCk7Ci0g
ICAgICAgIHZvaWQgcmVtb3ZlT2JqZWN0RXZlbnRMaXN0ZW5lcihWOE9iamVjdEV2ZW50TGlzdGVu
ZXIqKTsKKyAgICAgICAgVjhFdmVudExpc3RlbmVyTGlzdCogZXZlbnRMaXN0ZW5lcnMoKSB7IHJl
dHVybiAmbV9ldmVudExpc3RlbmVyczsgfQorICAgICAgICBWOEV2ZW50TGlzdGVuZXJMaXN0KiBv
YmplY3RMaXN0ZW5lcnMoKSB7IHJldHVybiAmbV9vYmplY3RMaXN0ZW5lcnM7IH0KIAogI2lmIEVO
QUJMRShTVkcpCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldFNWR0NvbnRleHQodm9pZCosIFNWR0Vs
ZW1lbnQqKTsKQEAgLTQyOSw3ICs0MjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgLy8gQSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyBjcmVhdGUgZm9yIFhNTEh0dHBSZXF1ZXN0
IG9iamVjdCBmb3IgdGhpcyBmcmFtZSwKICAgICAgICAgLy8gdGhlIGxpc3QgZ2V0cyBjbGVhcmVk
IHdoZW4gcmVtb3ZpbmcgYWxsIHRpbWVvdXRzLgotICAgICAgICBWOEV2ZW50TGlzdGVuZXJMaXN0
IG1feGhyTGlzdGVuZXJzOworICAgICAgICBWOEV2ZW50TGlzdGVuZXJMaXN0IG1fb2JqZWN0TGlz
dGVuZXJzOwogCiAgICAgICAgIC8vIFRydWUgZm9yIDxhIGhyZWY9ImphdmFzY3JpcHQ6Zm9vKCki
PiBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+Zm9vKCk8L3NjcmlwdD4uCiAgICAgICAgIC8vIE9ubHkg
dmFsaWQgZHVyaW5nIGV4ZWN1dGlvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCwxMCBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGdldEV2ZW50TGlzdGVuCiAgICAgfQogCiAgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5
OjpyZXRyaWV2ZSh3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKHBy
b3h5KQotICAgICAgICByZXR1cm4gZmluZE9ubHkgPyBwcm94eS0+ZmluZE9iamVjdEV2ZW50TGlz
dGVuZXIodmFsdWUsIGZhbHNlKSA6IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExpc3Rl
bmVyKHZhbHVlLCBmYWxzZSk7CisgICAgaWYgKHByb3h5KSB7CisgICAgICAgIFY4RXZlbnRMaXN0
ZW5lckxpc3QqIGxpc3QgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCk7CisgICAgICAgIHJldHVy
biBmaW5kT25seSA/IGxpc3QtPmZpbmRXcmFwcGVyKHZhbHVlLCBmYWxzZSkgOiBsaXN0LT5maW5k
T3JDcmVhdGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0ZW5lcj4ocHJveHktPmZyYW1lKCksIHZh
bHVlLCBmYWxzZSk7CisgICAgfQogCiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZlbnRMaXN0ZW5lci5jcHAJKHJl
dmlzaW9uIDQ2MDkxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVu
dExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBWOEV2ZW50TGlz
dGVuZXI6On5WOEV2ZW50TGlzdGVuZXIoKQogICAgIGlmIChtX2ZyYW1lKSB7CiAgICAgICAgIFY4
UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUobV9mcmFtZSk7CiAgICAgICAgIGlmIChw
cm94eSkKLSAgICAgICAgICAgIHByb3h5LT5yZW1vdmVWOEV2ZW50TGlzdGVuZXIodGhpcyk7Cisg
ICAgICAgICAgICBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+cmVtb3ZlKHRoaXMpOwogICAgIH0K
IAogICAgIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNDYwOTEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93
QWRkRXZlbnRMaXN0CiAgICAgaWYgKCFwcm94eSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5k
T3JDcmVhdGVWOEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5ldmVudExpc3RlbmVycygpLT5maW5kT3JDcmVh
dGVXcmFwcGVyPFY4RXZlbnRMaXN0ZW5lcj4ocHJveHktPmZyYW1lKCksIGFyZ3NbMV0sIGZhbHNl
KTsKIAogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBTdHJpbmcgZXZlbnRUeXBlID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIENBTExCQUNLX0ZVTkNf
REVDTChET01XaW5kb3dSZW1vdmVFdmVudEwKICAgICBpZiAoIXByb3h5KQogICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
ID0gcHJveHktPmZpbmRWOEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5ldmVudExpc3RlbmVycygpLT5maW5k
V3JhcHBlcihhcmdzWzFdLCBmYWxzZSk7CiAKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAg
U3RyaW5nIGV2ZW50VHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKQEAgLTM5NSw4ICsz
OTUsNyBAQCBBQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93RXZlbnRIYW5kbGVyKQogICAgICAgICBp
ZiAoIXByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciA9Ci0gICAgICAgICAgICBwcm94eS0+ZmluZE9yQ3JlYXRlVjhFdmVu
dExpc3RlbmVyKHZhbHVlLCB0cnVlKTsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gcHJveHktPmV2ZW50TGlzdGVuZXJzKCktPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhF
dmVudExpc3RlbmVyPihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICBpZiAo
bGlzdGVuZXIpCiAgICAgICAgICAgICBpbXAtPnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lcik7CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1MSw3ICsxNTEsNyBAQCBBQ0NFU1NPUl9TRVRURVIoRWxlbWVudEV2ZW50SGFuZGxlcikKICAg
ICAgICAgaWYgKCFwcm94eSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0ZVY4RXZlbnRM
aXN0ZW5lcih2YWx1ZSwgdHJ1ZSkpCisgICAgICAgIGlmIChSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIgPSBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxW
OEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCB2YWx1ZSwgdHJ1ZSkpCiAgICAgICAgICAg
ICBub2RlLT5zZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIpOwog
ICAgIH0gZWxzZQogICAgICAgICBub2RlLT5jbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZVBvcnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIEFDQ0VTU09SX1NFVFRFUihNZXNzYWdlUG9ydE9ubWVzc2FnZSkKICAgICAgICAg
aWYgKCFwcm94eSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5l
cih2YWx1ZSwgZmFsc2UpOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIg
PSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCktPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RF
dmVudExpc3RlbmVyPihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIGZhbHNlKTsKICAgICAgICAgaWYg
KGxpc3RlbmVyKSB7CiAgICAgICAgICAgICBtZXNzYWdlUG9ydC0+c2V0T25tZXNzYWdlKGxpc3Rl
bmVyKTsKICAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwg
dmFsdWUsIFY4Q3VzdG9tOjprTWVzc2FnZVBvcnRSZXF1ZXN0Q2FjaGVJbmRleCk7CkBAIC04Miw3
ICs4Miw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlUG9ydEFkZEV2ZW50TGkKICAgICBp
ZiAoIXByb3h5KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50
TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lciA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOE9i
amVjdEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCBhcmdzWzFdLCBmYWxzZSk7CiAgICAg
aWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUo
KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woTWVzc2FnZVBvcnRSZW1v
dmVFdmVuCiAgICAgaWYgKCFwcm94eSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsg
Ly8gcHJvYmFibHkgbGVha2VkCiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIg
PSBwcm94eS0+ZmluZE9iamVjdEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UpOworICAgIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+
ZmluZFdyYXBwZXIoYXJnc1sxXSwgZmFsc2UpOwogCiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAg
ICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vZGVBZGRFdmVudExp
c3RlbmVyKQogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZmluZE9yQ3Jl
YXRlVjhFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3Jh
cHBlcjxWOEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCBhcmdzWzFdLCBmYWxzZSk7CiAg
ICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFs
dWUoKTsKQEAgLTc0LDcgKzc0LDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vZGVSZW1vdmVFdmVu
dExpc3RlbgogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZmluZFY4RXZl
bnRMaXN0ZW5lcihhcmdzWzFdLCBmYWxzZSk7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gcHJveHktPmV2ZW50TGlzdGVuZXJzKCktPmZpbmRXcmFwcGVyKGFyZ3NbMV0sIGZh
bHNlKTsKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJv
b2xlYW5WYWx1ZSgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVt
ZW50SW5zdGFuY2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNDYwOTEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKFNW
R0VsZW1lbnRJbnN0YW5jZUFkZAogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94
eS0+ZmluZE9yQ3JlYXRlVjhFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+ZXZlbnRMaXN0ZW5lcnMoKS0+Zmlu
ZE9yQ3JlYXRlV3JhcHBlcjxWOEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCBhcmdzWzFd
LCBmYWxzZSk7CiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJd
LT5Cb29sZWFuVmFsdWUoKTsKQEAgLTcyLDcgKzcyLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKFNW
R0VsZW1lbnRJbnN0YW5jZVJlbQogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94
eS0+ZmluZFY4RXZlbnRMaXN0ZW5lcihhcmdzWzFdLCBmYWxzZSk7CisgICAgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPmV2ZW50TGlzdGVuZXJzKCktPmZpbmRXcmFwcGVy
KGFyZ3NbMV0sIGZhbHNlKTsKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgU3RyaW5nIHR5
cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9
IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXb3JrZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gNDYwOTEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5
LDggKzk5LDEwIEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW4KICAg
ICB9CiAKICAgICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKHdvcmtlci0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBpZiAocHJveHkpCi0gICAgICAgIHJldHVybiBm
aW5kT25seSA/IHByb3h5LT5maW5kT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpIDog
cHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUsIGZhbHNlKTsKKyAg
ICBpZiAocHJveHkpIHsKKyAgICAgICAgVjhFdmVudExpc3RlbmVyTGlzdCogbGlzdCA9IHByb3h5
LT5vYmplY3RMaXN0ZW5lcnMoKTsKKyAgICAgICAgcmV0dXJuIGZpbmRPbmx5ID8gbGlzdC0+Zmlu
ZFdyYXBwZXIodmFsdWUsIGZhbHNlKSA6IGxpc3QtPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmpl
Y3RFdmVudExpc3RlbmVyPihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIGZhbHNlKTsKKyAgICB9CiAK
ICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw4ICs1MywxMCBAQCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdl
dEV2ZW50TGlzdGVuCiAjZW5kaWYKIAogICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUoeG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgaWYg
KHByb3h5KQotICAgICAgICByZXR1cm4gZmluZE9ubHkgPyBwcm94eS0+ZmluZE9iamVjdEV2ZW50
TGlzdGVuZXIodmFsdWUsIGZhbHNlKSA6IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExp
c3RlbmVyKHZhbHVlLCBmYWxzZSk7CisgICAgaWYgKHByb3h5KSB7CisgICAgICAgIFY4RXZlbnRM
aXN0ZW5lckxpc3QqIGxpc3QgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCk7CisgICAgICAgIHJl
dHVybiBmaW5kT25seSA/IGxpc3QtPmZpbmRXcmFwcGVyKHZhbHVlLCBmYWxzZSkgOiBsaXN0LT5m
aW5kT3JDcmVhdGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0ZW5lcj4ocHJveHktPmZyYW1lKCks
IHZhbHVlLCBmYWxzZSk7CisgICAgfQogCiAgICAgcmV0dXJuIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4oKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RVcGxvYWRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjA5MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIEFDQ0VTU09SX1NFVFRFUihY
TUxIdHRwUmVxdWVzdFVwbG9hZE9uYWIKICAgICAgICAgaWYgKCFwcm94eSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94
eS0+ZmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpOworICAgICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJz
KCktPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVudExpc3RlbmVyPihwcm94eS0+ZnJh
bWUoKSwgdmFsdWUsIGZhbHNlKTsKICAgICAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgICAg
ICB4bWxIdHRwUmVxdWVzdFVwbG9hZC0+c2V0T25hYm9ydChsaXN0ZW5lcik7CiAgICAgICAgICAg
ICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6
a1hNTEh0dHBSZXF1ZXN0Q2FjaGVJbmRleCk7CkBAIC0xMTMsNyArMTEzLDcgQEAgQUNDRVNTT1Jf
U0VUVEVSKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25lcgogICAgICAgICBpZiAoIXByb3h5KQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciA9IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExpc3RlbmVyKHZhbHVlLCBmYWxzZSk7
CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5vYmplY3RM
aXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOE9iamVjdEV2ZW50TGlzdGVuZXI+KHBy
b3h5LT5mcmFtZSgpLCB2YWx1ZSwgZmFsc2UpOwogICAgICAgICBpZiAobGlzdGVuZXIpIHsKICAg
ICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0VXBsb2FkLT5zZXRPbmVycm9yKGxpc3RlbmVyKTsKICAg
ICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4
Q3VzdG9tOjprWE1MSHR0cFJlcXVlc3RDYWNoZUluZGV4KTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBB
Q0NFU1NPUl9TRVRURVIoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmxvCiAgICAgICAgIGlmICghcHJv
eHkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyID0gcHJveHktPmZpbmRPckNyZWF0ZU9iamVjdEV2ZW50TGlzdGVuZXIodmFsdWUs
IGZhbHNlKTsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHkt
Pm9iamVjdExpc3RlbmVycygpLT5maW5kT3JDcmVhdGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0
ZW5lcj4ocHJveHktPmZyYW1lKCksIHZhbHVlLCBmYWxzZSk7CiAgICAgICAgIGlmIChsaXN0ZW5l
cikgewogICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3RVcGxvYWQtPnNldE9ubG9hZChsaXN0ZW5l
cik7CiAgICAgICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZh
bHVlLCBWOEN1c3RvbTo6a1hNTEh0dHBSZXF1ZXN0Q2FjaGVJbmRleCk7CkBAIC0xOTEsNyArMTkx
LDcgQEAgQUNDRVNTT1JfU0VUVEVSKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25sbwogICAgICAgICBp
ZiAoIXByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExpc3RlbmVy
KHZhbHVlLCBmYWxzZSk7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOE9iamVjdEV2
ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCB2YWx1ZSwgZmFsc2UpOwogICAgICAgICBpZiAo
bGlzdGVuZXIpIHsKICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0VXBsb2FkLT5zZXRPbmxvYWRz
dGFydChsaXN0ZW5lcik7CiAgICAgICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8u
SG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a1hNTEh0dHBSZXF1ZXN0Q2FjaGVJbmRleCk7CkBA
IC0yMzAsNyArMjMwLDcgQEAgQUNDRVNTT1JfU0VUVEVSKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25w
cgogICAgICAgICBpZiAoIXByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RF
dmVudExpc3RlbmVyKHZhbHVlLCBmYWxzZSk7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKS0+ZmluZE9yQ3JlYXRlV3JhcHBl
cjxWOE9iamVjdEV2ZW50TGlzdGVuZXI+KHByb3h5LT5mcmFtZSgpLCB2YWx1ZSwgZmFsc2UpOwog
ICAgICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0VXBsb2Fk
LT5zZXRPbnByb2dyZXNzKGxpc3RlbmVyKTsKICAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVu
ZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprWE1MSHR0cFJlcXVlc3RDYWNo
ZUluZGV4KTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJl
cXVlc3RVcGxvYWRBCiAgICAgaWYgKCFwcm94eSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5k
T3JDcmVhdGVPYmplY3RFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCktPmZpbmRP
ckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVudExpc3RlbmVyPihwcm94eS0+ZnJhbWUoKSwgYXJn
c1sxXSwgZmFsc2UpOwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBTdHJpbmcgdHlwZSA9
IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJn
c1syXS0+Qm9vbGVhblZhbHVlKCk7CkBAIC0yNjksNyArMjY5LDcgQEAgQ0FMTEJBQ0tfRlVOQ19E
RUNMKFhNTEh0dHBSZXF1ZXN0VXBsb2FkUgogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7IC8vIFByb2JhYmx5IGxlYWtlZC4KIAotICAgIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5kT2JqZWN0RXZlbnRMaXN0ZW5lcihhcmdz
WzFdLCBmYWxzZSk7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHkt
Pm9iamVjdExpc3RlbmVycygpLT5maW5kV3JhcHBlcihhcmdzWzFdLCBmYWxzZSk7CiAKICAgICBp
ZiAobGlzdGVuZXIpIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSk7
</data>
<flag name="review"
          id="17364"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>