<?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>155489</bug_id>
          
          <creation_ts>2016-03-15 03:54:38 -0700</creation_ts>
          <short_desc>[css-grid] Rename GridCoordinate to GridArea</short_desc>
          <delta_ts>2016-03-15 08:10:00 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>153488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Manuel Rego Casasnovas">rego</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfernandez</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1174954</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2016-03-15 03:54:38 -0700</bug_when>
    <thetext>Another refactoring on grid placement code.

This is a port of:
https://codereview.chromium.org/1648333002/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174956</commentid>
    <comment_count>1</comment_count>
      <attachid>274086</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2016-03-15 03:58:20 -0700</bug_when>
    <thetext>Created attachment 274086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174968</commentid>
    <comment_count>2</comment_count>
      <attachid>274086</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-03-15 07:08:57 -0700</bug_when>
    <thetext>Comment on attachment 274086
Patch

Nice. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174973</commentid>
    <comment_count>3</comment_count>
      <attachid>274086</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-15 08:09:56 -0700</bug_when>
    <thetext>Comment on attachment 274086
Patch

Clearing flags on attachment: 274086

Committed r198210: &lt;http://trac.webkit.org/changeset/198210&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174974</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-15 08:10:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274086</attachid>
            <date>2016-03-15 03:58:20 -0700</date>
            <delta_ts>2016-03-15 08:09:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155489-20160315115808.patch</filename>
            <type>text/plain</type>
            <size>40300</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI3NjhkY2VjZDRhMzI1
YjZmNGNjNjJhNWEzZjA5OTIwNmU0NTUyZC4uYWY0MTI4ZjIwMjU4ZGUyYjM0YjU2MzQ1ZDFiMTk2
OWFjNmE0NjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDE2LTAzLTE1ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCisgICAgICAgIFtjc3MtZ3Jp
ZF0gUmVuYW1lIEdyaWRDb29yZGluYXRlIHRvIEdyaWRBcmVhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0ODkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyB0aGUgY29tbWVudCBpbiBHcmlkQ29vcmRp
bmF0ZSBzdGF0ZXMsCisgICAgICAgIGl0IGFjdHVhbGx5IHJlcHJlc2VudHMgYSBncmlkIGFyZWEg
YXMgaXQgc3RvcmVzCisgICAgICAgIHRoZSBpbml0aWFsIGFuZCBmaW5hbCBwb3NpdGlvbnMgaW4g
Ym90aCBheGlzIChjb2x1bW5zIGFuZCByb3dzKS4KKworICAgICAgICBTb21lb25lIGNhbiB0aGlu
ayBhYm91dCBhIGdyaWQgY29vcmRpbmF0ZSBqdXN0IGxpa2UgYSBzaW5nbGUgY2VsbC4KKyAgICAg
ICAgSG93ZXZlciB0aGlzIGNsYXNzIHdhcyByZXByZXNlbnRpbmcgYW4gYXJlYSBvZiBzZXZlcmFs
IGNlbGxzLgorCisgICAgICAgIE9uIHRvcCBvZiB0aGF0IHRoZSAiZ3JpZCBhcmVhIiBjb25jZXB0
IGlzIGRlZmluZWQgaW4gdGhlIHNwZWM6CisgICAgICAgIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtZ3JpZC8jZ3JpZC1hcmVhLWNvbmNlcHQKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5v
IGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQb3NpdGlvbik6CisgICAgICAgICogY3NzL0NT
U0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyk6
CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6bmV4
dEVtcHR5R3JpZEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6aW5zZXJ0SXRl
bUludG9HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdy
aWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNyZWF0ZUVt
cHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3Jp
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjbGVhckdyaWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6Y2FjaGVkR3JpZEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y2FjaGVkR3JpZFNwYW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJH
cmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRTcGFuOjp1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRTcGFuOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRT
cGFuOjppbnRlZ2VyU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6dW50cmFuc2xh
dGVkUmVzb2x2ZWRJbml0aWFsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46
OnVudHJhbnNsYXRlZFJlc29sdmVkRmluYWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkU3Bhbjo6cmVzb2x2ZWRJbml0aWFsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFNwYW46OnJlc29sdmVkRmluYWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bh
bjo6R3JpZFNwYW5JdGVyYXRvcjo6R3JpZFNwYW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmlkU3Bhbjo6R3JpZFNwYW5JdGVyYXRvcjo6b3BlcmF0b3IgdW5zaWduZWQmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRTcGFuOjpHcmlkU3Bhbkl0ZXJhdG9yOjpvcGVyYXRvciopOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRT
cGFuOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OmlzVHJhbnNsYXRlZERlZmlu
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjppc0luZGVmaW5pdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
U3Bhbjo6R3JpZFNwYW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEFyZWE6OkdyaWRBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyaWRBcmVhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRBcmVhOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVH
cmlkRGF0YS5oOgorCisyMDE2LTAzLTE1ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0Bp
Z2FsaWEuY29tPgorCiAgICAgICAgIFtjc3MtZ3JpZF0gUmVuYW1lIEdyaWRSZXNvbHZlZFBvc2l0
aW9uIHRvIEdyaWRQb3NpdGlvbnNSZXNvbHZlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDg2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmOWQzMzFiZGM1MGZlMzE4MGVmZjU5
N2RlYTU2OGM4NjEyZjFkNjNkLi5hMTJhOTc4ZDBjN2Q3Nzk5NDAyMWU5NDZlZTU3YjkzNmNlN2Q5
NjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC02MDM5LDcgKzYwMzksNyBAQAogCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIg
LyogU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDNBNDk1OTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggKi87IH07
CiAJCUNEM0E0OTY0MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTVCMTdBOUQw
MUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmNwcCAqLzsgfTsKIAkJQ0QzQTQ5NjUxN0E5
RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3Vy
Y2VCdWZmZXJMaXN0LmggKi87IH07Ci0JCUNEM0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlk
Q29vcmRpbmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdyaWRDb29yZGluYXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QzRTI1MUMxODA0NkIw
NjAwRTI3RjU2IC8qIEdyaWRBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDNFMjUyMzE4
MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUyMTE4MDQ2QkNEMDBF
MjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHAgKi87IH07CiAJCUNEM0UyNTI0
MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNFMjUyMjE4MDQ2QkNEMDBF
MjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovOyB9OwogCQlDRDRBQzUyQTE0
OTZBRTlBMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDRBQzUyODE0OTZBRTJGMDA4N0M0
RUYgLyogQ29tcG9zaXRlLndhdiAqLzsgfTsKQEAgLTE0MDExLDcgKzE0MDExLDcgQEAKIAkJQ0Qz
QTQ5NUIxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlQnVmZmVyTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTVDMTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VC
dWZmZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUJ1ZmZl
ckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzQTQ5NUQxN0E5RDAxQjAw
Mjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNv
dXJjZUJ1ZmZlckxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDNFMjUx
QjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JpZENvb3JkaW5hdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0QzRTI1MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdyaWRBcmVhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyaWRBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNFMjUy
MjE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENDA5N0ZGMUE4Qzg1NUYwMDRDNjVFOSAvKiBD
Rk5TVVJMQ29ubmVjdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
Rk5TVVJMQ29ubmVjdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI1
NjAsNyArMjI1NjAsNyBAQAogCQkJCUJDMjI3NDZFMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVm
LmggKi8sCiAJCQkJQkM1RUI2OUMwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5jcHAgKi8s
CiAJCQkJQkM1RUI2OUQwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oICovLAotCQkJCUNE
M0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovLAorCQkJCUNEM0Uy
NTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQXJlYS5oICovLAogCQkJCUNERUY0RkQ2MTdFODVD
OEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggKi8sCiAJCQkJQTEyNzA1QzIxNjU2QkQ2NTAwQzJF
MjdDIC8qIEdyaWRQb3NpdGlvbi5oICovLAogCQkJCUNERjc0ODNDMThGRUJDRUMwMDA2RUNDMCAv
KiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwICovLApAQCAtMjYxNDYsNyArMjYxNDYsNyBAQAog
CQkJCUNFQzMzN0FGMUE0NjA4NkQwMDlCODUyMyAvKiBHcmFwaGljc1NlcnZpY2VzU1BJLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkEwMTVBQjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzdBMTdBN0IxMkYyODkwQjAwNEUwMkY2IC8qIEdyYXBo
aWNzVHlwZXMzRC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0QzRTI1MUMxODA0NkIwNjAwRTI3RjU2
IC8qIEdyaWRDb29yZGluYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDNFMjUxQzE4MDQ2QjA2
MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERUY0RkQ3MTdFODVD
OEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI3MDVDMzE2
NTZCRDY1MDBDMkUyN0MgLyogR3JpZFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY3
NDgzRjE4RkVCQ0VDMDAwNkVDQzAgLyogR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVBcmVh
c1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVl
LmNwcAppbmRleCBkMjcyYjczYWQyNzdmNTU4OGU0MTI3MDkwZWFiYzQyODMzYzdiYmM3Li42M2Y2
Njk3MmRmZWY4NjMyOTRjNjUxZTIxNzk1YmZlY2NlMTY5YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCi0jaW5jbHVkZSAiR3JpZENvb3JkaW5h
dGUuaCIKKyNpbmNsdWRlICJHcmlkQXJlYS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsMTQgKzU0LDE0IEBAIHN0YXRp
YyBTdHJpbmcgc3RyaW5nRm9yUG9zaXRpb24oY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFy
ZWFNYXAsIHNpemVfdCByb3csCiAgICAgVmVjdG9yPFN0cmluZz4gY2FuZGlkYXRlczsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgaXQgOiBncmlkQXJlYU1hcCkgewotICAgICAgICBjb25zdCBHcmlk
Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSA9IGl0LnZhbHVlOwotICAgICAgICBpZiAocm93ID49IGNv
b3JkaW5hdGUucm93cy5yZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpICYmIHJvdyA8IGNvb3JkaW5h
dGUucm93cy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSkKKyAgICAgICAgY29uc3QgR3JpZEFyZWEm
IGFyZWEgPSBpdC52YWx1ZTsKKyAgICAgICAgaWYgKHJvdyA+PSBhcmVhLnJvd3MucmVzb2x2ZWRJ
bml0aWFsUG9zaXRpb24oKSAmJiByb3cgPCBhcmVhLnJvd3MucmVzb2x2ZWRGaW5hbFBvc2l0aW9u
KCkpCiAgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChpdC5rZXkpOwogICAgIH0KIAogICAg
IGZvciAoY29uc3QgYXV0byYgaXQgOiBncmlkQXJlYU1hcCkgewotICAgICAgICBjb25zdCBHcmlk
Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSA9IGl0LnZhbHVlOwotICAgICAgICBpZiAoY29sdW1uID49
IGNvb3JkaW5hdGUuY29sdW1ucy5yZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpICYmIGNvbHVtbiA8
IGNvb3JkaW5hdGUuY29sdW1ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSAmJiBjYW5kaWRhdGVz
LmNvbnRhaW5zKGl0LmtleSkpCisgICAgICAgIGNvbnN0IEdyaWRBcmVhJiBhcmVhID0gaXQudmFs
dWU7CisgICAgICAgIGlmIChjb2x1bW4gPj0gYXJlYS5jb2x1bW5zLnJlc29sdmVkSW5pdGlhbFBv
c2l0aW9uKCkgJiYgY29sdW1uIDwgYXJlYS5jb2x1bW5zLnJlc29sdmVkRmluYWxQb3NpdGlvbigp
ICYmIGNhbmRpZGF0ZXMuY29udGFpbnMoaXQua2V5KSkKICAgICAgICAgICAgIHJldHVybiBpdC5r
ZXk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBs
YXRlQXJlYXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFz
VmFsdWUuaAppbmRleCAxZDk3NTEzMGY5MWYwYTA1NGUxNzYxYmJkOWMxYjA1NDMwOGI4MDE1Li5m
NDMzNzE4ZGMyNGY0MThjZGY4YjkwOGM2ZjEwZDM1MWNmNjkyYThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmgKQEAgLTM1LDcgKzM1LDcgQEAK
ICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNp
bmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgorI2luY2x1ZGUgIkdyaWRBcmVhLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkODc4MzgyOTYz
M2EzNDcwZmQ5MzgzMzQyMWMyN2U0OThhNDFlOGUxLi40MGI4NDY5Mzg1M2EzNzQ5NWMxNjgyOWYw
NzhhYmY3ZDlhODU0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNzEsNyArNzEs
NyBAQAogI2luY2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdyaWRDb29yZGluYXRlLmgiCisjaW5j
bHVkZSAiR3JpZEFyZWEuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSGFzaFRvb2xzLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCkBAIC02MjQ5LDI0ICs2MjQ5
LDI0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzUm93KE5hbWVkR3Jp
ZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBjb25zdCB1CiAKICAgICAgICAgYXV0byBncmlkQXJlYUl0
ZXJhdG9yID0gZ3JpZEFyZWFNYXAuZmluZChncmlkQXJlYU5hbWUpOwogICAgICAgICBpZiAoZ3Jp
ZEFyZWFJdGVyYXRvciA9PSBncmlkQXJlYU1hcC5lbmQoKSkKLSAgICAgICAgICAgIGdyaWRBcmVh
TWFwLmFkZChncmlkQXJlYU5hbWUsIEdyaWRDb29yZGluYXRlKEdyaWRTcGFuOjp0cmFuc2xhdGVk
RGVmaW5pdGVHcmlkU3Bhbihyb3dDb3VudCwgcm93Q291bnQgKyAxKSwgR3JpZFNwYW46OnRyYW5z
bGF0ZWREZWZpbml0ZUdyaWRTcGFuKGN1cnJlbnRDb2x1bW4sIGxvb2tBaGVhZENvbHVtbikpKTsK
KyAgICAgICAgICAgIGdyaWRBcmVhTWFwLmFkZChncmlkQXJlYU5hbWUsIEdyaWRBcmVhKEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihyb3dDb3VudCwgcm93Q291bnQgKyAxKSwg
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGN1cnJlbnRDb2x1bW4sIGxvb2tB
aGVhZENvbHVtbikpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBHcmlkQ29vcmRpbmF0
ZSYgZ3JpZENvb3JkaW5hdGUgPSBncmlkQXJlYUl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAg
IEdyaWRBcmVhJiBncmlkQXJlYSA9IGdyaWRBcmVhSXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAg
ICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQgdGhlIGdyaWQgYXJlYSBpcyBh
IHNpbmdsZSBmaWxsZWQtaW4gcmVjdGFuZ2xlLgogICAgICAgICAgICAgLy8gMS4gVGhlIG5ldyBy
b3cgaXMgYWRqYWNlbnQgdG8gdGhlIHByZXZpb3VzbHkgcGFyc2VkIHJvdy4KLSAgICAgICAgICAg
IGlmIChyb3dDb3VudCAhPSBncmlkQ29vcmRpbmF0ZS5yb3dzLnJlc29sdmVkRmluYWxQb3NpdGlv
bigpKQorICAgICAgICAgICAgaWYgKHJvd0NvdW50ICE9IGdyaWRBcmVhLnJvd3MucmVzb2x2ZWRG
aW5hbFBvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
ICAgICAvLyAyLiBUaGUgbmV3IGFyZWEgc3RhcnRzIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGFzIHRo
ZSBwcmV2aW91c2x5IHBhcnNlZCBhcmVhLgotICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4g
IT0gZ3JpZENvb3JkaW5hdGUuY29sdW1ucy5yZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpKQorICAg
ICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gIT0gZ3JpZEFyZWEuY29sdW1ucy5yZXNvbHZlZElu
aXRpYWxQb3NpdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAgICAgLy8gMy4gVGhlIG5ldyBhcmVhIGVuZHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhl
IHByZXZpb3VzbHkgcGFyc2VkIGFyZWEuCi0gICAgICAgICAgICBpZiAobG9va0FoZWFkQ29sdW1u
ICE9IGdyaWRDb29yZGluYXRlLmNvbHVtbnMucmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCkpCisgICAg
ICAgICAgICBpZiAobG9va0FoZWFkQ29sdW1uICE9IGdyaWRBcmVhLmNvbHVtbnMucmVzb2x2ZWRG
aW5hbFBvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
ICAgICBncmlkQ29vcmRpbmF0ZS5yb3dzID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKGdyaWRDb29yZGluYXRlLnJvd3MucmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKSwgZ3Jp
ZENvb3JkaW5hdGUucm93cy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSArIDEpOworICAgICAgICAg
ICAgZ3JpZEFyZWEucm93cyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihn
cmlkQXJlYS5yb3dzLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uKCksIGdyaWRBcmVhLnJvd3MucmVz
b2x2ZWRGaW5hbFBvc2l0aW9uKCkgKyAxKTsKICAgICAgICAgfQogICAgICAgICBjdXJyZW50Q29s
dW1uID0gbG9va0FoZWFkQ29sdW1uIC0gMTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5k
ZXggZmVmZjg0NDQ2OTUwNGIxNjg0NGVhM2ZlZWM4M2U5Yjk4OGVhYzI0NC4uOWEzZjVmODdmNGEw
ZGE0NWI0MTUzZDI1NjBmYzRkM2EzOTg1YWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAt
NDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiAjaWYg
RU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSNpbmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgorI2lu
Y2x1ZGUgIkdyaWRBcmVhLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDRmODc0YTEzZTg2OGU0MTM4NjBi
YWE0ODM5ODcxZGUyZmEzZWRlZWQuLjU3ODhhMDFmZTJhYmQwNzFjNjAyZGY1ODVlZGM1MjQyNjAw
MjEzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTI5LDcg
KzI5LDcgQEAKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAKLSNpbmNsdWRlICJHcmlk
Q29vcmRpbmF0ZS5oIgorI2luY2x1ZGUgIkdyaWRBcmVhLmgiCiAjaW5jbHVkZSAiR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyTGF5ZXIuaCIKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4gbmV4
dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdU
cmFja1NwYW4pCisgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBuZXh0RW1wdHlHcmlkQXJl
YSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3BhbikKICAg
ICB7CiAgICAgICAgIEFTU0VSVChmaXhlZFRyYWNrU3BhbiA+PSAxICYmIHZhcnlpbmdUcmFja1Nw
YW4gPj0gMSk7CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAgICAgICAgZm9yICg7IHZh
cnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJ
bmRleCkgewogICAgICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5vdWdoKHJvd1NwYW4sIGNvbHVt
blNwYW4pKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRDb29yZGluYXRl
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRDb29yZGluYXRlPihHcmlkU3Bhbjo6dHJh
bnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4p
LCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9j
b2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JpZEFyZWE+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFu
Ojp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93
U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4
LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgICAgIC8vIEFkdmFu
Y2UgdGhlIGl0ZXJhdG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlcmUgd2Ugd291bGQg
cmV0dXJuIHRoZSBzYW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVyLgogICAgICAgICAgICAgICAg
ICsrdmFyeWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTExMzksMTMgKzExMzksMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjplbnN1cmVHcmlkU2l6ZSh1bnNp
Z25lZCBtYXhpbXVtUm93U2l6ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblMKICAgICB9CiB9CiAK
LXZvaWQgUmVuZGVyR3JpZDo6aW5zZXJ0SXRlbUludG9HcmlkKFJlbmRlckJveCYgY2hpbGQsIGNv
bnN0IEdyaWRDb29yZGluYXRlJiBjb29yZGluYXRlKQordm9pZCBSZW5kZXJHcmlkOjppbnNlcnRJ
dGVtSW50b0dyaWQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QgR3JpZEFyZWEmIGFyZWEpCiB7Ci0g
ICAgQVNTRVJUKGNvb3JkaW5hdGUucm93cy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgpICYmIGNvb3Jk
aW5hdGUuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsKLSAgICBlbnN1cmVHcmlkU2l6
ZShjb29yZGluYXRlLnJvd3MucmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCksIGNvb3JkaW5hdGUuY29s
dW1ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSk7CisgICAgQVNTRVJUKGFyZWEucm93cy5pc1Ry
YW5zbGF0ZWREZWZpbml0ZSgpICYmIGFyZWEuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgp
KTsKKyAgICBlbnN1cmVHcmlkU2l6ZShhcmVhLnJvd3MucmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCks
IGFyZWEuY29sdW1ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSk7CiAKLSAgICBmb3IgKGF1dG8g
cm93IDogY29vcmRpbmF0ZS5yb3dzKSB7Ci0gICAgICAgIGZvciAoYXV0byBjb2x1bW4gOiBjb29y
ZGluYXRlLmNvbHVtbnMpCisgICAgZm9yIChhdXRvIHJvdyA6IGFyZWEucm93cykgeworICAgICAg
ICBmb3IgKGF1dG8gY29sdW1uIDogYXJlYS5jb2x1bW5zKQogICAgICAgICAgICAgbV9ncmlkW3Jv
d11bY29sdW1uXS5hcHBlbmQoJmNoaWxkKTsKICAgICB9CiB9CkBAIC0xMTUzLDcgKzExNTMsNyBA
QCB2b2lkIFJlbmRlckdyaWQ6Omluc2VydEl0ZW1JbnRvR3JpZChSZW5kZXJCb3gmIGNoaWxkLCBj
b25zdCBHcmlkQ29vcmRpbmF0ZSYgY29vcgogdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25H
cmlkKCkKIHsKICAgICBBU1NFUlQoIWdyaWRXYXNQb3B1bGF0ZWQoKSk7Ci0gICAgQVNTRVJUKG1f
Z3JpZEl0ZW1Db29yZGluYXRlLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fZ3JpZEl0ZW1BcmVh
LmlzRW1wdHkoKSk7CiAKICAgICBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3Io
KTsKIApAQCAtMTE2MywyMyArMTE2MywyMyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNP
bkdyaWQoKQogICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgR3JpZENvb3JkaW5hdGUgY29vcmRpbmF0ZSA9
IGNhY2hlZEdyaWRDb29yZGluYXRlKCpjaGlsZCk7Ci0gICAgICAgIGlmICghY29vcmRpbmF0ZS5y
b3dzLmlzSW5kZWZpbml0ZSgpKQotICAgICAgICAgICAgY29vcmRpbmF0ZS5yb3dzLnRyYW5zbGF0
ZShzdGQ6OmFicyhtX3NtYWxsZXN0Um93U3RhcnQpKTsKLSAgICAgICAgaWYgKCFjb29yZGluYXRl
LmNvbHVtbnMuaXNJbmRlZmluaXRlKCkpCi0gICAgICAgICAgICBjb29yZGluYXRlLmNvbHVtbnMu
dHJhbnNsYXRlKHN0ZDo6YWJzKG1fc21hbGxlc3RDb2x1bW5TdGFydCkpOwotICAgICAgICBtX2dy
aWRJdGVtQ29vcmRpbmF0ZS5zZXQoY2hpbGQsIGNvb3JkaW5hdGUpOworICAgICAgICBHcmlkQXJl
YSBhcmVhID0gY2FjaGVkR3JpZEFyZWEoKmNoaWxkKTsKKyAgICAgICAgaWYgKCFhcmVhLnJvd3Mu
aXNJbmRlZmluaXRlKCkpCisgICAgICAgICAgICBhcmVhLnJvd3MudHJhbnNsYXRlKHN0ZDo6YWJz
KG1fc21hbGxlc3RSb3dTdGFydCkpOworICAgICAgICBpZiAoIWFyZWEuY29sdW1ucy5pc0luZGVm
aW5pdGUoKSkKKyAgICAgICAgICAgIGFyZWEuY29sdW1ucy50cmFuc2xhdGUoc3RkOjphYnMobV9z
bWFsbGVzdENvbHVtblN0YXJ0KSk7CisgICAgICAgIG1fZ3JpZEl0ZW1BcmVhLnNldChjaGlsZCwg
YXJlYSk7CiAKLSAgICAgICAgaWYgKGNvb3JkaW5hdGUucm93cy5pc0luZGVmaW5pdGUoKSB8fCBj
b29yZGluYXRlLmNvbHVtbnMuaXNJbmRlZmluaXRlKCkpIHsKKyAgICAgICAgaWYgKGFyZWEucm93
cy5pc0luZGVmaW5pdGUoKSB8fCBhcmVhLmNvbHVtbnMuaXNJbmRlZmluaXRlKCkpIHsKICAgICAg
ICAgICAgIGJvb2wgbWFqb3JBeGlzRGlyZWN0aW9uSXNGb3JDb2x1bW5zID0gYXV0b1BsYWNlbWVu
dE1ham9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnM7Ci0gICAgICAgICAgICBpZiAoKG1h
am9yQXhpc0RpcmVjdGlvbklzRm9yQ29sdW1ucyAmJiBjb29yZGluYXRlLmNvbHVtbnMuaXNJbmRl
ZmluaXRlKCkpCi0gICAgICAgICAgICAgICAgfHwgKCFtYWpvckF4aXNEaXJlY3Rpb25Jc0ZvckNv
bHVtbnMgJiYgY29vcmRpbmF0ZS5yb3dzLmlzSW5kZWZpbml0ZSgpKSkKKyAgICAgICAgICAgIGlm
ICgobWFqb3JBeGlzRGlyZWN0aW9uSXNGb3JDb2x1bW5zICYmIGFyZWEuY29sdW1ucy5pc0luZGVm
aW5pdGUoKSkKKyAgICAgICAgICAgICAgICB8fCAoIW1ham9yQXhpc0RpcmVjdGlvbklzRm9yQ29s
dW1ucyAmJiBhcmVhLnJvd3MuaXNJbmRlZmluaXRlKCkpKQogICAgICAgICAgICAgICAgIGF1dG9N
YWpvckF4aXNBdXRvR3JpZEl0ZW1zLmFwcGVuZChjaGlsZCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgc3BlY2lmaWVkTWFqb3JBeGlzQXV0b0dyaWRJdGVtcy5hcHBlbmQoY2hp
bGQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaW5zZXJ0SXRl
bUludG9HcmlkKCpjaGlsZCwgR3JpZENvb3JkaW5hdGUoY29vcmRpbmF0ZS5yb3dzLCBjb29yZGlu
YXRlLmNvbHVtbnMpKTsKKyAgICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKCpjaGlsZCwgR3JpZEFy
ZWEoYXJlYS5yb3dzLCBhcmVhLmNvbHVtbnMpKTsKICAgICB9CiAKICAgICBBU1NFUlQoZ3JpZFJv
d0NvdW50KCkgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChz
dHlsZSgpKSk7CkBAIC0xMTkzLDggKzExOTMsOCBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRl
bXNPbkdyaWQoKQogICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgR3JpZENvb3JkaW5hdGUgY29vcmRpbmF0
ZSA9IGNhY2hlZEdyaWRDb29yZGluYXRlKCpjaGlsZCk7Ci0gICAgICAgIEFTU0VSVChjb29yZGlu
YXRlLnJvd3MuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSAmJiBjb29yZGluYXRlLmNvbHVtbnMuaXNU
cmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEdyaWRBcmVhIGFyZWEgPSBjYWNoZWRHcmlk
QXJlYSgqY2hpbGQpOworICAgICAgICBBU1NFUlQoYXJlYS5yb3dzLmlzVHJhbnNsYXRlZERlZmlu
aXRlKCkgJiYgYXJlYS5jb2x1bW5zLmlzVHJhbnNsYXRlZERlZmluaXRlKCkpOwogICAgIH0KICNl
bmRpZgogfQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4
cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKQogICAgICAgICAgICAgbWF4aW11bUNvbHVtbklu
ZGV4ID0gc3RkOjptYXgobWF4aW11bUNvbHVtbkluZGV4LCBzcGFuU2l6ZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBtX2dyaWRJdGVtQ29vcmRpbmF0ZS5zZXQoY2hpbGQsIEdyaWRDb29yZGluYXRl
KHJvd1Bvc2l0aW9ucywgY29sdW1uUG9zaXRpb25zKSk7CisgICAgICAgIG1fZ3JpZEl0ZW1BcmVh
LnNldChjaGlsZCwgR3JpZEFyZWEocm93UG9zaXRpb25zLCBjb2x1bW5Qb3NpdGlvbnMpKTsKICAg
ICB9CiAKICAgICBtX2dyaWQuZ3JvdyhtYXhpbXVtUm93SW5kZXggKyBzdGQ6OmFicyhtX3NtYWxs
ZXN0Um93U3RhcnQpKTsKQEAgLTEyNDAsMTMgKzEyNDAsMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpw
b3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKQogICAgICAgICBjb2x1bW4uZ3Jv
dyhtYXhpbXVtQ29sdW1uSW5kZXggKyBzdGQ6OmFicyhtX3NtYWxsZXN0Q29sdW1uU3RhcnQpKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRDb29yZGluYXRlPiBSZW5kZXJHcmlkOjpjcmVhdGVF
bXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChjb25zdCBSZW5kZXJC
b3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9u
LCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPEdyaWRBcmVhPiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQ
b3NpdGlvbnNPdXRzaWRlR3JpZChjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lm
aWVkUG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjcm9z
c0RpcmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gRm9yUm93cyA6
IEZvckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9IGNy
b3NzRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBncmlkQ29sdW1uQ291bnQoKSA6IGdyaWRSb3dD
b3VudCgpOwogICAgIHVuc2lnbmVkIGNyb3NzRGlyZWN0aW9uU3BhblNpemUgPSBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oc3R5bGUoKSwgZ3JpZEl0ZW0s
IGNyb3NzRGlyZWN0aW9uKTsKICAgICBHcmlkU3BhbiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA9
IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihlbmRPZkNyb3NzRGlyZWN0aW9u
LCBlbmRPZkNyb3NzRGlyZWN0aW9uICsgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZENvb3JkaW5hdGU+KHNwZWNpZmllZERpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlv
bnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25z
IDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0
aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25z
KTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25H
cmlkKGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgYXV0b0dyaWRJdGVtcykKQEAgLTEyNjcsMTEg
KzEyNjcsMTEgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1z
T25HcmlkKGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgYXUKICAgICAgICAgdW5zaWduZWQgbWFq
b3JBeGlzSW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRpb25zLnJlc29sdmVkSW5pdGlh
bFBvc2l0aW9uKCk7CiAKICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgYXV0
b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMucmVzb2x2
ZWRJbml0aWFsUG9zaXRpb24oKSwgaXNHcmlkQXV0b0Zsb3dEZW5zZSA/IDAgOiBtaW5vckF4aXND
dXJzb3JzLmdldChtYWpvckF4aXNJbml0aWFsUG9zaXRpb24pKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEdyaWRDb29yZGluYXRlPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5
R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5T
aXplKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhID0g
aXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFu
KCksIG1pbm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAg
ICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBv
c2l0aW9uc091dHNpZGVHcmlkKCphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNE
aXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIAotICAgICAgICBtX2dyaWRJdGVtQ29v
cmRpbmF0ZS5zZXQoYXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJlYSk7CisgICAgICAgIG1fZ3Jp
ZEl0ZW1BcmVhLnNldChhdXRvR3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKICAgICAgICAgaW5z
ZXJ0SXRlbUludG9HcmlkKCphdXRvR3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKIAogICAgICAg
ICBpZiAoIWlzR3JpZEF1dG9GbG93RGVuc2UpCkBAIC0xMzAzLDcgKzEzMDMsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94JiBncmlkSXRl
bSwgQXV0b1BsYWNlbWVudAogICAgIHVuc2lnbmVkIG1ham9yQXhpc0F1dG9QbGFjZW1lbnRDdXJz
b3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1
dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kIDogYXV0b1BsYWNlbWVudEN1cnNvci5maXJzdDsKICAg
ICB1bnNpZ25lZCBtaW5vckF4aXNBdXRvUGxhY2VtZW50Q3Vyc29yID0gYXV0b1BsYWNlbWVudE1h
am9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMgPyBhdXRvUGxhY2VtZW50Q3Vyc29yLmZp
cnN0IDogYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
R3JpZENvb3JkaW5hdGU+IGVtcHR5R3JpZEFyZWE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1pbm9yQXhpc1Bvc2l0aW9ucyA9IGNh
Y2hlZEdyaWRTcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkp
OwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSkgewog
ICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNrIGluIG1ham9yIGF4aXMgaWYgaW5pdGlh
bCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9yZSBhdXRvLXBsYWNlbWVudCBjdXJzb3Iu
CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhp
c0l0ZW1PbkdyaWQoUmVuZGVyQm94JiBncmlkSXRlbSwgQXV0b1BsYWNlbWVudAogICAgICAgICAg
ICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9u
c091dHNpZGVHcmlkKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCks
IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbigwLCBtaW5vckF4aXNTcGFuU2l6
ZSkpOwogICAgIH0KIAotICAgIG1fZ3JpZEl0ZW1Db29yZGluYXRlLnNldCgmZ3JpZEl0ZW0sICpl
bXB0eUdyaWRBcmVhKTsKKyAgICBtX2dyaWRJdGVtQXJlYS5zZXQoJmdyaWRJdGVtLCAqZW1wdHlH
cmlkQXJlYSk7CiAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGdyaWRJdGVtLCAqZW1wdHlHcmlkQXJl
YSk7CiAgICAgYXV0b1BsYWNlbWVudEN1cnNvci5maXJzdCA9IGVtcHR5R3JpZEFyZWEtPnJvd3Mu
cmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKTsKICAgICBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29u
ZCA9IGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMucmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKTsKQEAg
LTEzNjMsNyArMTM2Myw3IEBAIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBSZW5kZXJHcmlkOjph
dXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkgY29uc3QKIHZvaWQgUmVuZGVyR3JpZDo6
Y2xlYXJHcmlkKCkKIHsKICAgICBtX2dyaWQuY2xlYXIoKTsKLSAgICBtX2dyaWRJdGVtQ29vcmRp
bmF0ZS5jbGVhcigpOworICAgIG1fZ3JpZEl0ZW1BcmVhLmNsZWFyKCk7CiB9CiAKIHN0YXRpYyBj
b25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW9yR3JpZCgp
CkBAIC0xNTQyLDE2ICsxNTQyLDE2IEBAIHZvaWQgUmVuZGVyR3JpZDo6b2Zmc2V0QW5kQnJlYWR0
aEZvclBvc2l0aW9uZWRDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkCiAgICAgfQog
fQogCi1HcmlkQ29vcmRpbmF0ZSBSZW5kZXJHcmlkOjpjYWNoZWRHcmlkQ29vcmRpbmF0ZShjb25z
dCBSZW5kZXJCb3gmIGdyaWRJdGVtKSBjb25zdAorR3JpZEFyZWEgUmVuZGVyR3JpZDo6Y2FjaGVk
R3JpZEFyZWEoY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9ncmlkSXRlbUNvb3JkaW5hdGUuY29udGFpbnMoJmdyaWRJdGVtKSk7Ci0gICAgcmV0dXJuIG1f
Z3JpZEl0ZW1Db29yZGluYXRlLmdldCgmZ3JpZEl0ZW0pOworICAgIEFTU0VSVChtX2dyaWRJdGVt
QXJlYS5jb250YWlucygmZ3JpZEl0ZW0pKTsKKyAgICByZXR1cm4gbV9ncmlkSXRlbUFyZWEuZ2V0
KCZncmlkSXRlbSk7CiB9CiAKIEdyaWRTcGFuIFJlbmRlckdyaWQ6OmNhY2hlZEdyaWRTcGFuKGNv
bnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pIGNvbnN0CiB7Ci0gICAgR3JpZENvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IGNhY2hlZEdyaWRD
b29yZGluYXRlKGdyaWRJdGVtKTsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMg
PyBjb29yZGluYXRlLmNvbHVtbnMgOiBjb29yZGluYXRlLnJvd3M7CisgICAgR3JpZEFyZWEgYXJl
YSA9IGNhY2hlZEdyaWRBcmVhKGdyaWRJdGVtKTsKKyAgICByZXR1cm4gZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBhcmVhLmNvbHVtbnMgOiBhcmVhLnJvd3M7CiB9CiAKIExheW91dFVuaXQgUmVu
ZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgVmVjdG9yPEdyaWRUcmFj
az4mIHRyYWNrcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4
IDc1MjY0NWRmYTFjZGQ5NjQwOGU2ZmYzNTlhMjdhN2FhNGI3NDY1NzMuLjAxNGEwNDY2YzI0Y2Rk
NWI4NTU3NGRlZTViOTJhNTI0YzYyZTkzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEdyaWRDb29yZGluYXRlOworY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBHcmlkU3BhbjsKIGNsYXNz
IEdyaWRUcmFjazsKIGNsYXNzIEdyaWRJdGVtV2l0aFNwYW47CkBAIC03NywxMCArNzcsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9u
cyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRhJik7CiAKICAgICB2b2lk
IGVuc3VyZUdyaWRTaXplKHVuc2lnbmVkIG1heGltdW1Sb3dTaXplLCB1bnNpZ25lZCBtYXhpbXVt
Q29sdW1uU2l6ZSk7Ci0gICAgdm9pZCBpbnNlcnRJdGVtSW50b0dyaWQoUmVuZGVyQm94JiwgY29u
c3QgR3JpZENvb3JkaW5hdGUmKTsKKyAgICB2b2lkIGluc2VydEl0ZW1JbnRvR3JpZChSZW5kZXJC
b3gmLCBjb25zdCBHcmlkQXJlYSYpOwogICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZCgpOwogICAg
IHZvaWQgcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCk7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRDb29yZGluYXRlPiBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQ
b3NpdGlvbnNPdXRzaWRlR3JpZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIGNvbnN0IEdyaWRTcGFuJikgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChj
b25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFu
JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKGNv
bnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpOwogICAgIHZvaWQgcGxhY2VBdXRvTWFqb3JBeGlzSXRl
bXNPbkdyaWQoY29uc3QgVmVjdG9yPFJlbmRlckJveCo+Jik7CiAgICAgdHlwZWRlZiBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBdXRvUGxhY2VtZW50Q3Vyc29yOwpAQCAtMTQwLDcgKzE0
MCw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCByb3dBeGlzT2Zmc2V0Rm9yQ2hpbGQoY29u
c3QgUmVuZGVyQm94JikgY29uc3Q7CiAgICAgQ29udGVudEFsaWdubWVudERhdGEgY29tcHV0ZUNv
bnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1dGlvbk9mZnNldChHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24sIGNvbnN0IExheW91dFVuaXQmIGF2YWlsYWJsZUZyZWVTcGFjZSwgdW5zaWduZWQgbnVtYmVy
T2ZHcmlkVHJhY2tzKSBjb25zdDsKICAgICBMYXlvdXRQb2ludCBmaW5kQ2hpbGRMb2dpY2FsUG9z
aXRpb24oY29uc3QgUmVuZGVyQm94JikgY29uc3Q7Ci0gICAgR3JpZENvb3JkaW5hdGUgY2FjaGVk
R3JpZENvb3JkaW5hdGUoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CisgICAgR3JpZEFyZWEgY2Fj
aGVkR3JpZEFyZWEoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CiAgICAgR3JpZFNwYW4gY2FjaGVk
R3JpZFNwYW4oY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25z
dDsKIAogCkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VmVjdG9yPFZl
Y3RvcjxSZW5kZXJCb3gqLCAxPj4+IG1fZ3JpZDsKICAgICBWZWN0b3I8TGF5b3V0VW5pdD4gbV9j
b2x1bW5Qb3NpdGlvbnM7CiAgICAgVmVjdG9yPExheW91dFVuaXQ+IG1fcm93UG9zaXRpb25zOwot
ICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgR3JpZENvb3JkaW5hdGU+IG1fZ3JpZEl0ZW1D
b29yZGluYXRlOworICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgR3JpZEFyZWE+IG1fZ3Jp
ZEl0ZW1BcmVhOwogICAgIE9yZGVySXRlcmF0b3IgbV9vcmRlckl0ZXJhdG9yOwogCiAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gbV9taW5Db250ZW50SGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTgwNjNlMjdlZTcxZDE5ZjMxY2Ri
MTVlMTJlNjhlNmM1YmFmNTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCwgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR3JpZEFyZWFfaAorI2RlZmlu
ZSBHcmlkQXJlYV9oCisKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorCisjaW5jbHVkZSAi
R3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBS
ZWNvbW1lbmRlZCBtYXhpbXVtIHNpemUgZm9yIGJvdGggZXhwbGljaXQgYW5kIGltcGxpY2l0IGdy
aWRzLgorY29uc3QgaW50IGtHcmlkTWF4VHJhY2tzID0gMTAwMDAwMDsKKworLy8gQSBzcGFuIGlu
IGEgc2luZ2xlIGRpcmVjdGlvbiAoZWl0aGVyIHJvd3Mgb3IgY29sdW1ucykuIE5vdGUgdGhhdCB8
cmVzb2x2ZWRJbml0aWFsUG9zaXRpb258CisvLyBhbmQgfHJlc29sdmVkRmluYWxQb3NpdGlvbnwg
YXJlIGdyaWQgbGluZXMnIGluZGV4ZXMuCisvLyBJdGVyYXRpbmcgb3ZlciB0aGUgc3BhbiBzaG91
bGRuJ3QgaW5jbHVkZSB8cmVzb2x2ZWRGaW5hbFBvc2l0aW9ufCB0byBiZSBjb3JyZWN0LgorY2xh
c3MgR3JpZFNwYW4geworcHVibGljOgorCisgICAgc3RhdGljIEdyaWRTcGFuIHVudHJhbnNsYXRl
ZERlZmluaXRlR3JpZFNwYW4oaW50IHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLCBpbnQgcmVzb2x2
ZWRGaW5hbFBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHJlc29sdmVk
SW5pdGlhbFBvc2l0aW9uLCByZXNvbHZlZEZpbmFsUG9zaXRpb24sIFVudHJhbnNsYXRlZERlZmlu
aXRlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgR3JpZFNwYW4gdHJhbnNsYXRlZERlZmluaXRlR3Jp
ZFNwYW4odW5zaWduZWQgcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24sIHVuc2lnbmVkIHJlc29sdmVk
RmluYWxQb3NpdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBHcmlkU3BhbihyZXNvbHZlZElu
aXRpYWxQb3NpdGlvbiwgcmVzb2x2ZWRGaW5hbFBvc2l0aW9uLCBUcmFuc2xhdGVkRGVmaW5pdGUp
OworICAgIH0KKworICAgIHN0YXRpYyBHcmlkU3BhbiBpbmRlZmluaXRlR3JpZFNwYW4oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEdyaWRTcGFuKDAsIDEsIEluZGVmaW5pdGUpOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkU3BhbiYgbykgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3R5cGUgPT0gby5tX3R5cGUgJiYgbV9yZXNvbHZlZEluaXRpYWxQb3NpdGlv
biA9PSBvLm1fcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gJiYgbV9yZXNvbHZlZEZpbmFsUG9zaXRp
b24gPT0gby5tX3Jlc29sdmVkRmluYWxQb3NpdGlvbjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBp
bnRlZ2VyU3BhbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVm
aW5pdGUoKSk7CisgICAgICAgIHJldHVybiBtX3Jlc29sdmVkRmluYWxQb3NpdGlvbiAtIG1fcmVz
b2x2ZWRJbml0aWFsUG9zaXRpb247CisgICAgfQorCisgICAgaW50IHVudHJhbnNsYXRlZFJlc29s
dmVkSW5pdGlhbFBvc2l0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gVW50cmFuc2xhdGVkRGVmaW5pdGUpOworICAgICAgICByZXR1cm4gbV9yZXNvbHZlZEluaXRp
YWxQb3NpdGlvbjsKKyAgICB9CisKKyAgICBpbnQgdW50cmFuc2xhdGVkUmVzb2x2ZWRGaW5hbFBv
c2l0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW50cmFuc2xh
dGVkRGVmaW5pdGUpOworICAgICAgICByZXR1cm4gbV9yZXNvbHZlZEZpbmFsUG9zaXRpb247Cisg
ICAgfQorCisgICAgdW5zaWduZWQgcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzVHJhbnNsYXRlZERlZmluaXRlKCkpOworICAgICAgICBBU1NF
UlQobV9yZXNvbHZlZEZpbmFsUG9zaXRpb24gPj0gMCk7CisgICAgICAgIHJldHVybiBtX3Jlc29s
dmVkSW5pdGlhbFBvc2l0aW9uOworICAgIH0KKworICAgIHVuc2lnbmVkIHJlc29sdmVkRmluYWxQ
b3NpdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5p
dGUoKSk7CisgICAgICAgIEFTU0VSVChtX3Jlc29sdmVkRmluYWxQb3NpdGlvbiA+IDApOworICAg
ICAgICByZXR1cm4gbV9yZXNvbHZlZEZpbmFsUG9zaXRpb247CisgICAgfQorCisgICAgc3RydWN0
IEdyaWRTcGFuSXRlcmF0b3IgeworICAgICAgICBHcmlkU3Bhbkl0ZXJhdG9yKHVuc2lnbmVkIHZh
bHVlKQorICAgICAgICAgICAgOiB2YWx1ZSh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgb3BlcmF0b3IgdW5zaWduZWQmKCkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICAgICAg
dW5zaWduZWQgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KKworICAgICAgICB1
bnNpZ25lZCB2YWx1ZTsKKyAgICB9OworCisgICAgR3JpZFNwYW5JdGVyYXRvciBiZWdpbigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAg
ICAgIHJldHVybiBtX3Jlc29sdmVkSW5pdGlhbFBvc2l0aW9uOworICAgIH0KKworICAgIEdyaWRT
cGFuSXRlcmF0b3IgZW5kKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1RyYW5zbGF0
ZWREZWZpbml0ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uOwor
ICAgIH0KKworICAgIGJvb2wgaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGU7CisgICAgfQorCisgICAg
Ym9vbCBpc0luZGVmaW5pdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9
PSBJbmRlZmluaXRlOworICAgIH0KKworICAgIHZvaWQgdHJhbnNsYXRlKHVuc2lnbmVkIG9mZnNl
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW50cmFuc2xhdGVkRGVmaW5pdGUp
OworCisgICAgICAgIG1fdHlwZSA9IFRyYW5zbGF0ZWREZWZpbml0ZTsKKyAgICAgICAgbV9yZXNv
bHZlZEluaXRpYWxQb3NpdGlvbiArPSBvZmZzZXQ7CisgICAgICAgIG1fcmVzb2x2ZWRGaW5hbFBv
c2l0aW9uICs9IG9mZnNldDsKKworICAgICAgICBBU1NFUlQobV9yZXNvbHZlZEluaXRpYWxQb3Np
dGlvbiA+PSAwKTsKKyAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID4gMCk7
CisgICAgfQorCitwcml2YXRlOgorCisgICAgZW51bSBHcmlkU3BhblR5cGUge1VudHJhbnNsYXRl
ZERlZmluaXRlLCBUcmFuc2xhdGVkRGVmaW5pdGUsIEluZGVmaW5pdGV9OworCisgICAgR3JpZFNw
YW4oaW50IHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLCBpbnQgcmVzb2x2ZWRGaW5hbFBvc2l0aW9u
LCBHcmlkU3BhblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICB7CisjaWYg
RU5BQkxFKEFTU0VSVCkKKyAgICAgICAgQVNTRVJUKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uIDwg
cmVzb2x2ZWRGaW5hbFBvc2l0aW9uKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gVHJhbnNsYXRlZERl
ZmluaXRlKSB7CisgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gPj0g
MCk7CisgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZWRGaW5hbFBvc2l0aW9uID4gMCk7CisgICAg
ICAgIH0KKyNlbmRpZgorCisgICAgICAgIG1fcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gPSBzdGQ6
Om1heCgta0dyaWRNYXhUcmFja3MsIHN0ZDo6bWluKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLCBr
R3JpZE1heFRyYWNrcyAtIDEpKTsKKyAgICAgICAgbV9yZXNvbHZlZEZpbmFsUG9zaXRpb24gPSBz
dGQ6Om1heCgta0dyaWRNYXhUcmFja3MgKyAxLCBzdGQ6Om1pbihyZXNvbHZlZEZpbmFsUG9zaXRp
b24sIGtHcmlkTWF4VHJhY2tzKSk7CisgICAgfQorCisgICAgaW50IG1fcmVzb2x2ZWRJbml0aWFs
UG9zaXRpb247CisgICAgaW50IG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uOworICAgIEdyaWRTcGFu
VHlwZSBtX3R5cGU7CisKKworfTsKKworLy8gVGhpcyByZXByZXNlbnRzIGEgZ3JpZCBhcmVhIHRo
YXQgc3BhbnMgaW4gYm90aCByb3dzJyBhbmQgY29sdW1ucycgZGlyZWN0aW9uLgorY2xhc3MgR3Jp
ZEFyZWEgeworcHVibGljOgorICAgIC8vIEhhc2hNYXAgcmVxdWlyZXMgYSBkZWZhdWx0IGNvbnN0
dWN0b3IuCisgICAgR3JpZEFyZWEoKQorICAgICAgICA6IGNvbHVtbnMoR3JpZFNwYW46OmluZGVm
aW5pdGVHcmlkU3BhbigpKQorICAgICAgICAsIHJvd3MoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlk
U3BhbigpKQorICAgIHsKKyAgICB9CisKKyAgICBHcmlkQXJlYShjb25zdCBHcmlkU3BhbiYgciwg
Y29uc3QgR3JpZFNwYW4mIGMpCisgICAgICAgIDogY29sdW1ucyhjKQorICAgICAgICAsIHJvd3Mo
cikKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRBcmVhJiBv
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbHVtbnMgPT0gby5jb2x1bW5zICYmIHJv
d3MgPT0gby5yb3dzOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHcmlkQXJl
YSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgIH0K
KworICAgIEdyaWRTcGFuIGNvbHVtbnM7CisgICAgR3JpZFNwYW4gcm93czsKK307CisKK3R5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIEdyaWRBcmVhPiBOYW1lZEdyaWRBcmVhTWFwOworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvKiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLwor
CisjZW5kaWYgLy8gR3JpZEFyZWFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRDb29yZGluYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvR3JpZENvb3JkaW5hdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIwYTNm
OWRjMjNkMDYzY2Q3ZTU4OTFmOTdjZDczYjRiMzZhY2RlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZENvb3JkaW5hdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdyaWRDb29yZGluYXRlX2gK
LSNkZWZpbmUgR3JpZENvb3JkaW5hdGVfaAotCi0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
LQotI2luY2x1ZGUgIkdyaWRQb3NpdGlvbnNSZXNvbHZlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotLy8gUmVjb21tZW5kZWQgbWF4aW11bSBzaXplIGZvciBib3RoIGV4cGxpY2l0IGFu
ZCBpbXBsaWNpdCBncmlkcy4KLWNvbnN0IGludCBrR3JpZE1heFRyYWNrcyA9IDEwMDAwMDA7Ci0K
LS8vIEEgc3BhbiBpbiBhIHNpbmdsZSBkaXJlY3Rpb24gKGVpdGhlciByb3dzIG9yIGNvbHVtbnMp
LiBOb3RlIHRoYXQgfHJlc29sdmVkSW5pdGlhbFBvc2l0aW9ufAotLy8gYW5kIHxyZXNvbHZlZEZp
bmFsUG9zaXRpb258IGFyZSBncmlkIGxpbmVzJyBpbmRleGVzLgotLy8gSXRlcmF0aW5nIG92ZXIg
dGhlIHNwYW4gc2hvdWxkbid0IGluY2x1ZGUgfHJlc29sdmVkRmluYWxQb3NpdGlvbnwgdG8gYmUg
Y29ycmVjdC4KLWNsYXNzIEdyaWRTcGFuIHsKLXB1YmxpYzoKLQotICAgIHN0YXRpYyBHcmlkU3Bh
biB1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGludCByZXNvbHZlZEluaXRpYWxQb3NpdGlv
biwgaW50IHJlc29sdmVkRmluYWxQb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBHcmlk
U3BhbihyZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwgcmVzb2x2ZWRGaW5hbFBvc2l0aW9uLCBVbnRy
YW5zbGF0ZWREZWZpbml0ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIEdyaWRTcGFuIHRyYW5zbGF0
ZWREZWZpbml0ZUdyaWRTcGFuKHVuc2lnbmVkIHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLCB1bnNp
Z25lZCByZXNvbHZlZEZpbmFsUG9zaXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gR3JpZFNw
YW4ocmVzb2x2ZWRJbml0aWFsUG9zaXRpb24sIHJlc29sdmVkRmluYWxQb3NpdGlvbiwgVHJhbnNs
YXRlZERlZmluaXRlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgR3JpZFNwYW4gaW5kZWZpbml0ZUdy
aWRTcGFuKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBHcmlkU3BhbigwLCAxLCBJbmRlZmluaXRl
KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR3JpZFNwYW4mIG8pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV90eXBlID09IG8ubV90eXBlICYmIG1fcmVzb2x2ZWRJ
bml0aWFsUG9zaXRpb24gPT0gby5tX3Jlc29sdmVkSW5pdGlhbFBvc2l0aW9uICYmIG1fcmVzb2x2
ZWRGaW5hbFBvc2l0aW9uID09IG8ubV9yZXNvbHZlZEZpbmFsUG9zaXRpb247Ci0gICAgfQotCi0g
ICAgdW5zaWduZWQgaW50ZWdlclNwYW4oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlz
VHJhbnNsYXRlZERlZmluaXRlKCkpOwotICAgICAgICByZXR1cm4gbV9yZXNvbHZlZEZpbmFsUG9z
aXRpb24gLSBtX3Jlc29sdmVkSW5pdGlhbFBvc2l0aW9uOwotICAgIH0KLQotICAgIGludCB1bnRy
YW5zbGF0ZWRSZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQobV90eXBlID09IFVudHJhbnNsYXRlZERlZmluaXRlKTsKLSAgICAgICAgcmV0dXJuIG1f
cmVzb2x2ZWRJbml0aWFsUG9zaXRpb247Ci0gICAgfQotCi0gICAgaW50IHVudHJhbnNsYXRlZFJl
c29sdmVkRmluYWxQb3NpdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVudHJhbnNsYXRlZERlZmluaXRlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRGaW5h
bFBvc2l0aW9uOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHJlc29sdmVkSW5pdGlhbFBvc2l0aW9u
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsK
LSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID49IDApOwotICAgICAgICBy
ZXR1cm4gbV9yZXNvbHZlZEluaXRpYWxQb3NpdGlvbjsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBy
ZXNvbHZlZEZpbmFsUG9zaXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVHJh
bnNsYXRlZERlZmluaXRlKCkpOwotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZEZpbmFsUG9zaXRp
b24gPiAwKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uOwotICAgIH0K
LQotICAgIHN0cnVjdCBHcmlkU3Bhbkl0ZXJhdG9yIHsKLSAgICAgICAgR3JpZFNwYW5JdGVyYXRv
cih1bnNpZ25lZCB2YWx1ZSkKLSAgICAgICAgICAgIDogdmFsdWUodmFsdWUpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIG9wZXJhdG9yIHVuc2lnbmVkJigpIHsgcmV0dXJuIHZhbHVl
OyB9Ci0gICAgICAgIHVuc2lnbmVkIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9
Ci0KLSAgICAgICAgdW5zaWduZWQgdmFsdWU7Ci0gICAgfTsKLQotICAgIEdyaWRTcGFuSXRlcmF0
b3IgYmVnaW4oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVHJhbnNsYXRlZERlZmlu
aXRlKCkpOwotICAgICAgICByZXR1cm4gbV9yZXNvbHZlZEluaXRpYWxQb3NpdGlvbjsKLSAgICB9
Ci0KLSAgICBHcmlkU3Bhbkl0ZXJhdG9yIGVuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7Ci0gICAgICAgIHJldHVybiBtX3Jlc29sdmVkRmlu
YWxQb3NpdGlvbjsKLSAgICB9Ci0KLSAgICBib29sIGlzVHJhbnNsYXRlZERlZmluaXRlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHJhbnNsYXRlZERlZmluaXRlOwot
ICAgIH0KLQotICAgIGJvb2wgaXNJbmRlZmluaXRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3R5cGUgPT0gSW5kZWZpbml0ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYW5zbGF0ZSh1
bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFVudHJhbnNs
YXRlZERlZmluaXRlKTsKLQotICAgICAgICBtX3R5cGUgPSBUcmFuc2xhdGVkRGVmaW5pdGU7Ci0g
ICAgICAgIG1fcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gKz0gb2Zmc2V0OwotICAgICAgICBtX3Jl
c29sdmVkRmluYWxQb3NpdGlvbiArPSBvZmZzZXQ7Ci0KLSAgICAgICAgQVNTRVJUKG1fcmVzb2x2
ZWRJbml0aWFsUG9zaXRpb24gPj0gMCk7Ci0gICAgICAgIEFTU0VSVChtX3Jlc29sdmVkRmluYWxQ
b3NpdGlvbiA+IDApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGVudW0gR3JpZFNwYW5UeXBl
IHtVbnRyYW5zbGF0ZWREZWZpbml0ZSwgVHJhbnNsYXRlZERlZmluaXRlLCBJbmRlZmluaXRlfTsK
LQotICAgIEdyaWRTcGFuKGludCByZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwgaW50IHJlc29sdmVk
RmluYWxQb3NpdGlvbiwgR3JpZFNwYW5UeXBlIHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUp
Ci0gICAgewotI2lmIEVOQUJMRShBU1NFUlQpCi0gICAgICAgIEFTU0VSVChyZXNvbHZlZEluaXRp
YWxQb3NpdGlvbiA8IHJlc29sdmVkRmluYWxQb3NpdGlvbik7Ci0gICAgICAgIGlmICh0eXBlID09
IFRyYW5zbGF0ZWREZWZpbml0ZSkgewotICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVkSW5pdGlh
bFBvc2l0aW9uID49IDApOwotICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVkRmluYWxQb3NpdGlv
biA+IDApOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBtX3Jlc29sdmVkSW5pdGlhbFBv
c2l0aW9uID0gc3RkOjptYXgoLWtHcmlkTWF4VHJhY2tzLCBzdGQ6Om1pbihyZXNvbHZlZEluaXRp
YWxQb3NpdGlvbiwga0dyaWRNYXhUcmFja3MgLSAxKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRGaW5h
bFBvc2l0aW9uID0gc3RkOjptYXgoLWtHcmlkTWF4VHJhY2tzICsgMSwgc3RkOjptaW4ocmVzb2x2
ZWRGaW5hbFBvc2l0aW9uLCBrR3JpZE1heFRyYWNrcykpOwotICAgIH0KLQotICAgIGludCBtX3Jl
c29sdmVkSW5pdGlhbFBvc2l0aW9uOwotICAgIGludCBtX3Jlc29sdmVkRmluYWxQb3NpdGlvbjsK
LSAgICBHcmlkU3BhblR5cGUgbV90eXBlOwotCi0KLX07Ci0KLS8vIFRoaXMgcmVwcmVzZW50cyBh
IGdyaWQgYXJlYSB0aGF0IHNwYW5zIGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVjdGlv
bi4KLWNsYXNzIEdyaWRDb29yZGluYXRlIHsKLXB1YmxpYzoKLSAgICAvLyBIYXNoTWFwIHJlcXVp
cmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgotICAgIEdyaWRDb29yZGluYXRlKCkKLSAgICAgICAg
OiBjb2x1bW5zKEdyaWRTcGFuOjppbmRlZmluaXRlR3JpZFNwYW4oKSkKLSAgICAgICAgLCByb3dz
KEdyaWRTcGFuOjppbmRlZmluaXRlR3JpZFNwYW4oKSkKLSAgICB7Ci0gICAgfQotCi0gICAgR3Jp
ZENvb3JkaW5hdGUoY29uc3QgR3JpZFNwYW4mIHIsIGNvbnN0IEdyaWRTcGFuJiBjKQotICAgICAg
ICA6IGNvbHVtbnMoYykKLSAgICAgICAgLCByb3dzKHIpCi0gICAgewotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHcmlkQ29vcmRpbmF0ZSYgbykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBjb2x1bW5zID09IG8uY29sdW1ucyAmJiByb3dzID09IG8ucm93czsKLSAgICB9
Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JpZENvb3JkaW5hdGUmIG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9Ci0KLSAgICBHcmlkU3Bh
biBjb2x1bW5zOwotICAgIEdyaWRTcGFuIHJvd3M7Ci19OwotCi10eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBHcmlkQ29vcmRpbmF0ZT4gTmFtZWRHcmlkQXJlYU1hcDsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KLQotI2VuZGlm
IC8vIEdyaWRDb29yZGluYXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKaW5kZXggOTU3M2I2N2VjNjE0YjBk
MWMyYzc1MjhjZDdiODRiYTRmODljYWY5My4uOTBjNDZlYTJmODlmYzk0YWNlOTk1NDc4ZTg4NTJk
MTA1NWZlOTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVO
QUJMRShDU1NfR1JJRF9MQVlPVVQpCiAKLSNpbmNsdWRlICJHcmlkQ29vcmRpbmF0ZS5oIgorI2lu
Y2x1ZGUgIkdyaWRBcmVhLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSA8Y3N0
ZGxpYj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R3JpZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRh
LmgKaW5kZXggZDg5NWNkYWE3MjJiNWUyMzM5MjdlMDVmY2ZkMmMyOTUwNjFmZDAwZC4uN2UxNjMy
NWRjNzM3MGE5ODMwMzkzNTNjNjg0OGEyNDUxMGIyNjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogCi0jaW5jbHVkZSAiR3JpZENvb3JkaW5hdGUuaCIK
KyNpbmNsdWRlICJHcmlkQXJlYS5oIgogI2luY2x1ZGUgIkdyaWRUcmFja1NpemUuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>