<?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>106967</bug_id>
          
          <creation_ts>2013-01-15 18:11:15 -0800</creation_ts>
          <short_desc>Merge LayerTreeHostCA and LayerTreeHostMac</short_desc>
          <delta_ts>2013-01-15 19:13:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>807886</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-15 18:11:15 -0800</bug_when>
    <thetext>Merge LayerTreeHostCA and LayerTreeHostMac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807887</commentid>
    <comment_count>1</comment_count>
      <attachid>182889</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-15 18:11:55 -0800</bug_when>
    <thetext>Created attachment 182889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807940</commentid>
    <comment_count>2</comment_count>
      <attachid>182889</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 19:13:26 -0800</bug_when>
    <thetext>Comment on attachment 182889
Patch

Clearing flags on attachment: 182889

Committed r139825: &lt;http://trac.webkit.org/changeset/139825&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807941</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 19:13:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182889</attachid>
            <date>2013-01-15 18:11:55 -0800</date>
            <delta_ts>2013-01-15 19:13:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106967-20130115180857.patch</filename>
            <type>text/plain</type>
            <size>37992</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWFlNzk1MWU4NTY3ODJi
ZTMyZjMzNmRmMzEyZGMxNTRjMzNkMzdhMy4uNWRhZGRiOGFkN2I2YTRhY2ZiNGVmMDk3ZWIxZmZk
ZjdjNGYzOTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDEzLTAxLTE1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTWVyZ2UgTGF5ZXJU
cmVlSG9zdENBIGFuZCBMYXllclRyZWVIb3N0TWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSdzIG5vIG5lZWQgdG8gaGF2ZSBhIExheWVyVHJl
ZUhvc3RDQSBiYXNlIGNsYXNzIGFueW1vcmUsIGp1c3QgbWVyZ2UgaXQgaW50byBMYXllclRyZWVI
b3N0TWFjLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RN
YWMuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RNYWMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdE1hYzo6TGF5ZXJUcmVlSG9zdE1hYyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3RNYWM6On5MYXllclRyZWVIb3N0TWFjKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdE1hYzo6bGF5ZXJUcmVlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3RNYWM6OnNldFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2gpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdE1hYzo6c2V0Um9v
dENvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0TWFjOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdE1hYzo6c2V0Tm9uQ29t
cG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0TWFjOjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0TWFjOjpmb3JjZVJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0TWFjOjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dE1hYzo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0TWFjOjpkaWRJbnN0YWxsUGFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0TWFjOjpkaWRVbmluc3RhbGxQYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RNYWM6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdE1hYzo6cGF1c2VSZW5kZXJpbmcpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0TWFjOjpyZXN1bWVSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0TWFjOjpzZXRMYXllckhvc3RpbmdNb2RlKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdE1hYzo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RNYWM6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVIb3N0TWFjOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdE1hYzo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0TWFjOjpmbHVzaExheWVycyk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RNYWM6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0TWFjOjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RNYWM6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RNYWM6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0TWFjOjpkZXN0cm95UGFnZU92ZXJsYXlMYXllcik6CisKKzIw
MTMtMDEtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAg
ICBSZW5hbWUgTGF5ZXJUcmVlSG9zdENBTWFjIHRvIExheWVyVHJlZUhvc3RNYWMuCiAKICAgICAg
ICAgUnViYmVyLXN0YW1wZWQgYnkgRGV0aCBCYWtpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYjA0NjNhYTc3MGYyYTFjZjdi
NDcyYjNiYWEwNzcwZGEyN2I4NGIwLi4yY2M4YzFmNDMwZjlhMzczNjVjZjg1YWNlMTczNzM5Zjk3
Y2M3ZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05ODgsMTMgKzk4OCwxMSBAQAogCQlDMDMzN0REMzEyN0EyQTBFMDA4RkY0
RjQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMDMzN0REMjEyN0EyQTBFMDA4RkY0RjQgLyogV2ViS2V5Ym9hcmRF
dmVudC5jcHAgKi87IH07CiAJCUMwMzM3REQ4MTI3QTUxQjYwMDhGRjRGNCAvKiBXZWJUb3VjaEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMw
MzM3REQ3MTI3QTUxQjYwMDhGRjRGNCAvKiBXZWJUb3VjaEV2ZW50LmNwcCAqLzsgfTsKIAkJQzAz
MzdEREQxMjdBNTIxQzAwOEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDMzN0REQzEyN0E1MjFD
MDA4RkY0RjQgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCAqLzsgfTsKLQkJQzA2NDUwNEEx
MzNCRTcwOTAwMzQ3MEUyIC8qIExheWVyVHJlZUhvc3RDQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA5OEEwNTMxMzNCRTFDNTAwQjE5OUE0IC8qIExh
eWVyVHJlZUhvc3RDQS5oICovOyB9OwogCQlDMDZDNjA5NTEyNEMxNDRCMDAwMTY4MkYgLyogV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMDZDNjA5MzEyNEMxNDQzMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCUMwOUFFNUU5MTI1MjU3QzIwMDI1ODI1RCAvKiBX
S05hdGl2ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMDlBRTVFODEyNTI1N0MyMDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQ0U3MkEwMTI0N0U3
MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQ0U3MjlFMTI0N0U3MUQwMEJDMEVDNCAv
KiBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQzBDRTcyQTExMjQ3RTcxRDAw
QkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzBDRTcyOUYxMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNz
YWdlcy5oICovOyB9OwogCQlDMENFNzJBRDEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2Fn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBDRTcy
QUMxMjQ3RTc4RDAwQkMwRUM0IC8qIEhhbmRsZU1lc3NhZ2UuaCAqLzsgfTsKLQkJQzBENzREREUx
MzNCRTJEOTAwODlDRDQ0IC8qIExheWVyVHJlZUhvc3RDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDk4QTA1NDEzM0JFMUM1MDBCMTk5QTQgLyog
TGF5ZXJUcmVlSG9zdENBLmNwcCAqLzsgfTsKIAkJQzBFM0FBN0ExMjA5RTgzMDAwQTQ5RDAxIC8q
IE1vZHVsZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMwRTNBQTQ4MTIwOUU0NTAwMEE0OUQwMSAvKiBNb2R1bGVNYWMubW0gKi87IH07CiAJCUMw
RTNBQTdCMTIwOUU4MzUwMEE0OUQwMSAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFM0FBNDUxMjA5RTJCQTAwQTQ5RDAxIC8qIE1v
ZHVsZS5jcHAgKi87IH07CiAJCUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQwMSAvKiBNb2R1bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTNBQTQ0MTIw
OUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAqLzsgfTsKQEAgLTIyODgsOCArMjI4Niw2IEBACiAJ
CUMwMzM3RERDMTI3QTUyMUMwMDhGRjRGNCAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA2QzYwOTMxMjRDMTQ0MzAwMDE2
ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwNkM2MDk0MTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzA5OEEwNTMxMzNCRTFDNTAwQjE5OUE0IC8qIExheWVyVHJlZUhvc3RDQS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXllclRyZWVIb3N0Q0EuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzA5OEEwNTQxMzNCRTFDNTAwQjE5OUE0IC8qIExheWVyVHJlZUhvc3RD
QS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXllclRyZWVI
b3N0Q0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDlBRTVFODEyNTI1N0My
MDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS05hdGl2ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwQ0U3
MjU4MTI0N0U0REEwMEJDMEVDNCAvKiBXZWJQYWdlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlBhZ2UubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMwQ0U3MjlFMTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ2MSw3ICszNDU3LDYg
QEAKIAkJQkMwMzJENUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUMwOThBMDUyMTMzQkUxQzUwMEIxOTlB
NCAvKiBjYSAqLywKIAkJCQlCQzk2M0Q2QzExM0REMTk1MDA1NzRCRTIgLyogbWFjICovLAogCQkJ
CTkzRkM2NzlEMTJEM0NDNzQwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5jcHAgKi8sCiAJCQkJ
OTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggKi8sCkBAIC00Mjgw
LDIzICs0Mjc1LDYgQEAKIAkJCXBhdGggPSBjZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07Ci0JCUMwM0ExMzZBMTMzQkVCRjkwMEQ3NjdEMSAvKiBtYWMgKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJKTsKLQkJCXBhdGggPSBtYWM7Ci0JCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlDMDk4QTA1MjEzM0JFMUM1MDBCMTk5QTQg
LyogY2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUMw
M0ExMzZBMTMzQkVCRjkwMEQ3NjdEMSAvKiBtYWMgKi8sCi0JCQkJQzA5OEEwNTQxMzNCRTFDNTAw
QjE5OUE0IC8qIExheWVyVHJlZUhvc3RDQS5jcHAgKi8sCi0JCQkJQzA5OEEwNTMxMzNCRTFDNTAw
QjE5OUE0IC8qIExheWVyVHJlZUhvc3RDQS5oICovLAotCQkJKTsKLQkJCXBhdGggPSBjYTsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUMwQ0U3MjlEMTI0N0U3MUQwMEJDMEVD
NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtNDY1MCw3ICs0NjI4LDYgQEAKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4
RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MkRDMTEx
MkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMTg2RUVBMTJFRjc2MTgwMDhFNUYzNyAvKiBMYXllclRyZWVIb3N0LmggaW4gSGVhZGVycyAq
LywKLQkJCQlDMDY0NTA0QTEzM0JFNzA5MDAzNDcwRTIgLyogTGF5ZXJUcmVlSG9zdENBLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUE3RjJGMzEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC01NjI4LDcgKzU2MDUsNiBAQAogCQkJCUJDRTA5Mzc3
MTRGQjEyOEMwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE5MkRDMTMxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHRNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQTE4NkVFQjEyRUY3NjE4MDA4RTVGMzcgLyogTGF5ZXJUcmVl
SG9zdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDMEQ3NERERTEzM0JFMkQ5MDA4OUNENDQgLyog
TGF5ZXJUcmVlSG9zdENBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTdGMkY1MTI1QkY4RDQw
MDhBRUIxRCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjBCRkUxMTMzODFE
RjkwMDkxODk5OSAvKiBMb2dnaW5nLm1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMjRCNUYy
MTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhv
c3RDQS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5ZXJUcmVl
SG9zdENBLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAyMzZmOGRmNDUyMGU5
YzY3NmQwMGZkZWUxODFhYzRlMDZjYTdmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5
ZXJUcmVlSG9zdENBLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxheWVyVHJlZUhvc3RDQS5oIgot
Ci0jaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotTGF5ZXJUcmVlSG9zdENBOjpMYXllclRyZWVIb3N0Q0EoV2ViUGFnZSog
d2ViUGFnZSkKLSAgICA6IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKLSAgICAsIG1fbGF5ZXJGbHVz
aFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCi0gICAgLCBtX2lzVmFsaWQodHJ1ZSkKLSAgICAsIG1f
bm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKGZhbHNlKQotewotfQotCi12b2lkIExheWVy
VHJlZUhvc3RDQTo6aW5pdGlhbGl6ZSgpCi17Ci0gICAgLy8gQ3JlYXRlIGEgcm9vdCBsYXllci4K
LSAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFj
dG9yeSgpLCB0aGlzKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9yb290TGF5ZXItPnNldE5hbWUo
IkxheWVyVHJlZUhvc3Qgcm9vdCBsYXllciIpOwotI2VuZGlmCi0gICAgbV9yb290TGF5ZXItPnNl
dERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAgbV9yb290TGF5ZXItPnNldFNpemUobV93ZWJQYWdl
LT5zaXplKCkpOwotICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcm9vdExheWVy
LmdldCgpKS0+cGxhdGZvcm1DQUxheWVyKCktPnNldEdlb21ldHJ5RmxpcHBlZCh0cnVlKTsKLQot
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShn
cmFwaGljc0xheWVyRmFjdG9yeSgpLCB0aGlzKTsKLSAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ0EqPihtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpLT5zZXRBbGxvd1RpbGVk
TGF5ZXIoZmFsc2UpOwotI2lmbmRlZiBOREVCVUcKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3Qgbm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOwot
I2VuZGlmCi0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRDb250ZW50c09wYXF1
ZShtX3dlYlBhZ2UtPmRyYXdzQmFja2dyb3VuZCgpICYmICFtX3dlYlBhZ2UtPmRyYXdzVHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKCkpOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
U2l6ZShtX3dlYlBhZ2UtPnNpemUoKSk7Ci0gICAgaWYgKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpKQotICAgICAgICBtX25vbkNv
bXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyh0cnVlKTsKLQotICAg
IG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkp
OwotCi0gICAgaWYgKG1fd2ViUGFnZS0+aGFzUGFnZU92ZXJsYXkoKSkKLSAgICAgICAgY3JlYXRl
UGFnZU92ZXJsYXlMYXllcigpOwotCi0gICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7Ci0KLSAgICBz
ZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoIW1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKSB8
fCAhbV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVTdGF0ZUlzRnJvemVuKCkpOwot
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi1MYXllclRyZWVIb3N0Q0E6On5MYXllclRy
ZWVIb3N0Q0EoKQotewotICAgIEFTU0VSVCghbV9pc1ZhbGlkKTsKLSAgICBBU1NFUlQoIW1fcm9v
dExheWVyKTsKLX0KLQotY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgTGF5ZXJUcmVlSG9zdENBOjps
YXllclRyZWVDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gbV9sYXllclRyZWVDb250ZXh0OwotfQot
Ci12b2lkIExheWVyVHJlZUhvc3RDQTo6c2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVk
TGF5ZXJGbHVzaChib29sIG5vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkKLXsKLSAgICBt
X25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9IG5vdGlmeUFmdGVyU2NoZWR1bGVkTGF5
ZXJGbHVzaDsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0Q0E6OnNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwotCi0gICAgLy8gQWRkIHRoZSBhY2Nl
bGVyYXRlZCBsYXllciB0cmVlIGhpZXJhcmNoeS4KLSAgICBpZiAoZ3JhcGhpY3NMYXllcikKLSAg
ICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5hZGRDaGlsZChncmFwaGljc0xheWVy
KTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0Q0E6OmludmFsaWRhdGUoKQotewotICAgIEFTU0VS
VChtX2lzVmFsaWQpOwotICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsKLSAgICBtX2lzVmFsaWQg
PSBmYWxzZTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0Q0E6OnNldE5vbkNvbXBvc2l0ZWRDb250
ZW50c05lZWREaXNwbGF5KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7Ci0gICAgaWYgKG1f
cGFnZU92ZXJsYXlMYXllcikKLSAgICAgICAgbV9wYWdlT3ZlcmxheUxheWVyLT5zZXROZWVkc0Rp
c3BsYXlJblJlY3QocmVjdCk7Ci0KLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLX0KLQotdm9p
ZCBMYXllclRyZWVIb3N0Q0E6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCi17Ci0gICAgc2V0
Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoc2Nyb2xsUmVjdCk7Ci19Ci0KLXZvaWQg
TGF5ZXJUcmVlSG9zdENBOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCi17
Ci0gICAgbV9yb290TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7Ci0KLSAgICAvLyBJZiB0aGUgbmV3
U2l6ZSBleHBvc2VzIG5ldyBhcmVhcyBvZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBhIHNl
dE5lZWRzRGlzcGxheSBpcyBuZWVkZWQKLSAgICAvLyBmb3IgdGhvc2UgbmV3bHkgZXhwb3NlZCBh
cmVhcy4KLSAgICBGbG9hdFNpemUgb2xkU2l6ZSA9IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXll
ci0+c2l6ZSgpOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShuZXdT
aXplKTsKLQotICAgIGlmIChuZXdTaXplLndpZHRoKCkgPiBvbGRTaXplLndpZHRoKCkpIHsKLSAg
ICAgICAgZmxvYXQgaGVpZ2h0ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5ld1NpemUu
aGVpZ2h0KCkpLCBvbGRTaXplLmhlaWdodCgpKTsKLSAgICAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KG9sZFNpemUud2lkdGgo
KSwgMCwgbmV3U2l6ZS53aWR0aCgpIC0gb2xkU2l6ZS53aWR0aCgpLCBoZWlnaHQpKTsKLSAgICB9
Ci0KLSAgICBpZiAobmV3U2l6ZS5oZWlnaHQoKSA+IG9sZFNpemUuaGVpZ2h0KCkpCi0gICAgICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0
UmVjdCgwLCBvbGRTaXplLmhlaWdodCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0
KCkgLSBvbGRTaXplLmhlaWdodCgpKSk7Ci0KLSAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQot
ICAgICAgICBtX3BhZ2VPdmVybGF5TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7Ci0KLSAgICBzY2hl
ZHVsZUxheWVyRmx1c2goKTsKLSAgICBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKLX0KLQot
dm9pZCBMYXllclRyZWVIb3N0Q0E6OmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkKLXsKLSAg
ICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2YgdGhlIHNjYWxlIGZhY3RvciBjaGFuZ2UgdmlhIFdl
YlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yLgotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRM
YXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgTGF5ZXJU
cmVlSG9zdENBOjpmb3JjZVJlcGFpbnQoKQotewotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwot
ICAgIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwotfSAgICAKLQotdm9pZCBMYXllclRyZWVI
b3N0Q0E6OmRpZEluc3RhbGxQYWdlT3ZlcmxheSgpCi17Ci0gICAgY3JlYXRlUGFnZU92ZXJsYXlM
YXllcigpOwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIExheWVyVHJlZUhv
c3RDQTo6ZGlkVW5pbnN0YWxsUGFnZU92ZXJsYXkoKQotewotICAgIGRlc3Ryb3lQYWdlT3Zlcmxh
eUxheWVyKCk7Ci0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVl
SG9zdENBOjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQot
ewotICAgIEFTU0VSVChtX3BhZ2VPdmVybGF5TGF5ZXIpOwotICAgIG1fcGFnZU92ZXJsYXlMYXll
ci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgp
OwotfQotCi12b2lkIExheWVyVHJlZUhvc3RDQTo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpCi17Ci19Ci0KLXZvaWQgTGF5
ZXJUcmVlSG9zdENBOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqKQotewotfQotCi12b2lkIExheWVyVHJlZUhvc3RDQTo6cGFpbnRDb250ZW50cyhjb25z
dCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KQotewotICAgIGlmIChncmFwaGljc0xheWVyID09IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRM
YXllcikgewotICAgICAgICBtX3dlYlBhZ2UtPmRyYXdSZWN0KGdyYXBoaWNzQ29udGV4dCwgY2xp
cFJlY3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdyYXBoaWNzTGF5ZXIg
PT0gbV9wYWdlT3ZlcmxheUxheWVyKSB7Ci0gICAgICAgIG1fd2ViUGFnZS0+ZHJhd1BhZ2VPdmVy
bGF5KGdyYXBoaWNzQ29udGV4dCwgY2xpcFJlY3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
fQotCi1mbG9hdCBMYXllclRyZWVIb3N0Q0E6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwot
fQotCi12b2lkIExheWVyVHJlZUhvc3RDQTo6cGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKQot
ewotICAgIHsKLSAgICAgICAgUmVmUHRyPExheWVyVHJlZUhvc3RDQT4gcHJvdGVjdCh0aGlzKTsK
LSAgICAgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRlZCgpOwotCi0gICAgICAgIGlmICghbV9p
c1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghZmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRpZFBlcmZvcm1TY2hl
ZHVsZWRMYXllckZsdXNoKCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdENBOjpkaWRQZXJmb3Jt
U2NoZWR1bGVkTGF5ZXJGbHVzaCgpCi17Ci0gICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRM
YXllckZsdXNoKSB7Ci0gICAgICAgIC8vIExldCB0aGUgZHJhd2luZyBhcmVhIGtub3cgdGhhdCB3
ZSd2ZSBkb25lIGEgZmx1c2ggb2YgdGhlIGxheWVyIGNoYW5nZXMuCi0gICAgICAgIHN0YXRpY19j
YXN0PERyYXdpbmdBcmVhSW1wbCo+KG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKSktPmxheWVySG9z
dERpZEZsdXNoTGF5ZXJzKCk7Ci0gICAgICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZs
dXNoID0gZmFsc2U7Ci0gICAgfQotfQotCi1ib29sIExheWVyVHJlZUhvc3RDQTo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkKLXsKLSAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seSgpOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwotICAgIGlmIChtX3BhZ2VP
dmVybGF5TGF5ZXIpCi0gICAgICAgIG1fcGFnZU92ZXJsYXlMYXllci0+Zmx1c2hDb21wb3NpdGlu
Z1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwotCi0gICAgcmV0dXJuIG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5n
U3ViZnJhbWVzKCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdENBOjpjcmVhdGVQYWdlT3Zlcmxh
eUxheWVyKCkKLXsKLSAgICBBU1NFUlQoIW1fcGFnZU92ZXJsYXlMYXllcik7Ci0KLSAgICBtX3Bh
Z2VPdmVybGF5TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3Rv
cnkoKSwgdGhpcyk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0
TmFtZSgiTGF5ZXJUcmVlSG9zdCBwYWdlIG92ZXJsYXkgY29udGVudCIpOwotI2VuZGlmCi0KLSAg
ICBtX3BhZ2VPdmVybGF5TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICBtX3BhZ2VP
dmVybGF5TGF5ZXItPnNldFNpemUobV93ZWJQYWdlLT5zaXplKCkpOwotCi0gICAgbV9yb290TGF5
ZXItPmFkZENoaWxkKG1fcGFnZU92ZXJsYXlMYXllci5nZXQoKSk7Ci19Ci0KLXZvaWQgTGF5ZXJU
cmVlSG9zdENBOjpkZXN0cm95UGFnZU92ZXJsYXlMYXllcigpCi17Ci0gICAgQVNTRVJUKG1fcGFn
ZU92ZXJsYXlMYXllcik7Ci0gICAgbV9wYWdlT3ZlcmxheUxheWVyLT5yZW1vdmVGcm9tUGFyZW50
KCk7Ci0gICAgbV9wYWdlT3ZlcmxheUxheWVyID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Y2EvTGF5ZXJUcmVlSG9zdENBLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Y2EvTGF5ZXJUcmVlSG9zdENBLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYjEz
ZGExYzI0OTJlM2QzZmU0NGFiODg4NGQ2OWZlZmIxY2EwYjguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2NhL0xheWVyVHJlZUhvc3RDQS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIExheWVyVHJlZUhvc3RDQV9oCi0jZGVmaW5lIExheWVyVHJl
ZUhvc3RDQV9oCi0KLSNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCi0jaW5jbHVkZSAiTGF5
ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNsaWVudC5oPgot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIExh
eWVyVHJlZUhvc3RDQSA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5MYXllclRyZWVIb3N0Q0EoKTsKLSAg
ICAKLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBMYXllclRyZWVIb3N0Q0EoV2ViUGFnZSopOwot
Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yb290TGF5ZXIuZ2V0KCk7IH0KLQotICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIHZvaWQg
cGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKLQotICAgIC8vIExheWVyVHJlZUhvc3QuCi0g
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBh
aW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKTsKLQotICAgIC8vIExheWVyVHJlZUhvc3RDQQotICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwotICAgIHZpcnR1YWwgYm9vbCBm
bHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKLQotICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1
bGluZ0VuYWJsZWQ7Ci0KLSAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsK
LQotcHJpdmF0ZToKLSAgICAvLyBMYXllclRyZWVIb3N0LgotICAgIHZpcnR1YWwgY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpOwotCi0gICAgdmly
dHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRl
bnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNjcm9sbE9mZnNldCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkSW5zdGFsbFBhZ2VP
dmVybGF5KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVuaW5zdGFsbFBhZ2VPdmVybGF5KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKLQotICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKLSAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwg
ZG91YmxlIHRpbWUpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3QgeyB9Ci0KLSAgICAvLyBMYXllclRyZWVIb3N0
Q0EKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCkgPSAwOwotCi0gICAgdm9p
ZCBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7Ci0gICAgdm9pZCBkZXN0cm95UGFnZU92ZXJsYXlM
YXllcigpOwotCi0gICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgdHJlZSBob3N0IGlzIHZhbGlkIG9y
IG5vdC4KLSAgICBib29sIG1faXNWYWxpZDsgICAgCi0KLSAgICAvLyBXaGV0aGVyIHdlIHNob3Vs
ZCBsZXQgdGhlIGRyYXdpbmcgYXJlYSBrbm93IHRoZSBuZXh0IHRpbWUgd2UndmUgZmx1c2hlZAot
ICAgIC8vIGxheWVyIHRyZWUgY2hhbmdlcy4KLSAgICBib29sIG1fbm90aWZ5QWZ0ZXJTY2hlZHVs
ZWRMYXllckZsdXNoOwotICAgIAotICAgIC8vIFRoZSByb290IGxheWVyLgotICAgIE93blB0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKLQotICAgIC8vIFRoZSBsYXllciB3
aGljaCBjb250YWlucyBhbGwgbm9uLWNvbXBvc2l0ZWQgY29udGVudC4KLSAgICBPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyOwotCi0gICAg
Ly8gVGhlIHBhZ2Ugb3ZlcmxheSBsYXllci4gV2lsbCBiZSBudWxsIGlmIHRoZXJlJ3Mgbm8gcGFn
ZSBvdmVybGF5LgotICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVy
bGF5TGF5ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIExheWVy
VHJlZUhvc3RDQV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL0xheWVyVHJlZUhvc3RNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5oCmluZGV4IDM4NzA2YjdhYTczMjA5NzNmNzM3ZWJm
OGMyZGNlODUxMGZjMjYzNmEuLjRkMzA2OWY1NTk3YmM5MmNjNmMzMDkyMGE0ZGJmZDVhMDg4YjIx
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5
ZXJUcmVlSG9zdE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvTGF5ZXJUcmVlSG9zdE1hYy5oCkBAIC0yNiw3ICsyNiw4IEBACiAjaWZuZGVmIExheWVyVHJl
ZUhvc3RNYWNfaAogI2RlZmluZSBMYXllclRyZWVIb3N0TWFjX2gKIAotI2luY2x1ZGUgIkxheWVy
VHJlZUhvc3RDQS5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheWVyRmx1c2hT
Y2hlZHVsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQu
aD4KIApAQCAtMzQsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGF5ZXJI
b3N0aW5nQ29udGV4dDsKIAotY2xhc3MgTGF5ZXJUcmVlSG9zdE1hYyA6IHB1YmxpYyBMYXllclRy
ZWVIb3N0Q0EsIHB1YmxpYyBXZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50IHsKK2Ns
YXNzIExheWVyVHJlZUhvc3RNYWMgOiBwdWJsaWMgTGF5ZXJUcmVlSG9zdCwgcHJpdmF0ZSBXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2xpZW50LCBwcml2YXRlIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hl
ZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyVHJlZUhv
c3RNYWM+IGNyZWF0ZShXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+TGF5ZXJUcmVlSG9zdE1hYygp
OwpAQCAtNDMsMjUgKzQ0LDUzIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTGF5ZXJUcmVlSG9z
dE1hYyhXZWJQYWdlKik7CiAKICAgICAvLyBMYXllclRyZWVIb3N0LgotICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3
U2l6ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYXVzZVJlbmRlcmluZygpOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWVSZW5kZXJpbmcoKTsK
KyAgICB2aXJ0dWFsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVMYXllckZsdXNoKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1
bGVkTGF5ZXJGbHVzaChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENv
bXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNjcm9sbE9mZnNldCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIG5ld1NpemUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VTY2Fs
ZUZhY3RvckRpZENoYW5nZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZEluc3RhbGxQYWdlT3ZlcmxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRV
bmluc3RhbGxQYWdlT3ZlcmxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdl
T3ZlcmxheU5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisK
KyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVzdW1lUmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAKLSAgICAvLyBMYXllclRyZWVIb3N0
Q0EKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgLy8gR3JhcGhpY3NMYXll
ckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3Qp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdCBPVkVSUklERSB7IH0KIAogICAgIC8vIExh
eWVyRmx1c2hTY2hlZHVsZXJDbGllbnQKICAgICB2aXJ0dWFsIGJvb2wgZmx1c2hMYXllcnMoKTsK
IAorICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZvaWQgcGVyZm9ybVNjaGVkdWxlZExheWVy
Rmx1c2goKTsKKyAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworCisgICAgdm9p
ZCBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CisgICAgdm9pZCBkZXN0cm95UGFnZU92ZXJsYXlM
YXllcigpOworCisgICAgYm9vbCBtX2lzVmFsaWQ7CisgICAgYm9vbCBtX25vdGlmeUFmdGVyU2No
ZWR1bGVkTGF5ZXJGbHVzaDsKKworICAgIExheWVyVHJlZUNvbnRleHQgbV9sYXllclRyZWVDb250
ZXh0OworCisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdExheWVyOwor
ICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX25vbkNvbXBvc2l0ZWRDb250ZW50
TGF5ZXI7CisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcGFnZU92ZXJsYXlM
YXllcjsKKwogICAgIE93blB0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0Nv
bnRleHQ7CiAgICAgV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaGVkdWxlciBtX2xheWVyRmx1c2hTY2hl
ZHVsZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9MYXllclRyZWVIb3N0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9MYXllclRyZWVIb3N0TWFjLm1tCmluZGV4IGI4MDgyMWVlMDk0Y2FkOWVlZWQwYzc2
ODk3MzdmYjUzNGYxNTFmZTkuLjUzNTUxMDA3N2ZhYjk5MzRkOTQ0ZjQ1ODFlMDNhOTE3NTAxNTAz
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5
ZXJUcmVlSG9zdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL0xheWVyVHJlZUhvc3RNYWMubW0KQEAgLTI2LDExICsyNiwxNiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJMYXllclRyZWVIb3N0TWFjLmgiCiAKKyNpbXBvcnQgIkRyYXdpbmdB
cmVhSW1wbC5oIgogI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiV2Vi
UGFnZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVRy
YW5zYWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNB
TGF5ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTQ4LDMxICs1MywyMyBAQCBQYXNzUmVmUHRyPExheWVyVHJlZUhvc3RN
YWM+IExheWVyVHJlZUhvc3RNYWM6OmNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogfQogCiBMYXll
clRyZWVIb3N0TWFjOjpMYXllclRyZWVIb3N0TWFjKFdlYlBhZ2UqIHdlYlBhZ2UpCi0gICAgOiBM
YXllclRyZWVIb3N0Q0Eod2ViUGFnZSkKKyAgICA6IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKKyAg
ICAsIG1faXNWYWxpZCh0cnVlKQorICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1
c2goZmFsc2UpCiAgICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsZXIodGhpcykKIHsKIH0KIAogTGF5
ZXJUcmVlSG9zdE1hYzo6fkxheWVyVHJlZUhvc3RNYWMoKQogeworICAgIEFTU0VSVCghbV9pc1Zh
bGlkKTsKKyAgICBBU1NFUlQoIW1fcm9vdExheWVyKTsKICAgICBBU1NFUlQoIW1fbGF5ZXJIb3N0
aW5nQ29udGV4dCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK2NvbnN0IExheWVyVHJlZUNvbnRleHQmIExheWVyVHJlZUhvc3RNYWM6OmxheWVyVHJl
ZUNvbnRleHQoKQogewotICAgIHN3aXRjaCAobV93ZWJQYWdlLT5sYXllckhvc3RpbmdNb2RlKCkp
IHsKLSAgICBjYXNlIExheWVySG9zdGluZ01vZGVEZWZhdWx0OgotICAgICAgICBtX2xheWVySG9z
dGluZ0NvbnRleHQgPSBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpKTsKLSAgICAgICAgYnJl
YWs7Ci0jaWYgSEFWRShMQVlFUl9IT1NUSU5HX0lOX1dJTkRPV19TRVJWRVIpCi0gICAgY2FzZSBM
YXllckhvc3RpbmdNb2RlSW5XaW5kb3dTZXJ2ZXI6Ci0gICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29u
dGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvcldpbmRvd1NlcnZlcigpOyAgICAg
ICAgCi0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgfQotCi0gICAgbV9sYXllckhvc3RpbmdD
b250ZXh0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAg
bV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29u
dGV4dElEKCk7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlQ29udGV4dDsKIH0KIAogdm9pZCBMYXll
clRyZWVIb3N0TWFjOjpzY2hlZHVsZUxheWVyRmx1c2goKQpAQCAtODgsNjEgKzg1LDEyMCBAQCB2
b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29s
IGxheWVyRmx1c2hpbmdFbmFibGVkKQogICAgICAgICBtX2xheWVyRmx1c2hTY2hlZHVsZXIuc3Vz
cGVuZCgpOwogfQogCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldFNob3VsZE5vdGlmeUFmdGVy
TmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCBub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1
c2gpCit7CisgICAgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2ggPSBub3RpZnlBZnRl
clNjaGVkdWxlZExheWVyRmx1c2g7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6c2V0Um9v
dENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBt
X25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CisKKyAgICAv
LyBBZGQgdGhlIGFjY2VsZXJhdGVkIGxheWVyIHRyZWUgaGllcmFyY2h5LgorICAgIGlmIChncmFw
aGljc0xheWVyKQorICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmFkZENoaWxk
KGdyYXBoaWNzTGF5ZXIpOworfQorCiB2b2lkIExheWVyVHJlZUhvc3RNYWM6OmludmFsaWRhdGUo
KQogewotICAgIG1fbGF5ZXJGbHVzaFNjaGVkdWxlci5pbnZhbGlkYXRlKCk7CisgICAgQVNTRVJU
KG1faXNWYWxpZCk7CisKKyAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKworICAgIG1fcm9vdExheWVy
ID0gbnVsbHB0cjsKIAogICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+aW52YWxpZGF0ZSgpOwog
ICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG51bGxwdHI7CisgICAgbV9sYXllckZsdXNoU2No
ZWR1bGVyLmludmFsaWRhdGUoKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0TWFjOjpzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3Qp
OworICAgIGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIpCisgICAgICAgIG1fcGFnZU92ZXJsYXlMYXll
ci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwogCi0gICAgTGF5ZXJUcmVlSG9zdENBOjpp
bnZhbGlkYXRlKCk7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgTGF5ZXJU
cmVlSG9zdE1hYzo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQordm9pZCBM
YXllclRyZWVIb3N0TWFjOjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgSW50UmVj
dCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQoreworICAgIHNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KHNjcm9sbFJlY3QpOworfQorCit2b2lkIExh
eWVyVHJlZUhvc3RNYWM6OmZvcmNlUmVwYWludCgpCiB7Ci0gICAgTGF5ZXJUcmVlSG9zdENBOjpz
aXplRGlkQ2hhbmdlKG5ld1NpemUpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIGZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwog
ICAgIFtDQVRyYW5zYWN0aW9uIHN5bmNocm9uaXplXTsKIH0KIAotdm9pZCBMYXllclRyZWVIb3N0
TWFjOjpmb3JjZVJlcGFpbnQoKQordm9pZCBMYXllclRyZWVIb3N0TWFjOjpzaXplRGlkQ2hhbmdl
KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7Ci0gICAgTGF5ZXJUcmVlSG9zdENBOjpmb3JjZVJl
cGFpbnQoKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKworICAgIC8vIElm
IHRoZSBuZXdTaXplIGV4cG9zZXMgbmV3IGFyZWFzIG9mIHRoZSBub24tY29tcG9zaXRlZCBjb250
ZW50IGEgc2V0TmVlZHNEaXNwbGF5IGlzIG5lZWRlZAorICAgIC8vIGZvciB0aG9zZSBuZXdseSBl
eHBvc2VkIGFyZWFzLgorICAgIEZsb2F0U2l6ZSBvbGRTaXplID0gbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5zaXplKCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRT
aXplKG5ld1NpemUpOworCisgICAgaWYgKG5ld1NpemUud2lkdGgoKSA+IG9sZFNpemUud2lkdGgo
KSkgeworICAgICAgICBmbG9hdCBoZWlnaHQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4o
bmV3U2l6ZS5oZWlnaHQoKSksIG9sZFNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChGbG9hdFJlY3Qob2xkU2l6
ZS53aWR0aCgpLCAwLCBuZXdTaXplLndpZHRoKCkgLSBvbGRTaXplLndpZHRoKCksIGhlaWdodCkp
OworICAgIH0KKworICAgIGlmIChuZXdTaXplLmhlaWdodCgpID4gb2xkU2l6ZS5oZWlnaHQoKSkK
KyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJl
Y3QoRmxvYXRSZWN0KDAsIG9sZFNpemUuaGVpZ2h0KCksIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6
ZS5oZWlnaHQoKSAtIG9sZFNpemUuaGVpZ2h0KCkpKTsKKworICAgIGlmIChtX3BhZ2VPdmVybGF5
TGF5ZXIpCisgICAgICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKwor
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygp
OworCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogICAgIFtDQVRyYW5zYWN0aW9uIHN5bmNo
cm9uaXplXTsKIH0KIAotdm9pZCBMYXllclRyZWVIb3N0TWFjOjpwYXVzZVJlbmRlcmluZygpCit2
b2lkIExheWVyVHJlZUhvc3RNYWM6OmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkKIHsKLSAg
ICBDQUxheWVyKiByb290ID0gcm9vdExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICBbcm9v
dCBzZXRWYWx1ZTooaWQpa0NGQm9vbGVhblRydWUgZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVz
ZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRQYXVzZU5vdGlmaWNhdGlvbiIgb2JqZWN0
Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OnJvb3QgZm9y
S2V5OkAibGF5ZXIiXV07CisgICAgLy8gT3RoZXIgbGF5ZXJzIGxlYXJuIG9mIHRoZSBzY2FsZSBm
YWN0b3IgY2hhbmdlIHZpYSBXZWJQYWdlOjpzZXREZXZpY2VTY2FsZUZhY3Rvci4KKyAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
OwogfQogCi12b2lkIExheWVyVHJlZUhvc3RNYWM6OnJlc3VtZVJlbmRlcmluZygpCit2b2lkIExh
eWVyVHJlZUhvc3RNYWM6OmRpZEluc3RhbGxQYWdlT3ZlcmxheSgpCiB7Ci0gICAgQ0FMYXllciog
cm9vdCA9IHJvb3RMYXllcigpLT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAgW3Jvb3Qgc2V0VmFsdWU6
KGlkKWtDRkJvb2xlYW5GYWxzZSBmb3JLZXk6QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOwotICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5h
bWU6QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2Vy
SW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OnJvb3QgZm9yS2V5OkAibGF5
ZXIiXV07CisgICAgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOworICAgIHNjaGVkdWxlTGF5ZXJG
bHVzaCgpOwogfQogCi1ib29sIExheWVyVHJlZUhvc3RNYWM6OmZsdXNoTGF5ZXJzKCkKK3ZvaWQg
TGF5ZXJUcmVlSG9zdE1hYzo6ZGlkVW5pbnN0YWxsUGFnZU92ZXJsYXkoKQogewotICAgIHBlcmZv
cm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgZGVzdHJveVBh
Z2VPdmVybGF5TGF5ZXIoKTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAotdm9pZCBM
YXllclRyZWVIb3N0TWFjOjpkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpCit2b2lkIExh
eWVyVHJlZUhvc3RNYWM6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7Ci0gICAgTGF5ZXJUcmVlSG9zdENBOjpkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJG
bHVzaCgpOworICAgIEFTU0VSVChtX3BhZ2VPdmVybGF5TGF5ZXIpOworICAgIG1fcGFnZU92ZXJs
YXlMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIHNjaGVkdWxlTGF5ZXJG
bHVzaCgpOwogfQogCi1ib29sIExheWVyVHJlZUhvc3RNYWM6OmZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlcygpCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnBhdXNlUmVuZGVyaW5nKCkKIHsKLSAgICBp
ZiAobV9sYXllckZsdXNoU2NoZWR1bGVyLmlzU3VzcGVuZGVkKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBDQUxheWVyKiByb290ID0gbV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsK
KyAgICBbcm9vdCBzZXRWYWx1ZTooaWQpa0NGQm9vbGVhblRydWUgZm9yS2V5OkAiTlNDQVZpZXdS
ZW5kZXJQYXVzZWQiXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
IHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRQYXVzZU5vdGlmaWNhdGlv
biIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
OnJvb3QgZm9yS2V5OkAibGF5ZXIiXV07Cit9CiAKLSAgICByZXR1cm4gTGF5ZXJUcmVlSG9zdENB
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6cmVz
dW1lUmVuZGVyaW5nKCkKK3sKKyAgICBDQUxheWVyKiByb290ID0gbV9yb290TGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKTsKKyAgICBbcm9vdCBzZXRWYWx1ZTooaWQpa0NGQm9vbGVhbkZhbHNlIGZvcktl
eTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUmVz
dW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3Q6cm9vdCBmb3JLZXk6QCJsYXllciJdXTsKIH0KIAogdm9pZCBMYXllclRy
ZWVIb3N0TWFjOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0
aW5nTW9kZSkKQEAgLTE2OCwxMCArMjI0LDE0MiBAQCB2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNl
dExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogI2Vu
ZGlmCiAgICAgfQogCi0gICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIocm9v
dExheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5z
ZXRSb290TGF5ZXIobV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgbV9sYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCk7
CiAKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAordm9pZCBMYXllclRyZWVIb3N0TWFj
Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBk
b3VibGUgdGltZSkKK3sKK30KKwordm9pZCBMYXllclRyZWVIb3N0TWFjOjpub3RpZnlGbHVzaFJl
cXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQoreworfQorCit2b2lkIExheWVy
VHJlZUhvc3RNYWM6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllciwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBpZiAoZ3JhcGhpY3NM
YXllciA9PSBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIpIHsKKyAgICAgICAgbV93ZWJQYWdl
LT5kcmF3UmVjdChncmFwaGljc0NvbnRleHQsIGNsaXBSZWN0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChncmFwaGljc0xheWVyID09IG1fcGFnZU92ZXJsYXlMYXllcikgewor
ICAgICAgICBtX3dlYlBhZ2UtPmRyYXdQYWdlT3ZlcmxheShncmFwaGljc0NvbnRleHQsIGNsaXBS
ZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworZmxvYXQgTGF5ZXJUcmVlSG9zdE1h
Yzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UtPmNv
cmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Cit9CisKK2Jvb2wgTGF5ZXJUcmVlSG9zdE1h
Yzo6Zmx1c2hMYXllcnMoKQoreworICAgIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6aW5pdGlhbGl6ZSgp
Cit7CisgICAgLy8gQ3JlYXRlIGEgcm9vdCBsYXllci4KKyAgICBtX3Jvb3RMYXllciA9IEdyYXBo
aWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCB0aGlzKTsKKyNpZm5kZWYg
TkRFQlVHCisgICAgbV9yb290TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3Qgcm9vdCBsYXll
ciIpOworI2VuZGlmCisgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Cisg
ICAgbV9yb290TGF5ZXItPnNldFNpemUobV93ZWJQYWdlLT5zaXplKCkpOworICAgIHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcm9vdExheWVyLmdldCgpKS0+cGxhdGZvcm1DQUxheWVy
KCktPnNldEdlb21ldHJ5RmxpcHBlZCh0cnVlKTsKKworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCB0
aGlzKTsKKyAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXIuZ2V0KCkpLT5zZXRBbGxvd1RpbGVkTGF5ZXIoZmFsc2UpOworI2lmbmRlZiBO
REVCVUcKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5hbWUoIkxheWVyVHJl
ZUhvc3Qgbm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOworI2VuZGlmCisgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyLT5zZXRDb250ZW50c09wYXF1ZShtX3dlYlBhZ2UtPmRyYXdzQmFja2dy
b3VuZCgpICYmICFtX3dlYlBhZ2UtPmRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkpOworICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShtX3dlYlBhZ2UtPnNpemUoKSk7
CisgICAgaWYgKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWRE
cmF3aW5nRW5hYmxlZCgpKQorICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNl
dEFjY2VsZXJhdGVzRHJhd2luZyh0cnVlKTsKKworICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZCht
X25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOworCisgICAgaWYgKG1fd2ViUGFnZS0+
aGFzUGFnZU92ZXJsYXkoKSkKKyAgICAgICAgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOworCisg
ICAgc3dpdGNoIChtX3dlYlBhZ2UtPmxheWVySG9zdGluZ01vZGUoKSkgeworICAgICAgICBjYXNl
IExheWVySG9zdGluZ01vZGVEZWZhdWx0OgorICAgICAgICAgICAgbV9sYXllckhvc3RpbmdDb250
ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSk7CisgICAgICAgICAgICBicmVhazsK
KyNpZiBIQVZFKExBWUVSX0hPU1RJTkdfSU5fV0lORE9XX1NFUlZFUikKKyAgICAgICAgY2FzZSBM
YXllckhvc3RpbmdNb2RlSW5XaW5kb3dTZXJ2ZXI6CisgICAgICAgICAgICBtX2xheWVySG9zdGlu
Z0NvbnRleHQgPSBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JXaW5kb3dTZXJ2ZXIoKTsK
KyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgfQorCisgICAgbV9sYXllckhvc3RpbmdD
b250ZXh0LT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAg
bV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29u
dGV4dElEKCk7CisKKyAgICBzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoIW1fd2ViUGFn
ZS0+ZHJhd2luZ0FyZWEoKSB8fCAhbV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVT
dGF0ZUlzRnJvemVuKCkpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIExh
eWVyVHJlZUhvc3RNYWM6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCkKK3sKKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxMYXllclRyZWVIb3N0TWFjPiBwcm90ZWN0KHRoaXMpOworICAgICAgICBt
X3dlYlBhZ2UtPmxheW91dElmTmVlZGVkKCk7CisKKyAgICAgICAgaWYgKCFtX2lzVmFsaWQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVs
ZWRMYXllckZsdXNoKSB7CisgICAgICAgIC8vIExldCB0aGUgZHJhd2luZyBhcmVhIGtub3cgdGhh
dCB3ZSd2ZSBkb25lIGEgZmx1c2ggb2YgdGhlIGxheWVyIGNoYW5nZXMuCisgICAgICAgIHN0YXRp
Y19jYXN0PERyYXdpbmdBcmVhSW1wbCo+KG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKSktPmxheWVy
SG9zdERpZEZsdXNoTGF5ZXJzKCk7CisgICAgICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXll
ckZsdXNoID0gZmFsc2U7CisgICAgfQorfQorCitib29sIExheWVyVHJlZUhvc3RNYWM6OmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcygpCit7CisgICAgaWYgKG1fbGF5ZXJGbHVzaFNjaGVkdWxlci5p
c1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3Jvb3RMYXllci0+
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworICAgIG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgp
OworICAgIGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIpCisgICAgICAgIG1fcGFnZU92ZXJsYXlMYXll
ci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworCisgICAgcmV0dXJu
IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1h
Yzo6Y3JlYXRlUGFnZU92ZXJsYXlMYXllcigpCit7CisgICAgQVNTRVJUKCFtX3BhZ2VPdmVybGF5
TGF5ZXIpOworCisgICAgbV9wYWdlT3ZlcmxheUxheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRl
KGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksIHRoaXMpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX3Bh
Z2VPdmVybGF5TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3QgcGFnZSBvdmVybGF5IGNvbnRl
bnQiKTsKKyNlbmRpZgorCisgICAgbV9wYWdlT3ZlcmxheUxheWVyLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7CisgICAgbV9wYWdlT3ZlcmxheUxheWVyLT5zZXRTaXplKG1fd2ViUGFnZS0+c2l6ZSgp
KTsKKworICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX3BhZ2VPdmVybGF5TGF5ZXIuZ2V0KCkp
OworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OmRlc3Ryb3lQYWdlT3ZlcmxheUxheWVyKCkK
K3sKKyAgICBBU1NFUlQobV9wYWdlT3ZlcmxheUxheWVyKTsKKyAgICBtX3BhZ2VPdmVybGF5TGF5
ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICBtX3BhZ2VPdmVybGF5TGF5ZXIgPSBudWxscHRy
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>