<?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>200923</bug_id>
          
          <creation_ts>2019-08-20 09:55:18 -0700</creation_ts>
          <short_desc>[FTW] Fix scrolling in modern WebKit views</short_desc>
          <delta_ts>2019-08-20 10:51:17 -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>WebKit2</component>
          <version>Safari 10</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1563105</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-20 09:55:18 -0700</bug_when>
    <thetext>The initial implementation of scrolling in Direct2D had errors that caused hilarious rendering glitches. This patch corrects the logic so that page scroll is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563111</commentid>
    <comment_count>1</comment_count>
      <attachid>376777</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-20 10:05:12 -0700</bug_when>
    <thetext>Created attachment 376777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563114</commentid>
    <comment_count>2</comment_count>
      <attachid>376779</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-20 10:11:39 -0700</bug_when>
    <thetext>Created attachment 376779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563138</commentid>
    <comment_count>3</comment_count>
      <attachid>376779</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-20 10:50:16 -0700</bug_when>
    <thetext>Comment on attachment 376779
Patch

Clearing flags on attachment: 376779

Committed r248907: &lt;https://trac.webkit.org/changeset/248907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563139</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-20 10:50:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563140</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-20 10:51:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/54518495&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376777</attachid>
            <date>2019-08-20 10:05:12 -0700</date>
            <delta_ts>2019-08-20 10:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200923-20190820100509.patch</filename>
            <type>text/plain</type>
            <size>26584</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODkwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA4LTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFddIEZpeCBzY3JvbGxp
bmcgaW4gbW9kZXJuIFdlYktpdCB2aWV3cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2Ygc2Nyb2xsaW5n
IGluIERpcmVjdDJEIGhhZCBlcnJvcnMgdGhhdAorICAgICAgICBjYXVzZWQgaGlsYXJpb3VzIHJl
bmRlcmluZyBnbGl0Y2hlcy4gVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUgbG9naWMKKyAgICAgICAg
c28gdGhhdCBwYWdlIHNjcm9sbCBpcyBjb3JyZWN0LgorIAorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsOjpzY3JvbGwp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbDo6Yml0
bWFwQnJ1c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVC
YWNrZW5kRGlyZWN0MkRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdDJET3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1
cmZhY2VUb0Fub3RoZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OndyaXRlSW1hZ2VU
b0Rpc2tBc1BORyk6IEFkZGVkIGRpYWdub3N0aWMgdXRpbGl0eSB0bworICAgICAgICBkdW1wIHRl
eHR1cmVzIHRvIGRpc2sgZm9yIHJldmlldy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
RGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KTogU3dpdGNoIHRvIG1vcmUKKyAgICAgICAg
cmVjZW50IGZhY3Rvcnkgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorCiAyMDE5LTA4LTIwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5zYWZlIHVzYWdlIG9m
IENvb2tpZVN0b3JhZ2VPYnNlcnZlciBmcm9tIGEgYmFja2dyb3VuZCB0aHJlYWQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGly
ZWN0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJELmgJKHJldmlzaW9uIDI0ODc1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGly
ZWN0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCiBpbnRlcmZhY2UgSUQyRDFCaXRtYXA7CitpbnRlcmZhY2UgSUQyRDFC
aXRtYXBCcnVzaDsKIGludGVyZmFjZSBJRDJEMURDUmVuZGVyVGFyZ2V0OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
KGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgSUQyRDFCaXRtYXBCcnVzaCogYml0bWFwQnJ1c2goKSA9IDA7CiAK
IHByb3RlY3RlZDoKICAgICBCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1w
bC5jcHAJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjAsMjcgKzYwLDU1IEBAIEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw6On5C
YWNraW4KIAogdm9pZCBCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsOjpzY3JvbGwoY29u
c3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQogewot
ICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IHNjcm9sbFJlY3Q7Ci0gICAgdGFyZ2V0UmVjdC5tb3Zl
KHNjcm9sbE9mZnNldCk7Ci0gICAgdGFyZ2V0UmVjdC5zaGlmdE1heFhFZGdlVG8odGFyZ2V0UmVj
dC5tYXhYKCkgLSBzY3JvbGxPZmZzZXQud2lkdGgoKSk7Ci0gICAgdGFyZ2V0UmVjdC5zaGlmdE1h
eFlFZGdlVG8odGFyZ2V0UmVjdC5tYXhZKCkgLSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOwotICAg
IGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFt
X3Njcm9sbFN1cmZhY2UpIHsKLSAgICAgICAgYXV0byBmbG9hdFNpemUgPSBEaXJlY3QyRDo6Yml0
bWFwU2l6ZShtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICBJbnRTaXplIHNpemUoZmxvYXRTaXpl
LndpZHRoKCksIGZsb2F0U2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIGF1dG8gc2NhbGUgPSBEaXJl
Y3QyRDo6Yml0bWFwUmVzb2x1dGlvbihtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICBBU1NFUlQo
c2NhbGUueCgpID09IHNjYWxlLnkoKSk7Ci0gICAgICAgIG1fc2Nyb2xsU3VyZmFjZSA9IERpcmVj
dDJEOjpjcmVhdGVCaXRtYXAobV9yZW5kZXJUYXJnZXQuZ2V0KCksIHNpemUpOworICAgIEludFJl
Y3Qgc291cmNlUmVjdCA9IHNjcm9sbFJlY3Q7CisgICAgc291cmNlUmVjdC5tb3ZlKC1zY3JvbGxP
ZmZzZXQpOworICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KHNjcm9sbFJlY3QpOworCisgICAgaWYg
KCFtX3Njcm9sbFN1cmZhY2UgfHwgc2Nyb2xsUmVjdC5zaXplKCkgIT0gbV9zY3JvbGxTdXJmYWNl
U2l6ZSkgeworI2lmbmRlZiBfTkRFQlVHCisgICAgICAgIEFTU0VSVChtX3NpemUud2lkdGgoKSA+
PSBzY3JvbGxSZWN0LnNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgQVNTRVJUKG1fc2l6ZS5oZWln
aHQoKSA+PSBzY3JvbGxSZWN0LnNpemUoKS5oZWlnaHQoKSk7CisjZW5kaWYKKyAgICAgICAgbV9z
Y3JvbGxTdXJmYWNlU2l6ZSA9IHNvdXJjZVJlY3Quc2l6ZSgpOworICAgICAgICBtX3Njcm9sbFN1
cmZhY2UgPSBEaXJlY3QyRDo6Y3JlYXRlQml0bWFwKG1fcmVuZGVyVGFyZ2V0LmdldCgpLCBtX3Nj
cm9sbFN1cmZhY2VTaXplKTsKKyAgICB9CisKKyAgICBhdXRvIHNvdXJjZVJlY3RMb2NhdGlvbiA9
IEludFNpemUoc291cmNlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpKTsKKyAgICBhdXRvIGRlc3RS
ZWN0TG9jYXRpb24gPSBJbnRTaXplKCk7IC8vIFRvcCBsZWZ0IGNvcm5lciBvZiBzY3JvbGwgc3Vy
ZmFjZQorICAgIERpcmVjdDJEOjpjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKG1fc3Vy
ZmFjZS5nZXQoKSwgbV9zY3JvbGxTdXJmYWNlLmdldCgpLCBzb3VyY2VSZWN0TG9jYXRpb24sIHNv
dXJjZVJlY3QsIGRlc3RSZWN0TG9jYXRpb24pOworCisgICAgSW50UmVjdCBkZXN0UmVjdCA9IHNj
cm9sbFJlY3Q7CisgICAgZGVzdFJlY3Quc2V0SGVpZ2h0KHNvdXJjZVJlY3QuaGVpZ2h0KCkpOwor
ICAgIGRlc3RSZWN0LnNldFdpZHRoKHNvdXJjZVJlY3Qud2lkdGgoKSk7CisKKyAgICBJbnRTaXpl
IGRlc3RQb3NpdGlvbjsKKyAgICBpZiAoc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPiAwIHx8IHNjcm9s
bE9mZnNldC5oZWlnaHQoKSA+IDApIHsKKyAgICAgICAgZGVzdFBvc2l0aW9uLnNldFdpZHRoKHN0
ZDo6bWluKHNjcm9sbFJlY3Qud2lkdGgoKSwgc2Nyb2xsT2Zmc2V0LndpZHRoKCkpKTsKKyAgICAg
ICAgZGVzdFBvc2l0aW9uLnNldEhlaWdodChzdGQ6Om1pbihzY3JvbGxSZWN0LmhlaWdodCgpLCBz
Y3JvbGxPZmZzZXQuaGVpZ2h0KCkpKTsKICAgICB9CiAKLSAgICBEaXJlY3QyRDo6Y29weVJlY3RG
cm9tT25lU3VyZmFjZVRvQW5vdGhlcihtX3N1cmZhY2UuZ2V0KCksIG1fc2Nyb2xsU3VyZmFjZS5n
ZXQoKSwgc2Nyb2xsT2Zmc2V0LCB0YXJnZXRSZWN0KTsKLSAgICBEaXJlY3QyRDo6Y29weVJlY3RG
cm9tT25lU3VyZmFjZVRvQW5vdGhlcihtX3Njcm9sbFN1cmZhY2UuZ2V0KCksIG1fc3VyZmFjZS5n
ZXQoKSwgSW50U2l6ZSgpLCB0YXJnZXRSZWN0KTsKKyAgICBhdXRvIHNvdXJjZVNjcm9sbFN1cmZh
Y2VMb2NhdGlvbiA9IEludFNpemUoKTsgLy8gVG9wIGxlZnQgY29ybmVyIG9mIHNjcm9sbCBzdXJm
YWNlCisgICAgRGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIobV9zY3Jv
bGxTdXJmYWNlLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIHNvdXJjZVNjcm9sbFN1cmZhY2VMb2Nh
dGlvbiwgZGVzdFJlY3QsIGRlc3RQb3NpdGlvbik7CiAKICAgICBtX3Njcm9sbGVkSHlzdGVyZXNp
cy5pbXB1bHNlKCk7CiB9CiAKK0lEMkQxQml0bWFwQnJ1c2gqIEJhY2tpbmdTdG9yZUJhY2tlbmRE
aXJlY3QyREltcGw6OmJpdG1hcEJydXNoKCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyVGFyZ2V0IHx8
ICFtX3N1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFtX2JpdG1h
cEJydXNoKSB7CisgICAgICAgIGF1dG8gYml0bWFwQnJ1c2hQcm9wZXJ0aWVzID0gRDJEMTo6Qml0
bWFwQnJ1c2hQcm9wZXJ0aWVzKCk7CisgICAgICAgIGF1dG8gYnJ1c2hQcm9wZXJ0aWVzID0gRDJE
MTo6QnJ1c2hQcm9wZXJ0aWVzKCk7CisKKyAgICAgICAgSFJFU1VMVCBociA9IG1fcmVuZGVyVGFy
Z2V0LT5DcmVhdGVCaXRtYXBCcnVzaChtX3N1cmZhY2UuZ2V0KCksICZiaXRtYXBCcnVzaFByb3Bl
cnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZtX2JpdG1hcEJydXNoKTsKKyAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChocikpOworICAgIH0KKworICAgIHJldHVybiBtX2JpdG1hcEJydXNoLmdldCgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoRElSRUNUMkQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJESW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHJldmlz
aW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQuaCIKICNpbmNsdWRl
IDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAKK2ludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNo
OwogaW50ZXJmYWNlIElXSUNCaXRtYXA7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDgg
KzQ0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbChjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIElEMkQxQml0bWFwQnJ1c2gqIGJp
dG1hcEJydXNoKCkgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXplIG1fc2Nyb2xsU3VyZmFjZVNpemU7
CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBtX3Njcm9sbFN1cmZhY2U7CisgICAgQ09NUHRyPElE
MkQxQml0bWFwQnJ1c2g+IG1fYml0bWFwQnJ1c2g7CiAKICAgICBQQUw6Okh5c3RlcmVzaXNBY3Rp
dml0eSBtX3Njcm9sbGVkSHlzdGVyZXNpczsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJ
bWFnZURlY29kZXJEaXJlY3QyRC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJELmgiCkBAIC03
NjQsMTMgKzc2NSwyNiBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
CiB9CiAKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBs
YXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3Rh
dGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9s
YXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CisgICAgYXV0byBuYXRpdmVJbWFn
ZVNpemUgPSBiaXRtYXBTaXplKGltYWdlKTsKKyAgICAvKgorICAgIENPTVB0cjxJV0lDQml0bWFw
Q2xpcHBlcj4gYml0bWFwQ2xpcDsKKyAgICBpZiAobmF0aXZlSW1hZ2VTaXplLndpZHRoKCkgPiBz
cmNSZWN0LndpZHRoKCkgJiYgbmF0aXZlSW1hZ2VTaXplLmhlaWdodCgpID4gc3JjUmVjdC5oZWln
aHQoKSkgeworICAgICAgICAvLyBOZWVkIGEgY2xpcCBvZiB0aGUgb3ZlcmFsbCBpbWFnZQorICAg
ICAgICBIUkVTVUxUIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0
b3J5KCktPkNyZWF0ZUJpdG1hcENsaXBwZXIoJmJpdG1hcENsaXApOworICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKGhyKSk7CisgICAgICAgIFdJQ1JlY3Qgc3ViUmVnaW9uID0geyBzcmNSZWN0Lngo
KSwgc3JjUmVjdC55KCksIHNyY1JlY3Qud2lkdGgoKSwgc3JjUmVjdC5oZWlnaHQoKSB9OworICAg
ICAgICBociA9IGJpdG1hcENsaXAtPkluaXRpYWxpemUoaW1hZ2UsICZzdWJSZWdpb24pOworICAg
ICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisgICAgfQorICAgICovCiAgICAgQ09NUHRyPElE
MkQxQml0bWFwPiBkZXZpY2VCaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4
dC5yZW5kZXJUYXJnZXQoKS0+Q3JlYXRlQml0bWFwRnJvbVdpY0JpdG1hcChpbWFnZSwgJmRldmlj
ZUJpdG1hcCk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBhdXRvIGltYWdlU2l6ZSA9IGJpdG1hcFNpemUoZGV2aWNlQml0bWFwLmdldCgpKTsKICAgICBk
cmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0KCksIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9y
aWVudGF0aW9uLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBnbG9iYWxBbHBoYSwgc2hhZG93
U3RhdGUpOwogfQogCkBAIC04MjQsOCArODM4LDggQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxh
dGZvcm1Db250ZXh0RGlyZQogCiAgICAgY29udGV4dC0+U2V0VGFncygxLCBfX0xJTkVfXyk7CiAK
LSAgICBGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+IGRyYXdGdW5jdGlvbiA9IFtp
bWFnZSwgYWRqdXN0ZWREZXN0UmVjdCwgc3JjUmVjdF0oSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRl
clRhcmdldCkgewotICAgICAgICByZW5kZXJUYXJnZXQtPkRyYXdCaXRtYXAoaW1hZ2UsIGFkanVz
dGVkRGVzdFJlY3QsIDEuMGYsIEQyRDFfQklUTUFQX0lOVEVSUE9MQVRJT05fTU9ERV9MSU5FQVIs
IHN0YXRpY19jYXN0PEQyRDFfUkVDVF9GPihzcmNSZWN0KSk7CisgICAgRnVuY3Rpb248dm9pZChJ
RDJEMVJlbmRlclRhcmdldCopPiBkcmF3RnVuY3Rpb24gPSBbaW1hZ2UsIGFkanVzdGVkRGVzdFJl
Y3QsIGdsb2JhbEFscGhhLCBzcmNSZWN0XShJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0
KSB7CisgICAgICAgIHJlbmRlclRhcmdldC0+RHJhd0JpdG1hcChpbWFnZSwgYWRqdXN0ZWREZXN0
UmVjdCwgZ2xvYmFsQWxwaGEsIEQyRDFfQklUTUFQX0lOVEVSUE9MQVRJT05fTU9ERV9MSU5FQVIs
IHNyY1JlY3QpOwogICAgIH07CiAKICAgICBpZiAoc2hhZG93U3RhdGUuaXNWaXNpYmxlKCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3QyRFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMu
TC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwogICoK
QEAgLTM2LDcgKzM3LDggQEAKICNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJlY3QyRC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8ZDJkMS5o
PgorI2luY2x1ZGUgPGQyZDFfMS5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3
aW5jb2RlYy5oPgogCiAKQEAgLTE3Myw5ICsxNzUsNzIgQEAgQ09NUHRyPElEMkQxRENSZW5kZXJU
YXJnZXQ+IGNyZWF0ZUdESVJlbgogCiB2b2lkIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3Ro
ZXIoSUQyRDFCaXRtYXAqIGZyb20sIElEMkQxQml0bWFwKiB0bywgY29uc3QgSW50U2l6ZSYgc291
cmNlT2Zmc2V0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0
KQogewotICAgIGF1dG8gb2Zmc2V0ID0gRDJEMTo6UG9pbnQyVSgpOwotICAgIGF1dG8gc291cmNl
UmVjdCA9IEQyRDE6OlJlY3RVKHNvdXJjZU9mZnNldC53aWR0aCgpLCAtc291cmNlT2Zmc2V0Lmhl
aWdodCgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIEhSRVNVTFQgaHIgPSB0
by0+Q29weUZyb21CaXRtYXAoJm9mZnNldCwgZnJvbSwgJnNvdXJjZVJlY3QpOworICAgIEludFNp
emUgc291cmNlQml0bWFwU2l6ZSA9IGZyb20tPkdldFBpeGVsU2l6ZSgpOworICAgIGlmIChzb3Vy
Y2VCaXRtYXBTaXplLmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHRh
cmdldEJpdG1hcFNpemUgPSB0by0+R2V0UGl4ZWxTaXplKCk7CisgICAgaWYgKHRhcmdldEJpdG1h
cFNpemUuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3Qgc291cmNlUmVj
dChzb3VyY2VPZmZzZXQud2lkdGgoKSwgc291cmNlT2Zmc2V0LmhlaWdodCgpLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpOworICAgIEludFJlY3QgdGFyZ2V0UmVjdChkZXN0T2Zmc2V0Lndp
ZHRoKCksIGRlc3RPZmZzZXQuaGVpZ2h0KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
CisKKyAgICBJbnRSZWN0IHNvdXJjZUJpdG1hcFJlY3QoSW50UG9pbnQoKSwgc291cmNlQml0bWFw
U2l6ZSk7CisgICAgSW50UmVjdCB0YXJnZXRCaXRtYXBSZWN0KEludFBvaW50KCksIHRhcmdldEJp
dG1hcFNpemUpOworCisgICAgc291cmNlUmVjdC5pbnRlcnNlY3Qoc291cmNlQml0bWFwUmVjdCk7
CisgICAgdGFyZ2V0UmVjdC5pbnRlcnNlY3QodGFyZ2V0Qml0bWFwUmVjdCk7CisKKyAgICBEMkQx
X1JFQ1RfVSBkMmRTb3VyY2VSZWN0ID0gRDJEMTo6UmVjdFUoc291cmNlUmVjdC54KCksIHNvdXJj
ZVJlY3QueSgpLCBzb3VyY2VSZWN0LngoKSArIHRhcmdldFJlY3Qud2lkdGgoKSwgc291cmNlUmVj
dC55KCkgKyB0YXJnZXRSZWN0LmhlaWdodCgpKTsKKyAgICBhdXRvIG9mZnNldCA9IEQyRDE6OlBv
aW50MlUoZGVzdE9mZnNldC53aWR0aCgpLCBkZXN0T2Zmc2V0LmhlaWdodCgpKTsKKworICAgIEhS
RVNVTFQgaHIgPSB0by0+Q29weUZyb21CaXRtYXAoJm9mZnNldCwgZnJvbSwgJmQyZFNvdXJjZVJl
Y3QpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKK30KKwordm9pZCB3cml0ZUltYWdlVG9E
aXNrQXNQTkcoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgSUQyRDFCaXRtYXAqIGJp
dG1hcCwgTFBDV1NUUiBmaWxlTmFtZSkKK3sKKyAgICBDT01QdHI8SVdJQ0JpdG1hcEVuY29kZXI+
IHdpY0JpdG1hcEVuY29kZXI7CisgICAgSFJFU1VMVCBociA9IEltYWdlRGVjb2RlckRpcmVjdDJE
OjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVFbmNvZGVyKEdVSURfQ29udGFpbmVyRm9y
bWF0UG5nLCBudWxscHRyLCAmd2ljQml0bWFwRW5jb2Rlcik7CisgICAgQVNTRVJUKFNVQ0NFRURF
RChocikpOworCisgICAgRFdPUkQgbW9kZSA9IFNUR01fQ1JFQVRFIHwgU1RHTV9SRUFEV1JJVEUg
fCBTVEdNX1NIQVJFX0RFTllfV1JJVEU7CisgICAgQ09NUHRyPElTdHJlYW0+IHN0cmVhbTsKKyAg
ICBociA9IDo6U0hDcmVhdGVTdHJlYW1PbkZpbGVFeChmaWxlTmFtZSwgbW9kZSwgRklMRV9BVFRS
SUJVVEVfTk9STUFMLCBUUlVFLCBudWxscHRyLCAmc3RyZWFtKTsKKyAgICBBU1NFUlQoU1VDQ0VF
REVEKGhyKSk7CisKKyAgICBociA9IHdpY0JpdG1hcEVuY29kZXItPkluaXRpYWxpemUoc3RyZWFt
LmdldCgpLCBXSUNCaXRtYXBFbmNvZGVyTm9DYWNoZSk7CisgICAgQVNTRVJUKFNVQ0NFRURFRCho
cikpOworCisgICAgQ09NUHRyPElXSUNCaXRtYXBGcmFtZUVuY29kZT4gd2ljRnJhbWVFbmNvZGU7
CisgICAgaHIgPSB3aWNCaXRtYXBFbmNvZGVyLT5DcmVhdGVOZXdGcmFtZSgmd2ljRnJhbWVFbmNv
ZGUsIG51bGxwdHIpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAgIGhyID0gd2lj
RnJhbWVFbmNvZGUtPkluaXRpYWxpemUobnVsbHB0cik7CisgICAgQVNTRVJUKFNVQ0NFRURFRCho
cikpOworCisgICAgQ09NUHRyPElEMkQxRGV2aWNlQ29udGV4dD4gZDJkRGV2aWNlQ29udGV4dDsK
KyAgICBociA9IHJlbmRlclRhcmdldC0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSUQyRDFEZXZp
Y2VDb250ZXh0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZkMmREZXZpY2VDb250ZXh0KSk7
CisgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworCisgICAgQ09NUHRyPElEMkQxRGV2aWNlPiBk
MmREZXZpY2U7CisgICAgZDJkRGV2aWNlQ29udGV4dC0+R2V0RGV2aWNlKCZkMmREZXZpY2UpOwor
CisgICAgQ09NUHRyPElXSUNJbWFnZUVuY29kZXI+IGltYWdlRW5jb2RlcjsKKyAgICBociA9IElt
YWdlRGVjb2RlckRpcmVjdDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVJbWFnZUVu
Y29kZXIoZDJkRGV2aWNlLmdldCgpLCAmaW1hZ2VFbmNvZGVyKTsKKyAgICBBU1NFUlQoU1VDQ0VF
REVEKGhyKSk7CisKKyAgICBociA9IGltYWdlRW5jb2Rlci0+V3JpdGVGcmFtZShiaXRtYXAsIHdp
Y0ZyYW1lRW5jb2RlLmdldCgpLCBudWxscHRyKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7
CisKKyAgICBociA9IHdpY0ZyYW1lRW5jb2RlLT5Db21taXQoKTsKKyAgICBBU1NFUlQoU1VDQ0VF
REVEKGhyKSk7CisKKyAgICBociA9IHdpY0JpdG1hcEVuY29kZXItPkNvbW1pdCgpOworICAgIEFT
U0VSVChTVUNDRUVERUQoaHIpKTsKKworICAgIGhyID0gc3RyZWFtLT5Db21taXQoU1RHQ19ERUZB
VUxUKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGll
cy5oCShyZXZpc2lvbiAyNDg3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0MkRVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBA
QCBDT01QdHI8SUQyRDFEQ1JlbmRlclRhcmdldD4gY3JlYXRlR0RJUmVuCiAKIHZvaWQgY29weVJl
Y3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihJRDJEMUJpdG1hcCogZnJvbSwgSUQyRDFCaXRtYXAq
IHRvLCBjb25zdCBJbnRTaXplJiBzb3VyY2VPZmZzZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJ
bnRTaXplJiBkZXN0T2Zmc2V0ID0gSW50U2l6ZSgpKTsKIAordm9pZCB3cml0ZUltYWdlVG9EaXNr
QXNQTkcoSUQyRDFSZW5kZXJUYXJnZXQqLCBJRDJEMUJpdG1hcCosIExQQ1dTVFIgZmlsZU5hbWUp
OworCiB9IC8vIG5hbWVzcGFjZSBEaXJlY3QyRAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0NiwxMSBAQCBJbWFnZURlY29kZXJEaXJlY3QyRDo6
SW1hZ2VEZWNvZGVyRGlyZWN0CiB7CiB9CiAKLUlXSUNJbWFnaW5nRmFjdG9yeSogSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCkKK0lXSUNJbWFnaW5nRmFjdG9yeTIq
IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpCiB7Ci0gICAgc3Rh
dGljIElXSUNJbWFnaW5nRmFjdG9yeSogd2ljSW1hZ2luZ0ZhY3RvcnkgPSBudWxscHRyOworICAg
IHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkyKiB3aWNJbWFnaW5nRmFjdG9yeSA9IG51bGxwdHI7
CiAgICAgaWYgKCF3aWNJbWFnaW5nRmFjdG9yeSkgewotICAgICAgICBIUkVTVUxUIGhyID0gQ29D
cmVhdGVJbnN0YW5jZShDTFNJRF9XSUNJbWFnaW5nRmFjdG9yeSwgbnVsbHB0ciwgQ0xTQ1RYX0lO
UFJPQ19TRVJWRVIsIElJRF9JV0lDSW1hZ2luZ0ZhY3RvcnksIChMUFZPSUQqKSZ3aWNJbWFnaW5n
RmFjdG9yeSk7CisgICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1dJ
Q0ltYWdpbmdGYWN0b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX0lXSUNJ
bWFnaW5nRmFjdG9yeTIsIChMUFZPSUQqKSZ3aWNJbWFnaW5nRmFjdG9yeSk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmgJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBACiAKIGludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKIGludGVyZmFjZSBJV0lD
Qml0bWFwRGVjb2RlcjsKLWludGVyZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7CitpbnRlcmZhY2Ug
SVdJQ0ltYWdpbmdGYWN0b3J5MjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OCw3ICs3
OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRh
cmdldCopOwogCi0gICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0Zh
Y3RvcnkoKTsKKyAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5Miogc3lzdGVtSW1hZ2luZ0Zh
Y3RvcnkoKTsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7IGZh
bHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxOS0wOC0yMCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbRlRXXSBGaXggc2Ny
b2xsaW5nIGluIG1vZGVybiBXZWJLaXQgdmlld3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHNjcm9s
bGluZyBpbiBEaXJlY3QyRCBoYWQgZXJyb3JzIHRoYXQKKyAgICAgICAgY2F1c2VkIGhpbGFyaW91
cyByZW5kZXJpbmcgZ2xpdGNoZXMuIFRoaXMgcGF0Y2ggY29ycmVjdHMgdGhlIGxvZ2ljCisgICAg
ICAgIHNvIHRoYXQgcGFnZSBzY3JvbGwgaXMgY29ycmVjdC4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gZml4ZXMgYSBidWcgdGhhdCB3b3VsZCB0cmlnZ2VyIHdoZW4gcmVzaXppbmcgd2luZG93
cy4KKworICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6cmVu
ZGVyVGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpzaXplRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6
OmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpCYWNraW5nU3RvcmU6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0
b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6
c2Nyb2xsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Om9uU2l6
ZUV2ZW50KToKKwogMjAxOS0wOC0xNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbRlRXXSBFbmFibGUgQ29yZUZvdW5kYXRpb24gdXNlIGlmIGJ1aWxkaW5n
IGZvciBBcHBsZSB0YXJnZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFi
bGVCaXRtYXBEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdy
YXBoaWNzQ29udAogewogICAgIGF1dG8gc3VyZmFjZSA9IGNyZWF0ZURpcmVjdDJEU3VyZmFjZSgp
OwogCisjaWZuZGVmIF9OREVCVUcKKyAgICB1bnNpZ25lZCB3aWR0aCwgaGVpZ2h0OworICAgIEhS
RVNVTFQgaHIgPSBzdXJmYWNlLT5HZXRTaXplKCZ3aWR0aCwgJmhlaWdodCk7CisgICAgQVNTRVJU
KHdpZHRoID09IG1fc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlQoaGVpZ2h0ID09IG1fc2l6ZS5o
ZWlnaHQoKSk7CisjZW5kaWYKKwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChkc3RQb2ludCwgc3Jj
UmVjdC5zaXplKCkpOwogICAgIEZsb2F0UmVjdCBzcmNSZWN0U2NhbGVkKHNyY1JlY3QpOwogICAg
IHNyY1JlY3RTY2FsZWQuc2NhbGUoc2NhbGVGYWN0b3IpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQmFja2luZ1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNiArNTgsMTYg
QEAgcHVibGljOgogI2lmIFVTRShDQUlSTykKICAgICB0eXBlZGVmIGNhaXJvX3QqIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0OwogI2VsaWYgVVNFKERJUkVDVDJEKQotICAgIHR5cGVkZWYgSUQyRDFS
ZW5kZXJUYXJnZXQqIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OworICAgIHN0cnVjdCBHZGlDb25u
ZWN0aW9ucyB7CisgICAgICAgIEhXTkQgaHduZDsKKyAgICAgICAgSERDIGhkYzsKKyAgICB9Owor
ICAgIHR5cGVkZWYgR2RpQ29ubmVjdGlvbnMgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZW5k
aWYKIAogICAgIHZvaWQgcGFpbnQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKICAgICB2b2lkIGluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUlu
Zm8mKTsKIAotI2lmIFVTRShESVJFQ1QyRCkKLSAgICBJRDJEMURDUmVuZGVyVGFyZ2V0KiByZW5k
ZXJUYXJnZXQoKSB7IHJldHVybiBtX2JhY2tlbmQtPnJlbmRlclRhcmdldCgpOyB9Ci0jZW5kaWYK
LQogcHJpdmF0ZToKICAgICB2b2lkIGluY29ycG9yYXRlVXBkYXRlKFNoYXJlYWJsZUJpdG1hcCos
IGNvbnN0IFVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTEgKzExOCwxNyBAQCB2b2lkIERyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzCiAKIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNpemVEaWRDaGFuZ2UoKQogeworI2lmIFVTRShESVJFQ1QyRCkK
KyAgICBtX2JhY2tpbmdTdG9yZSA9IG51bGxwdHI7CisjZW5kaWYKICAgICBiYWNraW5nU3RvcmVT
dGF0ZURpZENoYW5nZShSZXNwb25kSW1tZWRpYXRlbHkpOwogfQogCiB2b2lkIERyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpCiB7
CisjaWYgVVNFKERJUkVDVDJEKQorICAgIG1fYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKKyNlbmRp
ZgogICAgIGJhY2tpbmdTdG9yZVN0YXRlRGlkQ2hhbmdlKFJlc3BvbmRJbW1lZGlhdGVseSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmgJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAgcHVibGljOgogICAgIHZv
aWQgcGFpbnQoQmFja2luZ1N0b3JlOjpQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlJlZ2lvbiYgdW5wYWludGVkUmVnaW9uKTsKICNlbmRp
ZgogCi0jaWYgVVNFKERJUkVDVDJEKQotICAgIElEMkQxRENSZW5kZXJUYXJnZXQqIHJlbmRlclRh
cmdldCgpIHsgcmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNraW5nU3RvcmUtPnJlbmRlclRh
cmdldCgpIDogbnVsbHB0cjsgfQotI2VuZGlmCi0KICAgICBib29sIGlzSW5BY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuICFtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0
eSgpOyB9CiAgICAgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJUcmVlQ29udGV4dDsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAJKHJldmlz
aW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVE
aXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDU3ICs0NCw3MSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxl
RmFjdG9yKTsKIH0KIAotdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KElEMkQxUmVuZGVyVGFyZ2V0
KiByZW5kZXJUYXJnZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIEJhY2tpbmdTdG9yZTo6
cGFpbnQoR2RpQ29ubmVjdGlvbnMgZ2RpQ29ubmVjdGlvbnMsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7Ci0gICAgcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKLQogICAgIEFTU0VSVChtX2JhY2tl
bmQpOworICAgIEFTU0VSVChtX2JhY2tlbmQtPnNpemUoKSA9PSBtX3NpemUpOwogCi0gICAgYXV0
byBiaXRtYXBCcnVzaFByb3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBCcnVzaFByb3BlcnRpZXMoKTsK
LSAgICBhdXRvIGJydXNoUHJvcGVydGllcyA9IEQyRDE6OkJydXNoUHJvcGVydGllcygpOworICAg
IGF1dG8qIHJlbmRlclRhcmdldCA9IG1fYmFja2VuZC0+cmVuZGVyVGFyZ2V0KCk7CiAKLSAgICBD
T01QdHI8SUQyRDFCaXRtYXBCcnVzaD4gcGF0dGVybkJydXNoOwotICAgIEhSRVNVTFQgaHIgPSBy
ZW5kZXJUYXJnZXQtPkNyZWF0ZUJpdG1hcEJydXNoKG1fYmFja2VuZC0+c3VyZmFjZSgpLCAmYml0
bWFwQnJ1c2hQcm9wZXJ0aWVzLCAmYnJ1c2hQcm9wZXJ0aWVzLCAmcGF0dGVybkJydXNoKTsKLSAg
ICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAg
ICByZXR1cm47CisgICAgUkVDVCB2aWV3UmVjdDsKKyAgICA6OkdldENsaWVudFJlY3QoZ2RpQ29u
bmVjdGlvbnMuaHduZCwgJnZpZXdSZWN0KTsKKyAgICByZW5kZXJUYXJnZXQtPkJpbmREQyhnZGlD
b25uZWN0aW9ucy5oZGMsICZ2aWV3UmVjdCk7CisKKyAgICBEMkQxX1JFQ1RfRiBkZXN0UmVjdCA9
IHJlY3Q7CiAKLSAgICBEMkQxX1JFQ1RfRiBkZXN0UmVjdChyZWN0KTsKLSAgICByZW5kZXJUYXJn
ZXQtPkZpbGxSZWN0YW5nbGUoJmRlc3RSZWN0LCBwYXR0ZXJuQnJ1c2guZ2V0KCkpOwotICAgIHJl
bmRlclRhcmdldC0+RW5kRHJhdygpOworICAgIGlmIChhdXRvKiBwYXR0ZXJuQnJ1c2ggPSBtX2Jh
Y2tlbmQtPmJpdG1hcEJydXNoKCkpIHsKKyAgICAgICAgcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXco
KTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0LT5GaWxsUmVjdGFuZ2xlKCZkZXN0UmVjdCwgcGF0dGVy
bkJydXNoKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0LT5FbmREcmF3KCk7CisgICAgfQogfQogCitz
dGF0aWMgUkdCQTMyIHRlc3RDb2xvcnNbXSA9IHsKKyAgICAweEZGRkYwMDAwLAorICAgIDB4RkYw
MEZGMDAsCisgICAgMFhGRjAwMDBGRiwKKyAgICAweEZGRkZGRjAwLAorICAgIDB4RkZBMEEwQTAs
CisgICAgMHhGRkZGRkZGRiwKKyAgICAweEZGMDAwMDAwCit9OworCiB2b2lkIEJhY2tpbmdTdG9y
ZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAsIGNvbnN0IFVwZGF0
ZUluZm8mIHVwZGF0ZUluZm8pCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJCYWNraW5nU3RvcmU6Omlu
Y29ycG9yYXRlVXBkYXRlIik7CiAgICAgaWYgKCFtX2JhY2tlbmQpCiAgICAgICAgIG1fYmFja2Vu
ZCA9IGNyZWF0ZUJhY2tlbmQoKTsKIAogICAgIHNjcm9sbCh1cGRhdGVJbmZvLnNjcm9sbFJlY3Qs
IHVwZGF0ZUluZm8uc2Nyb2xsT2Zmc2V0KTsKIAotICAgIC8vIFBhaW50IGFsbCB1cGRhdGUgcmVj
dHMuCi0gICAgSW50UG9pbnQgdXBkYXRlUmVjdExvY2F0aW9uID0gdXBkYXRlSW5mby51cGRhdGVS
ZWN0Qm91bmRzLmxvY2F0aW9uKCk7CisgICAgSW50UG9pbnQgdXBkYXRlUmVjdEJvdW5kc0xvY2F0
aW9uID0gdXBkYXRlSW5mby51cGRhdGVSZWN0Qm91bmRzLmxvY2F0aW9uKCk7CisKKyAgICBhdXRv
IHVwZGF0ZVdJQ0JpdG1hcCA9IGJpdG1hcC0+Y3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7CiAKLSAg
ICBDT01QdHI8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFJlbmRlclRhcmdldDsKLSAg
ICBIUkVTVUxUIGhyID0gbV9iYWNrZW5kLT5yZW5kZXJUYXJnZXQoKS0+Q3JlYXRlQ29tcGF0aWJs
ZVJlbmRlclRhcmdldCgmYml0bWFwUmVuZGVyVGFyZ2V0KTsKLSAgICBHcmFwaGljc0NvbnRleHQg
Z3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9y
eShiaXRtYXBSZW5kZXJUYXJnZXQuZ2V0KCkpKTsKLQotICAgIC8vIFdoZW4gbV93ZWJQYWdlUHJv
eHkuZHJhd3NCYWNrZ3JvdW5kKCkgaXMgZmFsc2UsIGJpdG1hcCBjb250YWlucyB0cmFuc3BhcmVu
dCBwYXJ0cyBhcyBhIGJhY2tncm91bmQgb2YgdGhlIHdlYnBhZ2UuCi0gICAgLy8gRm9yIHN1Y2gg
Y2FzZSwgYml0bWFwIG11c3QgYmUgZHJhd24gdXNpbmcgQ29tcG9zaXRlQ29weSB0byBvdmVyd3Jp
dGUgdGhlIGV4aXN0aW5nIHN1cmZhY2UuCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihXZWJDb3JlOjpDb21wb3NpdGVDb3B5KTsKKyAgICBIUkVTVUxUIGhyID0gU19P
SzsKKyNpZm5kZWYgX05ERUJVRworICAgIHVuc2lnbmVkIHdpZHRoLCBoZWlnaHQ7CisgICAgaHIg
PSB1cGRhdGVXSUNCaXRtYXAtPkdldFNpemUoJndpZHRoLCAmaGVpZ2h0KTsKKyAgICBBU1NFUlQo
d2lkdGggPT0gdXBkYXRlSW5mby51cGRhdGVSZWN0Qm91bmRzLndpZHRoKCkpOworICAgIEFTU0VS
VChoZWlnaHQgPT0gdXBkYXRlSW5mby51cGRhdGVSZWN0Qm91bmRzLmhlaWdodCgpKTsKKyNlbmRp
ZgorCisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBkZXZpY2VVcGRhdGVCaXRtYXA7CisgICAgaHIg
PSBtX2JhY2tlbmQtPnJlbmRlclRhcmdldCgpLT5DcmVhdGVCaXRtYXBGcm9tV2ljQml0bWFwKHVw
ZGF0ZVdJQ0JpdG1hcC5nZXQoKSwgJmRldmljZVVwZGF0ZUJpdG1hcCk7CisgICAgaWYgKCFTVUND
RUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyNpZm5kZWYgX05ERUJVRworICAgIGF1dG8g
ZGV2aWNlQml0bWFwU2l6ZSA9IGRldmljZVVwZGF0ZUJpdG1hcC0+R2V0UGl4ZWxTaXplKCk7Cisg
ICAgQVNTRVJUKGRldmljZUJpdG1hcFNpemUud2lkdGggPT0gdXBkYXRlSW5mby51cGRhdGVSZWN0
Qm91bmRzLndpZHRoKCkpOworICAgIEFTU0VSVChkZXZpY2VCaXRtYXBTaXplLmhlaWdodCA9PSB1
cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMuaGVpZ2h0KCkpOworI2VuZGlmCiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHVwZGF0ZVJlY3QgOiB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzKSB7Ci0gICAg
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHVwZGF0ZVJlY3Q7Ci0gICAgICAgIHNyY1JlY3QubW92ZSgt
dXBkYXRlUmVjdExvY2F0aW9uLngoKSwgLXVwZGF0ZVJlY3RMb2NhdGlvbi55KCkpOwotICAgICAg
ICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgZGV2aWNlU2NhbGVGYWN0b3IoKSwgdXBk
YXRlUmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0KTsKKyAgICAgICAgYXV0byBjdXJyZW50UmVjdExv
Y2F0aW9uID0gSW50U2l6ZSh1cGRhdGVSZWN0LngoKSAtIHVwZGF0ZVJlY3RCb3VuZHNMb2NhdGlv
bi54KCksIHVwZGF0ZVJlY3QueSgpIC0gdXBkYXRlUmVjdEJvdW5kc0xvY2F0aW9uLnkoKSk7Cisg
ICAgICAgIGF1dG8gZGVzdFJlY3RMb2NhdGlvbiA9IEludFNpemUodXBkYXRlUmVjdC54KCksIHVw
ZGF0ZVJlY3QueSgpKTsKKyAgICAgICAgRGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1cmZhY2VU
b0Fub3RoZXIoZGV2aWNlVXBkYXRlQml0bWFwLmdldCgpLCBtX2JhY2tlbmQtPnN1cmZhY2UoKSwg
Y3VycmVudFJlY3RMb2NhdGlvbiwgdXBkYXRlUmVjdCwgZGVzdFJlY3RMb2NhdGlvbik7CiAgICAg
fQotCi0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBvdXRwdXQ7Ci0gICAgaHIgPSBiaXRtYXBSZW5k
ZXJUYXJnZXQtPkdldEJpdG1hcCgmb3V0cHV0KTsKLSAgICBEMkQxX1BPSU5UXzJVIGRlc3RQb2lu
dCA9IEQyRDE6OlBvaW50MlUoKTsKLSAgICBhdXRvIHNpemUgPSBEaXJlY3QyRDo6Yml0bWFwU2l6
ZShvdXRwdXQuZ2V0KCkpOwotICAgIEQyRDFfUkVDVF9VIGRlc3RSZWN0ID0gRDJEMTo6UmVjdFUo
MCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBociA9IG1fYmFja2VuZC0+
c3VyZmFjZSgpLT5Db3B5RnJvbUJpdG1hcCgmZGVzdFBvaW50LCBvdXRwdXQuZ2V0KCksICZkZXN0
UmVjdCk7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQpAQCAtMTAyLDggKzExNiw2IEBA
IHZvaWQgQmFja2luZ1N0b3JlOjpzY3JvbGwoY29uc3QgSW50UmVjdCYKICAgICBpZiAoc2Nyb2xs
T2Zmc2V0LmlzWmVybygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXVEZMb2dBbHdheXMoIkJh
Y2tpbmdTdG9yZTo6c2Nyb2xsIik7Ci0KICAgICBBU1NFUlQobV9iYWNrZW5kKTsKICAgICBtX2Jh
Y2tlbmQtPnNjcm9sbChzY3JvbGxSZWN0LCBzY3JvbGxPZmZzZXQpOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTEsMTEgKzQ5MSw4IEBAIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGhkYywgY29uc3QgSW50UmUK
ICAgICAgICAgY2Fpcm9fZGVzdHJveShjb250ZXh0KTsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KHN1cmZhY2UpOwogI2Vsc2UKLSAgICAgICAgUkVDVCBkMkRpcnR5UmVjdCA9IGRpcnR5
UmVjdDsKLSAgICAgICAgaWYgKENPTVB0cjxJRDJEMURDUmVuZGVyVGFyZ2V0PiByZW5kZXJUYXJn
ZXQgPSBkcmF3aW5nQXJlYS0+cmVuZGVyVGFyZ2V0KCkpIHsKLSAgICAgICAgICAgIHJlbmRlclRh
cmdldC0+QmluZERDKGhkYywgJmQyRGlydHlSZWN0KTsKLSAgICAgICAgICAgIGRyYXdpbmdBcmVh
LT5wYWludChyZW5kZXJUYXJnZXQuZ2V0KCksIGRpcnR5UmVjdCwgdW5wYWludGVkUmVnaW9uKTsK
LSAgICAgICAgfQorICAgICAgICBCYWNraW5nU3RvcmU6OkdkaUNvbm5lY3Rpb25zIGNvbnRleHQg
eyA6OldpbmRvd0Zyb21EQyhoZGMpLCBoZGMgfTsKKyAgICAgICAgZHJhd2luZ0FyZWEtPnBhaW50
KGNvbnRleHQsIGRpcnR5UmVjdCwgdW5wYWludGVkUmVnaW9uKTsKICNlbmRpZgogCiAgICAgICAg
IGF1dG8gdW5wYWludGVkUmVjdHMgPSB1bnBhaW50ZWRSZWdpb24ucmVjdHMoKTsKQEAgLTUzMiw3
ICs1MjksNyBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uUHJpbnRDbGllbnRFdmVudChIV05ECiAgICAg
cmV0dXJuIDA7CiB9CiAKLUxSRVNVTFQgV2ViVmlldzo6b25TaXplRXZlbnQoSFdORCwgVUlOVCwg
V1BBUkFNLCBMUEFSQU0gbFBhcmFtLCBib29sJiBoYW5kbGVkKQorTFJFU1VMVCBXZWJWaWV3Ojpv
blNpemVFdmVudChIV05EIGh3bmQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYg
aGFuZGxlZCkKIHsKICAgICBpbnQgd2lkdGggPSBMT1dPUkQobFBhcmFtKTsKICAgICBpbnQgaGVp
Z2h0ID0gSElXT1JEKGxQYXJhbSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376779</attachid>
            <date>2019-08-20 10:11:39 -0700</date>
            <delta_ts>2019-08-20 10:50:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200923-20190820101136.patch</filename>
            <type>text/plain</type>
            <size>25899</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODkwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA4LTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFddIEZpeCBzY3JvbGxp
bmcgaW4gbW9kZXJuIFdlYktpdCB2aWV3cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2Ygc2Nyb2xsaW5n
IGluIERpcmVjdDJEIGhhZCBlcnJvcnMgdGhhdAorICAgICAgICBjYXVzZWQgaGlsYXJpb3VzIHJl
bmRlcmluZyBnbGl0Y2hlcy4gVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUgbG9naWMKKyAgICAgICAg
c28gdGhhdCBwYWdlIHNjcm9sbCBpcyBjb3JyZWN0LgorIAorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsOjpzY3JvbGwp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbDo6Yml0
bWFwQnJ1c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVC
YWNrZW5kRGlyZWN0MkRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdDJET3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1
cmZhY2VUb0Fub3RoZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OndyaXRlSW1hZ2VU
b0Rpc2tBc1BORyk6IEFkZGVkIGRpYWdub3N0aWMgdXRpbGl0eSB0bworICAgICAgICBkdW1wIHRl
eHR1cmVzIHRvIGRpc2sgZm9yIHJldmlldy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
RGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KTogU3dpdGNoIHRvIG1vcmUKKyAgICAgICAg
cmVjZW50IGZhY3Rvcnkgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorCiAyMDE5LTA4LTIwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5zYWZlIHVzYWdlIG9m
IENvb2tpZVN0b3JhZ2VPYnNlcnZlciBmcm9tIGEgYmFja2dyb3VuZCB0aHJlYWQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGly
ZWN0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJELmgJKHJldmlzaW9uIDI0ODc1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGly
ZWN0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCiBpbnRlcmZhY2UgSUQyRDFCaXRtYXA7CitpbnRlcmZhY2UgSUQyRDFC
aXRtYXBCcnVzaDsKIGludGVyZmFjZSBJRDJEMURDUmVuZGVyVGFyZ2V0OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
KGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgSUQyRDFCaXRtYXBCcnVzaCogYml0bWFwQnJ1c2goKSA9IDA7CiAK
IHByb3RlY3RlZDoKICAgICBCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1w
bC5jcHAJKHJldmlzaW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjAsMjcgKzYwLDU1IEBAIEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw6On5C
YWNraW4KIAogdm9pZCBCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsOjpzY3JvbGwoY29u
c3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQogewot
ICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IHNjcm9sbFJlY3Q7Ci0gICAgdGFyZ2V0UmVjdC5tb3Zl
KHNjcm9sbE9mZnNldCk7Ci0gICAgdGFyZ2V0UmVjdC5zaGlmdE1heFhFZGdlVG8odGFyZ2V0UmVj
dC5tYXhYKCkgLSBzY3JvbGxPZmZzZXQud2lkdGgoKSk7Ci0gICAgdGFyZ2V0UmVjdC5zaGlmdE1h
eFlFZGdlVG8odGFyZ2V0UmVjdC5tYXhZKCkgLSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOwotICAg
IGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFt
X3Njcm9sbFN1cmZhY2UpIHsKLSAgICAgICAgYXV0byBmbG9hdFNpemUgPSBEaXJlY3QyRDo6Yml0
bWFwU2l6ZShtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICBJbnRTaXplIHNpemUoZmxvYXRTaXpl
LndpZHRoKCksIGZsb2F0U2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIGF1dG8gc2NhbGUgPSBEaXJl
Y3QyRDo6Yml0bWFwUmVzb2x1dGlvbihtX3N1cmZhY2UuZ2V0KCkpOwotICAgICAgICBBU1NFUlQo
c2NhbGUueCgpID09IHNjYWxlLnkoKSk7Ci0gICAgICAgIG1fc2Nyb2xsU3VyZmFjZSA9IERpcmVj
dDJEOjpjcmVhdGVCaXRtYXAobV9yZW5kZXJUYXJnZXQuZ2V0KCksIHNpemUpOworICAgIEludFJl
Y3Qgc291cmNlUmVjdCA9IHNjcm9sbFJlY3Q7CisgICAgc291cmNlUmVjdC5tb3ZlKC1zY3JvbGxP
ZmZzZXQpOworICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KHNjcm9sbFJlY3QpOworCisgICAgaWYg
KCFtX3Njcm9sbFN1cmZhY2UgfHwgc2Nyb2xsUmVjdC5zaXplKCkgIT0gbV9zY3JvbGxTdXJmYWNl
U2l6ZSkgeworI2lmbmRlZiBfTkRFQlVHCisgICAgICAgIEFTU0VSVChtX3NpemUud2lkdGgoKSA+
PSBzY3JvbGxSZWN0LnNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgQVNTRVJUKG1fc2l6ZS5oZWln
aHQoKSA+PSBzY3JvbGxSZWN0LnNpemUoKS5oZWlnaHQoKSk7CisjZW5kaWYKKyAgICAgICAgbV9z
Y3JvbGxTdXJmYWNlU2l6ZSA9IHNvdXJjZVJlY3Quc2l6ZSgpOworICAgICAgICBtX3Njcm9sbFN1
cmZhY2UgPSBEaXJlY3QyRDo6Y3JlYXRlQml0bWFwKG1fcmVuZGVyVGFyZ2V0LmdldCgpLCBtX3Nj
cm9sbFN1cmZhY2VTaXplKTsKKyAgICB9CisKKyAgICBhdXRvIHNvdXJjZVJlY3RMb2NhdGlvbiA9
IEludFNpemUoc291cmNlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpKTsKKyAgICBhdXRvIGRlc3RS
ZWN0TG9jYXRpb24gPSBJbnRTaXplKCk7IC8vIFRvcCBsZWZ0IGNvcm5lciBvZiBzY3JvbGwgc3Vy
ZmFjZQorICAgIERpcmVjdDJEOjpjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKG1fc3Vy
ZmFjZS5nZXQoKSwgbV9zY3JvbGxTdXJmYWNlLmdldCgpLCBzb3VyY2VSZWN0TG9jYXRpb24sIHNv
dXJjZVJlY3QsIGRlc3RSZWN0TG9jYXRpb24pOworCisgICAgSW50UmVjdCBkZXN0UmVjdCA9IHNj
cm9sbFJlY3Q7CisgICAgZGVzdFJlY3Quc2V0SGVpZ2h0KHNvdXJjZVJlY3QuaGVpZ2h0KCkpOwor
ICAgIGRlc3RSZWN0LnNldFdpZHRoKHNvdXJjZVJlY3Qud2lkdGgoKSk7CisKKyAgICBJbnRTaXpl
IGRlc3RQb3NpdGlvbjsKKyAgICBpZiAoc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPiAwIHx8IHNjcm9s
bE9mZnNldC5oZWlnaHQoKSA+IDApIHsKKyAgICAgICAgZGVzdFBvc2l0aW9uLnNldFdpZHRoKHN0
ZDo6bWluKHNjcm9sbFJlY3Qud2lkdGgoKSwgc2Nyb2xsT2Zmc2V0LndpZHRoKCkpKTsKKyAgICAg
ICAgZGVzdFBvc2l0aW9uLnNldEhlaWdodChzdGQ6Om1pbihzY3JvbGxSZWN0LmhlaWdodCgpLCBz
Y3JvbGxPZmZzZXQuaGVpZ2h0KCkpKTsKICAgICB9CiAKLSAgICBEaXJlY3QyRDo6Y29weVJlY3RG
cm9tT25lU3VyZmFjZVRvQW5vdGhlcihtX3N1cmZhY2UuZ2V0KCksIG1fc2Nyb2xsU3VyZmFjZS5n
ZXQoKSwgc2Nyb2xsT2Zmc2V0LCB0YXJnZXRSZWN0KTsKLSAgICBEaXJlY3QyRDo6Y29weVJlY3RG
cm9tT25lU3VyZmFjZVRvQW5vdGhlcihtX3Njcm9sbFN1cmZhY2UuZ2V0KCksIG1fc3VyZmFjZS5n
ZXQoKSwgSW50U2l6ZSgpLCB0YXJnZXRSZWN0KTsKKyAgICBhdXRvIHNvdXJjZVNjcm9sbFN1cmZh
Y2VMb2NhdGlvbiA9IEludFNpemUoKTsgLy8gVG9wIGxlZnQgY29ybmVyIG9mIHNjcm9sbCBzdXJm
YWNlCisgICAgRGlyZWN0MkQ6OmNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIobV9zY3Jv
bGxTdXJmYWNlLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIHNvdXJjZVNjcm9sbFN1cmZhY2VMb2Nh
dGlvbiwgZGVzdFJlY3QsIGRlc3RQb3NpdGlvbik7CiAKICAgICBtX3Njcm9sbGVkSHlzdGVyZXNp
cy5pbXB1bHNlKCk7CiB9CiAKK0lEMkQxQml0bWFwQnJ1c2gqIEJhY2tpbmdTdG9yZUJhY2tlbmRE
aXJlY3QyREltcGw6OmJpdG1hcEJydXNoKCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyVGFyZ2V0IHx8
ICFtX3N1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFtX2JpdG1h
cEJydXNoKSB7CisgICAgICAgIGF1dG8gYml0bWFwQnJ1c2hQcm9wZXJ0aWVzID0gRDJEMTo6Qml0
bWFwQnJ1c2hQcm9wZXJ0aWVzKCk7CisgICAgICAgIGF1dG8gYnJ1c2hQcm9wZXJ0aWVzID0gRDJE
MTo6QnJ1c2hQcm9wZXJ0aWVzKCk7CisKKyAgICAgICAgSFJFU1VMVCBociA9IG1fcmVuZGVyVGFy
Z2V0LT5DcmVhdGVCaXRtYXBCcnVzaChtX3N1cmZhY2UuZ2V0KCksICZiaXRtYXBCcnVzaFByb3Bl
cnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZtX2JpdG1hcEJydXNoKTsKKyAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChocikpOworICAgIH0KKworICAgIHJldHVybiBtX2JpdG1hcEJydXNoLmdldCgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoRElSRUNUMkQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJESW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9CYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHJldmlz
aW9uIDI0ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9CYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQuaCIKICNpbmNsdWRl
IDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAKK2ludGVyZmFjZSBJRDJEMUJpdG1hcEJydXNo
OwogaW50ZXJmYWNlIElXSUNCaXRtYXA7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDgg
KzQ0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbChjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIElEMkQxQml0bWFwQnJ1c2gqIGJp
dG1hcEJydXNoKCkgb3ZlcnJpZGU7CiAKKyAgICBJbnRTaXplIG1fc2Nyb2xsU3VyZmFjZVNpemU7
CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBtX3Njcm9sbFN1cmZhY2U7CisgICAgQ09NUHRyPElE
MkQxQml0bWFwQnJ1c2g+IG1fYml0bWFwQnJ1c2g7CiAKICAgICBQQUw6Okh5c3RlcmVzaXNBY3Rp
dml0eSBtX3Njcm9sbGVkSHlzdGVyZXNpczsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJ
bWFnZURlY29kZXJEaXJlY3QyRC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJELmgiCkBAIC03
NjQsMTMgKzc2NSwxNSBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
CiB9CiAKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBs
YXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3Rh
dGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9s
YXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CisgICAgYXV0byBuYXRpdmVJbWFn
ZVNpemUgPSBiaXRtYXBTaXplKGltYWdlKTsKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGRldmlj
ZUJpdG1hcDsKICAgICBIUkVTVUxUIGhyID0gcGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgp
LT5DcmVhdGVCaXRtYXBGcm9tV2ljQml0bWFwKGltYWdlLCAmZGV2aWNlQml0bWFwKTsKICAgICBp
ZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gaW1hZ2VTaXpl
ID0gYml0bWFwU2l6ZShkZXZpY2VCaXRtYXAuZ2V0KCkpOwogICAgIGRyYXdOYXRpdmVJbWFnZShw
bGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CiB9CiAKQEAg
LTgyNCw4ICs4MjcsOCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJl
CiAKICAgICBjb250ZXh0LT5TZXRUYWdzKDEsIF9fTElORV9fKTsKIAotICAgIEZ1bmN0aW9uPHZv
aWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4gZHJhd0Z1bmN0aW9uID0gW2ltYWdlLCBhZGp1c3RlZERl
c3RSZWN0LCBzcmNSZWN0XShJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KSB7Ci0gICAg
ICAgIHJlbmRlclRhcmdldC0+RHJhd0JpdG1hcChpbWFnZSwgYWRqdXN0ZWREZXN0UmVjdCwgMS4w
ZiwgRDJEMV9CSVRNQVBfSU5URVJQT0xBVElPTl9NT0RFX0xJTkVBUiwgc3RhdGljX2Nhc3Q8RDJE
MV9SRUNUX0Y+KHNyY1JlY3QpKTsKKyAgICBGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0
Kik+IGRyYXdGdW5jdGlvbiA9IFtpbWFnZSwgYWRqdXN0ZWREZXN0UmVjdCwgZ2xvYmFsQWxwaGEs
IHNyY1JlY3RdKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpIHsKKyAgICAgICAgcmVu
ZGVyVGFyZ2V0LT5EcmF3Qml0bWFwKGltYWdlLCBhZGp1c3RlZERlc3RSZWN0LCBnbG9iYWxBbHBo
YSwgRDJEMV9CSVRNQVBfSU5URVJQT0xBVElPTl9NT0RFX0xJTkVBUiwgc3JjUmVjdCk7CiAgICAg
fTsKIAogICAgIGlmIChzaGFkb3dTdGF0ZS5pc1Zpc2libGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0aWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0
aWVzLmNwcAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0
IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCiAgKgpAQCAtMzYsNyArMzcsOCBA
QAogI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8ZDJk
MV8xLmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHdpbmNvZGVjLmg+CiAKIApA
QCAtMTczLDkgKzE3NSw3MiBAQCBDT01QdHI8SUQyRDFEQ1JlbmRlclRhcmdldD4gY3JlYXRlR0RJ
UmVuCiAKIHZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihJRDJEMUJpdG1hcCog
ZnJvbSwgSUQyRDFCaXRtYXAqIHRvLCBjb25zdCBJbnRTaXplJiBzb3VyY2VPZmZzZXQsIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGRlc3RPZmZzZXQpCiB7Ci0gICAgYXV0byBv
ZmZzZXQgPSBEMkQxOjpQb2ludDJVKCk7Ci0gICAgYXV0byBzb3VyY2VSZWN0ID0gRDJEMTo6UmVj
dFUoc291cmNlT2Zmc2V0LndpZHRoKCksIC1zb3VyY2VPZmZzZXQuaGVpZ2h0KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgSFJFU1VMVCBociA9IHRvLT5Db3B5RnJvbUJpdG1h
cCgmb2Zmc2V0LCBmcm9tLCAmc291cmNlUmVjdCk7CisgICAgSW50U2l6ZSBzb3VyY2VCaXRtYXBT
aXplID0gZnJvbS0+R2V0UGl4ZWxTaXplKCk7CisgICAgaWYgKHNvdXJjZUJpdG1hcFNpemUuaXNa
ZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgdGFyZ2V0Qml0bWFwU2l6ZSA9
IHRvLT5HZXRQaXhlbFNpemUoKTsKKyAgICBpZiAodGFyZ2V0Qml0bWFwU2l6ZS5pc1plcm8oKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KHNvdXJjZU9mZnNldC53
aWR0aCgpLCBzb3VyY2VPZmZzZXQuaGVpZ2h0KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSk7CisgICAgSW50UmVjdCB0YXJnZXRSZWN0KGRlc3RPZmZzZXQud2lkdGgoKSwgZGVzdE9mZnNl
dC5oZWlnaHQoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKworICAgIEludFJlY3Qg
c291cmNlQml0bWFwUmVjdChJbnRQb2ludCgpLCBzb3VyY2VCaXRtYXBTaXplKTsKKyAgICBJbnRS
ZWN0IHRhcmdldEJpdG1hcFJlY3QoSW50UG9pbnQoKSwgdGFyZ2V0Qml0bWFwU2l6ZSk7CisKKyAg
ICBzb3VyY2VSZWN0LmludGVyc2VjdChzb3VyY2VCaXRtYXBSZWN0KTsKKyAgICB0YXJnZXRSZWN0
LmludGVyc2VjdCh0YXJnZXRCaXRtYXBSZWN0KTsKKworICAgIEQyRDFfUkVDVF9VIGQyZFNvdXJj
ZVJlY3QgPSBEMkQxOjpSZWN0VShzb3VyY2VSZWN0LngoKSwgc291cmNlUmVjdC55KCksIHNvdXJj
ZVJlY3QueCgpICsgdGFyZ2V0UmVjdC53aWR0aCgpLCBzb3VyY2VSZWN0LnkoKSArIHRhcmdldFJl
Y3QuaGVpZ2h0KCkpOworICAgIGF1dG8gb2Zmc2V0ID0gRDJEMTo6UG9pbnQyVShkZXN0T2Zmc2V0
LndpZHRoKCksIGRlc3RPZmZzZXQuaGVpZ2h0KCkpOworCisgICAgSFJFU1VMVCBociA9IHRvLT5D
b3B5RnJvbUJpdG1hcCgmb2Zmc2V0LCBmcm9tLCAmZDJkU291cmNlUmVjdCk7CisgICAgQVNTRVJU
KFNVQ0NFRURFRChocikpOworfQorCit2b2lkIHdyaXRlSW1hZ2VUb0Rpc2tBc1BORyhJRDJEMVJl
bmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBJRDJEMUJpdG1hcCogYml0bWFwLCBMUENXU1RSIGZp
bGVOYW1lKQoreworICAgIENPTVB0cjxJV0lDQml0bWFwRW5jb2Rlcj4gd2ljQml0bWFwRW5jb2Rl
cjsKKyAgICBIUkVTVUxUIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdG
YWN0b3J5KCktPkNyZWF0ZUVuY29kZXIoR1VJRF9Db250YWluZXJGb3JtYXRQbmcsIG51bGxwdHIs
ICZ3aWNCaXRtYXBFbmNvZGVyKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisKKyAgICBE
V09SRCBtb2RlID0gU1RHTV9DUkVBVEUgfCBTVEdNX1JFQURXUklURSB8IFNUR01fU0hBUkVfREVO
WV9XUklURTsKKyAgICBDT01QdHI8SVN0cmVhbT4gc3RyZWFtOworICAgIGhyID0gOjpTSENyZWF0
ZVN0cmVhbU9uRmlsZUV4KGZpbGVOYW1lLCBtb2RlLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIFRS
VUUsIG51bGxwdHIsICZzdHJlYW0pOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAg
IGhyID0gd2ljQml0bWFwRW5jb2Rlci0+SW5pdGlhbGl6ZShzdHJlYW0uZ2V0KCksIFdJQ0JpdG1h
cEVuY29kZXJOb0NhY2hlKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisKKyAgICBDT01Q
dHI8SVdJQ0JpdG1hcEZyYW1lRW5jb2RlPiB3aWNGcmFtZUVuY29kZTsKKyAgICBociA9IHdpY0Jp
dG1hcEVuY29kZXItPkNyZWF0ZU5ld0ZyYW1lKCZ3aWNGcmFtZUVuY29kZSwgbnVsbHB0cik7Cisg
ICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworCisgICAgaHIgPSB3aWNGcmFtZUVuY29kZS0+SW5p
dGlhbGl6ZShudWxscHRyKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisKKyAgICBDT01Q
dHI8SUQyRDFEZXZpY2VDb250ZXh0PiBkMmREZXZpY2VDb250ZXh0OworICAgIGhyID0gcmVuZGVy
VGFyZ2V0LT5RdWVyeUludGVyZmFjZShfX3V1aWRvZihJRDJEMURldmljZUNvbnRleHQpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmQyZERldmljZUNvbnRleHQpKTsKKyAgICBBU1NFUlQoU1VD
Q0VFREVEKGhyKSk7CisKKyAgICBDT01QdHI8SUQyRDFEZXZpY2U+IGQyZERldmljZTsKKyAgICBk
MmREZXZpY2VDb250ZXh0LT5HZXREZXZpY2UoJmQyZERldmljZSk7CisKKyAgICBDT01QdHI8SVdJ
Q0ltYWdlRW5jb2Rlcj4gaW1hZ2VFbmNvZGVyOworICAgIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0
MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUltYWdlRW5jb2RlcihkMmREZXZpY2Uu
Z2V0KCksICZpbWFnZUVuY29kZXIpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAg
IGhyID0gaW1hZ2VFbmNvZGVyLT5Xcml0ZUZyYW1lKGJpdG1hcCwgd2ljRnJhbWVFbmNvZGUuZ2V0
KCksIG51bGxwdHIpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAgIGhyID0gd2lj
RnJhbWVFbmNvZGUtPkNvbW1pdCgpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAg
IGhyID0gd2ljQml0bWFwRW5jb2Rlci0+Q29tbWl0KCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRCho
cikpOworCisgICAgaHIgPSBzdHJlYW0tPkNvbW1pdChTVEdDX0RFRkFVTFQpOwogICAgIEFTU0VS
VChTVUNDRUVERUQoaHIpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJEVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI0
ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRFV0
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIENPTVB0cjxJRDJEMURD
UmVuZGVyVGFyZ2V0PiBjcmVhdGVHRElSZW4KIAogdm9pZCBjb3B5UmVjdEZyb21PbmVTdXJmYWNl
VG9Bbm90aGVyKElEMkQxQml0bWFwKiBmcm9tLCBJRDJEMUJpdG1hcCogdG8sIGNvbnN0IEludFNp
emUmIHNvdXJjZU9mZnNldCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIGRlc3RPZmZz
ZXQgPSBJbnRTaXplKCkpOwogCit2b2lkIHdyaXRlSW1hZ2VUb0Rpc2tBc1BORyhJRDJEMVJlbmRl
clRhcmdldCosIElEMkQxQml0bWFwKiwgTFBDV1NUUiBmaWxlTmFtZSk7CisKIH0gLy8gbmFtZXNw
YWNlIERpcmVjdDJECiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTEgKzQ2LDExIEBAIEltYWdlRGVjb2RlckRpcmVjdDJEOjpJbWFnZURlY29kZXJEaXJl
Y3QKIHsKIH0KIAotSVdJQ0ltYWdpbmdGYWN0b3J5KiBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lz
dGVtSW1hZ2luZ0ZhY3RvcnkoKQorSVdJQ0ltYWdpbmdGYWN0b3J5MiogSW1hZ2VEZWNvZGVyRGly
ZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCkKIHsKLSAgICBzdGF0aWMgSVdJQ0ltYWdpbmdG
YWN0b3J5KiB3aWNJbWFnaW5nRmFjdG9yeSA9IG51bGxwdHI7CisgICAgc3RhdGljIElXSUNJbWFn
aW5nRmFjdG9yeTIqIHdpY0ltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKICAgICBpZiAoIXdpY0lt
YWdpbmdGYWN0b3J5KSB7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENM
U0lEX1dJQ0ltYWdpbmdGYWN0b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlE
X0lXSUNJbWFnaW5nRmFjdG9yeSwgKExQVk9JRCopJndpY0ltYWdpbmdGYWN0b3J5KTsKKyAgICAg
ICAgSFJFU1VMVCBociA9IENvQ3JlYXRlSW5zdGFuY2UoQ0xTSURfV0lDSW1hZ2luZ0ZhY3Rvcnks
IG51bGxwdHIsIENMU0NUWF9JTlBST0NfU0VSVkVSLCBJSURfSVdJQ0ltYWdpbmdGYWN0b3J5Miwg
KExQVk9JRCopJndpY0ltYWdpbmdGYWN0b3J5KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoU1VD
Q0VFREVEKGhyKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAkocmV2aXNp
b24gMjQ4NzU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogaW50
ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwogaW50ZXJmYWNlIElXSUNCaXRtYXBEZWNvZGVyOwot
aW50ZXJmYWNlIElXSUNJbWFnaW5nRmFjdG9yeTsKK2ludGVyZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rv
cnkyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0Kik7CiAKLSAgICBz
dGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpOworICAgIHN0
YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkyKiBzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsgZmFsc2UgfTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNDg3NTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE5LTA4LTIwICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFddIEZpeCBzY3JvbGxpbmcgaW4gbW9kZXJu
IFdlYktpdCB2aWV3cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2Ygc2Nyb2xsaW5nIGluIERpcmVjdDJE
IGhhZCBlcnJvcnMgdGhhdAorICAgICAgICBjYXVzZWQgaGlsYXJpb3VzIHJlbmRlcmluZyBnbGl0
Y2hlcy4gVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUgbG9naWMKKyAgICAgICAgc28gdGhhdCBwYWdl
IHNjcm9sbCBpcyBjb3JyZWN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIGJ1
ZyB0aGF0IHdvdWxkIHRyaWdnZXIgd2hlbiByZXNpemluZyB3aW5kb3dzLgorCisgICAgICAgICog
U2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6cGFpbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9CYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjpyZW5kZXJUYXJnZXQpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OnNpemVEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGV2aWNlU2NhbGVGYWN0
b3JEaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmg6CisgICAgICAgICogVUlQcm9jZXNz
L3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdT
dG9yZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRl
VXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjpzY3JvbGwpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6b25TaXplRXZlbnQpOgorCiAyMDE5
LTA4LTE1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtG
VFddIEVuYWJsZSBDb3JlRm91bmRhdGlvbiB1c2UgaWYgYnVpbGRpbmcgZm9yIEFwcGxlIHRhcmdl
dApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJE
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0
bWFwRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2
ICs4MiwxMyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250CiB7CiAg
ICAgYXV0byBzdXJmYWNlID0gY3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7CiAKKyNpZm5kZWYgX05E
RUJVRworICAgIHVuc2lnbmVkIHdpZHRoLCBoZWlnaHQ7CisgICAgSFJFU1VMVCBociA9IHN1cmZh
Y2UtPkdldFNpemUoJndpZHRoLCAmaGVpZ2h0KTsKKyAgICBBU1NFUlQod2lkdGggPT0gbV9zaXpl
LndpZHRoKCkpOworICAgIEFTU0VSVChoZWlnaHQgPT0gbV9zaXplLmhlaWdodCgpKTsKKyNlbmRp
ZgorCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KGRzdFBvaW50LCBzcmNSZWN0LnNpemUoKSk7CiAg
ICAgRmxvYXRSZWN0IHNyY1JlY3RTY2FsZWQoc3JjUmVjdCk7CiAgICAgc3JjUmVjdFNjYWxlZC5z
Y2FsZShzY2FsZUZhY3Rvcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5n
U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3Rv
cmUuaAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2lu
Z1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDE2ICs1OCwxNiBAQCBwdWJsaWM6CiAjaWYg
VVNFKENBSVJPKQogICAgIHR5cGVkZWYgY2Fpcm9fdCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7
CiAjZWxpZiBVU0UoRElSRUNUMkQpCi0gICAgdHlwZWRlZiBJRDJEMVJlbmRlclRhcmdldCogUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQ7CisgICAgc3RydWN0IEdkaUNvbm5lY3Rpb25zIHsKKyAgICAg
ICAgSFdORCBod25kOworICAgICAgICBIREMgaGRjOworICAgIH07CisgICAgdHlwZWRlZiBHZGlD
b25uZWN0aW9ucyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNlbmRpZgogCiAgICAgdm9pZCBw
YWludChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
ICAgIHZvaWQgaW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYpOwogCi0jaWYgVVNF
KERJUkVDVDJEKQotICAgIElEMkQxRENSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCgpIHsgcmV0
dXJuIG1fYmFja2VuZC0+cmVuZGVyVGFyZ2V0KCk7IH0KLSNlbmRpZgotCiBwcml2YXRlOgogICAg
IHZvaWQgaW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFwKiwgY29uc3QgVXBkYXRlSW5m
byYpOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOCwxMSArMTE4LDE3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MKIAogdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
czo6c2l6ZURpZENoYW5nZSgpCiB7CisjaWYgVVNFKERJUkVDVDJEKQorICAgIG1fYmFja2luZ1N0
b3JlID0gbnVsbHB0cjsKKyNlbmRpZgogICAgIGJhY2tpbmdTdG9yZVN0YXRlRGlkQ2hhbmdlKFJl
c3BvbmRJbW1lZGlhdGVseSk7CiB9CiAKIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkKIHsKKyNpZiBVU0UoRElSRUNU
MkQpCisgICAgbV9iYWNraW5nU3RvcmUgPSBudWxscHRyOworI2VuZGlmCiAgICAgYmFja2luZ1N0
b3JlU3RhdGVEaWRDaGFuZ2UoUmVzcG9uZEltbWVkaWF0ZWx5KTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3Mu
aAkocmV2aXNpb24gMjQ4NzU3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NywxMCArNDcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludChCYWNraW5n
U3RvcmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
V2ViQ29yZTo6UmVnaW9uJiB1bnBhaW50ZWRSZWdpb24pOwogI2VuZGlmCiAKLSNpZiBVU0UoRElS
RUNUMkQpCi0gICAgSUQyRDFEQ1JlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KCkgeyByZXR1cm4g
bV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+cmVuZGVyVGFyZ2V0KCkgOiBudWxscHRy
OyB9Ci0jZW5kaWYKLQogICAgIGJvb2wgaXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7IH0KICAgICBjb25z
dCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9s
YXllclRyZWVDb250ZXh0OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9C
YWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NzU3KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNTcgKzQ0LDYxIEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWMKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVC
YWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCi12
b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgQmFja2luZ1N0b3JlOjpwYWludChHZGlDb25uZWN0
aW9ucyBnZGlDb25uZWN0aW9ucywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZW5kZXJU
YXJnZXQtPkJlZ2luRHJhdygpOwotCiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CisgICAgQVNTRVJU
KG1fYmFja2VuZC0+c2l6ZSgpID09IG1fc2l6ZSk7CiAKLSAgICBhdXRvIGJpdG1hcEJydXNoUHJv
cGVydGllcyA9IEQyRDE6OkJpdG1hcEJydXNoUHJvcGVydGllcygpOwotICAgIGF1dG8gYnJ1c2hQ
cm9wZXJ0aWVzID0gRDJEMTo6QnJ1c2hQcm9wZXJ0aWVzKCk7CisgICAgYXV0byogcmVuZGVyVGFy
Z2V0ID0gbV9iYWNrZW5kLT5yZW5kZXJUYXJnZXQoKTsKIAotICAgIENPTVB0cjxJRDJEMUJpdG1h
cEJydXNoPiBwYXR0ZXJuQnJ1c2g7Ci0gICAgSFJFU1VMVCBociA9IHJlbmRlclRhcmdldC0+Q3Jl
YXRlQml0bWFwQnJ1c2gobV9iYWNrZW5kLT5zdXJmYWNlKCksICZiaXRtYXBCcnVzaFByb3BlcnRp
ZXMsICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOwotICAgIEFTU0VSVChTVUNDRUVE
RUQoaHIpKTsKLSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybjsKKyAgICBS
RUNUIHZpZXdSZWN0OworICAgIDo6R2V0Q2xpZW50UmVjdChnZGlDb25uZWN0aW9ucy5od25kLCAm
dmlld1JlY3QpOworICAgIHJlbmRlclRhcmdldC0+QmluZERDKGdkaUNvbm5lY3Rpb25zLmhkYywg
JnZpZXdSZWN0KTsKIAotICAgIEQyRDFfUkVDVF9GIGRlc3RSZWN0KHJlY3QpOwotICAgIHJlbmRl
clRhcmdldC0+RmlsbFJlY3RhbmdsZSgmZGVzdFJlY3QsIHBhdHRlcm5CcnVzaC5nZXQoKSk7Ci0g
ICAgcmVuZGVyVGFyZ2V0LT5FbmREcmF3KCk7CisgICAgRDJEMV9SRUNUX0YgZGVzdFJlY3QgPSBy
ZWN0OworCisgICAgaWYgKGF1dG8qIHBhdHRlcm5CcnVzaCA9IG1fYmFja2VuZC0+Yml0bWFwQnJ1
c2goKSkgeworICAgICAgICByZW5kZXJUYXJnZXQtPkJlZ2luRHJhdygpOworICAgICAgICByZW5k
ZXJUYXJnZXQtPkZpbGxSZWN0YW5nbGUoJmRlc3RSZWN0LCBwYXR0ZXJuQnJ1c2gpOworICAgICAg
ICByZW5kZXJUYXJnZXQtPkVuZERyYXcoKTsKKyAgICB9CiB9CiAKIHZvaWQgQmFja2luZ1N0b3Jl
OjppbmNvcnBvcmF0ZVVwZGF0ZShTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCwgY29uc3QgVXBkYXRl
SW5mbyYgdXBkYXRlSW5mbykKIHsKLSAgICBXVEZMb2dBbHdheXMoIkJhY2tpbmdTdG9yZTo6aW5j
b3Jwb3JhdGVVcGRhdGUiKTsKICAgICBpZiAoIW1fYmFja2VuZCkKICAgICAgICAgbV9iYWNrZW5k
ID0gY3JlYXRlQmFja2VuZCgpOwogCiAgICAgc2Nyb2xsKHVwZGF0ZUluZm8uc2Nyb2xsUmVjdCwg
dXBkYXRlSW5mby5zY3JvbGxPZmZzZXQpOwogCi0gICAgLy8gUGFpbnQgYWxsIHVwZGF0ZSByZWN0
cy4KLSAgICBJbnRQb2ludCB1cGRhdGVSZWN0TG9jYXRpb24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJl
Y3RCb3VuZHMubG9jYXRpb24oKTsKKyAgICBJbnRQb2ludCB1cGRhdGVSZWN0Qm91bmRzTG9jYXRp
b24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRpb24oKTsKKworICAgIGF1dG8g
dXBkYXRlV0lDQml0bWFwID0gYml0bWFwLT5jcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKIAotICAg
IENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFwUmVuZGVyVGFyZ2V0OwotICAg
IEhSRVNVTFQgaHIgPSBtX2JhY2tlbmQtPnJlbmRlclRhcmdldCgpLT5DcmVhdGVDb21wYXRpYmxl
UmVuZGVyVGFyZ2V0KCZiaXRtYXBSZW5kZXJUYXJnZXQpOwotICAgIEdyYXBoaWNzQ29udGV4dCBn
cmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5
KGJpdG1hcFJlbmRlclRhcmdldC5nZXQoKSkpOwotCi0gICAgLy8gV2hlbiBtX3dlYlBhZ2VQcm94
eS5kcmF3c0JhY2tncm91bmQoKSBpcyBmYWxzZSwgYml0bWFwIGNvbnRhaW5zIHRyYW5zcGFyZW50
IHBhcnRzIGFzIGEgYmFja2dyb3VuZCBvZiB0aGUgd2VicGFnZS4KLSAgICAvLyBGb3Igc3VjaCBj
YXNlLCBiaXRtYXAgbXVzdCBiZSBkcmF3biB1c2luZyBDb21wb3NpdGVDb3B5IHRvIG92ZXJ3cml0
ZSB0aGUgZXhpc3Rpbmcgc3VyZmFjZS4KLSAgICBncmFwaGljc0NvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKFdlYkNvcmU6OkNvbXBvc2l0ZUNvcHkpOworICAgIEhSRVNVTFQgaHIgPSBTX09L
OworI2lmbmRlZiBfTkRFQlVHCisgICAgdW5zaWduZWQgd2lkdGgsIGhlaWdodDsKKyAgICBociA9
IHVwZGF0ZVdJQ0JpdG1hcC0+R2V0U2l6ZSgmd2lkdGgsICZoZWlnaHQpOworICAgIEFTU0VSVCh3
aWR0aCA9PSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMud2lkdGgoKSk7CisgICAgQVNTRVJU
KGhlaWdodCA9PSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMuaGVpZ2h0KCkpOworI2VuZGlm
CisKKyAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGRldmljZVVwZGF0ZUJpdG1hcDsKKyAgICBociA9
IG1fYmFja2VuZC0+cmVuZGVyVGFyZ2V0KCktPkNyZWF0ZUJpdG1hcEZyb21XaWNCaXRtYXAodXBk
YXRlV0lDQml0bWFwLmdldCgpLCAmZGV2aWNlVXBkYXRlQml0bWFwKTsKKyAgICBpZiAoIVNVQ0NF
RURFRChocikpCisgICAgICAgIHJldHVybjsKKworI2lmbmRlZiBfTkRFQlVHCisgICAgYXV0byBk
ZXZpY2VCaXRtYXBTaXplID0gZGV2aWNlVXBkYXRlQml0bWFwLT5HZXRQaXhlbFNpemUoKTsKKyAg
ICBBU1NFUlQoZGV2aWNlQml0bWFwU2l6ZS53aWR0aCA9PSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RC
b3VuZHMud2lkdGgoKSk7CisgICAgQVNTRVJUKGRldmljZUJpdG1hcFNpemUuaGVpZ2h0ID09IHVw
ZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcy5oZWlnaHQoKSk7CisjZW5kaWYKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgdXBkYXRlUmVjdCA6IHVwZGF0ZUluZm8udXBkYXRlUmVjdHMpIHsKLSAgICAg
ICAgSW50UmVjdCBzcmNSZWN0ID0gdXBkYXRlUmVjdDsKLSAgICAgICAgc3JjUmVjdC5tb3ZlKC11
cGRhdGVSZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRlUmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgICAg
IGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBkZXZpY2VTY2FsZUZhY3RvcigpLCB1cGRh
dGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3QpOworICAgICAgICBhdXRvIGN1cnJlbnRSZWN0TG9j
YXRpb24gPSBJbnRTaXplKHVwZGF0ZVJlY3QueCgpIC0gdXBkYXRlUmVjdEJvdW5kc0xvY2F0aW9u
LngoKSwgdXBkYXRlUmVjdC55KCkgLSB1cGRhdGVSZWN0Qm91bmRzTG9jYXRpb24ueSgpKTsKKyAg
ICAgICAgYXV0byBkZXN0UmVjdExvY2F0aW9uID0gSW50U2l6ZSh1cGRhdGVSZWN0LngoKSwgdXBk
YXRlUmVjdC55KCkpOworICAgICAgICBEaXJlY3QyRDo6Y29weVJlY3RGcm9tT25lU3VyZmFjZVRv
QW5vdGhlcihkZXZpY2VVcGRhdGVCaXRtYXAuZ2V0KCksIG1fYmFja2VuZC0+c3VyZmFjZSgpLCBj
dXJyZW50UmVjdExvY2F0aW9uLCB1cGRhdGVSZWN0LCBkZXN0UmVjdExvY2F0aW9uKTsKICAgICB9
Ci0KLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IG91dHB1dDsKLSAgICBociA9IGJpdG1hcFJlbmRl
clRhcmdldC0+R2V0Qml0bWFwKCZvdXRwdXQpOwotICAgIEQyRDFfUE9JTlRfMlUgZGVzdFBvaW50
ID0gRDJEMTo6UG9pbnQyVSgpOwotICAgIGF1dG8gc2l6ZSA9IERpcmVjdDJEOjpiaXRtYXBTaXpl
KG91dHB1dC5nZXQoKSk7Ci0gICAgRDJEMV9SRUNUX1UgZGVzdFJlY3QgPSBEMkQxOjpSZWN0VSgw
LCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIGhyID0gbV9iYWNrZW5kLT5z
dXJmYWNlKCktPkNvcHlGcm9tQml0bWFwKCZkZXN0UG9pbnQsIG91dHB1dC5nZXQoKSwgJmRlc3RS
ZWN0KTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC0xMDIsOCArMTA2LDYgQEAg
dm9pZCBCYWNraW5nU3RvcmU6OnNjcm9sbChjb25zdCBJbnRSZWN0JgogICAgIGlmIChzY3JvbGxP
ZmZzZXQuaXNaZXJvKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdURkxvZ0Fsd2F5cygiQmFj
a2luZ1N0b3JlOjpzY3JvbGwiKTsKLQogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1fYmFj
a2VuZC0+c2Nyb2xsKHNjcm9sbFJlY3QsIHNjcm9sbE9mZnNldCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDg3NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
MSwxMSArNDkxLDggQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgaGRjLCBjb25zdCBJbnRSZQog
ICAgICAgICBjYWlyb19kZXN0cm95KGNvbnRleHQpOwogICAgICAgICBjYWlyb19zdXJmYWNlX2Rl
c3Ryb3koc3VyZmFjZSk7CiAjZWxzZQotICAgICAgICBSRUNUIGQyRGlydHlSZWN0ID0gZGlydHlS
ZWN0OwotICAgICAgICBpZiAoQ09NUHRyPElEMkQxRENSZW5kZXJUYXJnZXQ+IHJlbmRlclRhcmdl
dCA9IGRyYXdpbmdBcmVhLT5yZW5kZXJUYXJnZXQoKSkgewotICAgICAgICAgICAgcmVuZGVyVGFy
Z2V0LT5CaW5kREMoaGRjLCAmZDJEaXJ0eVJlY3QpOwotICAgICAgICAgICAgZHJhd2luZ0FyZWEt
PnBhaW50KHJlbmRlclRhcmdldC5nZXQoKSwgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwot
ICAgICAgICB9CisgICAgICAgIEJhY2tpbmdTdG9yZTo6R2RpQ29ubmVjdGlvbnMgY29udGV4dCB7
IDo6V2luZG93RnJvbURDKGhkYyksIGhkYyB9OworICAgICAgICBkcmF3aW5nQXJlYS0+cGFpbnQo
Y29udGV4dCwgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwogI2VuZGlmCiAKICAgICAgICAg
YXV0byB1bnBhaW50ZWRSZWN0cyA9IHVucGFpbnRlZFJlZ2lvbi5yZWN0cygpOwpAQCAtNTMyLDcg
KzUyOSw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25QcmludENsaWVudEV2ZW50KEhXTkQKICAgICBy
ZXR1cm4gMDsKIH0KIAotTFJFU1VMVCBXZWJWaWV3OjpvblNpemVFdmVudChIV05ELCBVSU5ULCBX
UEFSQU0sIExQQVJBTSBsUGFyYW0sIGJvb2wmIGhhbmRsZWQpCitMUkVTVUxUIFdlYlZpZXc6Om9u
U2l6ZUV2ZW50KEhXTkQgaHduZCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0gbFBhcmFtLCBib29sJiBo
YW5kbGVkKQogewogICAgIGludCB3aWR0aCA9IExPV09SRChsUGFyYW0pOwogICAgIGludCBoZWln
aHQgPSBISVdPUkQobFBhcmFtKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>