<?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>222714</bug_id>
          
          <creation_ts>2021-03-04 00:31:32 -0800</creation_ts>
          <short_desc>[Nicosia] Move shared scrolling animation code into a ScrollingTreeScrollingNodeDelegate</short_desc>
          <delta_ts>2021-03-04 05:23:13 -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>Scrolling</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>222641</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735700</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-04 00:31:32 -0800</bug_when>
    <thetext>This will reduce code duplication and make things a bit more like the Mac port. It also prepares for the implementation of scroll snap for Nicosia asynchronous scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735729</commentid>
    <comment_count>1</comment_count>
      <attachid>422197</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-04 01:22:46 -0800</bug_when>
    <thetext>Created attachment 422197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735733</commentid>
    <comment_count>2</comment_count>
      <attachid>422199</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-04 01:31:28 -0800</bug_when>
    <thetext>Created attachment 422199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735748</commentid>
    <comment_count>3</comment_count>
      <attachid>422204</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-04 01:51:52 -0800</bug_when>
    <thetext>Created attachment 422204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735783</commentid>
    <comment_count>4</comment_count>
      <attachid>422204</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-04 05:02:36 -0800</bug_when>
    <thetext>Comment on attachment 422204
Patch

Thanks very much for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735788</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-04 05:22:19 -0800</bug_when>
    <thetext>Committed r273885: &lt;https://commits.webkit.org/r273885&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422204.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735789</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-04 05:23:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/75032193&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422197</attachid>
            <date>2021-03-04 01:22:46 -0800</date>
            <delta_ts>2021-03-04 01:37:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222714-20210304102245.patch</filename>
            <type>text/plain</type>
            <size>35531</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4Y2Y3NTJjM2JjZDgw
ZDllYWQ5OWVjNTQ2MzEzMGEyYTU3MjI0Yi4uMjIzNWE0ZWVmNTMwYjUxOTdlNDlmMzhlMzQ3ODFk
MGI5NjA3ZTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAzLTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0g
TW92ZSBzaGFyZWQgc2Nyb2xsaW5nIGFuaW1hdGlvbiBjb2RlIGludG8gYSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZp
b3IuCisKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOiBBZGRlZCBuZXcgY2xh
c3MgdG8gc291cmNlIGxpc3QuCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZGVkIGRlbGVnYXRl
IHBhcmVudCBjbGFzcyB0byBzaGFyZWQgc291cmNlIGxpc3QuCisgICAgICAgICogU291cmNlc0dU
Sy50eHQ6IEFkZGVkIG5ldyBjbGFzcy4KKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDogRGl0dG8u
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZS5jcHA6IENoYW5nZWQgaW1wb3J0IHRvIGluY2x1ZGUuCisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHA6
CisgICAgICAgIE1vdmVkIHNoYXJlZCBjb2RlIHRvIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNw
cDogRGl0dG8uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oOiBEaXRvLgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
Y3BwOiBBZGRlZAorICAgICAgICBzaGFyZWQgY29kZSBmcm9tIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhIGFuZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
Tmljb3NpYQorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaDogQWRkZWQuCisKIDIwMjEtMDMtMDIgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBiYXNpYyAo
bm9uLW1vbWVudHVtKSB3aGVlbCBldmVudCBoYW5kbGluZyBmb3Igc2Nyb2xsIHNuYXAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IGZiM2UyYWRjYjQ5ZjUyYmVm
ODBhMjlhZWU0YWM3ZWQ3M2EyNzMyMTUuLjM3MzEyMjdmMjI4MmI1MzI4YmYxNGRjYzA3OTExMjgx
NTRiYjc4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAt
MjgsNiArMjgsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAKICAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVOaWNvc2lhLmNwcAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIAogICAgIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbktpbmV0aWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDEyYmFkODY3YWExMWY3OTBkMjEx
ODZlMWNjYTNjYzRiYTU2OTg1M2UuLjBkMjgxOWNmOWRmNGJhYzlhNGUxYjlmOTBhZjFjYWY3MWIx
MTVmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzkzLDYgKzE3OTMsNyBAQCBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuY3BwCitwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
LmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAogcGxhdGZvcm0v
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
R1RLLnR4dAppbmRleCBmYjFkZWVmMDFjNjFmNzIxZDRlMzIyZTdjMWYyY2FlYjlmMzJmNDk1Li43
YmNhNGY3NWRkY2JmMzRlOTgxMjVlNzhhZTRkNDhmZGE4YTM5ZDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RL
LnR4dApAQCAtNTksNiArNTksNyBAQCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCitwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAogcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIAogcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggMGQ1ZWVlYzI3
MTMzNDMyMmI1NjA4N2ZlNmE2ZTI0ZWQ4NWE2MGUyMS4uYjY4ZWU0YTk0YmJlYmFiZWU2MWNlMDNk
ODUxYmMyNmUxOWZhODhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTU1LDYgKzU1LDcgQEAg
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmNwcAog
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
Tmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9u
ZWROb2RlLmNwcAorcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUuY3BwCiAKIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCmluZGV4IDk3MzMyY2NmZTE4
ZWRiYThlNGUzMWZjY2E2N2JmMjZkM2I2MWEwMTYuLmVhNjNjNTQ1OGFlYWJhMGQ0MzNhZmFmYjNm
OWFmNzdkMDFjMzAyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3Bw
CkBAIC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgiCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKQogCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lh
LmNwcAppbmRleCAyMjIyMzNkZThkMjcyZTA0Y2M2OGY5OWNlZWNiZDZiMWFkZDdkZGI3Li5mMWU3
M2Q0ZjQzMTMxZTU2MThhMGM1MWNkMjdhY2NiYzI3OWYxNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtMzcsMTMg
KzM3LDYgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgog
I2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogCi0jaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKQotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKLSNlbmRpZgot
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvblNt
b290aC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5
cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCkBAIC01Myw4ICs0Niw4IEBAIFJl
ZjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYTo6Y3JlCiAKIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYShTY3JvbGxpbmdU
cmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUoc2Ny
b2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKKyAgICAsIG1fZGVsZWdhdGUoKnRoaXMsIGRv
d25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSkuc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKCkpCiB7Ci0gICAgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgPSBkb3duY2FzdDxU
aHJlYWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUpLnNjcm9sbEFuaW1hdG9yRW5hYmxl
ZCgpOwogfQogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6flNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhKCkgPSBkZWZhdWx0OwpAQCAtMTAyLDE0
MSArOTUsMTggQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm8KICAgICAgICAgc3RvcFNjcm9sbEFu
aW1hdGlvbnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNj
cm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRv
KHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEu
c2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7Ci0jaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCi0gICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBv
c2l0aW9uKCkpOwotI2VuZGlmCisgICAgICAgIG1fZGVsZWdhdGUucmVzZXRDdXJyZW50UG9zaXRp
b24oKTsKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi12b2lkIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRp
b25LaW5ldGljKCkKLXsKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAg
ICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQo
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9
OwotICAgICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0j
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBpZiAobV9zbW9vdGhBbmlt
YXRpb24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3Np
dGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKLQotICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIg
PSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xh
eWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICAgICAgICAgIGF1
dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVy
Pigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9z
aXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsVG8ocG9z
aXRpb24pOwotICAgICAgICB9KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1
cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKQotewotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdGlvblNtb290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMg
ewotICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkp
LCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFy
ZWFTaXplKCkpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigp
LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBh
dXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihz
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIp
OwotICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6
OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBk
YXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAg
ICAgICBzY3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIHsgfSk7Ci19
Ci0jZW5kaWYKLQogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7Ci0gICAg
aWYgKCFjYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKSkKLSAg
ICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7Ci0KLSNp
ZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYygpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5KHdo
ZWVsRXZlbnQpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotICAgIGlmICh3aGVl
bEV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIG1fa2luZXRpY0Fu
aW1hdGlvbi0+c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2luZXRpY0FuaW1hdGlv
bi0+Y29tcHV0ZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyKCksIGNhbkhh
dmVWZXJ0aWNhbFNjcm9sbGJhcigpKTsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVh
clNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3Vs
dDo6aGFuZGxlZCgpOwotICAgIH0KLSAgICBpZiAod2hlZWxFdmVudC5pc1RyYW5zaXRpb25pbmdU
b01vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChj
dXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhh
dmVIb3Jpem9udGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpKTsKLSAg
ICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSNlbmRp
ZgotCi0gICAgZmxvYXQgZGVsdGFYID0gY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSA/IHdo
ZWVsRXZlbnQuZGVsdGFYKCkgOiAwOwotICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNh
bFNjcm9sbGJhcigpID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7Ci0gICAgaWYgKChkZWx0YVgg
PCAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKS54KCkpCi0gICAgICAgIHx8IChkZWx0YVggPiAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlv
bigpLngoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpKQotICAgICAgICBkZWx0YVgg
PSAwOwotICAgIGlmICgoZGVsdGFZIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkg
Pj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKQotICAgICAgICB8fCAoZGVsdGFZID4gMCAm
JiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCku
eSgpKSkKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkp
Ci0gICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOwot
Ci0gICAgaWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2
ZW50KSB7Ci0gICAgICAgIGlmIChkZWx0YVgpIHsKLSAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUg
PSBkZWx0YVggPCAwOwotICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERl
bHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLndpZHRoKCkpOwotICAgICAgICAgICAgaWYgKG5lZ2F0
aXZlKQotICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGRlbHRhWSkgewotICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7
Ci0gICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJs
ZUFyZWFTaXplKCkuaGVpZ2h0KCkpOwotICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQotICAgICAg
ICAgICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zY3JvbGxBbmltYXRvckVuYWJsZWQgJiYg
IXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7Ci0gICAgICAgIGVuc3Vy
ZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOwotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Ny
b2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOwotICAg
ICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxC
eVBpeGVsLCAxLCAtZGVsdGFZKTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgYXV0byogc2Nyb2xsTGF5ZXIg
PSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xh
eWVyKCkpOwotICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0gICAgYXV0byYgY29tcG9zaXRpb25M
YXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7
Ci0KLSAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVT
Y29wZSgpOwotICAgIHNjcm9sbEJ5KHsgLWRlbHRhWCwgLWRlbHRhWSB9KTsKLQotICAgIHJldHVy
biBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAgICByZXR1cm4gbV9kZWxl
Z2F0ZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIH0KIAog
dm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6c3RvcFNjcm9sbEFu
aW1hdGlvbnMoKQogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBpZiAobV9r
aW5ldGljQW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwot
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgIH0K
LSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFu
aW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKLSNlbmRpZgorICAg
IG1fZGVsZWdhdGUuc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAogRmxvYXRQb2ludCBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6YWRqdXN0ZWRTY3JvbGxQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpIGNv
bnN0CkBAIC0zMTUsMTAgKzE4NSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OnJlcG9zaXRpb25SZWxhdGVkTGF5ZXJzKCkKICAgICAgICAgICAgIGFwcGx5
TGF5ZXJQb3NpdGlvbigqbV9mb290ZXJMYXllciwgRmxvYXRQb2ludChob3Jpem9udGFsU2Nyb2xs
T2Zmc2V0Rm9yQmFubmVyLCBGcmFtZVZpZXc6OnlQb3NpdGlvbkZvckZvb3RlckxheWVyKHNjcm9s
bFBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIHRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCks
IGZvb3RlckhlaWdodCgpKSkpOwogICAgIH0KIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24t
PnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKKyAgICBtX2RlbGVnYXRlLnVwZGF0ZVZp
c2libGVMZW5ndGhzKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAppbmRleCA3YWRj
YmQ0MmIxMDM4Y2I3ZDhmYzdiODY5OTNjZjczZGVlZmIxM2I0Li45NjA4ZDU2MGZhNjIyZmRhZDJj
NWY2YzU0MTJiMjliNjliZTQ4ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKICNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0KKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIE5pY29zaWEgewpAQCAtNTUsMjEgKzU1LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAg
IHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwotI2VuZGlmCi0jaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgo
KTsKLSNlbmRpZgogCiAgICAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IGhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRXZlbnRUYXJnZXRpbmcpIG92ZXJyaWRlOwot
Ci0gICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpIG92ZXJyaWRlOwotCiAgICAgRmxvYXRQ
b2ludCBhZGp1c3RlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFt
cGluZykgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGN1cnJlbnRTY3JvbGxQb3NpdGlvbkNo
YW5nZWQoU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikgb3ZlcnJpZGU7
Ci0KKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBvc2l0aW9u
UmVsYXRlZExheWVycygpIG92ZXJyaWRlOwogCkBAIC04MCwxMyArNzAsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2hlYWRlckxheWVyOwogICAg
IFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2Zvb3RlckxheWVyOwogCi0gICAg
Ym9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGlj
PiBtX2tpbmV0aWNBbmltYXRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlv
bjsKLSNlbmRpZgorICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
IG1fZGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCmlu
ZGV4IGVkZmE2ZTJhY2E0MjliMzJhOTVhYjlmZmExM2E0YmI1ZmMzZWFkNWQuLmM0NzRjNDgyMDBh
MTVmMjI3MjU5YzhmNDE0ZTQxMDI1M2U1MDBkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC0zMiwxNSAr
MzIsNiBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQogCiAj
aW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JP
TExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIgotI2VuZGlmCi0jaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZS5oIgotI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUm
IHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCkBAIC01MCw4ICs0MSw4IEBA
IFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYShT
Y3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAg
IDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2Rl
SUQpCisgICAgLCBtX2RlbGVnYXRlKCp0aGlzLCBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1Ry
ZWU+KHNjcm9sbGluZ1RyZWUpLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpKQogewotICAgIG1fc2Ny
b2xsQW5pbWF0b3JFbmFibGVkID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3Jv
bGxpbmdUcmVlKS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKIH0KIAogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTmljb3NpYSgpID0gZGVmYXVsdDsKQEAgLTY1LDEwICs1Niw3IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGls
ZHJlbihjb25zdCBTCiAgICAgICAgIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CiAgICAgICAgIGNv
bnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEgPSBvdmVyZmxvd1N0YXRlTm9kZS5yZXF1ZXN0
ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Ny
b2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Ny
b2xsRGF0YS5jbGFtcGluZyk7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5z
ZXRDdXJyZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOwotI2VuZGlmCisgICAg
ICAgIG1fZGVsZWdhdGUucmVzZXRDdXJyZW50UG9zaXRpb24oKTsKICAgICB9CiB9CiAKQEAgLTkz
LDE0MCArODEsMTcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmlj
b3NpYTo6cmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygpCiAgICAgICAgICAgICBzdGF0ZS5kZWx0
YS5ib3VuZHNPcmlnaW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfSk7CiAKLSNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1f
c21vb3RoQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOwotI2VuZGlmCi19Ci0KLSNp
ZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi12b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKLXsKLSAg
ICBpZiAobV9raW5ldGljQW5pbWF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2tpbmV0
aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAg
ICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBv
aW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9LAotICAg
ICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9T
Q1JPTExJTkcpCi0gICAgICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAg
ICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0j
ZW5kaWYKLQotICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNv
c2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXll
ciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0K
LSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVw
ZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0p
OwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLXZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlv
blNtb290aCgpCi17Ci0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21v
b3RoPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICBy
ZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGlt
dW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAg
ICAgICAgfSwKLSAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCi0gICAgICAgIFt0aGlz
XShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8qIHNjcm9sbExheWVy
ID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbENvbnRhaW5lckxh
eWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICAgICAgICAgIGF1
dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVy
Pigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9z
aXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsVG8ocG9z
aXRpb24pOwotICAgICAgICB9LAotICAgICAgICBbXSB7IH0pOworICAgIG1fZGVsZWdhdGUudXBk
YXRlVmlzaWJsZUxlbmd0aHMoKTsKIH0KLSNlbmRpZgogCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGlu
ZyBldmVudFRhcmdldGluZykKIHsKLSAgICBpZiAoIWNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxF
dmVudCwgZXZlbnRUYXJnZXRpbmcpKQotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0Ojp1bmhhbmRsZWQoKTsKLQotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAg
ICBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9u
LT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7Ci0gICAgbV9raW5ldGljQW5pbWF0
aW9uLT5zdG9wKCk7Ci0gICAgaWYgKHdoZWVsRXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xs
KCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChjdXJyZW50U2Nyb2xsUG9z
aXRpb24oKSwgbV9raW5ldGljQW5pbWF0aW9uLT5jb21wdXRlVmVsb2NpdHkoKSwgY2FuSGF2ZUhv
cml6b250YWxTY3JvbGxiYXIoKSwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1
cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQotICAgIGlmICh3
aGVlbEV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCB3aGVlbEV2
ZW50LnN3aXBlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSwgY2FuSGF2
ZVZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFy
U2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
OjpoYW5kbGVkKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBmbG9hdCBkZWx0YVggPSBjYW5IYXZl
SG9yaXpvbnRhbFNjcm9sbGJhcigpID8gd2hlZWxFdmVudC5kZWx0YVgoKSA6IDA7Ci0gICAgZmxv
YXQgZGVsdGFZID0gY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCkgPyB3aGVlbEV2ZW50LmRlbHRh
WSgpIDogMDsKLSAgICBpZiAoKGRlbHRhWCA8IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCku
eCgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSkKLSAgICAgICAgfHwgKGRlbHRhWCA+
IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueCgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlv
bigpLngoKSkpCi0gICAgICAgIGRlbHRhWCA9IDA7Ci0gICAgaWYgKChkZWx0YVkgPCAwICYmIGN1
cnJlbnRTY3JvbGxQb3NpdGlvbigpLnkoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkp
Ci0gICAgICAgIHx8IChkZWx0YVkgPiAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLnkoKSA8
PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpKQotICAgICAgICBkZWx0YVkgPSAwOwotCi0g
ICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7Ci0KLSAgICBpZiAod2hlZWxFdmVudC5ncmFudWxhcml0
eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQpIHsKLSAgICAgICAgaWYgKGRlbHRhWCkgewot
ICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7Ci0gICAgICAgICAgICBkZWx0
YVggPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFyZWFTaXplKCkud2lkdGgo
KSk7Ci0gICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAgICAgICAgZGVsdGFYID0g
LWRlbHRhWDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVsdGFZKSB7Ci0gICAgICAgICAgICBi
b29sIG5lZ2F0aXZlID0gZGVsdGFZIDwgMDsKLSAgICAgICAgICAgIGRlbHRhWSA9IFNjcm9sbGJh
cjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS5oZWlnaHQoKSk7Ci0gICAgICAg
ICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAgICAgICAgZGVsdGFZID0gLWRlbHRhWTsKLSAg
ICAgICAgfQotICAgIH0KLQotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmICht
X3Njcm9sbEFuaW1hdG9yRW5hYmxlZCAmJiAhd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKCkpIHsKLSAgICAgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7Ci0gICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xs
QnlQaXhlbCwgMSwgLWRlbHRhWCk7Ci0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwo
VmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkpOwotICAgICAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3Jt
TGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKLSAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIp
OwotICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3Np
dGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBv
c2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICBzY3JvbGxCeSh7IC1kZWx0YVgs
IC1kZWx0YVkgfSk7Ci0KLSAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5k
bGVkKCk7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50
LCBldmVudFRhcmdldGluZyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKIHsKLSNpZiBFTkFCTEUoS0lO
RVRJQ19TQ1JPTExJTkcpCi0gICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikgewotICAgICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5j
bGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1ND
Uk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3RoQW5p
bWF0aW9uLT5zdG9wKCk7Ci0jZW5kaWYKKyAgICBtX2RlbGVnYXRlLnN0b3BTY3JvbGxBbmltYXRp
b25zKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaAppbmRleCA4ZGY3OGQw
MGViNjdhYTRjZjYyNjE5MThiZGVjNDhkZjZjMzMwZmM2Li4xNjY5NzI1OTM5YTg5MGVmMGRiNjA3
Nzg0MDI2ODQ1OTJjNzUwZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKICNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU2Nyb2xsQW5pbWF0aW9uOwpAQCAtNDUsMjkgKzQ2LDEyIEBAIHByaXZhdGU6CiAgICAgU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYsIFNj
cm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25z
dCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKLQogICAgIEZsb2F0UG9pbnQgYWRqdXN0
ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcpIGNvbnN0
IG92ZXJyaWRlOwotCiAgICAgdm9pZCByZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkgb3ZlcnJp
ZGU7Ci0KLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3Jv
bGxBbmltYXRpb25LaW5ldGljKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykKLSAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOwotI2VuZGlmCi0KICAg
ICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGluZykgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIHN0b3BT
Y3JvbGxBbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIG1fc2Nyb2xsQW5pbWF0b3JF
bmFibGVkIHsgZmFsc2UgfTsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fa2luZXRpY0FuaW1hdGlvbjsK
LSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxBbmltYXRpb24+IG1fc21vb3RoQW5pbWF0aW9uOwotI2VuZGlmCisgICAgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgbV9kZWxlZ2F0ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBhYjQzYWZkZmZk
NDlmMTk0NzQ3MmVkNzFjYjVjY2VlYzllZDk4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWEuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOSwgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaCIKKwor
I2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Ny
b2xsQW5pbWF0aW9uOworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzsKKworU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdO
b2RlLCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCkKKyAgICA6IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUoc2Nyb2xsaW5nTm9kZSkKKyAgICAsIG1fc2Nyb2xsQW5pbWF0b3JF
bmFibGVkKHNjcm9sbEFuaW1hdG9yRW5hYmxlZCkKK3sKK30KKworU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYSgpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpTY2VuZUludGVn
cmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKK3sKKyAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0
YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxpbmdOb2RlKCkuc2Nyb2xs
Q29udGFpbmVyTGF5ZXIoKSk7CisgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGU+KHNjcm9sbGluZ05vZGUoKSkpCisgICAgICAgIHNjcm9sbExheWVyID0gc3RhdGljX2Nh
c3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGluZ05vZGUoKS5zY3JvbGxlZENvbnRl
bnRzTGF5ZXIoKSk7CisKKyAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgIGF1dG8mIGNvbXBv
c2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xs
TGF5ZXIpOworICAgIHJldHVybiBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnJl
c2V0Q3VycmVudFBvc2l0aW9uKCkKK3sKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRD
dXJyZW50UG9zaXRpb24oc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxQb3NpdGlvbigpKTsK
KyNlbmRpZgorfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCit7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCit7CisgICAgaWYgKG1fa2luZXRp
Y0FuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9raW5ldGljQW5pbWF0aW9uID0g
bWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKKyAgICAgICAgW3RoaXNdKCkgLT4g
U2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6
ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgeworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAg
ICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2VuZGlmCisgICAgICAg
ICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICAgICAgICAg
IHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7CisgICAgICAgIH0pOworfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgp
Cit7CisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKKyAg
ICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJ
bnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQ
b3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwK
KyAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCisgICAgICAgIFt0aGlzXShGbG9hdFBv
aW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVV
cGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0
aW9uKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10geyB9KTsKK30KKyNlbmRpZgorCitXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKK3sKKyAgICBpZiAoIXNjcm9sbGluZ05v
ZGUoKS5jYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKSkKKyAg
ICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAg
ICBib29sIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyID0gc2Nyb2xsaW5nTm9kZSgpLmNhbkhh
dmVIb3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgYm9vbCBjYW5IYXZlVmVydGljYWxTY3JvbGxi
YXIgPSBzY3JvbGxpbmdOb2RlKCkuY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCk7CisjaWYgRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMo
KTsKKyAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2
ZW50KTsKKyAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKKyAgICBpZiAod2hlZWxFdmVu
dC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgeworICAgICAgICBtX2tpbmV0aWNBbmltYXRp
b24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2tpbmV0aWNBbmltYXRpb24tPmNv
bXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRp
Y2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhp
c3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxl
ZCgpOworICAgIH0KKyAgICBpZiAod2hlZWxFdmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVt
U2Nyb2xsKCkpIHsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChjdXJyZW50U2Ny
b2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICBtX2tpbmV0
aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBmbG9h
dCBkZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFY
KCkgOiAwOworICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA/IHdo
ZWVsRXZlbnQuZGVsdGFZKCkgOiAwOworICAgIGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Ny
b2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKQorICAgICAg
ICB8fCAoZGVsdGFYID4gMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11
bVNjcm9sbFBvc2l0aW9uKCkueCgpKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoKGRl
bHRhWSA8IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQ
b3NpdGlvbigpLnkoKSkKKyAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgY3VycmVudFNjcm9sbFBv
c2l0aW9uKCkueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkpCisgICAgICAgIGRl
bHRhWSA9IDA7CisKKyAgICBpZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQorICAgICAgICByZXR1cm4g
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKKworICAgIGlmICh3aGVlbEV2
ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgeworICAgICAgICBp
ZiAoZGVsdGFYKSB7CisgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKKyAg
ICAgICAgICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJl
YVNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAg
ICAgICBkZWx0YVggPSAtZGVsdGFYOworICAgICAgICB9CisgICAgICAgIGlmIChkZWx0YVkpIHsK
KyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOworICAgICAgICAgICAgZGVs
dGFZID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdo
dCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVkg
PSAtZGVsdGFZOworICAgICAgICB9CisgICAgfQorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCisgICAgaWYgKG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgeworICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25T
bW9vdGgoKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Ny
b2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKKyAgICAgICAgbV9zbW9vdGhBbmlt
YXRpb24tPnNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRh
WSk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsK
KyAgICB9CisjZW5kaWYKKworICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29w
ZSgpOworICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeSh7IC1kZWx0YVgsIC1kZWx0YVkgfSk7
CisKKyAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Cit9CisK
K3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BTY3Jv
bGxBbmltYXRpb25zKCkKK3sKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisgICAgaWYg
KG1fa2luZXRpY0FuaW1hdGlvbikgeworICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3Ao
KTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAg
ICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBpZiAobV9zbW9v
dGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7CisjZW5kaWYK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAyMTg4ZTBjNzdm
N2E3ZWU5MjBmOGMzMzhmNTc5ZjM2YzRmM2UxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWEuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OSwgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCIKKworI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQorCisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3Jt
TGF5ZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5o
IgorI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgorCisjaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
aW9uU21vb3RoLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSA6IHB1YmxpYyBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYShTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZSYsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPE5pY29zaWE6OlNjZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNjb3BlPiBjcmVhdGVVcGRhdGVT
Y29wZSgpOworICAgIHZvaWQgcmVzZXRDdXJyZW50UG9zaXRpb24oKTsKKyAgICB2b2lkIHVwZGF0
ZVZpc2libGVMZW5ndGhzKCk7CisgICAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IGhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRXZlbnRUYXJnZXRpbmcpOworICAg
IHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKworcHJpdmF0ZToKKyAgICBib29sIG1fc2Ny
b2xsQW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9M
TElORykKKyAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKKyNlbmRpZgor
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0
aW9uU21vb3RoKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5pbWF0
aW9uOworI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9zbW9vdGhBbmltYXRpb247CisjZW5kaWYKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpICYmIFVTRShOSUNPU0lBKQo=
</data>
<flag name="commit-queue"
          id="441237"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422199</attachid>
            <date>2021-03-04 01:31:28 -0800</date>
            <delta_ts>2021-03-04 01:53:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222714-20210304103127.patch</filename>
            <type>text/plain</type>
            <size>36230</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4Y2Y3NTJjM2JjZDgw
ZDllYWQ5OWVjNTQ2MzEzMGEyYTU3MjI0Yi4uYjliMWMyOTQ3MzM5MjY3ZWYwNjFlZmEwNWZkYTdh
NzkxZWIwMWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAzLTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0g
TW92ZSBzaGFyZWQgc2Nyb2xsaW5nIGFuaW1hdGlvbiBjb2RlIGludG8gYSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZp
b3IuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZTogUmVtb3ZlIGRlbGVnYXRlIHBhcmVu
dCBjbGFzcyBmcm9tIE1hYy1zcGVjaWZpYyBsaXN0LgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0
YXRpb24uY21ha2U6IEFkZGVkIG5ldyBjbGFzcyB0byBzb3VyY2UgbGlzdC4KKyAgICAgICAgKiBT
b3VyY2VzLnR4dDogQWRkZWQgZGVsZWdhdGUgcGFyZW50IGNsYXNzIHRvIHNoYXJlZCBzb3VyY2Ug
bGlzdC4KKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDogQWRkZWQgbmV3IGNsYXNzLgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDogQ2hhbmdlZCBpbXBvcnQgdG8gaW5j
bHVkZS4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgTW92ZWQgc2hhcmVkIGNvZGUgdG8g
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS4KKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmg6IERp
dHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmg6
IERpdG8uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6IEFkZGVkCisgICAgICAgIHNoYXJlZCBjb2Rl
IGZyb20gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEgYW5kIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oOiBB
ZGRlZC4KKwogMjAyMS0wMy0wMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIGJhc2ljIChub24tbW9tZW50dW0pIHdoZWVsIGV2ZW50IGhhbmRs
aW5nIGZvciBzY3JvbGwgc25hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBmZWU1MWQ5
YWIxYWUxMGYzNjlmZmY2MDRkZGNmNmY4YTdhYmNjNmJjLi5iOWIwNDFlYzkwMTY4YmRlMDljZTNj
NWI2MzJlYWQzMDIzZTQzMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTcyLDgg
KzE3Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KICAgICBwYWdlL21hYy9XaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMu
bW0KIAotICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGUuY3BwCi0KICAgICBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMu
bW0KICAgICBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lm1tCiAgICAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IGZi
M2UyYWRjYjQ5ZjUyYmVmODBhMjlhZWU0YWM3ZWQ3M2EyNzMyMTUuLjM3MzEyMjdmMjI4MmI1MzI4
YmYxNGRjYzA3OTExMjgxNTRiYjc4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZQpAQCAtMjgsNiArMjgsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFBy
b3h5Tm9kZS5jcHAKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCiAgICAgcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIAogICAgIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDEyYmFk
ODY3YWExMWY3OTBkMjExODZlMWNjYTNjYzRiYTU2OTg1M2UuLjBkMjgxOWNmOWRmNGJhYzlhNGUx
YjlmOTBhZjFjYWY3MWIxMTVmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzkzLDYgKzE3OTMsNyBA
QCBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcAogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwCitwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
LmNwcAogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKIHBsYXRmb3JtL0NvbnRlbnRUeXBl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCBmYjFkZWVmMDFjNjFmNzIxZDRlMzIyZTdjMWYy
Y2FlYjlmMzJmNDk1Li43YmNhNGY3NWRkY2JmMzRlOTgxMjVlNzhhZTRkNDhmZGE4YTM5ZDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNTksNiArNTksNyBAQCBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCitwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
LmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAK
IAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQK
aW5kZXggMGQ1ZWVlYzI3MTMzNDMyMmI1NjA4N2ZlNmE2ZTI0ZWQ4NWE2MGUyMS4uYjY4ZWU0YTk0
YmJlYmFiZWU2MWNlMDNkODUxYmMyNmUxOWZhODhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAg
LTU1LDYgKzU1LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3Np
YS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
UHJveHlOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAorcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCiAKIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCmlu
ZGV4IDk3MzMyY2NmZTE4ZWRiYThlNGUzMWZjY2E2N2JmMjZkM2I2MWEwMTYuLmVhNjNjNTQ1OGFl
YWJhMGQ0MzNhZmFmYjNmOWFmNzdkMDFjMzAyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGUuY3BwCkBAIC0yMywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgiCiAKICNpZiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQogCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCAyMjIyMzNkZThkMjcyZTA0Y2M2OGY5OWNlZWNiZDZi
MWFkZDdkZGI3Li5mMWU3M2Q0ZjQzMTMxZTU2MThhMGM1MWNkMjdhY2NiYzI3OWYxNzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lh
LmNwcApAQCAtMzcsMTMgKzM3LDYgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogCi0jaWYg
RU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0
aWMuaCIKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdGlvblNtb290aC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UmVmPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwg
U2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCkBAIC01
Myw4ICs0Niw4IEBAIFJlZjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y3JlCiAKIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2Rl
VHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKKyAgICAsIG1fZGVs
ZWdhdGUoKnRoaXMsIGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJl
ZSkuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpCiB7Ci0gICAgbV9zY3JvbGxBbmltYXRvckVuYWJs
ZWQgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUpLnNjcm9s
bEFuaW1hdG9yRW5hYmxlZCgpOwogfQogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYTo6flNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhKCkgPSBkZWZh
dWx0OwpAQCAtMTAyLDE0MSArOTUsMTggQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm8KICAgICAg
ICAgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVk
U2Nyb2xsRGF0YSA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAg
ICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVl
c3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7
Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgIGlmIChtX3Ntb290aEFuaW1h
dGlvbikKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24o
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOwotI2VuZGlmCisgICAgICAgIG1fZGVsZWdhdGUucmVz
ZXRDdXJyZW50UG9zaXRpb24oKTsKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JP
TExJTkcpCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1
cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKLXsKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVl
PFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRl
bnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlv
bigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFi
bGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYm
IHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBp
ZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24t
PnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKLQotICAgICAgICAgICAgYXV0
byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Ny
b2xsZWRDb250ZW50c0xheWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsK
LSAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0
ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAg
ICAgc2Nyb2xsVG8ocG9zaXRpb24pOwotICAgICAgICB9KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5B
QkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKQotewotICAgIGlmIChtX3Nt
b290aEFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zbW9vdGhBbmltYXRpb24g
PSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+
IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNj
cm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNp
emUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbigpLAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7
Ci0gICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBs
YXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7Ci0gICAgICAgICAgICBBU1NF
UlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRv
d25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICAg
ICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNj
b3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0sCi0gICAg
ICAgIFtdIHsgfSk7Ci19Ci0jZW5kaWYKLQogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJn
ZXRpbmcpCiB7Ci0gICAgaWYgKCFjYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50
VGFyZ2V0aW5nKSkKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5o
YW5kbGVkKCk7Ci0KLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgZW5zdXJlU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYygpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9T
Y3JvbGxIaXN0b3J5KHdoZWVsRXZlbnQpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgp
OwotICAgIGlmICh3aGVlbEV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAg
ICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1f
a2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Ny
b2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpKTsKLSAgICAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSAgICBpZiAod2hlZWxFdmVudC5p
c1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5p
bWF0aW9uLT5zdGFydChjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZl
bG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNj
cm9sbGJhcigpKTsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3Rv
cnkoKTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
OwotICAgIH0KLSNlbmRpZgotCi0gICAgZmxvYXQgZGVsdGFYID0gY2FuSGF2ZUhvcml6b250YWxT
Y3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAwOwotICAgIGZsb2F0IGRlbHRhWSA9
IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7Ci0g
ICAgaWYgKChkZWx0YVggPCAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA+PSBtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpCi0gICAgICAgIHx8IChkZWx0YVggPiAwICYmIGN1cnJl
bnRTY3JvbGxQb3NpdGlvbigpLngoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpKQot
ICAgICAgICBkZWx0YVggPSAwOwotICAgIGlmICgoZGVsdGFZIDwgMCAmJiBjdXJyZW50U2Nyb2xs
UG9zaXRpb24oKS55KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKQotICAgICAgICB8
fCAoZGVsdGFZID4gMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPD0gbWluaW11bVNj
cm9sbFBvc2l0aW9uKCkueSgpKSkKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIGlmICghZGVs
dGFYICYmICFkZWx0YVkpCi0gICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6
OnVuaGFuZGxlZCgpOwotCi0gICAgaWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3Jv
bGxCeVBhZ2VXaGVlbEV2ZW50KSB7Ci0gICAgICAgIGlmIChkZWx0YVgpIHsKLSAgICAgICAgICAg
IGJvb2wgbmVnYXRpdmUgPSBkZWx0YVggPCAwOwotICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xs
YmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLndpZHRoKCkpOwotICAgICAg
ICAgICAgaWYgKG5lZ2F0aXZlKQotICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGRlbHRhWSkgewotICAgICAgICAgICAgYm9vbCBuZWdhdGl2
ZSA9IGRlbHRhWSA8IDA7Ci0gICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVw
RGVsdGEoc2Nyb2xsYWJsZUFyZWFTaXplKCkuaGVpZ2h0KCkpOwotICAgICAgICAgICAgaWYgKG5l
Z2F0aXZlKQotICAgICAgICAgICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zY3JvbGxBbmlt
YXRvckVuYWJsZWQgJiYgIXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7
Ci0gICAgICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOwotICAgICAgICBtX3Ntb290
aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEs
IC1kZWx0YVgpOwotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Ny
b2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFZKTsKLSAgICAgICAgcmV0dXJuIFdoZWVs
RXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgYXV0
byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Ny
b2xsZWRDb250ZW50c0xheWVyKCkpOwotICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0gICAgYXV0
byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
KCpzY3JvbGxMYXllcik7Ci0KLSAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXll
ci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgIHNjcm9sbEJ5KHsgLWRlbHRhWCwgLWRlbHRhWSB9
KTsKLQotICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAg
ICByZXR1cm4gbV9kZWxlZ2F0ZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFy
Z2V0aW5nKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3Np
YTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+c3RvcCgpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlz
dG9yeSgpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3Ao
KTsKLSNlbmRpZgorICAgIG1fZGVsZWdhdGUuc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAog
RmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6YWRqdXN0
ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBp
bmcgY2xhbXBpbmcpIGNvbnN0CkBAIC0zMTUsMTAgKzE4NSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OnJlcG9zaXRpb25SZWxhdGVkTGF5ZXJzKCkKICAg
ICAgICAgICAgIGFwcGx5TGF5ZXJQb3NpdGlvbigqbV9mb290ZXJMYXllciwgRmxvYXRQb2ludCho
b3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyLCBGcmFtZVZpZXc6OnlQb3NpdGlvbkZvckZv
b3RlckxheWVyKHNjcm9sbFBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIHRvdGFsQ29udGVudHNT
aXplKCkuaGVpZ2h0KCksIGZvb3RlckhlaWdodCgpKSkpOwogICAgIH0KIAotI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9z
bW9vdGhBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKKyAgICBtX2Rl
bGVnYXRlLnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEuaAppbmRleCA3YWRjYmQ0MmIxMDM4Y2I3ZDhmYzdiODY5OTNjZjczZGVlZmIxM2I0Li45NjA4
ZDU2MGZhNjIyZmRhZDJjNWY2YzU0MTJiMjliNjliZTQ4ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCkBAIC0zMSw3ICszMSw3
IEBACiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKICNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0KKyNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIE5pY29zaWEgewpAQCAtNTUsMjEgKzU1LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0jaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKQotICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxB
bmltYXRpb25TbW9vdGgoKTsKLSNlbmRpZgogCiAgICAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRXZlbnRUYXJnZXRp
bmcpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpIG92ZXJyaWRl
OwotCiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmLCBTY3JvbGxDbGFtcGluZykgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbkNoYW5nZWQoU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbikgb3ZlcnJpZGU7Ci0KKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZXBvc2l0aW9uUmVsYXRlZExheWVycygpIG92ZXJyaWRlOwogCkBAIC04MCwxMyArNzAs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2hl
YWRlckxheWVyOwogICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2Zvb3Rl
ckxheWVyOwogCi0gICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZhbHNlIH07Ci0j
aWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxB
bmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBt
X3Ntb290aEFuaW1hdGlvbjsKLSNlbmRpZgorICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhIG1fZGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWEuY3BwCmluZGV4IGVkZmE2ZTJhY2E0MjliMzJhOTVhYjlmZmExM2E0YmI1ZmMzZWFk
NWQuLmM0NzRjNDgyMDBhMTVmMjI3MjU5YzhmNDE0ZTQxMDI1M2U1MDBkYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEu
Y3BwCkBAIC0zMiwxNSArMzIsNiBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVT
RShOSUNPU0lBKQogCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKLSNpZiBFTkFC
TEUoS0lORVRJQ19TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5o
IgotI2VuZGlmCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZS5oIgotI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y3JlYXRl
KFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCkBA
IC01MCw4ICs0MSw4IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpCiAKIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTmljb3NpYShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3Jv
bGxpbmdUcmVlLCBub2RlSUQpCisgICAgLCBtX2RlbGVnYXRlKCp0aGlzLCBkb3duY2FzdDxUaHJl
YWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUpLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgp
KQogewotICAgIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkID0gZG93bmNhc3Q8VGhyZWFkZWRTY3Jv
bGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKIH0KIAog
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSgpID0gZGVmYXVsdDsKQEAgLTY1LDEwICs1Niw3
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1p
dFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTCiAgICAgICAgIHN0b3BTY3JvbGxBbmltYXRpb25z
KCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEgPSBvdmVyZmxvd1N0
YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3Rl
ZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlw
ZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpCi0gICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgICAgIG1fc21v
b3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkp
OwotI2VuZGlmCisgICAgICAgIG1fZGVsZWdhdGUucmVzZXRDdXJyZW50UG9zaXRpb24oKTsKICAg
ICB9CiB9CiAKQEAgLTkzLDE0MCArODEsMTcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6cmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygpCiAgICAgICAg
ICAgICBzdGF0ZS5kZWx0YS5ib3VuZHNPcmlnaW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfSk7
CiAKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRp
b24pCi0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOwot
I2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi12b2lkIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25L
aW5ldGljKCkKLXsKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAg
IHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9Owot
ICAgICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRp
b24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlv
bihwb3NpdGlvbik7Ci0jZW5kaWYKLQotICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBz
dGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAgICAgYXV0byYg
Y29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpz
Y3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlv
bkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlv
bik7Ci0gICAgICAgIH0pOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykKLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmVuc3Vy
ZVNjcm9sbEFuaW1hdGlvblNtb290aCgpCi17Ci0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7
Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSks
IEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJl
YVNpemUoKSkgfTsKLSAgICAgICAgfSwKLSAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCks
Ci0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1
dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNj
cm9sbENvbnRhaW5lckxheWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsK
LSAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0
ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAg
ICAgc2Nyb2xsVG8ocG9zaXRpb24pOwotICAgICAgICB9LAotICAgICAgICBbXSB7IH0pOworICAg
IG1fZGVsZWdhdGUudXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKIH0KLSNlbmRpZgogCiBXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKLSAgICBpZiAoIWNhbkhhbmRsZVdo
ZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpKQotICAgICAgICByZXR1cm4gV2hl
ZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKLQotI2lmIEVOQUJMRShLSU5FVElD
X1NDUk9MTElORykKLSAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7Ci0gICAgbV9r
aW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7Ci0gICAg
bV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgaWYgKHdoZWVsRXZlbnQuaXNFbmRPZk5v
bk1vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChj
dXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgbV9raW5ldGljQW5pbWF0aW9uLT5jb21wdXRlVmVsb2Np
dHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xs
YmFyKCkpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgp
OwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0g
ICAgfQotICAgIGlmICh3aGVlbEV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwo
KSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3Np
dGlvbigpLCB3aGVlbEV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3Jv
bGxiYXIoKSwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAgICBtX2tpbmV0aWNB
bmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVu
dEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBmbG9hdCBk
ZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpID8gd2hlZWxFdmVudC5kZWx0YVgo
KSA6IDA7Ci0gICAgZmxvYXQgZGVsdGFZID0gY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCkgPyB3
aGVlbEV2ZW50LmRlbHRhWSgpIDogMDsKLSAgICBpZiAoKGRlbHRhWCA8IDAgJiYgY3VycmVudFNj
cm9sbFBvc2l0aW9uKCkueCgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSkKLSAgICAg
ICAgfHwgKGRlbHRhWCA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueCgpIDw9IG1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpLngoKSkpCi0gICAgICAgIGRlbHRhWCA9IDA7Ci0gICAgaWYgKChk
ZWx0YVkgPCAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLnkoKSA+PSBtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS55KCkpCi0gICAgICAgIHx8IChkZWx0YVkgPiAwICYmIGN1cnJlbnRTY3JvbGxQ
b3NpdGlvbigpLnkoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpKQotICAgICAgICBk
ZWx0YVkgPSAwOwotCi0gICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKLSAgICAgICAgcmV0dXJu
IFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7Ci0KLSAgICBpZiAod2hlZWxF
dmVudC5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQpIHsKLSAgICAgICAg
aWYgKGRlbHRhWCkgewotICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7Ci0g
ICAgICAgICAgICBkZWx0YVggPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFy
ZWFTaXplKCkud2lkdGgoKSk7Ci0gICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAg
ICAgICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVsdGFZKSB7
Ci0gICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZIDwgMDsKLSAgICAgICAgICAgIGRl
bHRhWSA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS5oZWln
aHQoKSk7Ci0gICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAgICAgICAgZGVsdGFZ
ID0gLWRlbHRhWTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQotICAgIGlmIChtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCAmJiAhd2hlZWxFdmVudC5oYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKLSAgICAgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9u
U21vb3RoKCk7Ci0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpvbnRhbFNj
cm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWCk7Ci0gICAgICAgIG1fc21vb3RoQW5p
bWF0aW9uLT5zY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0
YVkpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7
Ci0gICAgfQotI2VuZGlmCi0KLSAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5p
Y29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKLSAgICBBU1NF
UlQoc2Nyb2xsTGF5ZXIpOwotICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgYXV0byB1cGRh
dGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICBzY3Jv
bGxCeSh7IC1kZWx0YVgsIC1kZWx0YVkgfSk7Ci0KLSAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUuaGFuZGxlV2hlZWxF
dmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKIHsK
LSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgaWYgKG1fa2luZXRpY0FuaW1hdGlv
bikgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICAgICAgbV9raW5l
dGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7Ci0jZW5kaWYKKyAgICBtX2RlbGVnYXRlLnN0
b3BTY3JvbGxBbmltYXRpb25zKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEu
aAppbmRleCA4ZGY3OGQwMGViNjdhYTRjZjYyNjE5MThiZGVjNDhkZjZjMzMwZmM2Li4xNjY5NzI1
OTM5YTg5MGVmMGRiNjA3Nzg0MDI2ODQ1OTJjNzUwZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKICNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOwpAQCAtNDUsMjkgKzQ2LDEyIEBAIHBy
aXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEoU2Ny
b2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNvbW1pdFN0YXRlQWZ0
ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKLQogICAgIEZs
b2F0UG9pbnQgYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xs
Q2xhbXBpbmcpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgdm9pZCByZXBvc2l0aW9uU2Nyb2xsaW5n
TGF5ZXJzKCkgb3ZlcnJpZGU7Ci0KLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAg
dm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKLSAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgp
OwotI2VuZGlmCi0KICAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGluZykgb3ZlcnJpZGU7Ci0K
ICAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIG1f
c2Nyb2xsQW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JP
TExJTkcpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fa2lu
ZXRpY0FuaW1hdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1fc21vb3RoQW5pbWF0aW9uOwotI2Vu
ZGlmCisgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgbV9kZWxl
Z2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDBhYjQzYWZkZmZkNDlmMTk0NzQ3MmVkNzFjYjVjY2VlYzllZDk4YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOSwgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuaCIKKworI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisKKyNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uS2luZXRp
YzsKKworU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlJiBzY3JvbGxpbmdOb2RlLCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCkKKyAgICA6IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUoc2Nyb2xsaW5nTm9kZSkKKyAgICAsIG1f
c2Nyb2xsQW5pbWF0b3JFbmFibGVkKHNjcm9sbEFuaW1hdG9yRW5hYmxlZCkKK3sKK30KKworU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxOaWNv
c2lhOjpTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKK3sKKyAgICBhdXRvKiBz
Y3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxp
bmdOb2RlKCkuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CisgICAgaWYgKGlzPFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUoKSkpCisgICAgICAgIHNjcm9sbExh
eWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGluZ05vZGUo
KS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisKKyAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwor
ICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlv
bkxheWVyPigqc2Nyb2xsTGF5ZXIpOworICAgIHJldHVybiBjb21wb3NpdGlvbkxheWVyLmNyZWF0
ZVVwZGF0ZVNjb3BlKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWE6OnJlc2V0Q3VycmVudFBvc2l0aW9uKCkKK3sKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpKTsKKyNlbmRpZgorfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCit7CisjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyNlbmRpZgorfQorCisj
aWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCit7Cisg
ICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9raW5l
dGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKKyAgICAg
ICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQ
b2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3Np
dGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAg
ICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworI2lmIEVOQUJMRShTTU9PVEhf
U0NST0xMSU5HKQorICAgICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAg
ICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwor
I2VuZGlmCisgICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUo
KTsKKyAgICAgICAgICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7CisgICAg
ICAgIH0pOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKK3ZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFu
aW1hdGlvblNtb290aCgpCit7CisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
aW9uU21vb3RoPigKKyAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAg
ICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50
KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkg
fTsKKyAgICAgICAgfSwKKyAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCisgICAgICAg
IFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRl
U2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZSgp
LnNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10geyB9KTsKK30KKyNl
bmRpZgorCitXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKK3sKKyAgICBp
ZiAoIXNjcm9sbGluZ05vZGUoKS5jYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50
VGFyZ2V0aW5nKSkKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5o
YW5kbGVkKCk7CisKKyAgICBib29sIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyID0gc2Nyb2xs
aW5nTm9kZSgpLmNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgYm9vbCBjYW5IYXZl
VmVydGljYWxTY3JvbGxiYXIgPSBzY3JvbGxpbmdOb2RlKCkuY2FuSGF2ZVZlcnRpY2FsU2Nyb2xs
YmFyKCk7CisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAgIGVuc3VyZVNjcm9sbEFu
aW1hdGlvbktpbmV0aWMoKTsKKyAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xs
SGlzdG9yeSh3aGVlbEV2ZW50KTsKKyAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKKyAg
ICBpZiAod2hlZWxFdmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgeworICAgICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2tpbmV0
aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJh
ciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9u
LT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdDo6aGFuZGxlZCgpOworICAgIH0KKyAgICBpZiAod2hlZWxFdmVudC5pc1RyYW5zaXRp
b25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5z
dGFydChjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCks
IGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwor
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgICAg
ICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgfQorI2Vu
ZGlmCisKKyAgICBmbG9hdCBkZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciA/IHdo
ZWVsRXZlbnQuZGVsdGFYKCkgOiAwOworICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNh
bFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFZKCkgOiAwOworICAgIGlmICgoZGVsdGFYIDwg
MCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkueCgpKQorICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24o
KS54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKSkKKyAgICAgICAgZGVsdGFYID0g
MDsKKyAgICBpZiAoKGRlbHRhWSA8IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpID49
IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkKKyAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYg
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnko
KSkpCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICBpZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQor
ICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKKwor
ICAgIGlmICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVu
dCkgeworICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0g
ZGVsdGFYIDwgMDsKKyAgICAgICAgICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0
YShzY3JvbGxhYmxlQXJlYVNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2
ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFYOworICAgICAgICB9CisgICAgICAg
IGlmIChkZWx0YVkpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOwor
ICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVB
cmVhU2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAg
ICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOworICAgICAgICB9CisgICAgfQorCisjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCisgICAgaWYgKG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3
aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgeworICAgICAgICBlbnN1cmVT
Y3JvbGxBbmltYXRpb25TbW9vdGgoKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKKyAgICAg
ICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQ
aXhlbCwgMSwgLWRlbHRhWSk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQ6OmhhbmRsZWQoKTsKKyAgICB9CisjZW5kaWYKKworICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBj
cmVhdGVVcGRhdGVTY29wZSgpOworICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeSh7IC1kZWx0
YVgsIC1kZWx0YVkgfSk7CisKKyAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojpo
YW5kbGVkKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKK3sKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JP
TExJTkcpCisgICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikgeworICAgICAgICBtX2tpbmV0aWNB
bmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9s
bEhpc3RvcnkoKTsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykK
KyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5z
dG9wKCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDAyMTg4ZTBjNzdmN2E3ZWU5MjBmOGMzMzhmNTc5ZjM2YzRmM2UxMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOSwgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCIKKwor
I2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQorCisjaW5jbHVkZSAi
Tmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgorCisj
aWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktp
bmV0aWMuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVk
ZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSA6IHB1
YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYShTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZSYsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKTsKKyAgICB2
aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPE5pY29zaWE6OlNjZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNjb3Bl
PiBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgIHZvaWQgcmVzZXRDdXJyZW50UG9zaXRpb24oKTsK
KyAgICB2b2lkIHVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRXZlbnRU
YXJnZXRpbmcpOworICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKworcHJpdmF0ZToK
KyAgICBib29sIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKKworI2lmIEVOQUJM
RShLSU5FVElDX1NDUk9MTElORykKKyAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0
aWMoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIHZvaWQgZW5z
dXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShLSU5FVElD
X1NDUk9MTElORykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4g
bV9raW5ldGljQW5pbWF0aW9uOworI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9zbW9vdGhBbmltYXRpb247
CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQo=
</data>
<flag name="commit-queue"
          id="441241"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422204</attachid>
            <date>2021-03-04 01:51:52 -0800</date>
            <delta_ts>2021-03-04 05:22:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222714-20210304105150.patch</filename>
            <type>text/plain</type>
            <size>38548</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4Y2Y3NTJjM2JjZDgw
ZDllYWQ5OWVjNTQ2MzEzMGEyYTU3MjI0Yi4uZjQxM2M3MDg1YmQwMjdhOWJkMTRmYzcxODI5Y2Ey
NmIxNjQxZjQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTAzLTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0g
TW92ZSBzaGFyZWQgc2Nyb2xsaW5nIGFuaW1hdGlvbiBjb2RlIGludG8gYSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI3MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZp
b3IuCisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZTogUmVtb3ZlIGRlbGVnYXRlIHBhcmVu
dCBjbGFzcyBmcm9tIE1hYy1zcGVjaWZpYyBsaXN0LgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0
YXRpb24uY21ha2U6IEFkZGVkIG5ldyBjbGFzcyB0byBzb3VyY2UgbGlzdC4KKyAgICAgICAgKiBT
b3VyY2VzLnR4dDogQWRkZWQgZGVsZWdhdGUgcGFyZW50IGNsYXNzIHRvIHNoYXJlZCBzb3VyY2Ug
bGlzdC4KKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDogQWRkZWQgbmV3IGNsYXNzLgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IFJlbW92ZSBzb3VyY2UgZmlsZSBmcm9tIHByb2plY3QsIHNpbmNlCisg
ICAgICAgIGl0IGlzIG5vdyBpbiBTb3VyY2VzLnR4dC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDogQ2hhbmdlZCBpbXBvcnQg
dG8gaW5jbHVkZS4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgTW92ZWQgc2hhcmVkIGNv
ZGUgdG8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lh
Lmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhLmg6IERpdG8uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6IEFkZGVkCisgICAgICAgIHNoYXJl
ZCBjb2RlIGZyb20gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEgYW5kIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YS5oOiBBZGRlZC4KKwogMjAyMS0wMy0wMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGJhc2ljIChub24tbW9tZW50dW0pIHdoZWVsIGV2ZW50
IGhhbmRsaW5nIGZvciBzY3JvbGwgc25hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBm
ZWU1MWQ5YWIxYWUxMGYzNjlmZmY2MDRkZGNmNmY4YTdhYmNjNmJjLi5iOWIwNDFlYzkwMTY4YmRl
MDljZTNjNWI2MzJlYWQzMDIzZTQzMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAt
MTcyLDggKzE3Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvbWFj
L1RleHRJbmRpY2F0b3JXaW5kb3cubW0KICAgICBwYWdlL21hYy9XaGVlbEV2ZW50RGVsdGFGaWx0
ZXJNYWMubW0KIAotICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUuY3BwCi0KICAgICBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMubW0KICAgICBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tCiAgICAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0
YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmlu
ZGV4IGZiM2UyYWRjYjQ5ZjUyYmVmODBhMjlhZWU0YWM3ZWQ3M2EyNzMyMTUuLjM3MzEyMjdmMjI4
MmI1MzI4YmYxNGRjYzA3OTExMjgxNTRiYjc4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZQpAQCAtMjgsNiArMjgsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbFByb3h5Tm9kZS5jcHAKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCiAg
ICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIAog
ICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDEyYmFkODY3YWExMWY3OTBkMjExODZlMWNjYTNjYzRiYTU2OTg1M2UuLjBkMjgxOWNmOWRmNGJh
YzlhNGUxYjlmOTBhZjFjYWY3MWIxMTVmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzkzLDYgKzE3
OTMsNyBAQCBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNw
cAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCitwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcAogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKIHBsYXRmb3JtL0NvbnRl
bnRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCBmYjFkZWVmMDFjNjFmNzIxZDRlMzIy
ZTdjMWYyY2FlYjlmMzJmNDk1Li43YmNhNGY3NWRkY2JmMzRlOTgxMjVlNzhhZTRkNDhmZGE4YTM5
ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNTksNiArNTksNyBAQCBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAog
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCitw
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5jcHAKIAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQ
RS50eHQKaW5kZXggMGQ1ZWVlYzI3MTMzNDMyMmI1NjA4N2ZlNmE2ZTI0ZWQ4NWE2MGUyMS4uYjY4
ZWU0YTk0YmJlYmFiZWU2MWNlMDNkODUxYmMyNmUxOWZhODhkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50
eHQKQEAgLTU1LDYgKzU1LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
Tmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsUHJveHlOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAorcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCiAKIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbktpbmV0aWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzlhMmViZjQxYTZkZTUwOTA5MWUwMTUxM2IxMTAw
ODExYzgzZTY3Ni4uM2NiZDAyNTE1ODRlYzU1NDZhZjYyYjUwYjJkMzQwMjllNWQxMTIwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzM2OSw3ICszMzY5LDYgQEAKIAkJQTVGMzZEM0IxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VE
ZWJ1Z2dlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVGMzZEMzkxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VEZWJ1Z2dlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE2MTQ4QTc5MTJFNDFFM0IwMDQ0
QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNjE0OEE3NzEyRTQxRTNCMDA0NEE3ODQgLyogSlNIVE1MS2V5
Z2VuRWxlbWVudC5oICovOyB9OwogCQlBNkQxNjk2NDEzNDZCNEMxMDAwRUI3NzAgLyogU2hhZG93
Um9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTZE
MTY5NjMxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNkQ1QTk5QzE2MjlENzAwMDAyOTczMzAg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNkQ1QTk5QTE2MjlENkZGMDAyOTczMzAg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgKi87IH07CiAJCUE2RDVB
OTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNkQ1QTk5
QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MTUx
QkQ4MTJGMTU1OEYwMDVBMEY2NCAvKiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxNTFCRDcxMkYxNTU4RjAwNUEwRjY0
IC8qIFRleHRDaGVja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTcxNUU2NTMxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxNUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICov
OyB9OwpAQCAtMzYyNTIsNyArMzYyNTEsNiBAQAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5MUNG
NyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzUxMTU2
RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0VGODY5RjBFODQ0RTlEMDBBODVDRDUgLyogU2Nyb2xsYmFyVGhlbWVNYWMubW0gaW4g
U291cmNlcyAqLywKLQkJCQlBNkQ1QTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0I4NUVENDE4
Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVt
ZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAv
KiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
RDU4REZEMUY5NTY1QTgwMDExMjc5MSAvKiBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKaW5kZXggOTczMzJjY2ZlMThlZGJh
OGU0ZTMxZmNjYTY3YmYyNmQzYjYxYTAxNi4uZWE2M2M1NDU4YWVhYmEwZDQzM2FmYWZiM2Y5YWY3
N2QwMWMzMDI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKQEAg
LTIzLDEyICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZS5oIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCIKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CiAKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CmluZGV4IDIyMjIzM2RlOGQyNzJlMDRjYzY4Zjk5Y2VlY2JkNmIxYWRkN2RkYjcuLmYxZTczZDRm
NDMxMzFlNTYxOGEwYzUxY2QyN2FjY2JjMjc5ZjE3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC0zNywxMyArMzcs
NiBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCiAjaW5j
bHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgiCiAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JP
TExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIgotI2VuZGlmCi0jaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZT4gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6
OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBu
b2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKQEAgLTUzLDggKzQ2LDggQEAgUmVmPFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpjcmUKIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWE6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhKFNjcm9sbGluZ1RyZWUm
IHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZShzY3JvbGxp
bmdUcmVlLCBub2RlVHlwZSwgbm9kZUlEKQorICAgICwgbV9kZWxlZ2F0ZSgqdGhpcywgZG93bmNh
c3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKS5zY3JvbGxBbmltYXRvckVu
YWJsZWQoKSkKIHsKLSAgICBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCA9IGRvd25jYXN0PFRocmVh
ZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSkuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7
CiB9CiAKIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjp+U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEoKSA9IGRlZmF1bHQ7CkBAIC0xMDIsMTQxICs5
NSwxOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21t
aXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2NybwogICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVx
dWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3Jv
bGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKLSNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICAgICAg
bV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRp
b24oKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9kZWxlZ2F0ZS5yZXNldEN1cnJlbnRQb3NpdGlvbigp
OwogICAgIH0KIH0KIAotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLXZvaWQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktp
bmV0aWMoKQotewotICAgIGlmIChtX2tpbmV0aWNBbmltYXRpb24pCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYz4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAg
cmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07Ci0g
ICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKLSAgICAgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9u
KHBvc2l0aW9uKTsKLSNlbmRpZgotCi0gICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0
YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAgICAgYXV0byYg
Y29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpz
Y3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlv
bkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlv
bik7Ci0gICAgICAgIH0pOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykKLXZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmVuc3VyZVNj
cm9sbEFuaW1hdGlvblNtb290aCgpCi17Ci0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xs
QW5pbWF0aW9uU21vb3RoPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0g
ICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIElu
dFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNp
emUoKSkgfTsKLSAgICAgICAgfSwKLSAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCi0g
ICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8q
IHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9s
bGVkQ29udGVudHNMYXllcigpKTsKLSAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0g
ICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29t
cG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICAgICAgYXV0byB1cGRhdGVT
Y29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICAgICAgICAg
IHNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10geyB9KTsKLX0KLSNl
bmRpZgotCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKLSAgICBpZiAo
IWNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpKQotICAgICAg
ICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKLQotI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGlj
KCk7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxF
dmVudCk7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgaWYgKHdoZWVsRXZl
bnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0
aW9uLT5zdGFydChjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgbV9raW5ldGljQW5pbWF0aW9uLT5j
b21wdXRlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSwgY2FuSGF2ZVZl
cnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Ny
b2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojpo
YW5kbGVkKCk7Ci0gICAgfQotICAgIGlmICh3aGVlbEV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9t
ZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJl
bnRTY3JvbGxQb3NpdGlvbigpLCB3aGVlbEV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgY2FuSGF2ZUhv
cml6b250YWxTY3JvbGxiYXIoKSwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1
cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQotI2VuZGlmCi0K
LSAgICBmbG9hdCBkZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpID8gd2hlZWxF
dmVudC5kZWx0YVgoKSA6IDA7Ci0gICAgZmxvYXQgZGVsdGFZID0gY2FuSGF2ZVZlcnRpY2FsU2Ny
b2xsYmFyKCkgPyB3aGVlbEV2ZW50LmRlbHRhWSgpIDogMDsKLSAgICBpZiAoKGRlbHRhWCA8IDAg
JiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueCgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigp
LngoKSkKLSAgICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCku
eCgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLngoKSkpCi0gICAgICAgIGRlbHRhWCA9IDA7
Ci0gICAgaWYgKChkZWx0YVkgPCAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLnkoKSA+PSBt
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpCi0gICAgICAgIHx8IChkZWx0YVkgPiAwICYmIGN1
cnJlbnRTY3JvbGxQb3NpdGlvbigpLnkoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkp
KQotICAgICAgICBkZWx0YVkgPSAwOwotCi0gICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKLSAg
ICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7Ci0KLSAg
ICBpZiAod2hlZWxFdmVudC5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQp
IHsKLSAgICAgICAgaWYgKGRlbHRhWCkgewotICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRl
bHRhWCA8IDA7Ci0gICAgICAgICAgICBkZWx0YVggPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEo
c2Nyb2xsYWJsZUFyZWFTaXplKCkud2lkdGgoKSk7Ci0gICAgICAgICAgICBpZiAobmVnYXRpdmUp
Ci0gICAgICAgICAgICAgICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoZGVsdGFZKSB7Ci0gICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZIDwgMDsKLSAg
ICAgICAgICAgIGRlbHRhWSA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJl
YVNpemUoKS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAg
ICAgICAgZGVsdGFZID0gLWRlbHRhWTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCAmJiAhd2hl
ZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKLSAgICAgICAgZW5zdXJlU2Ny
b2xsQW5pbWF0aW9uU21vb3RoKCk7Ci0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwo
SG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWCk7Ci0gICAgICAg
IG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4
ZWwsIDEsIC1kZWx0YVkpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
OjpoYW5kbGVkKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0
YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KSk7Ci0gICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVy
ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQot
ICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3Bl
KCk7Ci0gICAgc2Nyb2xsQnkoeyAtZGVsdGFYLCAtZGVsdGFZIH0pOwotCi0gICAgcmV0dXJuIFdo
ZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgIHJldHVybiBtX2RlbGVnYXRl
LmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpOwogfQogCiB2b2lk
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpCiB7Ci0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIGlmIChtX2tpbmV0
aWNBbmltYXRpb24pIHsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAg
ICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgfQotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0
aW9uKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOwotI2VuZGlmCisgICAgbV9k
ZWxlZ2F0ZS5zdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCiBGbG9hdFBvaW50IFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjphZGp1c3RlZFNjcm9sbFBvc2l0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykgY29uc3QK
QEAgLTMxNSwxMCArMTg1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYTo6cmVwb3NpdGlvblJlbGF0ZWRMYXllcnMoKQogICAgICAgICAgICAgYXBwbHlMYXll
clBvc2l0aW9uKCptX2Zvb3RlckxheWVyLCBGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZz
ZXRGb3JCYW5uZXIsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIoc2Nyb2xsUG9z
aXRpb24sIHRvcENvbnRlbnRJbnNldCwgdG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSwgZm9v
dGVySGVpZ2h0KCkpKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0g
ICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+dXBk
YXRlVmlzaWJsZUxlbmd0aHMoKTsKLSNlbmRpZgorICAgIG1fZGVsZWdhdGUudXBkYXRlVmlzaWJs
ZUxlbmd0aHMoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDdhZGNiZDQy
YjEwMzhjYjdkOGZjN2I4Njk5M2NmNzNkZWVmYjEzYjQuLjk2MDhkNTYwZmE2MjJmZGFkMmM1ZjZj
NTQxMmIyOWI2OWJlNDhkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVOaWNvc2lhLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKIAogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUuaCIKLQorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgTmljb3NpYSB7CkBAIC01NSwyMSArNTUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7CiAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgdm9p
ZCBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKLSAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOwot
I2VuZGlmCiAKICAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGluZykgb3ZlcnJpZGU7Ci0KLSAg
ICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCkgb3ZlcnJpZGU7Ci0KICAgICBGbG9hdFBvaW50
IGFkanVzdGVkU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENsYW1waW5n
KSBjb25zdCBvdmVycmlkZTsKLQogICAgIHZvaWQgY3VycmVudFNjcm9sbFBvc2l0aW9uQ2hhbmdl
ZChTY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKSBvdmVycmlkZTsKLQor
ICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcG9z
aXRpb25TY3JvbGxpbmdMYXllcnMoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcG9zaXRpb25SZWxh
dGVkTGF5ZXJzKCkgb3ZlcnJpZGU7CiAKQEAgLTgwLDEzICs3MCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1faGVhZGVyTGF5ZXI7CiAgICAgUmVm
UHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fZm9vdGVyTGF5ZXI7CiAKLSAgICBib29s
IG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKLSNpZiBFTkFCTEUoS0lORVRJQ19T
Q1JPTExJTkcpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1f
a2luZXRpY0FuaW1hdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1fc21vb3RoQW5pbWF0aW9uOwot
I2VuZGlmCisgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgbV9k
ZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKaW5kZXgg
ZWRmYTZlMmFjYTQyOWIzMmE5NWFiOWZmYTEzYTRiYjVmYzNlYWQ1ZC4uYzQ3NGM0ODIwMGExNWYy
MjcyNTljOGY0MTRlNDEwMjUzZTUwMGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmlj
b3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKQEAgLTMyLDE1ICszMiw2
IEBACiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKICNpbmNs
dWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCi0jZW5kaWYKLSNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIK
LSNlbmRpZgotI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgi
Ci0jaW5jbHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+IFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Ny
b2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKQEAgLTUwLDggKzQxLDggQEAgUmVm
PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2kKIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhKFNjcm9s
bGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkK
KyAgICAsIG1fZGVsZWdhdGUoKnRoaXMsIGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4o
c2Nyb2xsaW5nVHJlZSkuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpCiB7Ci0gICAgbV9zY3JvbGxB
bmltYXRvckVuYWJsZWQgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGlu
Z1RyZWUpLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOwogfQogCiBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVOaWNvc2lhKCkgPSBkZWZhdWx0OwpAQCAtNjUsMTAgKzU2LDcgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVu
KGNvbnN0IFMKICAgICAgICAgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKICAgICAgICAgY29uc3Qg
YXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IG92ZXJmbG93U3RhdGVOb2RlLnJlcXVlc3RlZFNj
cm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQ
b3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxE
YXRhLmNsYW1waW5nKTsKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAgICAgaWYg
KG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1
cnJlbnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7Ci0jZW5kaWYKKyAgICAgICAg
bV9kZWxlZ2F0ZS5yZXNldEN1cnJlbnRQb3NpdGlvbigpOwogICAgIH0KIH0KIApAQCAtOTMsMTQw
ICs4MSwxNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lh
OjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkKICAgICAgICAgICAgIHN0YXRlLmRlbHRhLmJv
dW5kc09yaWdpbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9KTsKIAotI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7Ci0jZW5kaWYKLX0KLQotI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKQotewotICAgIGlm
IChtX2tpbmV0aWNBbmltYXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fa2luZXRpY0Fu
aW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCi0gICAgICAgIFt0
aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQo
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07Ci0gICAgICAgIH0sCi0gICAgICAg
IFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKLSAgICAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgICAgICAg
ICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKLSNlbmRp
ZgotCi0gICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6
OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKLSAgICAgICAgICAgIEFT
U0VSVChzY3JvbGxMYXllcik7Ci0gICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0g
ZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQotICAg
ICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRl
U2NvcGUoKTsKLSAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSk7Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotdm9pZCBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21v
b3RoKCkKLXsKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+
KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVy
biB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAg
ICB9LAotICAgICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKLSAgICAgICAgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBz
dGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAgICAgYXV0byYg
Y29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpz
Y3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlv
bkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlv
bik7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIHsgfSk7CisgICAgbV9kZWxlZ2F0ZS51cGRhdGVW
aXNpYmxlTGVuZ3RocygpOwogfQotI2VuZGlmCiAKIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2
ZW50VGFyZ2V0aW5nKQogewotICAgIGlmICghY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50
LCBldmVudFRhcmdldGluZykpCi0gICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQ6OnVuaGFuZGxlZCgpOwotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIGVu
c3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFw
cGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24t
PnN0b3AoKTsKLSAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkg
ewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlv
bigpLCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpv
bnRhbFNjcm9sbGJhcigpLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKSk7Ci0gICAgICAgIG1f
a2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgICAgIHJldHVybiBX
aGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKLSAgICB9Ci0gICAgaWYgKHdoZWVs
RXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQu
c3dpcGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpLCBjYW5IYXZlVmVy
dGljYWxTY3JvbGxiYXIoKSk7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3Jv
bGxIaXN0b3J5KCk7Ci0gICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6Omhh
bmRsZWQoKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGZsb2F0IGRlbHRhWCA9IGNhbkhhdmVIb3Jp
em9udGFsU2Nyb2xsYmFyKCkgPyB3aGVlbEV2ZW50LmRlbHRhWCgpIDogMDsKLSAgICBmbG9hdCBk
ZWx0YVkgPSBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQuZGVsdGFZKCkg
OiAwOwotICAgIGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkg
Pj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKQotICAgICAgICB8fCAoZGVsdGFYID4gMCAm
JiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCku
eCgpKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBpZiAoKGRlbHRhWSA8IDAgJiYgY3VycmVu
dFNjcm9sbFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkKLSAg
ICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpIDw9IG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkpCi0gICAgICAgIGRlbHRhWSA9IDA7Ci0KLSAgICBp
ZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0Ojp1bmhhbmRsZWQoKTsKLQotICAgIGlmICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkg
PT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewotICAgICAgICBpZiAoZGVsdGFYKSB7Ci0gICAg
ICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKLSAgICAgICAgICAgIGRlbHRhWCA9
IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS53aWR0aCgpKTsK
LSAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVs
dGFYOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZWx0YVkpIHsKLSAgICAgICAgICAgIGJvb2wg
bmVnYXRpdmUgPSBkZWx0YVkgPCAwOwotICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpw
YWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdodCgpKTsKLSAgICAgICAgICAg
IGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOwotICAgICAg
ICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc2Ny
b2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMoKSkgewotICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKLSAgICAgICAg
bV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBp
eGVsLCAxLCAtZGVsdGFYKTsKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChWZXJ0
aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWSk7Ci0gICAgICAgIHJldHVy
biBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKLSAgICB9Ci0jZW5kaWYKLQot
ICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXll
cio+KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOwotICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0g
ICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRp
b25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgIHNjcm9sbEJ5KHsgLWRlbHRhWCwgLWRl
bHRhWSB9KTsKLQotICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQo
KTsKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2
ZW50VGFyZ2V0aW5nKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTmljb3NpYTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQogewotI2lmIEVOQUJMRShLSU5FVElD
X1NDUk9MTElORykKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFy
U2Nyb2xsSGlzdG9yeSgpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRp
b24tPnN0b3AoKTsKLSNlbmRpZgorICAgIG1fZGVsZWdhdGUuc3RvcFNjcm9sbEFuaW1hdGlvbnMo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDhkZjc4ZDAwZWI2
N2FhNGNmNjI2MTkxOGJkZWM0OGRmNmMzMzBmYzYuLjE2Njk3MjU5MzlhODkwZWYwZGI2MDc3ODQw
MjY4NDU5MmM3NTBmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKIAogI2luY2x1ZGUgIlNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
Y3JvbGxBbmltYXRpb247CkBAIC00NSwyOSArNDYsMTIgQEAgcHJpdmF0ZToKICAgICBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xs
aW5nTm9kZUlEKTsKIAogICAgIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwotCiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFtcGluZykgY29uc3Qgb3Zl
cnJpZGU7Ci0KICAgICB2b2lkIHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKSBvdmVycmlkZTsK
LQotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICB2b2lkIGVuc3VyZVNjcm9sbEFu
aW1hdGlvbktpbmV0aWMoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQot
ICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7Ci0jZW5kaWYKLQogICAgIFdo
ZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYsIEV2ZW50VGFyZ2V0aW5nKSBvdmVycmlkZTsKLQogICAgIHZvaWQgc3RvcFNjcm9s
bEFuaW1hdGlvbnMoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJs
ZWQgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5pbWF0aW9uOwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbEFuaW1hdGlvbj4gbV9zbW9vdGhBbmltYXRpb247Ci0jZW5kaWYKKyAgICBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSBtX2RlbGVnYXRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGFiNDNhZmRmZmQ0OWYx
OTQ3NDcyZWQ3MWNiNWNjZWVjOWVkOThiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYS5jcHAKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5
LCAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oIgorCisjaW5j
bHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpICYmIFVTRShOSUNPU0lBKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTY3JvbGxB
bmltYXRpb247CitjbGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOworCitTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWEoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUs
IGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKQorICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZShzY3JvbGxpbmdOb2RlKQorICAgICwgbV9zY3JvbGxBbmltYXRvckVuYWJs
ZWQoc2Nyb2xsQW5pbWF0b3JFbmFibGVkKQoreworfQorCitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhKCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPE5pY29zaWE6OlNjZW5lSW50ZWdyYXRp
b246OlVwZGF0ZVNjb3BlPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6Y3JlYXRlVXBkYXRlU2NvcGUoKQoreworICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGlj
X2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGluZ05vZGUoKS5zY3JvbGxDb250
YWluZXJMYXllcigpKTsKKyAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4oc2Nyb2xsaW5nTm9kZSgpKSkKKyAgICAgICAgc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxO
aWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGVkQ29udGVudHNM
YXllcigpKTsKKworICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgYXV0byYgY29tcG9zaXRp
b25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXll
cik7CisgICAgcmV0dXJuIGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKK30K
Kwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6cmVzZXRD
dXJyZW50UG9zaXRpb24oKQoreworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlm
IChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJl
bnRQb3NpdGlvbihzY3JvbGxpbmdOb2RlKCkuY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOworI2Vu
ZGlmCit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6
OnVwZGF0ZVZpc2libGVMZW5ndGhzKCkKK3sKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykK
KyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT51
cGRhdGVWaXNpYmxlTGVuZ3RocygpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoS0lORVRJQ19T
Q1JPTExJTkcpCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
OjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKK3sKKyAgICBpZiAobV9raW5ldGljQW5p
bWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAorICAgICAgICBbdGhpc10oKSAtPiBTY3Jv
bGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNj
cm9sbGFibGVBcmVhU2l6ZSgpKSB9OworICAgICAgICB9LAorICAgICAgICBbdGhpc10oRmxvYXRQ
b2ludCYmIHBvc2l0aW9uKSB7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgICAg
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgICAgICAgICAgbV9zbW9vdGhBbmlt
YXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CisjZW5kaWYKKyAgICAgICAgICAg
IGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Ny
b2xsaW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAgICAgfSk7Cit9CisjZW5kaWYK
KworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCkKK3sK
KyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fc21v
b3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KAorICAgICAg
ICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7IEludFBv
aW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OworICAgICAgICB9LAorICAg
ICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKKyAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQm
JiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNyZWF0ZVVwZGF0
ZVNjb3BlKCk7CisgICAgICAgICAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ocG9zaXRpb24p
OworICAgICAgICB9LAorICAgICAgICBbXSB7IH0pOworfQorI2VuZGlmCisKK1doZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2
ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQoreworICAgIGlmICghc2Nyb2xsaW5nTm9kZSgp
LmNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpKQorICAgICAg
ICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKKworICAgIGJv
b2wgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIgPSBzY3JvbGxpbmdOb2RlKCkuY2FuSGF2ZUhv
cml6b250YWxTY3JvbGxiYXIoKTsKKyAgICBib29sIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA9
IHNjcm9sbGluZ05vZGUoKS5jYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKTsKKyNpZiBFTkFCTEUo
S0lORVRJQ19TQ1JPTExJTkcpCisgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwor
ICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5KHdoZWVsRXZlbnQp
OworICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOworICAgIGlmICh3aGVlbEV2ZW50Lmlz
RW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+
c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0
ZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxT
Y3JvbGxiYXIpOworICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9y
eSgpOworICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7
CisgICAgfQorICAgIGlmICh3aGVlbEV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3Jv
bGwoKSkgeworICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQ
b3NpdGlvbigpLCB3aGVlbEV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxT
Y3JvbGxiYXIsIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgIG1fa2luZXRpY0Fu
aW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50
SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAgICB9CisjZW5kaWYKKworICAgIGZsb2F0IGRl
bHRhWCA9IGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyID8gd2hlZWxFdmVudC5kZWx0YVgoKSA6
IDA7CisgICAgZmxvYXQgZGVsdGFZID0gY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyID8gd2hlZWxF
dmVudC5kZWx0YVkoKSA6IDA7CisgICAgaWYgKChkZWx0YVggPCAwICYmIGN1cnJlbnRTY3JvbGxQ
b3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpCisgICAgICAgIHx8
IChkZWx0YVggPiAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA8PSBtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKS54KCkpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmICgoZGVsdGFZ
IDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkueSgpKQorICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRp
b24oKS55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKSkKKyAgICAgICAgZGVsdGFZ
ID0gMDsKKworICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAgICAgIHJldHVybiBXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOworCisgICAgaWYgKHdoZWVsRXZlbnQu
Z3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7CisgICAgICAgIGlmIChk
ZWx0YVgpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVggPCAwOworICAgICAg
ICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6
ZSgpLndpZHRoKCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAg
IGRlbHRhWCA9IC1kZWx0YVg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlbHRhWSkgeworICAg
ICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7CisgICAgICAgICAgICBkZWx0YVkg
PSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFyZWFTaXplKCkuaGVpZ2h0KCkp
OworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAgIGRlbHRhWSA9IC1k
ZWx0YVk7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykK
KyAgICBpZiAobV9zY3JvbGxBbmltYXRvckVuYWJsZWQgJiYgIXdoZWVsRXZlbnQuaGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcygpKSB7CisgICAgICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290
aCgpOworICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxTY3JvbGxi
YXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOworICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFZKTsK
KyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAg
IH0KKyNlbmRpZgorCisgICAgYXV0byB1cGRhdGVTY29wZSA9IGNyZWF0ZVVwZGF0ZVNjb3BlKCk7
CisgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbEJ5KHsgLWRlbHRhWCwgLWRlbHRhWSB9KTsKKwor
ICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3RvcFNjcm9sbEFu
aW1hdGlvbnMoKQoreworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAobV9r
aW5ldGljQW5pbWF0aW9uKSB7CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwor
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgIH0K
KyNlbmRpZgorI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX3Ntb290aEFu
aW1hdGlvbikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKKyNlbmRpZgorfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDIxODhlMGM3N2Y3YTdl
ZTkyMGY4YzMzOGY1NzlmMzZjNGYzZTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYS5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LCAy
MDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXll
ci5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCisj
aW5jbHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgiCisKKyNpZiBFTkFCTEUoS0lORVRJQ19T
Q1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIgorI2VuZGlmCisK
KyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25T
bW9vdGguaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
JiwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IGNyZWF0ZVVwZGF0ZVNjb3Bl
KCk7CisgICAgdm9pZCByZXNldEN1cnJlbnRQb3NpdGlvbigpOworICAgIHZvaWQgdXBkYXRlVmlz
aWJsZUxlbmd0aHMoKTsKKyAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGluZyk7CisgICAgdm9p
ZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworCitwcml2YXRlOgorICAgIGJvb2wgbV9zY3JvbGxB
bmltYXRvckVuYWJsZWQgeyBmYWxzZSB9OworCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5H
KQorICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOworI2VuZGlmCisjaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25T
bW9vdGgoKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247
CisjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsQW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKKyNlbmRpZgorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykg
JiYgVVNFKE5JQ09TSUEpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>