<?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>226654</bug_id>
          
          <creation_ts>2021-06-04 11:27:13 -0700</creation_ts>
          <short_desc>Replace invalidSnapOffsetIndex with std::optional&lt;unsigned&gt;</short_desc>
          <delta_ts>2021-06-16 00:37:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>226630</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766852</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-04 11:27:13 -0700</bug_when>
    <thetext>Using std::optional&lt;unsigned&gt; instead of UINT_MAX to indicate when there is no selected scroll offset will more easily prevent errors in the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769002</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-11 11:28:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/79208115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769749</commentid>
    <comment_count>2</comment_count>
      <attachid>431423</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-15 04:48:30 -0700</bug_when>
    <thetext>Created attachment 431423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769777</commentid>
    <comment_count>3</comment_count>
      <attachid>431432</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-15 06:31:57 -0700</bug_when>
    <thetext>Created attachment 431432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770102</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-16 00:37:57 -0700</bug_when>
    <thetext>Committed r278923 (238854@main): &lt;https://commits.webkit.org/238854@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431432.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431423</attachid>
            <date>2021-06-15 04:48:30 -0700</date>
            <delta_ts>2021-06-15 06:31:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226654-20210615134828.patch</filename>
            <type>text/plain</type>
            <size>60437</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFhYmY4MDEzNDYwMmMw
ODExZTFhZThlNmQ5ZGVkMzhjYTMzYjc4OS4uMTIyMGZlYTk4ODJjMDM5MmU0YTdmMjhkNmI2Yjg5
ZjY2ZTQyNDIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTA2LTA5ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGlu
dmFsaWRTbmFwT2Zmc2V0SW5kZXggd2l0aCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjU0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGluIG9yZGVyIHRvIHJlcHJlc2VudCB0aGUgc2l0dWF0aW9uCisgICAgICAg
IHdoZXJlIHdlIGRvIG5vdCBoYXZlIGEgc25hcCBwb2ludCBzZWxlY3RlZCByYXRoZXIgdGhhbiBV
SU5UX01BWC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2Ug
YmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGljZXNPZk5lYXJl
c3RTbmFwT2Zmc2V0cyk6IFJldHVybiBhIHN0ZDo6cGFpciBpbnN0ZWFkIG9mIHNwbGl0dGluZyB0
aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlcyBpbnRvIHRoZSBhcmd1bWVudCBsaXN0LgorICAgICAg
ICAoV2ViQ29yZTo6Y2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xv
c2VzdFNuYXBPZmZzZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kaWNlcyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBNb3ZlIHNvbWUgbWV0aG9kcyBp
bnRvIHRoZQorICAgICAgICBzb3VyY2UgZmlsZSB0byBzYXRpc2Z5IHRoZSBzdHlsZSBjaGVja2Vy
LiBXRUJDT1JFX0VYUE9SVCBpcyBhcHBsaWVkIHRvIHRoZQorICAgICAgICBlbnRpcmUgY2xhc3Mg
ZGVjbGFyYXRpb24uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdU
cmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3VycmVu
dFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjphY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxDb250cm9sbGVyOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKTogV2hl
biB0aGVyZSBpcyBubyBuZXcKKyAgICAgICAgc25hcCBpbmRleCwgd2UgbmVlZCB0byBhY3RpdmVs
eSBjaGFuZ2UgdGhlIHZhbHVlIHRvIHN0ZDo6bnVsbG9wdC4gVGhpcyB3YXNuJ3QKKyAgICAgICAg
bmVjZXNzYXJ5IGJlY2F1c2UgU2Nyb2xsYWJsZUFyZWEgd2FzIGNvdmVyaW5nIHVwIHRoaXMgY2Fz
ZSBpbiB0aGUgcGFzdCBhcyBhIHNpZGUtZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Q29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6cmVzbmFwQWZ0ZXJMYXlvdXQpOiBB
bHNvIHJlc25hcCBpZiB0aGUgc25hcHBlZCBpbmRleCBpcworICAgICAgICBncmVhdGVyIHRoYW4g
dGhlIGN1cnJlbnQgb25lLiBUaGlzIGNhc2Ugd2FzIGJlaW5nIGNvdmVyZWQgdXAgYnkgYSBzaWRl
LWVmZmVjdCBpbgorICAgICAgICBTY3JvbGxhYmxlQXJlYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNl
dHVwQW5pbWF0aW9uRm9yU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0IGNvbnN0KTogUmV0dXJuIGEgc3Rk
OjpwYWlyCisgICAgICAgIGluc3RlYWQgb2Ygc3BsaXR0aW5nIHRoZSBvdXRwdXQgdmFsdWVzIGlu
dG8gdGhlIGFyZ3VtZW50IGxpc3QuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjph
Y3RpdmVTbmFwSW5kZXhGb3JBeGlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpzZXRBY3RpdmVTbmFwSW5kZXhGb3JBeGlzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldEN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNl
dEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhOjpyZXNuYXBBZnRlckxheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDoKKwogMjAyMS0wNi0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGln
YWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gU2Nyb2xsIHNuYXAgb2Zmc2V0
cyBhcmUgaW50ZXJwcmV0ZWQgYXMgc2Nyb2xsIHBvc2l0aW9ucyBpbiBTY3JvbGxhYmxlQXJlYQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAxNGUyZjc5MzgxZGRjY2IwZTU5ODQ3OTk4NWY2ZmNjOWRjODY1YWVhLi4zOTRi
MjI0NTQ5OGIzZGVlZGRlMDI0MzY2Mjg4YTU5NjZiNTg4ZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDIxLTA2LTA5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXBsYWNlIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggd2l0aCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluIG9yZGVyIHRvIHJlcHJlc2Vu
dCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJlIHdlIGRvIG5vdCBoYXZlIGEgc25hcCBwb2lu
dCBzZWxlY3RlZCByYXRoZXIgdGhhbiBVSU5UX01BWC4KKworICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU6OmN1cnJl
bnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1c3RU
YXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bToKKyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZp
ZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1
cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3VycmVudFNu
YXBQb2ludEluZGljZXNDaGFuZ2VkRm9yTm9kZSk6CisKIDIwMjEtMDYtMTUgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBd
IE5ldyBzbmFwIGNvbnRhaW5lcnMgYWx3YXlzIHNuYXAgdG8gdGhlIGZpcnN0IHNjcm9sbCBwb3Np
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBmMTRlODhiMDMxNzA0ODEyYzZiMzcxMjg0
ZDYwY2IyODA1OTE5YTVmLi5iZjhhYzYxYzZiYWE2YTdlMmY3OGVkY2RhZmNlYjNiMDRhZjJmOTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtODcxLDcgKzg3MSw3IEBAIFN0cmluZyBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdUcmVlQXNUZXh0KFNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dEJlCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlE
IHNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2ZXJ0
aWNhbEluZGV4KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRBY3RpdmVTY3Jv
bGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBob3Jpem9udGFsSW5kZXgsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZl
cnRpY2FsSW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAppbmRleCA1MWQ2ZDg3NjIyZmZhODViYWJkMTk3OWExZGM1Y2ExZjFmYTA2YmUz
Li44OGUxNGE5ODllMDVkYTE3ZWVhZDU5YWU3N2MxYzBlNGEzZDM0MDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShTY3JvbGxpbmdOb2Rl
SUQsIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25l
ZCBob3Jpem9udGFsSW5kZXgsIHVuc2lnbmVkIHZlcnRpY2FsSW5kZXgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlELCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsSW5kZXgsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHZlcnRpY2FsSW5kZXgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5jcHAKaW5kZXggNWNlNTc2OTNlNWNkZjFkNDdmY2NlMDFjOGU2MWI5YTli
MWQxMDM2Yy4uN2I4NzViOWRhZjllYzgzYjZkOTdkNTNiNWNkOGVkNmQ5OTIxZWFjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uY3BwCkBAIC00MywxMCArNDMsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1zdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0
U25hcE9mZnNldHMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExh
eW91dFR5cGU+PiYgc25hcE9mZnNldHMsIHVuc2lnbmVkJiBsb3dlckluZGV4LCB1bnNpZ25lZCYg
dXBwZXJJbmRleCkKK3N0YXRpYyBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4sIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0
VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYgc25hcE9m
ZnNldHMpCiB7Ci0gICAgbG93ZXJJbmRleCA9IDA7Ci0gICAgdXBwZXJJbmRleCA9IHNuYXBPZmZz
ZXRzLnNpemUoKSAtIDE7CisgICAgdW5zaWduZWQgbG93ZXJJbmRleCA9IDA7CisgICAgdW5zaWdu
ZWQgdXBwZXJJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7CiAgICAgd2hpbGUgKGxvd2Vy
SW5kZXggPCB1cHBlckluZGV4IC0gMSkgewogICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93
ZXJJbmRleCArIHVwcGVySW5kZXgpIC8gMjsKICAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQgPSBz
bmFwT2Zmc2V0c1ttaWRkbGVJbmRleF0ub2Zmc2V0OwpAQCAtNjEsNiArNjEsOCBAQCBzdGF0aWMg
dm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0
IFZlY3RvcjxTbmFwT2ZmcwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1cHBlckluZGV4ID0g
bWlkZGxlSW5kZXg7CiAgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxvd2VySW5k
ZXgsIHVwcGVySW5kZXgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KQEAg
LTk1LDE2ICs5NywxNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0
U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpbwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFNpemVUeXBlLCB0eXBlbmFtZSBMYXlvdXRUeXBl
Pgotc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZz
ZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW5mb1R5cGUmIGluZm8sIFNjcm9sbEV2ZW50QXhpcyBh
eGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBMYXlvdXRUeXBlIHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxMYXlvdXRUeXBlPiBv
cmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpCitzdGF0aWMgc3RkOjpwYWlyPExh
eW91dFR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBjbG9zZXN0U25hcE9mZnNldFdpdGhJ
bmZvQW5kQXhpcyhjb25zdCBJbmZvVHlwZSYgaW5mbywgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNv
bnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPExheW91dFR5cGU+IG9yaWdpbmFs
T2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykKIHsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zm
c2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7Ci0gICAgYXV0byBwYWlyRm9yTm9TbmFw
cGluZyA9IHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25h
cE9mZnNldEluZGV4KTsKKyAgICBhdXRvIHBhaXJGb3JOb1NuYXBwaW5nID0gc3RkOjptYWtlX3Bh
aXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKHNuYXBP
ZmZzZXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHBhaXJGb3JOb1NuYXBwaW5nOwogCiAg
ICAgaWYgKG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykgewogICAgICAgICBp
ZiAoYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNl
dEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKm9yaWdpbmFsT2Zmc2V0
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzWypmaXJzdFNuYXBTdG9wT2Zm
c2V0SW5kZXhdLm9mZnNldCwgKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCk7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHNbKmZpcnN0U25hcFN0b3BPZmZzZXRJ
bmRleF0ub2Zmc2V0LCBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXgpOwogICAgIH0KIAogICAgIGF1
dG8gdmlld3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/
IHZpZXdwb3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdodCgpOwpAQCAtMTE5LDMy
ICsxMjEsMzIgQEAgc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2Vz
dFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW4KICAgICB9OwogCiAgICAgaWYgKHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0IDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KQotICAg
ICAgICByZXR1cm4gaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkoc25hcE9mZnNldHMu
Zmlyc3QoKS5vZmZzZXQpID8gc3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMuZmlyc3QoKS5vZmZz
ZXQsIDB1KSA6IHBhaXJGb3JOb1NuYXBwaW5nOworICAgICAgICByZXR1cm4gaXNOZWFyRW5vdWdo
VG9PZmZzZXRGb3JQcm94aW1pdHkoc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpID8gc3RkOjpt
YWtlX3BhaXIoc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQsIHN0ZDo6bWFrZV9vcHRpb25hbCgw
dSkpIDogcGFpckZvck5vU25hcHBpbmc7CiAKICAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQgPj0gc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCkgewogICAgICAgICB1bnNpZ25lZCBsYXN0
SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7Ci0g
ICAgICAgIHJldHVybiBpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShzbmFwT2Zmc2V0
cy5sYXN0KCkub2Zmc2V0KSA/IHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZz
ZXQsIGxhc3RJbmRleCkgOiBwYWlyRm9yTm9TbmFwcGluZzsKKyAgICAgICAgcmV0dXJuIGlzTmVh
ckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpID8g
c3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCwgc3RkOjptYWtlX29wdGlv
bmFsKGxhc3RJbmRleCkpIDogcGFpckZvck5vU25hcHBpbmc7CiAgICAgfQogCi0gICAgdW5zaWdu
ZWQgbG93ZXJJbmRleDsKLSAgICB1bnNpZ25lZCB1cHBlckluZGV4OwotICAgIGluZGljZXNPZk5l
YXJlc3RTbmFwT2Zmc2V0czxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25h
cE9mZnNldHMsIGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOwotICAgIExheW91dFR5cGUgbG93ZXJT
bmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dlckluZGV4XS5vZmZzZXQ7Ci0gICAgTGF5b3V0
VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdLm9mZnNldDsK
KyAgICBhdXRvIFtsb3dlckluZGV4LCB1cHBlckluZGV4XSA9IGluZGljZXNPZk5lYXJlc3RTbmFw
T2Zmc2V0czxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNldHMp
OworICAgIEFTU0VSVChsb3dlckluZGV4KTsKKyAgICBBU1NFUlQodXBwZXJJbmRleCk7CisgICAg
TGF5b3V0VHlwZSBsb3dlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzWypsb3dlckluZGV4XS5v
ZmZzZXQ7CisgICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzWyp1
cHBlckluZGV4XS5vZmZzZXQ7CiAKICAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJv
eGltaXR5KGxvd2VyU25hcFBvc2l0aW9uKSkgewogICAgICAgICBsb3dlclNuYXBQb3NpdGlvbiA9
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0OwotICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNu
YXBPZmZzZXRJbmRleDsKKyAgICAgICAgbG93ZXJJbmRleC5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmICghaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkodXBwZXJTbmFwUG9zaXRpb24p
KSB7CiAgICAgICAgIHVwcGVyU25hcFBvc2l0aW9uID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7
Ci0gICAgICAgIHVwcGVySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgICAgICB1
cHBlckluZGV4LnJlc2V0KCk7CisKICAgICB9CiAKICAgICBpZiAoIXN0ZDo6YWJzKHZlbG9jaXR5
KSkgewotICAgICAgICBib29sIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA9ICh1cHBlcklu
ZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCi0gICAgICAgICAgICB8fCAobG93ZXJJbmRl
eCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4ICYmIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0g
bG93ZXJTbmFwUG9zaXRpb24gPD0gdXBwZXJTbmFwUG9zaXRpb24gLSBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCk7CisgICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gIXVw
cGVySW5kZXggfHwgKGxvd2VySW5kZXggJiYgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBsb3dl
clNuYXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0KTsKICAgICAgICAgcmV0dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IHN0ZDo6
bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KSA6IHN0ZDo6bWFrZV9wYWly
KHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKICAgICB9CiAKQEAgLTE1MywxMiArMTU1
LDEyIEBAIHN0YXRpYyBzdGQ6OnBhaXI8TGF5b3V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFw
T2Zmc2V0V2l0aEluZm9BbmRBeGlzKGNvbnN0IEluCiAgICAgLy8gc25hcHBpbmcsIHdlIHNob3Vs
ZCBuZXZlciBzbmFwIHRvIGEgcG9pbnQgdGhhdCB3YXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhl
IG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgdGhpcyBzY3Jv
bGwuCiAgICAgLy8gVGhpcyBhbGxvd3MgZGlyZWN0aW9uYWwgc2Nyb2xsaW5nIHRvIGVzY2FwZSBz
bmFwIHBvaW50cy4KICAgICBpZiAodmVsb2NpdHkgPCAwKSAgewotICAgICAgICBpZiAodXBwZXJJ
bmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4ICYmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJl
Y3Rpb25hbFNuYXBwaW5nIHx8ICpvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcg
PiB1cHBlclNuYXBQb3NpdGlvbikpCisgICAgICAgIGlmICh1cHBlckluZGV4ICYmICghb3JpZ2lu
YWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIHx8ICpvcmlnaW5hbE9mZnNldEZvckRpcmVj
dGlvbmFsU25hcHBpbmcgPiB1cHBlclNuYXBQb3NpdGlvbikpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwogICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgpOwogICAg
IH0KIAotICAgIGlmIChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgKCFv
cmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9y
RGlyZWN0aW9uYWxTbmFwcGluZyA8IGxvd2VyU25hcFBvc2l0aW9uKSkKKyAgICBpZiAobG93ZXJJ
bmRleCAmJiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyB8fCAqb3JpZ2lu
YWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIDwgbG93ZXJTbmFwUG9zaXRpb24pKQogICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgp
OwogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQb3NpdGlvbiwgdXBwZXJJbmRl
eCk7CiB9CkBAIC0zNzUsMTMgKzM3NywxMyBAQCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpYwogfQog
CiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8Pgotc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVk
PiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBjb25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91dFVuaXQg
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAor
c3RkOjpwYWlyPExheW91dFVuaXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBMYXlvdXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBjb25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91dFVuaXQgc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG9y
aWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAogewogICAgIHJldHVy
biBjbG9zZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcygqdGhpcywgYXhpcywgdmlld3BvcnRT
aXplLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25G
b3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsKIH0KIAogdGVtcGxhdGUgPD4gdGVtcGxhdGU8Pgotc3Rk
OjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nl
c3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdw
b3J0U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZykgY29uc3QKK3N0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMg
YXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0
aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQ
b3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNsb3Nl
c3RTbmFwT2Zmc2V0V2l0aEluZm9BbmRBeGlzKCp0aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVj
dGlvbmFsU25hcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCAxYTkzYTRmODE5OGMyNGRkNTVjNjhh
YjU0NzM3YzYzZGY3YjA1OTRiLi4xNzE5YTRhYTI0YWE5NDU3N2Q1MjlkMzUzNmUxZGFiZDAyYjBh
ZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaApAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFR5cGU+IE91dHB1dFR5cGUg
Y29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
VW5pdFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNv
bnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3Np
dGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+
IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgU2l6ZVR5cGUmIHZpZXdw
b3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5
LCBzdGQ6Om9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxT
bmFwcGluZyA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB1c2luZyBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdCwgTGF5b3V0
UmVjdD47CkBAIC04MiwxNiArODIsMTMgQEAgdXNpbmcgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0UmVjdD47CiB0ZW1wbGF0ZSA8
PiB0ZW1wbGF0ZSA8PgogTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvIEZsb2F0U2Nyb2xsU25h
cE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8p
IGNvbnN0OwogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBm
bG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVu
dEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFs
UG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsKIAogCiB0ZW1wbGF0ZSA8PiB0
ZW1wbGF0ZSA8PgogRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0Owog
dGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxMYXlvdXRV
bml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IExheW91dFNpemUmIHZpZXdwb3J0U2l6ZSwgTGF5
b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcp
IGNvbnN0OwotCi0KLWNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5U
X01BWDsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPj4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNl
dChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IExheW91dFNpemUmIHZpZXdwb3J0U2l6ZSwgTGF5b3V0
VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNv
bnN0OwogCiAvLyBVcGRhdGUgdGhlIHNuYXAgb2Zmc2V0cyBmb3IgdGhpcyBzY3JvbGxhYmxlIGFy
ZWEsIGdpdmVuIHRoZSBSZW5kZXJCb3ggb2YgdGhlIHNjcm9sbCBjb250YWluZXIsIHRoZSBSZW5k
ZXJTdHlsZQogLy8gd2hpY2ggZGVmaW5lcyB0aGUgc2Nyb2xsLXNuYXAgcHJvcGVydGllcywgYW5k
IHRoZSB2aWV3cG9ydCByZWN0YW5nbGUgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdCBv
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNjg1MGQyMzNhMDAxMmNlZGQ3Y2M2YWY1
MjNmOWQxMDEzYTFiNWM5My4uZDExZmYzMTE2MDRlMGViNGJiNzJhMWY2OTJkZTBiZTI1OTk4MmUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBGbG9h
dFNjcm9sbFNuYXBPZmZzZXQKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlNuYXBP
ZmZzZXRzSW5mbyk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRD
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQordm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgaWYgKG1fY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCA9PSBpbmRleCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc1
LDcgKzE3NSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluCiAgICAgc2V0UHJvcGVydHlDaGFu
Z2VkKFByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBpbmRleCkKIHsKICAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9PSBp
bmRleCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDEwICszMTMsMTAgQEAgdm9pZCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3Jv
bGxpbmdTdGF0ZVQKICAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0
cy5zaXplKCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidmVydGljYWwgc25hcCBvZmZzZXRz
IiwgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyk7CiAKLSAgICBpZiAobV9j
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgp
CisgICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCkKICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAKLSAgICBpZiAobV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQorICAgIGlmIChtX2N1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImN1
cnJlbnQgdmVydGljYWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKaW5kZXggYTI5MDhmYzBi
YzE3ODMwODhiMjc3YTExMDdmYzY5NTEyYjU4ODVhMC4uOWMxYmUxNGI2Y2I3NWJlNThjZjMxZjkz
MDJlMzA2ZDI0NzNjNzk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKQEAgLTc0LDExICs3NCwx
MSBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBP
ZmZzZXRzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgRmxvYXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm8mIG5ld09mZnNldHNJbmZvKTsKIAotICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXg7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4pOwogCi0gICAgdW5zaWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7CiAjZW5kaWYKIAogICAgIGNvbnN0IFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycyYgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7IH0KQEAgLTEzMSw4ICsxMzEsOCBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXggeyBpbnZhbGlkU25hcE9mZnNldEluZGV4IH07Ci0gICAgdW5zaWdu
ZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IGludmFsaWRTbmFwT2Zmc2V0SW5k
ZXggfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2N1cnJlbnRIb3Jpem9udGFsU25h
cFBvaW50SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleDsKICNlbmRpZgogCiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX3Nj
cm9sbENvbnRhaW5lckxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5oCmluZGV4IDVkOTNlNDRkZGFiOGYzZTZkOWZkOTUwNGM3MWZlZTNmNWFmYmQ5
YWUuLmFkMjZkZTBjZWFlNjY4ODkxZTViYWM0YjY2MjE5MzJlMTFmY2M0ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTE1NSw3ICsxNTUs
NyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnRQaGFzZShTY3JvbGxpbmdOb2RlSUQsIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9s
bGluZ05vZGVJRCwgdW5zaWduZWQgLypob3Jpem9udGFsSW5kZXgqLywgdW5zaWduZWQgLyp2ZXJ0
aWNhbEluZGV4Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5k
aWNlcyhTY3JvbGxpbmdOb2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IC8qaG9yaXpvbnRh
bEluZGV4Ki8sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IC8qdmVydGljYWxJbmRleCovKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVs
RXZlbnRUZXN0TW9uaXRvcj4mJikgeyB9CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVu
c2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSA9IDA7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9s
bGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gdmVydGljYWwpID0gMDsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRNYWlu
RnJhbWVQaW5uZWRTdGF0ZShSZWN0RWRnZXM8Ym9vbD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
CmluZGV4IDNiY2I5MWY4MjA1MjllZjRkNGJiNmM2MzdlMWQ1YTJiMWYxOGVmM2QuLmNjZGVlMmY1
YWY0ZjExODU4ZWE4ZTc2N2EzNjc5ZDE3OWMzYjhjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5j
cHAKQEAgLTMxOCwxMCArMzE4LDEwIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAgICAgaWYg
KG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMuc2l6ZSgpKQogICAgICAgICB0
cy5kdW1wUHJvcGVydHkoInZlcnRpY2FsIHNuYXAgb2Zmc2V0cyIsIG1fc25hcE9mZnNldHNJbmZv
LnZlcnRpY2FsU25hcE9mZnNldHMpOwogCi0gICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQorICAgIGlmIChtX2N1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXgpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVu
dCBob3Jpem9udGFsIHNuYXAgcG9pbnQgaW5kZXgiLCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgpOwogCi0gICAgaWYgKG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggIT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleCkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAg
cG9pbnQgaW5kZXgiLCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICAgICAKICNl
bmRpZgpAQCAtMzM5LDYgKzMzOSwyNiBAQCBjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5m
byYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAg
cmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOwogfQorCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eDsKK30KKworc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU6OmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleDsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKK3sKKyAgICBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXggPSBpbmRleDsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6
c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
aW5kZXgpCit7CisgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGluZGV4Owor
fQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmlu
ZGV4IDhjY2M5YmY5YWI4ZDE0MTM0YjhmZmE1NmYxNTYyMjE0NWU3ZjI0MmEuLmUyZWViZjk4ODQ5
YTYwOWUyOTgzZTFmZTgzMTE2MGU1MDA4MjhjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAt
OTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNv
bnN0OwotICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KLSAgICB1bnNp
Z25lZCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4ID0gaW5kZXg7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXggPSBpbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBj
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7CisgICAg
dm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPik7CiAjZW5kaWYKIAogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2VGb3JTY3JvbGxiYXJz
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudXNlRGFya0FwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzOyB9CkBAIC0xNjAsOCArMTYwLDggQEAgcHJpdmF0ZToKICAgICBJ
bnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9mZnNldHNJbmZvOwotICAgIHVuc2ln
bmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXggfTsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
aW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1f
Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OwogI2VuZGlmCiAgICAgU2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOwogI2lmIEVOQUJM
RShTQ1JPTExJTkdfVEhSRUFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggOWMzZmJlNjI3NjA5NWEwM2Jm
NmZmOTE0OTAxMmI0Zjc1YjAyZDY1ZS4uYzgyOTE3YzcxM2ViOTdjOTE2ZWNlMzcyOGNkN2MwYjA4
ZjI4ZTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBUaHJlYWRl
ZFNjcm9sbGluZ1RyZWU6OnJlcG9ydEV4cG9zZWRVbmZpbGxlZEFyZWEoTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIHUKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQordm9pZCBU
aHJlYWRlZFNjcm9sbGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNj
cm9sbGluZ05vZGVJRCBub2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvcml6b250YWws
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsKQogewogICAgIGlmICghbV9zY3JvbGxp
bmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQg
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoU2Nyb2xsaW5nTm9k
ZUlEIG5vZGVJRCwgUGxhdGZvCiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCB1
bnNpZ25lZCBob3Jpem9udGFsSW5kZXgsIHVuc2lnbmVkIHZlcnRpY2FsSW5kZXgpCit2b2lkIFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbEluZGV4LCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbEluZGV4KQogewogICAgIGlmICghbV9zY3Jv
bGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCAyMzIwODJk
NWMxYmY1YTk3ODQxM2I4YjNjMjYxN2FiMmJjOTRkZjkxLi41ZWFjODc2OWU5OTViZmFmMzI1ODNi
Yzk4NzZkMjM4NjUzYmRkOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApAQCAtNzAsMTEgKzcwLDExIEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlJiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb246OlN5bmMpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShTY3JvbGxpbmdOb2RlSUQsIFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRp
Y2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2
ZXJ0aWNhbEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRp
Y2VzKFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbElu
ZGV4LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbEluZGV4KSBvdmVycmlkZTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5k
aWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2ln
bmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2Vz
RGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpv
bnRhbCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdmVydGljYWwpIG92ZXJyaWRlOwogI2VuZGlm
CiAKICAgICB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxlZEFyZWEoTW9ub3RvbmljVGltZSwgdW5z
aWduZWQgdW5maWxsZWRBcmVhKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IGMxYTA2NzY0ZDc3Y2YyZmMxZWUyYzIwYzA2ZmVm
YjYwYWM4YmFhMzguLjdlYzA5MGRkZGY2MmI0MGM3NTYyZDlkNTJjNGE5ZDI1YzFlZmFiN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGJv
b2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQg
YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Ny
b2xsRXZlbnRBeGlzKSBjb25zdDsKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBj
b25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCmluZGV4IGRjNmJkZWY4ZGZlNTkyNTBiMTc2NjllNDYxZDZlYmI5MmRiYWY2OGMu
LjZjZGIzNTRjZTRjYTI0ZTI5MmEyMjNmZDZhODAwOWY1OWNhYmVlOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC03NSw3ICs3NSw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0
YXRlTm9kZShjb25zdCBTY3JvbGxpbmdTCiAjZW5kaWYKIH0KIAotdW5zaWduZWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhp
cyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFjdGl2ZVNjcm9sbFNuYXBJbmRl
eEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Ny
b2xsQ29udHJvbGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGNlZDA3MjA0N2Zl
NTg0MjVhYmEzN2ZiOGYyODNmYzk4ZDViNGE4ZDIuLjBjNDliMDM1MmRlYWRjYjA0N2I4ZjRhZjI5
MmIzNmM1ZDhjZGE5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKQEAgLTE4NCwxMiArMTg0LDEyIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmFjdGl2ZVNj
cm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJv
bGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKTsKIH0KIAotdW5zaWduZWQgU2Ny
b2xsQW5pbWF0b3I6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBTY3JvbGxBbmltYXRvcjo6YWN0
aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4
aXMoYXhpcyk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNldEFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQordm9pZCBT
Y3JvbGxBbmltYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXMgYXhpcywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgcmV0dXJu
IG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMs
IGluZGV4KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4
IGE3YWE3Yzc3ZTExOWMxZmVjOGQ5MTQwMDVlZGExYzhkMWE5N2YxOGMuLjFiNjAxZmZiZmRhNzY0
YTJlMmI0NTViMWY1MzUzMDVlMDcwZjNiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuaApAQCAtMTU3LDggKzE1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsK
ICAgICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzKSBjb25z
dDsKLSAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzLCB1bnNpZ25lZCBpbmRleCk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMpIGNvbnN0OworICAgIHZvaWQg
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICAgICB2b2lkIHNldFNuYXBPZmZzZXRzSW5mbyhjb25z
dCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKICAgICBjb25zdCBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHZvaWQgcmVzbmFw
QWZ0ZXJMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5jcHAKaW5kZXggZjIzYmJkYTIwMjIwM2RlZjBkYjkzNTllZTliN2Y2NDkxNjFhZWM2Yy4uYzcy
NzlmNGNiZTdmMzUzNzc4ZDIxYmMxOGVjY2RkZDBjODc1NjczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKQEAgLTEyMywxNSArMTIzLDE0IEBAIGNv
bnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogU2Nyb2xsQ29udHJvbGxlcjo6c25hcE9m
ZnNldHNJbmZvKCkgY29uc3QKICAgICByZXR1cm4gbV9zY3JvbGxTbmFwU3RhdGUgPyAmbV9zY3Jv
bGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRJbmZvKCkgOiBudWxscHRyOwogfQogCi11bnNpZ25lZCBT
Y3JvbGxDb250cm9sbGVyOjphY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50
QXhpcyBheGlzKSBjb25zdAorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gU2Nyb2xsQ29udHJvbGxl
cjo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29u
c3QKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlk
U25hcE9mZnNldEluZGV4OwotCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIG1fc2Nyb2xsU25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlzKGF4aXMpOwogfQog
Ci12b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMo
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQordm9pZCBTY3JvbGxDb250cm9s
bGVyOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxT
bmFwKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0OCwxMSArMTQ3LDExIEBAIHZvaWQgU2Nyb2xs
Q29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzCiAgICAgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUmIHNuYXBTdGF0ZSA9ICpt
X3Njcm9sbFNuYXBTdGF0ZTsKIAogICAgIGF1dG8gc25hcE9mZnNldHMgPSBzbmFwU3RhdGUuc25h
cE9mZnNldHNGb3JBeGlzKGF4aXMpOwotICAgIGlmICghc25hcE9mZnNldHMuc2l6ZSgpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC52aWV3
cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7Ci0g
ICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9z
ZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIExheW91dFVuaXQob2Zmc2V0IC8gc2Nh
bGVGYWN0b3IpLCAwKS5zZWNvbmQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZl
SW5kZXg7CisgICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgYWN0aXZlSW5kZXgg
PSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3
cG9ydFNpemUsIExheW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCAwKS5zZWNvbmQ7CisK
ICAgICBpZiAoYWN0aXZlSW5kZXggPT0gYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhheGlz
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTYsMTEgKzE5NSwxNCBAQCB2b2lkIFNjcm9sbENv
bnRyb2xsZXI6OnJlc25hcEFmdGVyTGF5b3V0KCkKIAogICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5
IHNuYXBwZWQgaW4gYSBwYXJ0aWN1bGFyIGF4aXMsIG1haW50YWluIHRoYXQuIE90aGVyd2lzZSwg
c25hcCB0byB0aGUgbmVhcmVzdCBlbGlnaWJsZSBzbmFwIHBvaW50LgogICAgIFNjcm9sbE9mZnNl
dCBvZmZzZXQgPSByb3VuZGVkSW50UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkpOwotICAg
IHNpemVfdCBhY3RpdmVIb3Jpem9udGFsSW5kZXggPSBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZl
U25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOwotICAgIGlmIChh
Y3RpdmVIb3Jpem9udGFsSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICBTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZSYgc25hcFN0YXRlID0gKm1fc2Nyb2xsU25hcFN0YXRlOworCisg
ICAgYXV0byBhY3RpdmVIb3Jpem9udGFsSW5kZXggPSBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZl
U25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOworICAgIGlmICgh
YWN0aXZlSG9yaXpvbnRhbEluZGV4IHx8ICphY3RpdmVIb3Jpem9udGFsSW5kZXggPj0gc25hcFN0
YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpLnNpemUo
KSkKICAgICAgICAgc2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBvZmZzZXQueCgpKTsKLSAgICBzaXplX3QgYWN0aXZl
VmVydGljYWxJbmRleCA9IG1fc2Nyb2xsU25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpOwotICAgIGlmIChhY3RpdmVWZXJ0aWNhbEluZGV4
ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCisKKyAgICBhdXRvIGFjdGl2ZVZlcnRpY2FsSW5k
ZXggPSBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsKTsKKyAgICBpZiAoIWFjdGl2ZVZlcnRpY2FsSW5kZXggfHwgKmFjdGl2
ZVZlcnRpY2FsSW5kZXggPj0gc25hcFN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsKS5zaXplKCkpCiAgICAgICAgIHNldE5lYXJlc3RTY3JvbGxTbmFwSW5k
ZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIG9mZnNldC55KCkp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
N2ZlMGM1ODYxMjllYWQxMDFlYzkyYTkyZTgyODQzNzQyMGZlZDUyOC4uMmFjYWVkNmU1MDA0MTE5
ZjU5Y2Q3ZjU0YTQzNDYxMjUxNGMyOGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuaApAQCAtMTM0LDEyICsxMzQsMTIgQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgTGF5
b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKLSAgICB2b2lkIHNldEFjdGl2ZVNj
cm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7CisgICAgdm9p
ZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4pOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4
Rm9yQ2xpZW50T2Zmc2V0KCk7CiAgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgpOwogICAgIGJv
b2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2U7IH0KICAgICB2b2lkIHNldFNjcm9sbFNuYXBJbmRl
eERpZENoYW5nZShib29sIHN0YXRlKSB7IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdl
ID0gc3RhdGU7IH0KLSAgICB1bnNpZ25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNj
cm9sbEV2ZW50QXhpcykgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMpIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJik7CiAgICAgdm9pZCB1
cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwog
ICAgIGZsb2F0IGFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcywgZmxvYXQg
ZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBv
cmlnaW5hbE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5jcHAKaW5kZXggZDFlNWJiYTM0YmM4OTU2OTg4MzJkMjU1ZWQ5NDY1
MDc4NTA0YjE2My4uYjM0M2FiMjdhYjQ3M2RjMzQyODIxYzhhN2I4NmM1OTMwZmVmZTViYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmNwcApAQCAtNTEsOCArNTEsMTAgQEAgdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0
dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUgc3RhdGUsIGNvbnMKIAogICAgIG1f
bW9tZW50dW1DYWxjdWxhdG9yID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUo
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpOwogICAgIGF1dG8gcHJlZGljdGVkU2Nyb2xsVGFyZ2V0ID0gbV9tb21l
bnR1bUNhbGN1bGF0b3ItPnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7Ci0gICAgZmxvYXQg
dGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3Bv
cnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQu
d2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5k
ZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZz
ZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5o
ZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRp
Y3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0
KCksIG1fYWN0aXZlU25hcEluZGV4WSk7CisKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRYLCB0YXJn
ZXRPZmZzZXRZOworICAgIHN0ZDo6dGllKHRhcmdldE9mZnNldFgsIG1fYWN0aXZlU25hcEluZGV4
WCkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0
aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBh
Z2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCkpOworICAgIHN0ZDo6dGllKHRhcmdldE9mZnNl
dFksIG1fYWN0aXZlU25hcEluZGV4WSkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLmhlaWdodCgp
IC0gdmlld3BvcnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Ny
b2xsVGFyZ2V0LmhlaWdodCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSk7CiAg
ICAgbV9tb21lbnR1bUNhbGN1bGF0b3ItPnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJn
ZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZIH0pOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKQEAgLTkxLDE2ICs5Mywx
NCBAQCBGbG9hdFBvaW50IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpjdXJyZW50QW5pbWF0ZWRT
Y3JvbGxPZmZzZXQoTW9ub3RvbmljVGltZSBjdQogICAgIHJldHVybiBtX21vbWVudHVtQ2FsY3Vs
YXRvci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShlbGFwc2VkVGltZSk7CiB9CiAKLWZs
b2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChT
Y3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0
IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNl
dCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3Rp
dmVTbmFwSW5kZXgpIGNvbnN0CitzdGQ6OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+PiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZz
ZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhKSBjb25zdAogewogICAgIGNv
bnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gbV9zbmFwT2Zmc2V0c0luZm8ub2Zmc2V0c0ZvckF4aXMo
YXhpcyk7Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewotICAgICAgICBvdXRBY3Rp
dmVTbmFwSW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgICAgICByZXR1cm4gY2xh
bXBUbzxmbG9hdD4ocHJlZGljdGVkT2Zmc2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQpOwotICAgIH0K
KyAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoY2xhbXBUbzxmbG9hdD4ocHJlZGljdGVkT2Zmc2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQp
LCBzdGQ6Om51bGxvcHQpOwogCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gbV9zbmFwT2Zmc2V0
c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0U2l6ZSB7IHZpZXdwb3J0U2l6ZSB9
LCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwg
TGF5b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSkpLmZpcnN0OwotICAgIHJldHVybiBw
YWdlU2NhbGUgKiBjbGFtcFRvPGZsb2F0Pih0YXJnZXRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNl
dCk7CisgICAgYXV0byBbdGFyZ2V0T2Zmc2V0LCBzbmFwSW5kZXhdID0gbV9zbmFwT2Zmc2V0c0lu
Zm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0U2l6ZSB7IHZpZXdwb3J0U2l6ZSB9LCBM
YXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwgTGF5
b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSkpOworICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihwYWdlU2NhbGUgKiBjbGFtcFRvPGZsb2F0PihmbG9hdCB7IHRhcmdldE9mZnNldCB9LCAw
LCBtYXhTY3JvbGxPZmZzZXQpLCBzbmFwSW5kZXgpOwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSYgc3RhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aAppbmRleCBjYjM1YWQwOWM4YmZmMTIyYzIwNTc1MWI5NWJjZjZjMmJkNGM3YTk2Li5iODE2NzMy
YzlhMjViYjBkMzQ0MGJhYmYyMDQzNGViNGMzMGFiNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTYyLDEyICs2MiwxMiBA
QCBwdWJsaWM6CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KIAotICAgIHVuc2lnbmVkIGFjdGl2ZVNuYXBJbmRleEZv
ckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gYWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCA/IG1fYWN0aXZlU25hcEluZGV4WCA6IG1fYWN0aXZlU25hcEluZGV4WTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldEFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIHVu
c2lnbmVkIGluZGV4KQorICAgIHZvaWQgc2V0QWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxF
dmVudEF4aXMgYXhpcywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiAgICAgewogICAg
ICAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpCiAgICAgICAgICAg
ICBtX2FjdGl2ZVNuYXBJbmRleFggPSBpbmRleDsKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0
ZToKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMs
IGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZs
b2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwg
ZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsK
KyAgICBzdGQ6OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiB0YXJnZXRPZmZz
ZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBw
cmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhKSBjb25z
dDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlKTsK
ICAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxv
YXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOwog
CkBAIC05Miw4ICs5Miw4IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87CiAKLSAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRl
eFggeyBpbnZhbGlkU25hcE9mZnNldEluZGV4IH07Ci0gICAgdW5zaWduZWQgbV9hY3RpdmVTbmFw
SW5kZXhZIHsgaW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OworICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IG1fYWN0aXZlU25hcEluZGV4WDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBt
X2FjdGl2ZVNuYXBJbmRleFk7CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IG1fbW9tZW50dW1D
YWxjdWxhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmlu
ZGV4IDgyYjBhOGMyN2UwNDY1MmJlN2RhZDVkOTNlNjMyOWVlOGFjNTM2OGIuLjhhOTY3ODk1NTNh
ZDMxMTM1MTQ3ODJiMWY3MGUwY2Y1MTkzMzhhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ5MCwyNiArNDkwLDI2IEBAIHZvaWQgU2Nyb2xsYWJs
ZUFyZWE6OmNsZWFyU25hcE9mZnNldHMoKQogICAgICAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3It
PnNldFNuYXBPZmZzZXRzSW5mbyhMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8oKSk7CiB9CiAK
LXVuc2lnbmVkIFNjcm9sbGFibGVBcmVhOjpjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFNjcm9sbGFibGVBcmVhOjpjdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogc2Nyb2xs
QW5pbWF0b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCiAgICAgICAgIHJldHVybiBzY3Jv
bGxBbmltYXRvci0+YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwpOwotICAgIHJldHVybiBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXVuc2lnbmVkIFNjcm9sbGFibGVBcmVhOjpjdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBT
Y3JvbGxhYmxlQXJlYTo6Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBjb25zdAogewog
ICAgIGlmIChhdXRvKiBzY3JvbGxBbmltYXRvciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkK
ICAgICAgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yLT5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JB
eGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpOwotICAgIHJldHVybiBpbnZhbGlkU25hcE9m
ZnNldEluZGV4OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgU2Nyb2xsYWJs
ZUFyZWE6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgp
Cit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogewogICAgIHNjcm9sbEFuaW1hdG9yKCku
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwsIGluZGV4KTsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0Q3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRD
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRl
eCkKIHsKICAgICBzY3JvbGxBbmltYXRvcigpLnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgaW5kZXgpOwogfQpAQCAtNTMyLDEzICs1MzIs
MTMgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6cmVzbmFwQWZ0ZXJMYXlvdXQoKQogICAgIGF1dG8g
Y29ycmVjdGVkT2Zmc2V0ID0gY3VycmVudE9mZnNldDsKICAgICBjb25zdCBhdXRvJiBob3Jpem9u
dGFsID0gaW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIGF1dG8gYWN0aXZlSG9yaXpv
bnRhbEluZGV4ID0gY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpOwotICAgIGlmIChh
Y3RpdmVIb3Jpem9udGFsSW5kZXggPCBob3Jpem9udGFsLnNpemUoKSkKLSAgICAgICAgY29ycmVj
dGVkT2Zmc2V0LnNldFgoaG9yaXpvbnRhbFthY3RpdmVIb3Jpem9udGFsSW5kZXhdLm9mZnNldC50
b0ludCgpKTsKKyAgICBpZiAoYWN0aXZlSG9yaXpvbnRhbEluZGV4KQorICAgICAgICBjb3JyZWN0
ZWRPZmZzZXQuc2V0WChob3Jpem9udGFsWyphY3RpdmVIb3Jpem9udGFsSW5kZXhdLm9mZnNldC50
b0ludCgpKTsKIAogICAgIGNvbnN0IGF1dG8mIHZlcnRpY2FsID0gaW5mby0+dmVydGljYWxTbmFw
T2Zmc2V0czsKICAgICBhdXRvIGFjdGl2ZVZlcnRpY2FsSW5kZXggPSBjdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpOwotICAgIGlmIChhY3RpdmVWZXJ0aWNhbEluZGV4IDwgdmVydGljYWwu
c2l6ZSgpKQotICAgICAgICBjb3JyZWN0ZWRPZmZzZXQuc2V0WSh2ZXJ0aWNhbFthY3RpdmVWZXJ0
aWNhbEluZGV4XS5vZmZzZXQudG9JbnQoKSk7CisgICAgaWYgKGFjdGl2ZVZlcnRpY2FsSW5kZXgp
CisgICAgICAgIGNvcnJlY3RlZE9mZnNldC5zZXRZKHZlcnRpY2FsWyphY3RpdmVWZXJ0aWNhbElu
ZGV4XS5vZmZzZXQudG9JbnQoKSk7CiAKICAgICBpZiAoY29ycmVjdGVkT2Zmc2V0ICE9IGN1cnJl
bnRPZmZzZXQpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8
PCAiIGFkanVzdGluZyBvZmZzZXQgZnJvbSAiIDw8IGN1cnJlbnRPZmZzZXQgPDwgIiB0byAiIDw8
IGNvcnJlY3RlZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCBlMjdlMDFjYzgwMzQzMWExODVmNmQxYjQ1NTM4YTVjNGU1ZjczMzgzLi45NTllOGY4
MmYwNjU0NWRjYmRiOTBhMmI3OGMwYmNiOTA5YzgwM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTkzLDEwICs5MywxMCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0
c0luZm8oKSBjb25zdDsKICAgICB2b2lkIHNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKGNvbnN0IExh
eW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYpOwogICAgIHZvaWQgY2xlYXJTbmFwT2Zmc2V0cygp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRW
ZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KTsKICNlbmRpZgog
CiAgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IGJlMGUyOGI5MjVmZTcxNGFh
NmUyMTU3ZmE0OWZhNzg0Mjk1ZTZmZDUuLjc3ODQ4Mjc5NTBjMGFhNDMxM2I2ODI2ZTRiNWFlZTIz
MjExYjkxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JU
cmFuc2FjdGlvbi5jcHAKQEAgLTMxMSw4ICszMTEsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9s
bAogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpTY3JvbGxPcmlnaW4sIEludFBvaW50LCBzZXRTY3JvbGxPcmlnaW4pOwogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8sIHNldFNuYXBPZmZzZXRzSW5mbyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
LCB1bnNpZ25lZCwgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7Ci0gICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRW
ZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgdW5zaWduZWQsIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+LCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKKyAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVu
dFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiwgc2V0Q3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCiAgICAgU0NST0xMSU5HX05PREVf
REVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1z
LCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMsIHNldFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyk7
CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCBSZXF1ZXN0ZWRTY3JvbGxEYXRhLCBzZXRSZXF1ZXN0
ZWRTY3JvbGxEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmNwcAppbmRleCA4ZDMzN2NlMTczN2Q2YTc5NDdiMmMyODMyYjgxOWI2NzE1MzYxMzdh
Li40Y2FiMTkwN2E0ZmNlZTZjMDU4NzQ4ZGNmNGFlZmNlM2JhNGQ3NDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0yMTAsNyArMjEw
LDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphcHBseVNjcm9sbGlu
Z1RyZWVMYXllclBvc2l0aW9uc0FmdGVyQ29tbWkKICAgICBtX3Njcm9sbGluZ1RyZWUtPmFwcGx5
TGF5ZXJQb3NpdGlvbnNBZnRlckNvbW1pdCgpOwogfQogCi12b2lkIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6
OlNjcm9sbGluZ05vZGVJRCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZl
cnRpY2FsKQordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjdXJyZW50U25h
cFBvaW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB2ZXJ0aWNhbCkKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Q3VycmVudFNuYXBQb2ludEluZGljZXNDaGFuZ2VkRm9yTm9k
ZShub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAppbmRleCAyYjRjN2MyMjdlMzAwMDU0OTdjMGQ4
NWZiZmM2NmYzYWZiMTFmOGM4Li4yZGZjYTc3YTliZDEwNTgxNDYwZmFkMzUxODFlMWJhOTMwYjE5
NTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVNjcm9sbGluZ1RyZWVM
YXllclBvc2l0aW9uc0FmdGVyQ29tbWl0KCk7CiAKLSAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJ
bmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpv
bnRhbCwgdW5zaWduZWQgdmVydGljYWwpOworICAgIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGlj
ZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBob3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbCk7CiAKICAg
ICAvLyBGSVhNRTogZXhwb3NlIHRoZSB0cmVlIGFuZCBwYXNzIHRoaXMgdG8gdGhhdD8KICAgICBi
b29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jik7
CkBAIC0xMzIsOCArMTMyLDggQEAgcHJpdmF0ZToKICAgICBSZXF1ZXN0ZWRTY3JvbGxJbmZvKiBt
X3JlcXVlc3RlZFNjcm9sbEluZm8geyBudWxscHRyIH07CiAgICAgUmVtb3RlU2Nyb2xsaW5nVUlT
dGF0ZSBtX3VpU3RhdGU7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICB1bnNpZ25l
ZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyBXZWJDb3JlOjppbnZhbGlkU25h
cE9mZnNldEluZGV4IH07Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJ
bmRleCB7IFdlYkNvcmU6OmludmFsaWRTbmFwT2Zmc2V0SW5kZXggfTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleDsKICNl
bmRpZgogICAgIGJvb2wgbV9wcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyB7IHRydWUgfTsKICAg
ICBIYXNoU2V0PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gbV9sYXll
cnNXaXRoU2Nyb2xsaW5nUmVsYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCmlu
ZGV4IDU0MjNkYzZlNmNkMDczYjkwNTM2YTUwM2VlMGU2MmFkZDlkMmQ3NTIuLmI5ZTM3NmM0MTg3
NTA1MmUyMWIyNGVkNzQzMWZlZGU0NTM2OGJhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJl
ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFJlbW90ZVNj
cm9sbGluZ1RyZWU6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZAogICAgIHJl
dHVybiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiB9CiAK
LXZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFu
Z2UoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQg
dmVydGljYWwpCit2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9pbnRJbmRp
Y2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGhvcml6b250YWwsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsKQogewogICAg
IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENo
YW5nZShub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
VHJlZS5oCmluZGV4IDYzOWJkNzMwYmI3YWZkMjEwMjM4ODY4ODgxMWFlNDJhNmFhMWE0NjYuLjk3
NTJhYWI0M2RkMGJhYzZjZmVlYzQyMTM1NjZjNTc1NzU5ZGQ5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ1RyZWUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxpbmdU
cmVlTm9kZURpZFNjcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYsIFdl
YkNvcmU6OlNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKSBvdmVycmlkZTsKICAgICB2b2lkIHNjcm9sbGluZ1Ry
ZWVOb2RlUmVxdWVzdHNTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgV2ViQ29yZTo6U2Nyb2xsVHlwZSwgV2Vi
Q29yZTo6U2Nyb2xsQ2xhbXBpbmcpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjdXJyZW50U25hcFBv
aW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhv
cml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cnJlbnRT
bmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdmVy
dGljYWwpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZVNjcm9sbGlu
Z1RyZWUoUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDM3
Zjk4ZjdlZjAxM2MwMGQ5OTI4OTY4YzkwM2VmODZkZWFjODNkMGEuLjA0MDNkM2UxNTEyYTU2OTQ0
NDFjYWY2YzhjZjUyNDA5MzdmZDhiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTIwNyw3ICsyMDcsNyBAQCB2
b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRP
ZmZzZXRGb3JTbmFwcGluZyhDR1NpegogCiAgICAgaWYgKHNob3VsZFNuYXBGb3JNYWluRnJhbWVT
Y3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpIHsKICAgICAgICAg
ZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJh
bWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdGFyZ2V0Q29u
dGVudE9mZnNldC0+eSwgdmVsb2NpdHkueSwgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRl
eCk7Ci0gICAgICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ICE9IGludmFs
aWRTbmFwT2Zmc2V0SW5kZXgpCisgICAgICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KQogICAgICAgICAgICAgcG90ZW50aWFsU25hcFBvc2l0aW9uIC09IHRvcEluc2V0Owog
CiAgICAgICAgIGlmICh0YXJnZXRDb250ZW50T2Zmc2V0LT55ID4gMCAmJiB0YXJnZXRDb250ZW50
T2Zmc2V0LT55IDwgbWF4U2Nyb2xsT2Zmc2V0cy5oZWlnaHQpCkBAIC0yMjUsOSArMjI1LDcgQEAg
Ym9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZy
YW1lU2Nyb2xsaW5nKFNjcm9sbEV2ZW4KICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1f
c2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBpZiAocm9vdCAmJiByb290LT5pc0ZyYW1l
U2Nyb2xsaW5nTm9kZSgpKSB7CiAgICAgICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUqIHJvb3RTY3JvbGxpbmdOb2RlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZSo+KHJvb3QpOwotICAgICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0cyA9IHJv
b3RTY3JvbGxpbmdOb2RlLT5zbmFwT2Zmc2V0c0luZm8oKS5vZmZzZXRzRm9yQXhpcyhheGlzKTsK
LSAgICAgICAgdW5zaWduZWQgY3VycmVudEluZGV4ID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwgPyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggOiBtX2N1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OwotICAgICAgICByZXR1cm4gc25hcE9mZnNldHMuc2l6
ZSgpICYmIChjdXJyZW50SW5kZXggPCBzbmFwT2Zmc2V0cy5zaXplKCkgfHwgY3VycmVudEluZGV4
ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOworICAgICAgICByZXR1cm4gcm9vdFNjcm9sbGlu
Z05vZGUtPnNuYXBPZmZzZXRzSW5mbygpLm9mZnNldHNGb3JBeGlzKGF4aXMpLnNpemUoKTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCA4ZDc3NDdjNTc3MDNk
NTNmNzM1NzJhYmNkNzkzMjc5NDRjNjkxZWU1Li5lMDI0OTI2ODAyZGJjZDg4MDg0NWRmM2FjN2Iz
ZjlhNDZhY2JlYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpIGNvbnN0OwogICAgIHZvaWQg
c2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxPZmZz
ZXQsIGJvb2wgaW5Vc2VySW50ZXJhY3Rpb24pOwogCi0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50
SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkg
Y29uc3Q7CisgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0
aWNhbCkgY29uc3Q7CiAgICAgQ0FMYXllciAqc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbExheWVyLmdldCgpOyB9CiAKICAgICB2b2lkIHJlc2V0U2Nyb2xsVmlld0RlbGVnYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MubW0KaW5kZXggOGZjNjYxNWY3NmYzYzlmYWQwMGY1OTRiMzRiMTNkZDQ0
YzkyM2NkMC4uNjU2NGI2YTAwYTE3NmFlNTExOGU1MjNlNDk4Mjk4MjQ3OTZmOGFiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbQpAQCAtMTAzLDggKzEwMyw4IEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxFbmRE
cmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmVsb2NpdHk6KENHUG9pCiAg
ICAgQ0dGbG9hdCBob3Jpem9udGFsVGFyZ2V0ID0gdGFyZ2V0Q29udGVudE9mZnNldC0+eDsKICAg
ICBDR0Zsb2F0IHZlcnRpY2FsVGFyZ2V0ID0gdGFyZ2V0Q29udGVudE9mZnNldC0+eTsKIAotICAg
IHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCgpOwotICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gPSBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KCk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gb3JpZ2luYWxIb3Jp
em9udGFsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWV3cG9ydFNpemUoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KENHUmVjdEdldFdpZHRoKFtzY3JvbGxWaWV3IGJvdW5kc10pKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KENHUmVjdEdldEhlaWdodChbc2Nyb2xsVmlldyBib3VuZHNdKSkpOwogICAgIGNv
bnN0IGF1dG8mIHNuYXBPZmZzZXRzSW5mbyA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5z
Y3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCk7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3RGlkU2Ny
b2xsKGNvbnN0IEZsb2F0UG9pbnQKICAgICBzY3JvbGxpbmdOb2RlKCkud2FzU2Nyb2xsZWRCeURl
bGVnYXRlZFNjcm9sbGluZyhzY3JvbGxQb3NpdGlvbiwgeyB9LCBpblVzZXJJbnRlcmFjdGlvbiA/
IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgOiBTY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uOjpTZXQpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhvcml6
b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBjb25zdAordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2
ZXJ0aWNhbCkgY29uc3QKIHsKICAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvci5tbQppbmRleCAyZDhlZDU3ZmViMDljNjg2N2Y1ODJlMjgyNTE5YTcxNDRhM2Vh
YTIzLi5hYzExNWUzMWZkZDRjNGUwOWM4NDRkYWU5YWY2MzdlYjA5OWJiODRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCkBAIC0x
MTAsNyArMTEwLDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsUG9z
aXRpb25DaGFuZ2VkRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQgbm8KICAgICBhcHBseVNjcm9sbFVw
ZGF0ZShub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBzdGQ6Om51bGxvcHQsIFNjcm9sbFR5cGU6OlVz
ZXIsIHN5bmNMYXllclBvc2l0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3lu
YyA6IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CiB9CiAKLXZvaWQgUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzQ2hhbmdlZEZvck5v
ZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQg
dmVydGljYWwpCit2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjdXJyZW50U25hcFBv
aW50SW5kaWNlc0NoYW5nZWRGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGhvcml6b250YWwsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRp
Y2FsKQogewogICAgIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKG5vZGVJRCwgaG9yaXpvbnRh
bCwgdmVydGljYWwpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431432</attachid>
            <date>2021-06-15 06:31:57 -0700</date>
            <delta_ts>2021-06-16 00:37:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226654-20210615153155.patch</filename>
            <type>text/plain</type>
            <size>66632</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFhYmY4MDEzNDYwMmMw
ODExZTFhZThlNmQ5ZGVkMzhjYTMzYjc4OS4uODZlOWI2Y2IzZGI5MDY3MjE5ZWJjY2NmOTk1NzRm
NWRhMmZmNzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTA2LTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGlu
dmFsaWRTbmFwT2Zmc2V0SW5kZXggd2l0aCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjU0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGluIG9yZGVyIHRvIHJlcHJlc2VudCB0aGUgc2l0dWF0aW9uCisgICAgICAg
IHdoZXJlIHdlIGRvIG5vdCBoYXZlIGEgc25hcCBwb2ludCBzZWxlY3RlZCByYXRoZXIgdGhhbiBV
SU5UX01BWC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2Ug
YmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGljZXNPZk5lYXJl
c3RTbmFwT2Zmc2V0cyk6IFJldHVybiBhIHN0ZDo6cGFpciBpbnN0ZWFkIG9mIHNwbGl0dGluZyB0
aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlcyBpbnRvIHRoZSBhcmd1bWVudCBsaXN0LgorICAgICAg
ICAoV2ViQ29yZTo6Y2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xv
c2VzdFNuYXBPZmZzZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kaWNlcyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBNb3ZlIHNvbWUgbWV0aG9kcyBp
bnRvIHRoZQorICAgICAgICBzb3VyY2UgZmlsZSB0byBzYXRpc2Z5IHRoZSBzdHlsZSBjaGVja2Vy
LiBXRUJDT1JFX0VYUE9SVCBpcyBhcHBsaWVkIHRvIHRoZQorICAgICAgICBlbnRpcmUgY2xhc3Mg
ZGVjbGFyYXRpb24uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdU
cmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3VycmVu
dFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjphY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxDb250cm9sbGVyOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKTogV2hl
biB0aGVyZSBpcyBubyBuZXcKKyAgICAgICAgc25hcCBpbmRleCwgd2UgbmVlZCB0byBhY3RpdmVs
eSBjaGFuZ2UgdGhlIHZhbHVlIHRvIHN0ZDo6bnVsbG9wdC4gVGhpcyB3YXNuJ3QKKyAgICAgICAg
bmVjZXNzYXJ5IGJlY2F1c2UgU2Nyb2xsYWJsZUFyZWEgd2FzIGNvdmVyaW5nIHVwIHRoaXMgY2Fz
ZSBpbiB0aGUgcGFzdCBhcyBhIHNpZGUtZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Q29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6cmVzbmFwQWZ0ZXJMYXlvdXQpOiBB
bHNvIHJlc25hcCBpZiB0aGUgc25hcHBlZCBpbmRleCBpcworICAgICAgICBncmVhdGVyIHRoYW4g
dGhlIGN1cnJlbnQgb25lLiBUaGlzIGNhc2Ugd2FzIGJlaW5nIGNvdmVyZWQgdXAgYnkgYSBzaWRl
LWVmZmVjdCBpbgorICAgICAgICBTY3JvbGxhYmxlQXJlYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNl
dHVwQW5pbWF0aW9uRm9yU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0IGNvbnN0KTogUmV0dXJuIGEgc3Rk
OjpwYWlyCisgICAgICAgIGluc3RlYWQgb2Ygc3BsaXR0aW5nIHRoZSBvdXRwdXQgdmFsdWVzIGlu
dG8gdGhlIGFyZ3VtZW50IGxpc3QuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjph
Y3RpdmVTbmFwSW5kZXhGb3JBeGlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpzZXRBY3RpdmVTbmFwSW5kZXhGb3JBeGlzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldEN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNl
dEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhOjpyZXNuYXBBZnRlckxheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDoKKwogMjAyMS0wNi0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGln
YWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gU2Nyb2xsIHNuYXAgb2Zmc2V0
cyBhcmUgaW50ZXJwcmV0ZWQgYXMgc2Nyb2xsIHBvc2l0aW9ucyBpbiBTY3JvbGxhYmxlQXJlYQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAxNGUyZjc5MzgxZGRjY2IwZTU5ODQ3OTk4NWY2ZmNjOWRjODY1YWVhLi41Y2Mx
YzkxZTVlZTcwZDY1MTZkNTlkYjUzODVmMGZlYzRmZWJmYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDIxLTA2LTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXBsYWNlIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggd2l0aCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluIG9yZGVyIHRvIHJlcHJlc2Vu
dCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJlIHdlIGRvIG5vdCBoYXZlIGEgc25hcCBwb2lu
dCBzZWxlY3RlZCByYXRoZXIgdGhhbiBVSU5UX01BWC4KKworICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU6OmN1cnJl
bnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1c3RU
YXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5n
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bToKKyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZp
ZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1
cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3VycmVudFNu
YXBQb2ludEluZGljZXNDaGFuZ2VkRm9yTm9kZSk6CisKIDIwMjEtMDYtMTUgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBd
IE5ldyBzbmFwIGNvbnRhaW5lcnMgYWx3YXlzIHNuYXAgdG8gdGhlIGZpcnN0IHNjcm9sbCBwb3Np
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBmMTRlODhiMDMxNzA0ODEyYzZiMzcxMjg0
ZDYwY2IyODA1OTE5YTVmLi5iZjhhYzYxYzZiYWE2YTdlMmY3OGVkY2RhZmNlYjNiMDRhZjJmOTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtODcxLDcgKzg3MSw3IEBAIFN0cmluZyBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdUcmVlQXNUZXh0KFNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dEJlCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlE
IHNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2ZXJ0
aWNhbEluZGV4KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRBY3RpdmVTY3Jv
bGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBob3Jpem9udGFsSW5kZXgsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZl
cnRpY2FsSW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAppbmRleCA1MWQ2ZDg3NjIyZmZhODViYWJkMTk3OWExZGM1Y2ExZjFmYTA2YmUz
Li44OGUxNGE5ODllMDVkYTE3ZWVhZDU5YWU3N2MxYzBlNGEzZDM0MDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShTY3JvbGxpbmdOb2Rl
SUQsIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25l
ZCBob3Jpem9udGFsSW5kZXgsIHVuc2lnbmVkIHZlcnRpY2FsSW5kZXgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlELCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsSW5kZXgsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHZlcnRpY2FsSW5kZXgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5jcHAKaW5kZXggNWNlNTc2OTNlNWNkZjFkNDdmY2NlMDFjOGU2MWI5YTli
MWQxMDM2Yy4uN2I4NzViOWRhZjllYzgzYjZkOTdkNTNiNWNkOGVkNmQ5OTIxZWFjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uY3BwCkBAIC00MywxMCArNDMsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1zdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0
U25hcE9mZnNldHMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExh
eW91dFR5cGU+PiYgc25hcE9mZnNldHMsIHVuc2lnbmVkJiBsb3dlckluZGV4LCB1bnNpZ25lZCYg
dXBwZXJJbmRleCkKK3N0YXRpYyBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4sIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0
VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYgc25hcE9m
ZnNldHMpCiB7Ci0gICAgbG93ZXJJbmRleCA9IDA7Ci0gICAgdXBwZXJJbmRleCA9IHNuYXBPZmZz
ZXRzLnNpemUoKSAtIDE7CisgICAgdW5zaWduZWQgbG93ZXJJbmRleCA9IDA7CisgICAgdW5zaWdu
ZWQgdXBwZXJJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7CiAgICAgd2hpbGUgKGxvd2Vy
SW5kZXggPCB1cHBlckluZGV4IC0gMSkgewogICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93
ZXJJbmRleCArIHVwcGVySW5kZXgpIC8gMjsKICAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQgPSBz
bmFwT2Zmc2V0c1ttaWRkbGVJbmRleF0ub2Zmc2V0OwpAQCAtNjEsNiArNjEsOCBAQCBzdGF0aWMg
dm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0
IFZlY3RvcjxTbmFwT2ZmcwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1cHBlckluZGV4ID0g
bWlkZGxlSW5kZXg7CiAgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxvd2VySW5k
ZXgsIHVwcGVySW5kZXgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KQEAg
LTk1LDE2ICs5NywxNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0
U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpbwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFNpemVUeXBlLCB0eXBlbmFtZSBMYXlvdXRUeXBl
Pgotc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZz
ZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW5mb1R5cGUmIGluZm8sIFNjcm9sbEV2ZW50QXhpcyBh
eGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBMYXlvdXRUeXBlIHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxMYXlvdXRUeXBlPiBv
cmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpCitzdGF0aWMgc3RkOjpwYWlyPExh
eW91dFR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBjbG9zZXN0U25hcE9mZnNldFdpdGhJ
bmZvQW5kQXhpcyhjb25zdCBJbmZvVHlwZSYgaW5mbywgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNv
bnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPExheW91dFR5cGU+IG9yaWdpbmFs
T2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykKIHsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zm
c2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7Ci0gICAgYXV0byBwYWlyRm9yTm9TbmFw
cGluZyA9IHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25h
cE9mZnNldEluZGV4KTsKKyAgICBhdXRvIHBhaXJGb3JOb1NuYXBwaW5nID0gc3RkOjptYWtlX3Bh
aXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKHNuYXBP
ZmZzZXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHBhaXJGb3JOb1NuYXBwaW5nOwogCiAg
ICAgaWYgKG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykgewogICAgICAgICBp
ZiAoYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNl
dEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKm9yaWdpbmFsT2Zmc2V0
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzWypmaXJzdFNuYXBTdG9wT2Zm
c2V0SW5kZXhdLm9mZnNldCwgKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCk7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHNbKmZpcnN0U25hcFN0b3BPZmZzZXRJ
bmRleF0ub2Zmc2V0LCBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXgpOwogICAgIH0KIAogICAgIGF1
dG8gdmlld3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/
IHZpZXdwb3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdodCgpOwpAQCAtMTE5LDMy
ICsxMjEsMzIgQEAgc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2Vz
dFNuYXBPZmZzZXRXaXRoSW5mb0FuZEF4aXMoY29uc3QgSW4KICAgICB9OwogCiAgICAgaWYgKHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0IDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KQotICAg
ICAgICByZXR1cm4gaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkoc25hcE9mZnNldHMu
Zmlyc3QoKS5vZmZzZXQpID8gc3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMuZmlyc3QoKS5vZmZz
ZXQsIDB1KSA6IHBhaXJGb3JOb1NuYXBwaW5nOworICAgICAgICByZXR1cm4gaXNOZWFyRW5vdWdo
VG9PZmZzZXRGb3JQcm94aW1pdHkoc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpID8gc3RkOjpt
YWtlX3BhaXIoc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQsIHN0ZDo6bWFrZV9vcHRpb25hbCgw
dSkpIDogcGFpckZvck5vU25hcHBpbmc7CiAKICAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQgPj0gc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCkgewogICAgICAgICB1bnNpZ25lZCBsYXN0
SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7Ci0g
ICAgICAgIHJldHVybiBpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShzbmFwT2Zmc2V0
cy5sYXN0KCkub2Zmc2V0KSA/IHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZz
ZXQsIGxhc3RJbmRleCkgOiBwYWlyRm9yTm9TbmFwcGluZzsKKyAgICAgICAgcmV0dXJuIGlzTmVh
ckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpID8g
c3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCwgc3RkOjptYWtlX29wdGlv
bmFsKGxhc3RJbmRleCkpIDogcGFpckZvck5vU25hcHBpbmc7CiAgICAgfQogCi0gICAgdW5zaWdu
ZWQgbG93ZXJJbmRleDsKLSAgICB1bnNpZ25lZCB1cHBlckluZGV4OwotICAgIGluZGljZXNPZk5l
YXJlc3RTbmFwT2Zmc2V0czxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25h
cE9mZnNldHMsIGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOwotICAgIExheW91dFR5cGUgbG93ZXJT
bmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dlckluZGV4XS5vZmZzZXQ7Ci0gICAgTGF5b3V0
VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdLm9mZnNldDsK
KyAgICBhdXRvIFtsb3dlckluZGV4LCB1cHBlckluZGV4XSA9IGluZGljZXNPZk5lYXJlc3RTbmFw
T2Zmc2V0czxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNldHMp
OworICAgIEFTU0VSVChsb3dlckluZGV4KTsKKyAgICBBU1NFUlQodXBwZXJJbmRleCk7CisgICAg
TGF5b3V0VHlwZSBsb3dlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzWypsb3dlckluZGV4XS5v
ZmZzZXQ7CisgICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzWyp1
cHBlckluZGV4XS5vZmZzZXQ7CiAKICAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJv
eGltaXR5KGxvd2VyU25hcFBvc2l0aW9uKSkgewogICAgICAgICBsb3dlclNuYXBQb3NpdGlvbiA9
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0OwotICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNu
YXBPZmZzZXRJbmRleDsKKyAgICAgICAgbG93ZXJJbmRleC5yZXNldCgpOwogICAgIH0KIAogICAg
IGlmICghaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkodXBwZXJTbmFwUG9zaXRpb24p
KSB7CiAgICAgICAgIHVwcGVyU25hcFBvc2l0aW9uID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7
Ci0gICAgICAgIHVwcGVySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgICAgICB1
cHBlckluZGV4LnJlc2V0KCk7CisKICAgICB9CiAKICAgICBpZiAoIXN0ZDo6YWJzKHZlbG9jaXR5
KSkgewotICAgICAgICBib29sIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA9ICh1cHBlcklu
ZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCi0gICAgICAgICAgICB8fCAobG93ZXJJbmRl
eCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4ICYmIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0g
bG93ZXJTbmFwUG9zaXRpb24gPD0gdXBwZXJTbmFwUG9zaXRpb24gLSBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCk7CisgICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gIXVw
cGVySW5kZXggfHwgKGxvd2VySW5kZXggJiYgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBsb3dl
clNuYXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0KTsKICAgICAgICAgcmV0dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IHN0ZDo6
bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KSA6IHN0ZDo6bWFrZV9wYWly
KHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKICAgICB9CiAKQEAgLTE1MywxMiArMTU1
LDEyIEBAIHN0YXRpYyBzdGQ6OnBhaXI8TGF5b3V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFw
T2Zmc2V0V2l0aEluZm9BbmRBeGlzKGNvbnN0IEluCiAgICAgLy8gc25hcHBpbmcsIHdlIHNob3Vs
ZCBuZXZlciBzbmFwIHRvIGEgcG9pbnQgdGhhdCB3YXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhl
IG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgdGhpcyBzY3Jv
bGwuCiAgICAgLy8gVGhpcyBhbGxvd3MgZGlyZWN0aW9uYWwgc2Nyb2xsaW5nIHRvIGVzY2FwZSBz
bmFwIHBvaW50cy4KICAgICBpZiAodmVsb2NpdHkgPCAwKSAgewotICAgICAgICBpZiAodXBwZXJJ
bmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4ICYmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJl
Y3Rpb25hbFNuYXBwaW5nIHx8ICpvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcg
PiB1cHBlclNuYXBQb3NpdGlvbikpCisgICAgICAgIGlmICh1cHBlckluZGV4ICYmICghb3JpZ2lu
YWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIHx8ICpvcmlnaW5hbE9mZnNldEZvckRpcmVj
dGlvbmFsU25hcHBpbmcgPiB1cHBlclNuYXBQb3NpdGlvbikpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwogICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgpOwogICAg
IH0KIAotICAgIGlmIChsb3dlckluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgKCFv
cmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9y
RGlyZWN0aW9uYWxTbmFwcGluZyA8IGxvd2VyU25hcFBvc2l0aW9uKSkKKyAgICBpZiAobG93ZXJJ
bmRleCAmJiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyB8fCAqb3JpZ2lu
YWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nIDwgbG93ZXJTbmFwUG9zaXRpb24pKQogICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgp
OwogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQb3NpdGlvbiwgdXBwZXJJbmRl
eCk7CiB9CkBAIC0zNzUsMTMgKzM3NywxMyBAQCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpYwogfQog
CiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8Pgotc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVk
PiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBjb25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91dFVuaXQg
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAor
c3RkOjpwYWlyPExheW91dFVuaXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBMYXlvdXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBjb25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91dFVuaXQgc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG9y
aWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAogewogICAgIHJldHVy
biBjbG9zZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcygqdGhpcywgYXhpcywgdmlld3BvcnRT
aXplLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25G
b3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsKIH0KIAogdGVtcGxhdGUgPD4gdGVtcGxhdGU8Pgotc3Rk
OjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nl
c3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdw
b3J0U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZykgY29uc3QKK3N0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMg
YXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0
aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQ
b3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNsb3Nl
c3RTbmFwT2Zmc2V0V2l0aEluZm9BbmRBeGlzKCp0aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVj
dGlvbmFsU25hcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCAxYTkzYTRmODE5OGMyNGRkNTVjNjhh
YjU0NzM3YzYzZGY3YjA1OTRiLi4xNzE5YTRhYTI0YWE5NDU3N2Q1MjlkMzUzNmUxZGFiZDAyYjBh
ZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaApAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFR5cGU+IE91dHB1dFR5cGUg
Y29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
VW5pdFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNv
bnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3Np
dGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+
IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgU2l6ZVR5cGUmIHZpZXdw
b3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5
LCBzdGQ6Om9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxT
bmFwcGluZyA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB1c2luZyBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdCwgTGF5b3V0
UmVjdD47CkBAIC04MiwxNiArODIsMTMgQEAgdXNpbmcgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0UmVjdD47CiB0ZW1wbGF0ZSA8
PiB0ZW1wbGF0ZSA8PgogTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvIEZsb2F0U2Nyb2xsU25h
cE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8p
IGNvbnN0OwogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBm
bG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVu
dEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFs
UG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsKIAogCiB0ZW1wbGF0ZSA8PiB0
ZW1wbGF0ZSA8PgogRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0Owog
dGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxMYXlvdXRV
bml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IExheW91dFNpemUmIHZpZXdwb3J0U2l6ZSwgTGF5
b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcp
IGNvbnN0OwotCi0KLWNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5U
X01BWDsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPj4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNl
dChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IExheW91dFNpemUmIHZpZXdwb3J0U2l6ZSwgTGF5b3V0
VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNv
bnN0OwogCiAvLyBVcGRhdGUgdGhlIHNuYXAgb2Zmc2V0cyBmb3IgdGhpcyBzY3JvbGxhYmxlIGFy
ZWEsIGdpdmVuIHRoZSBSZW5kZXJCb3ggb2YgdGhlIHNjcm9sbCBjb250YWluZXIsIHRoZSBSZW5k
ZXJTdHlsZQogLy8gd2hpY2ggZGVmaW5lcyB0aGUgc2Nyb2xsLXNuYXAgcHJvcGVydGllcywgYW5k
IHRoZSB2aWV3cG9ydCByZWN0YW5nbGUgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdCBv
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNjg1MGQyMzNhMDAxMmNlZGQ3Y2M2YWY1
MjNmOWQxMDEzYTFiNWM5My4uZDExZmYzMTE2MDRlMGViNGJiNzJhMWY2OTJkZTBiZTI1OTk4MmUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBGbG9h
dFNjcm9sbFNuYXBPZmZzZXQKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlNuYXBP
ZmZzZXRzSW5mbyk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRD
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQordm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgaWYgKG1fY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCA9PSBpbmRleCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc1
LDcgKzE3NSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluCiAgICAgc2V0UHJvcGVydHlDaGFu
Z2VkKFByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBpbmRleCkKIHsKICAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9PSBp
bmRleCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDEwICszMTMsMTAgQEAgdm9pZCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3Jv
bGxpbmdTdGF0ZVQKICAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0
cy5zaXplKCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidmVydGljYWwgc25hcCBvZmZzZXRz
IiwgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyk7CiAKLSAgICBpZiAobV9j
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgp
CisgICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCkKICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAKLSAgICBpZiAobV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQorICAgIGlmIChtX2N1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImN1
cnJlbnQgdmVydGljYWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKaW5kZXggYTI5MDhmYzBi
YzE3ODMwODhiMjc3YTExMDdmYzY5NTEyYjU4ODVhMC4uOWMxYmUxNGI2Y2I3NWJlNThjZjMxZjkz
MDJlMzA2ZDI0NzNjNzk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKQEAgLTc0LDExICs3NCwx
MSBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBP
ZmZzZXRzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgRmxvYXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm8mIG5ld09mZnNldHNJbmZvKTsKIAotICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXg7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4pOwogCi0gICAgdW5zaWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7CiAjZW5kaWYKIAogICAgIGNvbnN0IFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycyYgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7IH0KQEAgLTEzMSw4ICsxMzEsOCBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXggeyBpbnZhbGlkU25hcE9mZnNldEluZGV4IH07Ci0gICAgdW5zaWdu
ZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IGludmFsaWRTbmFwT2Zmc2V0SW5k
ZXggfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2N1cnJlbnRIb3Jpem9udGFsU25h
cFBvaW50SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleDsKICNlbmRpZgogCiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX3Nj
cm9sbENvbnRhaW5lckxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5oCmluZGV4IDVkOTNlNDRkZGFiOGYzZTZkOWZkOTUwNGM3MWZlZTNmNWFmYmQ5
YWUuLmFkMjZkZTBjZWFlNjY4ODkxZTViYWM0YjY2MjE5MzJlMTFmY2M0ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTE1NSw3ICsxNTUs
NyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnRQaGFzZShTY3JvbGxpbmdOb2RlSUQsIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9s
bGluZ05vZGVJRCwgdW5zaWduZWQgLypob3Jpem9udGFsSW5kZXgqLywgdW5zaWduZWQgLyp2ZXJ0
aWNhbEluZGV4Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5k
aWNlcyhTY3JvbGxpbmdOb2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IC8qaG9yaXpvbnRh
bEluZGV4Ki8sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IC8qdmVydGljYWxJbmRleCovKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVs
RXZlbnRUZXN0TW9uaXRvcj4mJikgeyB9CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVu
c2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSA9IDA7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9s
bGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gdmVydGljYWwpID0gMDsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRNYWlu
RnJhbWVQaW5uZWRTdGF0ZShSZWN0RWRnZXM8Ym9vbD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
CmluZGV4IDNiY2I5MWY4MjA1MjllZjRkNGJiNmM2MzdlMWQ1YTJiMWYxOGVmM2QuLmNjZGVlMmY1
YWY0ZjExODU4ZWE4ZTc2N2EzNjc5ZDE3OWMzYjhjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5j
cHAKQEAgLTMxOCwxMCArMzE4LDEwIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAgICAgaWYg
KG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMuc2l6ZSgpKQogICAgICAgICB0
cy5kdW1wUHJvcGVydHkoInZlcnRpY2FsIHNuYXAgb2Zmc2V0cyIsIG1fc25hcE9mZnNldHNJbmZv
LnZlcnRpY2FsU25hcE9mZnNldHMpOwogCi0gICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQorICAgIGlmIChtX2N1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXgpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVu
dCBob3Jpem9udGFsIHNuYXAgcG9pbnQgaW5kZXgiLCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgpOwogCi0gICAgaWYgKG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggIT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleCkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAg
cG9pbnQgaW5kZXgiLCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICAgICAKICNl
bmRpZgpAQCAtMzM5LDYgKzMzOSwyNiBAQCBjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5m
byYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAg
cmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOwogfQorCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eDsKK30KKworc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU6OmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleDsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKK3sKKyAgICBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXggPSBpbmRleDsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6
c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
aW5kZXgpCit7CisgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGluZGV4Owor
fQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmlu
ZGV4IDhjY2M5YmY5YWI4ZDE0MTM0YjhmZmE1NmYxNTYyMjE0NWU3ZjI0MmEuLmUyZWViZjk4ODQ5
YTYwOWUyOTgzZTFmZTgzMTE2MGU1MDA4MjhjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAt
OTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNv
bnN0OwotICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KLSAgICB1bnNp
Z25lZCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4ID0gaW5kZXg7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXggPSBpbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBj
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7CisgICAg
dm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPik7CiAjZW5kaWYKIAogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2VGb3JTY3JvbGxiYXJz
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudXNlRGFya0FwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzOyB9CkBAIC0xNjAsOCArMTYwLDggQEAgcHJpdmF0ZToKICAgICBJ
bnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9mZnNldHNJbmZvOwotICAgIHVuc2ln
bmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXggfTsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
aW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1f
Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OwogI2VuZGlmCiAgICAgU2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOwogI2lmIEVOQUJM
RShTQ1JPTExJTkdfVEhSRUFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggOWMzZmJlNjI3NjA5NWEwM2Jm
NmZmOTE0OTAxMmI0Zjc1YjAyZDY1ZS4uYzgyOTE3YzcxM2ViOTdjOTE2ZWNlMzcyOGNkN2MwYjA4
ZjI4ZTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBUaHJlYWRl
ZFNjcm9sbGluZ1RyZWU6OnJlcG9ydEV4cG9zZWRVbmZpbGxlZEFyZWEoTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIHUKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQordm9pZCBU
aHJlYWRlZFNjcm9sbGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNj
cm9sbGluZ05vZGVJRCBub2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvcml6b250YWws
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsKQogewogICAgIGlmICghbV9zY3JvbGxp
bmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQg
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoU2Nyb2xsaW5nTm9k
ZUlEIG5vZGVJRCwgUGxhdGZvCiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCB1
bnNpZ25lZCBob3Jpem9udGFsSW5kZXgsIHVuc2lnbmVkIHZlcnRpY2FsSW5kZXgpCit2b2lkIFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbEluZGV4LCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbEluZGV4KQogewogICAgIGlmICghbV9zY3Jv
bGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCAyMzIwODJk
NWMxYmY1YTk3ODQxM2I4YjNjMjYxN2FiMmJjOTRkZjkxLi41ZWFjODc2OWU5OTViZmFmMzI1ODNi
Yzk4NzZkMjM4NjUzYmRkOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApAQCAtNzAsMTEgKzcwLDExIEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlJiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb246OlN5bmMpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShTY3JvbGxpbmdOb2RlSUQsIFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRp
Y2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2
ZXJ0aWNhbEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRp
Y2VzKFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbElu
ZGV4LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbEluZGV4KSBvdmVycmlkZTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5k
aWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2ln
bmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2Vz
RGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpv
bnRhbCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdmVydGljYWwpIG92ZXJyaWRlOwogI2VuZGlm
CiAKICAgICB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxlZEFyZWEoTW9ub3RvbmljVGltZSwgdW5z
aWduZWQgdW5maWxsZWRBcmVhKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IGMxYTA2NzY0ZDc3Y2YyZmMxZWUyYzIwYzA2ZmVm
YjYwYWM4YmFhMzguLjdlYzA5MGRkZGY2MmI0MGM3NTYyZDlkNTJjNGE5ZDI1YzFlZmFiN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGJv
b2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQg
YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Ny
b2xsRXZlbnRBeGlzKSBjb25zdDsKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBj
b25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCmluZGV4IGRjNmJkZWY4ZGZlNTkyNTBiMTc2NjllNDYxZDZlYmI5MmRiYWY2OGMu
LjZjZGIzNTRjZTRjYTI0ZTI5MmEyMjNmZDZhODAwOWY1OWNhYmVlOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC03NSw3ICs3NSw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0
YXRlTm9kZShjb25zdCBTY3JvbGxpbmdTCiAjZW5kaWYKIH0KIAotdW5zaWduZWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhp
cyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFjdGl2ZVNjcm9sbFNuYXBJbmRl
eEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Ny
b2xsQ29udHJvbGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGNlZDA3MjA0N2Zl
NTg0MjVhYmEzN2ZiOGYyODNmYzk4ZDViNGE4ZDIuLjBjNDliMDM1MmRlYWRjYjA0N2I4ZjRhZjI5
MmIzNmM1ZDhjZGE5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKQEAgLTE4NCwxMiArMTg0LDEyIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmFjdGl2ZVNj
cm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJv
bGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKTsKIH0KIAotdW5zaWduZWQgU2Ny
b2xsQW5pbWF0b3I6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBTY3JvbGxBbmltYXRvcjo6YWN0
aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4
aXMoYXhpcyk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNldEFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQordm9pZCBT
Y3JvbGxBbmltYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXMgYXhpcywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgcmV0dXJu
IG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMs
IGluZGV4KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4
IGE3YWE3Yzc3ZTExOWMxZmVjOGQ5MTQwMDVlZGExYzhkMWE5N2YxOGMuLjFiNjAxZmZiZmRhNzY0
YTJlMmI0NTViMWY1MzUzMDVlMDcwZjNiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuaApAQCAtMTU3LDggKzE1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsK
ICAgICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzKSBjb25z
dDsKLSAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzLCB1bnNpZ25lZCBpbmRleCk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMpIGNvbnN0OworICAgIHZvaWQg
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICAgICB2b2lkIHNldFNuYXBPZmZzZXRzSW5mbyhjb25z
dCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKICAgICBjb25zdCBMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHZvaWQgcmVzbmFw
QWZ0ZXJMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5jcHAKaW5kZXggZjIzYmJkYTIwMjIwM2RlZjBkYjkzNTllZTliN2Y2NDkxNjFhZWM2Yy4uYzcy
NzlmNGNiZTdmMzUzNzc4ZDIxYmMxOGVjY2RkZDBjODc1NjczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKQEAgLTEyMywxNSArMTIzLDE0IEBAIGNv
bnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogU2Nyb2xsQ29udHJvbGxlcjo6c25hcE9m
ZnNldHNJbmZvKCkgY29uc3QKICAgICByZXR1cm4gbV9zY3JvbGxTbmFwU3RhdGUgPyAmbV9zY3Jv
bGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRJbmZvKCkgOiBudWxscHRyOwogfQogCi11bnNpZ25lZCBT
Y3JvbGxDb250cm9sbGVyOjphY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50
QXhpcyBheGlzKSBjb25zdAorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gU2Nyb2xsQ29udHJvbGxl
cjo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29u
c3QKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlk
U25hcE9mZnNldEluZGV4OwotCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIG1fc2Nyb2xsU25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlzKGF4aXMpOwogfQog
Ci12b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMo
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIHVuc2lnbmVkIGluZGV4KQordm9pZCBTY3JvbGxDb250cm9s
bGVyOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxT
bmFwKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0OCwxMSArMTQ3LDExIEBAIHZvaWQgU2Nyb2xs
Q29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzCiAgICAgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUmIHNuYXBTdGF0ZSA9ICpt
X3Njcm9sbFNuYXBTdGF0ZTsKIAogICAgIGF1dG8gc25hcE9mZnNldHMgPSBzbmFwU3RhdGUuc25h
cE9mZnNldHNGb3JBeGlzKGF4aXMpOwotICAgIGlmICghc25hcE9mZnNldHMuc2l6ZSgpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC52aWV3
cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7Ci0g
ICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9z
ZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIExheW91dFVuaXQob2Zmc2V0IC8gc2Nh
bGVGYWN0b3IpLCAwKS5zZWNvbmQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZl
SW5kZXg7CisgICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgYWN0aXZlSW5kZXgg
PSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3
cG9ydFNpemUsIExheW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCAwKS5zZWNvbmQ7CisK
ICAgICBpZiAoYWN0aXZlSW5kZXggPT0gYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhheGlz
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTYsMTEgKzE5NSwxNCBAQCB2b2lkIFNjcm9sbENv
bnRyb2xsZXI6OnJlc25hcEFmdGVyTGF5b3V0KCkKIAogICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5
IHNuYXBwZWQgaW4gYSBwYXJ0aWN1bGFyIGF4aXMsIG1haW50YWluIHRoYXQuIE90aGVyd2lzZSwg
c25hcCB0byB0aGUgbmVhcmVzdCBlbGlnaWJsZSBzbmFwIHBvaW50LgogICAgIFNjcm9sbE9mZnNl
dCBvZmZzZXQgPSByb3VuZGVkSW50UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkpOwotICAg
IHNpemVfdCBhY3RpdmVIb3Jpem9udGFsSW5kZXggPSBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZl
U25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOwotICAgIGlmIChh
Y3RpdmVIb3Jpem9udGFsSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICBTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZSYgc25hcFN0YXRlID0gKm1fc2Nyb2xsU25hcFN0YXRlOworCisg
ICAgYXV0byBhY3RpdmVIb3Jpem9udGFsSW5kZXggPSBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZl
U25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOworICAgIGlmICgh
YWN0aXZlSG9yaXpvbnRhbEluZGV4IHx8ICphY3RpdmVIb3Jpem9udGFsSW5kZXggPj0gc25hcFN0
YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpLnNpemUo
KSkKICAgICAgICAgc2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBvZmZzZXQueCgpKTsKLSAgICBzaXplX3QgYWN0aXZl
VmVydGljYWxJbmRleCA9IG1fc2Nyb2xsU25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpOwotICAgIGlmIChhY3RpdmVWZXJ0aWNhbEluZGV4
ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCisKKyAgICBhdXRvIGFjdGl2ZVZlcnRpY2FsSW5k
ZXggPSBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsKTsKKyAgICBpZiAoIWFjdGl2ZVZlcnRpY2FsSW5kZXggfHwgKmFjdGl2
ZVZlcnRpY2FsSW5kZXggPj0gc25hcFN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsKS5zaXplKCkpCiAgICAgICAgIHNldE5lYXJlc3RTY3JvbGxTbmFwSW5k
ZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIG9mZnNldC55KCkp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
N2ZlMGM1ODYxMjllYWQxMDFlYzkyYTkyZTgyODQzNzQyMGZlZDUyOC4uMmFjYWVkNmU1MDA0MTE5
ZjU5Y2Q3ZjU0YTQzNDYxMjUxNGMyOGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuaApAQCAtMTM0LDEyICsxMzQsMTIgQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgTGF5
b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKLSAgICB2b2lkIHNldEFjdGl2ZVNj
cm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7CisgICAgdm9p
ZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4pOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4
Rm9yQ2xpZW50T2Zmc2V0KCk7CiAgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgpOwogICAgIGJv
b2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2U7IH0KICAgICB2b2lkIHNldFNjcm9sbFNuYXBJbmRl
eERpZENoYW5nZShib29sIHN0YXRlKSB7IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdl
ID0gc3RhdGU7IH0KLSAgICB1bnNpZ25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNj
cm9sbEV2ZW50QXhpcykgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMpIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJik7CiAgICAgdm9pZCB1
cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwog
ICAgIGZsb2F0IGFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcywgZmxvYXQg
ZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBv
cmlnaW5hbE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5jcHAKaW5kZXggZDFlNWJiYTM0YmM4OTU2OTg4MzJkMjU1ZWQ5NDY1
MDc4NTA0YjE2My4uYjM0M2FiMjdhYjQ3M2RjMzQyODIxYzhhN2I4NmM1OTMwZmVmZTViYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmNwcApAQCAtNTEsOCArNTEsMTAgQEAgdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0
dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUgc3RhdGUsIGNvbnMKIAogICAgIG1f
bW9tZW50dW1DYWxjdWxhdG9yID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUo
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpOwogICAgIGF1dG8gcHJlZGljdGVkU2Nyb2xsVGFyZ2V0ID0gbV9tb21l
bnR1bUNhbGN1bGF0b3ItPnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7Ci0gICAgZmxvYXQg
dGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3Bv
cnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQu
d2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5k
ZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZz
ZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5o
ZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRp
Y3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0
KCksIG1fYWN0aXZlU25hcEluZGV4WSk7CisKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRYLCB0YXJn
ZXRPZmZzZXRZOworICAgIHN0ZDo6dGllKHRhcmdldE9mZnNldFgsIG1fYWN0aXZlU25hcEluZGV4
WCkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0
aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBh
Z2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCkpOworICAgIHN0ZDo6dGllKHRhcmdldE9mZnNl
dFksIG1fYWN0aXZlU25hcEluZGV4WSkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLmhlaWdodCgp
IC0gdmlld3BvcnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Ny
b2xsVGFyZ2V0LmhlaWdodCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSk7CiAg
ICAgbV9tb21lbnR1bUNhbGN1bGF0b3ItPnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJn
ZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZIH0pOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKQEAgLTkxLDE2ICs5Mywx
NCBAQCBGbG9hdFBvaW50IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpjdXJyZW50QW5pbWF0ZWRT
Y3JvbGxPZmZzZXQoTW9ub3RvbmljVGltZSBjdQogICAgIHJldHVybiBtX21vbWVudHVtQ2FsY3Vs
YXRvci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShlbGFwc2VkVGltZSk7CiB9CiAKLWZs
b2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChT
Y3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0
IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNl
dCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3Rp
dmVTbmFwSW5kZXgpIGNvbnN0CitzdGQ6OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+PiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZz
ZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhKSBjb25zdAogewogICAgIGNv
bnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gbV9zbmFwT2Zmc2V0c0luZm8ub2Zmc2V0c0ZvckF4aXMo
YXhpcyk7Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewotICAgICAgICBvdXRBY3Rp
dmVTbmFwSW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgICAgICByZXR1cm4gY2xh
bXBUbzxmbG9hdD4ocHJlZGljdGVkT2Zmc2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQpOwotICAgIH0K
KyAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoY2xhbXBUbzxmbG9hdD4ocHJlZGljdGVkT2Zmc2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQp
LCBzdGQ6Om51bGxvcHQpOwogCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gbV9zbmFwT2Zmc2V0
c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0U2l6ZSB7IHZpZXdwb3J0U2l6ZSB9
LCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwg
TGF5b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSkpLmZpcnN0OwotICAgIHJldHVybiBw
YWdlU2NhbGUgKiBjbGFtcFRvPGZsb2F0Pih0YXJnZXRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNl
dCk7CisgICAgYXV0byBbdGFyZ2V0T2Zmc2V0LCBzbmFwSW5kZXhdID0gbV9zbmFwT2Zmc2V0c0lu
Zm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0U2l6ZSB7IHZpZXdwb3J0U2l6ZSB9LCBM
YXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSwgTGF5
b3V0VW5pdChzdGFydE9mZnNldCAvIHBhZ2VTY2FsZSkpOworICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihwYWdlU2NhbGUgKiBjbGFtcFRvPGZsb2F0PihmbG9hdCB7IHRhcmdldE9mZnNldCB9LCAw
LCBtYXhTY3JvbGxPZmZzZXQpLCBzbmFwSW5kZXgpOwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSYgc3RhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aAppbmRleCBjYjM1YWQwOWM4YmZmMTIyYzIwNTc1MWI5NWJjZjZjMmJkNGM3YTk2Li5iODE2NzMy
YzlhMjViYjBkMzQ0MGJhYmYyMDQzNGViNGMzMGFiNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTYyLDEyICs2MiwxMiBA
QCBwdWJsaWM6CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KIAotICAgIHVuc2lnbmVkIGFjdGl2ZVNuYXBJbmRleEZv
ckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gYWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCA/IG1fYWN0aXZlU25hcEluZGV4WCA6IG1fYWN0aXZlU25hcEluZGV4WTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldEFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIHVu
c2lnbmVkIGluZGV4KQorICAgIHZvaWQgc2V0QWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxF
dmVudEF4aXMgYXhpcywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiAgICAgewogICAg
ICAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpCiAgICAgICAgICAg
ICBtX2FjdGl2ZVNuYXBJbmRleFggPSBpbmRleDsKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0
ZToKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMs
IGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZs
b2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwg
ZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsK
KyAgICBzdGQ6OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiB0YXJnZXRPZmZz
ZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBw
cmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhKSBjb25z
dDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlKTsK
ICAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxv
YXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOwog
CkBAIC05Miw4ICs5Miw4IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87CiAKLSAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRl
eFggeyBpbnZhbGlkU25hcE9mZnNldEluZGV4IH07Ci0gICAgdW5zaWduZWQgbV9hY3RpdmVTbmFw
SW5kZXhZIHsgaW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OworICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IG1fYWN0aXZlU25hcEluZGV4WDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBt
X2FjdGl2ZVNuYXBJbmRleFk7CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IG1fbW9tZW50dW1D
YWxjdWxhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmlu
ZGV4IDgyYjBhOGMyN2UwNDY1MmJlN2RhZDVkOTNlNjMyOWVlOGFjNTM2OGIuLjhhOTY3ODk1NTNh
ZDMxMTM1MTQ3ODJiMWY3MGUwY2Y1MTkzMzhhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ5MCwyNiArNDkwLDI2IEBAIHZvaWQgU2Nyb2xsYWJs
ZUFyZWE6OmNsZWFyU25hcE9mZnNldHMoKQogICAgICAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3It
PnNldFNuYXBPZmZzZXRzSW5mbyhMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8oKSk7CiB9CiAK
LXVuc2lnbmVkIFNjcm9sbGFibGVBcmVhOjpjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFNjcm9sbGFibGVBcmVhOjpjdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogc2Nyb2xs
QW5pbWF0b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCiAgICAgICAgIHJldHVybiBzY3Jv
bGxBbmltYXRvci0+YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwpOwotICAgIHJldHVybiBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXVuc2lnbmVkIFNjcm9sbGFibGVBcmVhOjpjdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBT
Y3JvbGxhYmxlQXJlYTo6Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBjb25zdAogewog
ICAgIGlmIChhdXRvKiBzY3JvbGxBbmltYXRvciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkK
ICAgICAgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yLT5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JB
eGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpOwotICAgIHJldHVybiBpbnZhbGlkU25hcE9m
ZnNldEluZGV4OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgU2Nyb2xsYWJs
ZUFyZWE6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgp
Cit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogewogICAgIHNjcm9sbEFuaW1hdG9yKCku
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwsIGluZGV4KTsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0Q3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRD
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRl
eCkKIHsKICAgICBzY3JvbGxBbmltYXRvcigpLnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgaW5kZXgpOwogfQpAQCAtNTMyLDEzICs1MzIs
MTMgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6cmVzbmFwQWZ0ZXJMYXlvdXQoKQogICAgIGF1dG8g
Y29ycmVjdGVkT2Zmc2V0ID0gY3VycmVudE9mZnNldDsKICAgICBjb25zdCBhdXRvJiBob3Jpem9u
dGFsID0gaW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIGF1dG8gYWN0aXZlSG9yaXpv
bnRhbEluZGV4ID0gY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpOwotICAgIGlmIChh
Y3RpdmVIb3Jpem9udGFsSW5kZXggPCBob3Jpem9udGFsLnNpemUoKSkKLSAgICAgICAgY29ycmVj
dGVkT2Zmc2V0LnNldFgoaG9yaXpvbnRhbFthY3RpdmVIb3Jpem9udGFsSW5kZXhdLm9mZnNldC50
b0ludCgpKTsKKyAgICBpZiAoYWN0aXZlSG9yaXpvbnRhbEluZGV4KQorICAgICAgICBjb3JyZWN0
ZWRPZmZzZXQuc2V0WChob3Jpem9udGFsWyphY3RpdmVIb3Jpem9udGFsSW5kZXhdLm9mZnNldC50
b0ludCgpKTsKIAogICAgIGNvbnN0IGF1dG8mIHZlcnRpY2FsID0gaW5mby0+dmVydGljYWxTbmFw
T2Zmc2V0czsKICAgICBhdXRvIGFjdGl2ZVZlcnRpY2FsSW5kZXggPSBjdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpOwotICAgIGlmIChhY3RpdmVWZXJ0aWNhbEluZGV4IDwgdmVydGljYWwu
c2l6ZSgpKQotICAgICAgICBjb3JyZWN0ZWRPZmZzZXQuc2V0WSh2ZXJ0aWNhbFthY3RpdmVWZXJ0
aWNhbEluZGV4XS5vZmZzZXQudG9JbnQoKSk7CisgICAgaWYgKGFjdGl2ZVZlcnRpY2FsSW5kZXgp
CisgICAgICAgIGNvcnJlY3RlZE9mZnNldC5zZXRZKHZlcnRpY2FsWyphY3RpdmVWZXJ0aWNhbElu
ZGV4XS5vZmZzZXQudG9JbnQoKSk7CiAKICAgICBpZiAoY29ycmVjdGVkT2Zmc2V0ICE9IGN1cnJl
bnRPZmZzZXQpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8
PCAiIGFkanVzdGluZyBvZmZzZXQgZnJvbSAiIDw8IGN1cnJlbnRPZmZzZXQgPDwgIiB0byAiIDw8
IGNvcnJlY3RlZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCBlMjdlMDFjYzgwMzQzMWExODVmNmQxYjQ1NTM4YTVjNGU1ZjczMzgzLi45NTllOGY4
MmYwNjU0NWRjYmRiOTBhMmI3OGMwYmNiOTA5YzgwM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTkzLDEwICs5MywxMCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0
c0luZm8oKSBjb25zdDsKICAgICB2b2lkIHNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKGNvbnN0IExh
eW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYpOwogICAgIHZvaWQgY2xlYXJTbmFwT2Zmc2V0cygp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRW
ZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KTsKICNlbmRpZgog
CiAgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IGJlMGUyOGI5MjVmZTcxNGFh
NmUyMTU3ZmE0OWZhNzg0Mjk1ZTZmZDUuLjc3ODQ4Mjc5NTBjMGFhNDMxM2I2ODI2ZTRiNWFlZTIz
MjExYjkxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JU
cmFuc2FjdGlvbi5jcHAKQEAgLTMxMSw4ICszMTEsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9s
bAogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpTY3JvbGxPcmlnaW4sIEludFBvaW50LCBzZXRTY3JvbGxPcmlnaW4pOwogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8sIHNldFNuYXBPZmZzZXRzSW5mbyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
LCB1bnNpZ25lZCwgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7Ci0gICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRW
ZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgdW5zaWduZWQsIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+LCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKKyAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVu
dFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiwgc2V0Q3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCiAgICAgU0NST0xMSU5HX05PREVf
REVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1z
LCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMsIHNldFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyk7
CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCBSZXF1ZXN0ZWRTY3JvbGxEYXRhLCBzZXRSZXF1ZXN0
ZWRTY3JvbGxEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmNwcAppbmRleCA4ZDMzN2NlMTczN2Q2YTc5NDdiMmMyODMyYjgxOWI2NzE1MzYxMzdh
Li40Y2FiMTkwN2E0ZmNlZTZjMDU4NzQ4ZGNmNGFlZmNlM2JhNGQ3NDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0yMTAsNyArMjEw
LDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphcHBseVNjcm9sbGlu
Z1RyZWVMYXllclBvc2l0aW9uc0FmdGVyQ29tbWkKICAgICBtX3Njcm9sbGluZ1RyZWUtPmFwcGx5
TGF5ZXJQb3NpdGlvbnNBZnRlckNvbW1pdCgpOwogfQogCi12b2lkIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6
OlNjcm9sbGluZ05vZGVJRCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZl
cnRpY2FsKQordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjdXJyZW50U25h
cFBvaW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB2ZXJ0aWNhbCkKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Q3VycmVudFNuYXBQb2ludEluZGljZXNDaGFuZ2VkRm9yTm9k
ZShub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAppbmRleCAyYjRjN2MyMjdlMzAwMDU0OTdjMGQ4
NWZiZmM2NmYzYWZiMTFmOGM4Li43ZTliMTdlOGM5ODUzNGRjNzk5YTZhMGMxNzMwMWZlYjNhN2Rh
NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVNjcm9sbGluZ1RyZWVM
YXllclBvc2l0aW9uc0FmdGVyQ29tbWl0KCk7CiAKLSAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJ
bmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpv
bnRhbCwgdW5zaWduZWQgdmVydGljYWwpOworICAgIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGlj
ZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBob3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbCk7CiAKICAg
ICAvLyBGSVhNRTogZXhwb3NlIHRoZSB0cmVlIGFuZCBwYXNzIHRoaXMgdG8gdGhhdD8KICAgICBi
b29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jik7
CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgYm9vbCBzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNj
cm9sbEV2ZW50QXhpcykgY29uc3Q7Ci0gICAgZmxvYXQgY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWlu
RnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0
aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBjbG9zZXN0SW5kZXgpIGNvbnN0Owor
ICAgIHN0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IGNsb3Nlc3RTbmFw
T2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpcywgZmxv
YXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IHZlbG9jaXR5KSBjb25zdDsKICNlbmRpZgogCiAg
ICAgdm9pZCBzZW5kVUlTdGF0ZUNoYW5nZWRJZk5lY2Vzc2FyeSgpOwpAQCAtMTMyLDggKzEzMiw4
IEBAIHByaXZhdGU6CiAgICAgUmVxdWVzdGVkU2Nyb2xsSW5mbyogbV9yZXF1ZXN0ZWRTY3JvbGxJ
bmZvIHsgbnVsbHB0ciB9OwogICAgIFJlbW90ZVNjcm9sbGluZ1VJU3RhdGUgbV91aVN0YXRlOwog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4IHsgV2ViQ29yZTo6aW52YWxpZFNuYXBPZmZzZXRJbmRleCB9Owot
ICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggeyBXZWJDb3JlOjpp
bnZhbGlkU25hcE9mZnNldEluZGV4IH07CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9j
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7CiAjZW5kaWYKICAgICBib29sIG1f
cHJvcGFnYXRlc01haW5GcmFtZVNjcm9sbHMgeyB0cnVlIH07CiAgICAgSGFzaFNldDxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fbGF5ZXJzV2l0aFNjcm9sbGluZ1Jl
bGF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAppbmRleCA1NDIzZGM2ZTZjZDA3
M2I5MDUzNmE1MDNlZTBlNjJhZGQ5ZDJkNzUyLi5iOWUzNzZjNDE4NzUwNTJlMjFiMjRlZDc0MzFm
ZWRlNDUzNjhiYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCkBAIC0xMzAsNyAr
MTMwLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiBSZW1vdGVTY3JvbGxpbmdUcmVlOjpjcmVh
dGVTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdOb2QKICAgICByZXR1cm4gU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogfQogCi12b2lkIFJlbW90ZVNjcm9s
bGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQordm9pZCBS
ZW1vdGVTY3JvbGxpbmdUcmVlOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3Jv
bGxpbmdOb2RlSUQgbm9kZUlELCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbCkKIHsKICAgICBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2Uobm9kZUlELCBob3Jp
em9udGFsLCB2ZXJ0aWNhbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuaAppbmRleCA2Mzli
ZDczMGJiN2FmZDIxMDIzODg2ODg4MTFhZTQyYTZhYTFhNDY2Li45NzUyYWFiNDNkZDBiYWM2Y2Zl
ZWM0MjEzNTY2YzU3NTc1OWRkOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBXZWJDb3JlOjpTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlv
bjo6U3luYykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Ny
b2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYg
c2Nyb2xsUG9zaXRpb24sIFdlYkNvcmU6OlNjcm9sbFR5cGUsIFdlYkNvcmU6OlNjcm9sbENsYW1w
aW5nKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFu
Z2UoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25l
ZCB2ZXJ0aWNhbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0Rp
ZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGhvcml6b250YWwsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVTY3JvbGxpbmdUcmVlKFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCAzN2Y5OGY3ZWYwMTNjMDBkOTky
ODk2OGM5MDNlZjg2ZGVhYzgzZDBhLi42ZWVmOTllMmI4YmFlMTY0YzhkODY4OGJlZTdlNjdjZjZi
NmVlODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5SU9TLm1tCkBAIC0yMDAsMTQgKzIwMCwxNiBAQCB2b2lkIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGlu
ZyhDR1NpegogewogICAgIC8vIFRoZSBib3VuZHMgY2hlY2tpbmcgd2l0aCBtYXhTY3JvbGxPZmZz
ZXRzIGlzIHRvIGVuc3VyZSB0aGF0IHdlIHdvbid0IGludGVyZmVyZSB3aXRoIHJ1YmJlci1iYW5k
aW5nIHdoZW4gc2Nyb2xsaW5nIHRvIHRoZSBlZGdlIG9mIHRoZSBwYWdlLgogICAgIGlmIChzaG91
bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCkpIHsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2Vz
dFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlz
OjpIb3Jpem9udGFsLCB0YXJnZXRDb250ZW50T2Zmc2V0LT54LCB2ZWxvY2l0eS54LCBtX2N1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFw
UG9zaXRpb247CisgICAgICAgIHN0ZDo6dGllKHBvdGVudGlhbFNuYXBQb3NpdGlvbiwgbV9jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KSA9IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZy
YW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgdGFyZ2V0
Q29udGVudE9mZnNldC0+eCwgdmVsb2NpdHkueCk7CiAgICAgICAgIGlmICh0YXJnZXRDb250ZW50
T2Zmc2V0LT54ID4gMCAmJiB0YXJnZXRDb250ZW50T2Zmc2V0LT54IDwgbWF4U2Nyb2xsT2Zmc2V0
cy53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBzdGQ6Om1pbjxm
bG9hdD4obWF4U2Nyb2xsT2Zmc2V0cy53aWR0aCwgcG90ZW50aWFsU25hcFBvc2l0aW9uKTsKICAg
ICB9CiAKICAgICBpZiAoc2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSkgewotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFw
UG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3Jl
OjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB0YXJnZXRDb250ZW50T2Zmc2V0LT55LCB2ZWxv
Y2l0eS55LCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKLSAgICAgICAgaWYgKG1f
Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkK
KyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uOworICAgICAgICBzdGQ6OnRpZShw
b3RlbnRpYWxTbmFwUG9zaXRpb24sIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpID0g
Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbCwgdGFyZ2V0Q29udGVudE9mZnNldC0+eSwgdmVsb2NpdHkueSk7Cisg
ICAgICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQogICAgICAgICAgICAg
cG90ZW50aWFsU25hcFBvc2l0aW9uIC09IHRvcEluc2V0OwogCiAgICAgICAgIGlmICh0YXJnZXRD
b250ZW50T2Zmc2V0LT55ID4gMCAmJiB0YXJnZXRDb250ZW50T2Zmc2V0LT55IDwgbWF4U2Nyb2xs
T2Zmc2V0cy5oZWlnaHQpCkBAIC0yMjUsMTQgKzIyNywxMiBAQCBib29sIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xs
RXZlbgogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290
Tm9kZSgpOwogICAgIGlmIChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpIHsK
ICAgICAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05v
ZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7
Ci0gICAgICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gcm9vdFNjcm9sbGluZ05vZGUtPnNu
YXBPZmZzZXRzSW5mbygpLm9mZnNldHNGb3JBeGlzKGF4aXMpOwotICAgICAgICB1bnNpZ25lZCBj
dXJyZW50SW5kZXggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA6IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXg7Ci0gICAgICAgIHJldHVybiBzbmFwT2Zmc2V0cy5zaXplKCkgJiYgKGN1cnJlbnRJbmRl
eCA8IHNuYXBPZmZzZXRzLnNpemUoKSB8fCBjdXJyZW50SW5kZXggPT0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleCk7CisgICAgICAgIHJldHVybiByb290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJ
bmZvKCkub2Zmc2V0c0ZvckF4aXMoYXhpcykuc2l6ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RT
bmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9h
dCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBjdXJyZW50SW5k
ZXgpIGNvbnN0CitzdGQ6OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFt
ZVNjcm9sbGluZyhTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb24s
IGZsb2F0IHZlbG9jaXR5KSBjb25zdAogewogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0g
bV9zY3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlz
RnJhbWVTY3JvbGxpbmdOb2RlKCkpOwpAQCAtMjQwLDkgKzI0MCw4IEBAIGZsb2F0IFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Ny
b2xsaW5nKFNjCiAgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0gcm9vdFNjcm9sbGlu
Z05vZGUtPnNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xsRGVzdGlu
YXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRl
bnRTY2FsZSgpOwotICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0OwotICAgIHN0ZDo6dGll
KHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgpID0gc25hcE9mZnNldHNJbmZvLmNs
b3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHJvb3RTY3JvbGxpbmdOb2RlLT5sYXlvdXRWaWV3cG9ydCgp
LnNpemUoKSwgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsKLSAgICByZXR1cm4g
cmF3Q2xvc2VzdFNuYXBPZmZzZXQgKiBtX3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2Nh
bGUoKTsKKyAgICBhdXRvIFtyYXdDbG9zZXN0U25hcE9mZnNldCwgbmV3SW5kZXhdID0gc25hcE9m
ZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHJvb3RTY3JvbGxpbmdOb2RlLT5sYXlv
dXRWaWV3cG9ydCgpLnNpemUoKSwgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmF3Q2xvc2VzdFNuYXBPZmZzZXQgKiBtX3dlYlBh
Z2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKSwgbmV3SW5kZXgpOwogfQogCiBib29sIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Omhhc0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0
CkBAIC0yODAsMTEgKzI3OSwxMSBAQCBDR1BvaW50IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk6Om5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBPZgogICAgIGNvbnN0
IGF1dG8mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUuc25hcE9mZnNldHNJbmZvKCkudmVy
dGljYWxTbmFwT2Zmc2V0czsKIAogICAgIC8vIFRoZSBib3VuZHMgY2hlY2tpbmcgd2l0aCBtYXhT
Y3JvbGxPZmZzZXRzIGlzIHRvIGVuc3VyZSB0aGF0IHdlIHdvbid0IGludGVyZmVyZSB3aXRoIHJ1
YmJlci1iYW5kaW5nIHdoZW4gc2Nyb2xsaW5nIHRvIHRoZSBlZGdlIG9mIHRoZSBwYWdlLgotICAg
IGlmICghaG9yaXpvbnRhbC5pc0VtcHR5KCkgJiYgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4IDwgaG9yaXpvbnRhbC5zaXplKCkpCi0gICAgICAgIGFjdGl2ZVBvaW50LnggPSBob3Jp
em9udGFsW21fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleF0ub2Zmc2V0ICogbV93ZWJQ
YWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CisgICAgaWYgKCFob3Jpem9udGFsLmlz
RW1wdHkoKSAmJiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggJiYgKm1fY3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA8IGhvcml6b250YWwuc2l6ZSgpKQorICAgICAgICBh
Y3RpdmVQb2ludC54ID0gaG9yaXpvbnRhbFsqbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4XS5vZmZzZXQgKiBtX3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsKIAot
ICAgIGlmICghdmVydGljYWwuaXNFbXB0eSgpICYmIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXggPCB2ZXJ0aWNhbC5zaXplKCkpIHsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBv
c2l0aW9uID0gdmVydGljYWxbbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleF0ub2Zmc2V0
ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CisgICAgaWYgKCF2ZXJ0
aWNhbC5pc0VtcHR5KCkgJiYgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCAmJiAqbV9j
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA8IHZlcnRpY2FsLnNpemUoKSkgeworICAgICAg
ICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSB2ZXJ0aWNhbFsqbV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleF0ub2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVu
dFNjYWxlKCk7CiAgICAgICAgIHBvdGVudGlhbFNuYXBQb3NpdGlvbiAtPSB0b3BJbnNldDsKICAg
ICAgICAgYWN0aXZlUG9pbnQueSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5oCmluZGV4IDhkNzc0N2M1NzcwM2Q1M2Y3MzU3MmFiY2Q3OTMyNzk0NGM2OTFlZTUuLmUw
MjQ5MjY4MDJkYmNkODgwODQ1ZGYzYWM3YjNmOWE0NmFjYmVjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbFZpZXdXaWxsU3RhcnRQYW5H
ZXN0dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9mZnNldCwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbik7CiAK
LSAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhvcml6
b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBjb25zdDsKKyAgICB2b2lkIGN1cnJlbnRTbmFwUG9p
bnRJbmRpY2VzRGlkQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvcml6b250YWwsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsKSBjb25zdDsKICAgICBDQUxheWVyICpzY3Jv
bGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgcmVzZXRTY3JvbGxWaWV3RGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCA4ZmM2NjE1
Zjc2ZjNjOWZhZDAwZjU5NGIzNGIxM2RkNDRjOTIzY2QwLi42NTY0YjZhMDBhMTc2YWU1MTE4ZTUy
M2U0OTgyOTgyNDc5NmY4YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0xMDMsOCArMTAzLDggQEAg
LSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxW
aWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICBDR0Zsb2F0IGhvcml6b250YWxUYXJnZXQgPSB0
YXJnZXRDb250ZW50T2Zmc2V0LT54OwogICAgIENHRmxvYXQgdmVydGljYWxUYXJnZXQgPSB0YXJn
ZXRDb250ZW50T2Zmc2V0LT55OwogCi0gICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFsU25h
cFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5j
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7Ci0gICAgdW5zaWduZWQgb3JpZ2luYWxW
ZXJ0aWNhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxp
bmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBvcmlnaW5hbFZlcnRpY2Fs
U25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRT
aXplIHZpZXdwb3J0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oQ0dSZWN0R2V0V2lkdGgoW3Njcm9s
bFZpZXcgYm91bmRzXSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oQ0dSZWN0R2V0SGVpZ2h0KFtzY3Jv
bGxWaWV3IGJvdW5kc10pKSk7CiAgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0gX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8o
KTsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludAogICAgIHNjcm9s
bGluZ05vZGUoKS53YXNTY3JvbGxlZEJ5RGVsZWdhdGVkU2Nyb2xsaW5nKHNjcm9sbFBvc2l0aW9u
LCB7IH0sIGluVXNlckludGVyYWN0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6
U3luYyA6IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CiB9CiAKLXZvaWQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGlj
ZXNEaWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpIGNvbnN0
Cit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFw
UG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvcml6b250YWws
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsKSBjb25zdAogewogICAgIGlmIChtX3Vw
ZGF0aW5nRnJvbVN0YXRlTm9kZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjZThkNzQ0MmNhYTAz
YTAxYWFiMjA5ODQ2ZjBmODhmYjcxYmY3Njc5Li5lOGVmYTQ0ZTA4ZTAyYTQ5OGZjNTAxNGE5NDg5
ZWQ2M2EwNjI5ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8v
IFJlc3BvbmQgdG8gVUkgcHJvY2VzcyBjaGFuZ2VzLgogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25D
aGFuZ2VkRm9yTm9kZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIHN5bmNMYXllclBvc2l0aW9uKTsKLSAgICB2
b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzQ2hhbmdlZEZvck5vZGUoV2ViQ29yZTo6U2Nyb2xs
aW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCk7CisgICAg
dm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0NoYW5nZWRGb3JOb2RlKFdlYkNvcmU6OlNjcm9s
bGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpvbnRhbCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gdmVydGljYWwpOwogCiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3IubWVzc2FnZXMuaW4KaW5kZXggZmUxNjMwZjY0MjI3ZTFkNWJkZjcyNDRhMzNkZDQxNmQ0
NzQ4MzUzNS4uYTEyYzg0N2JkY2ZjZGVmNjNkNDZiZjQ1NzI1NGZiYmRhNzU4MWRjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvciB7CiAgICAgU2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZSh1
aW50NjRfdCBub2RlSUQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24sIGJvb2wg
c3luY0xheWVyUG9zaXRpb24pOwotICAgIEN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzQ2hhbmdlZEZv
ck5vZGUodWludDY0X3Qgbm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0
aWNhbCk7CisgICAgQ3VycmVudFNuYXBQb2ludEluZGljZXNDaGFuZ2VkRm9yTm9kZSh1aW50NjRf
dCBub2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvcml6b250YWwsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHZlcnRpY2FsKTsKICAgICBTY3JvbGxpbmdTdGF0ZUluVUlQcm9jZXNzQ2hh
bmdlZChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1VJU3RhdGUgdWlTdGF0ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQppbmRl
eCAyZDhlZDU3ZmViMDljNjg2N2Y1ODJlMjgyNTE5YTcxNDRhM2VhYTIzLi5hYzExNWUzMWZkZDRj
NGUwOWM4NDRkYWU5YWY2MzdlYjA5OWJiODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9p
ZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9k
ZShTY3JvbGxpbmdOb2RlSUQgbm8KICAgICBhcHBseVNjcm9sbFVwZGF0ZShub2RlSUQsIHNjcm9s
bFBvc2l0aW9uLCBzdGQ6Om51bGxvcHQsIFNjcm9sbFR5cGU6OlVzZXIsIHN5bmNMYXllclBvc2l0
aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb246OlNldCk7CiB9CiAKLXZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzQ2hhbmdlZEZvck5vZGUoU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpCit2b2lkIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0NoYW5nZWRG
b3JOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhv
cml6b250YWwsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsKQogewogICAgIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRpY2VzKG5vZGVJRCwgaG9yaXpvbnRhbCwgdmVydGljYWwpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>