<?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>226630</bug_id>
          
          <creation_ts>2021-06-04 00:21:10 -0700</creation_ts>
          <short_desc>[css-scroll-snap] New snap containers always snap to the first scroll position</short_desc>
          <delta_ts>2021-06-16 12:38:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=227085</see_also>
          <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>226538</dependson>
          <blocked>218115</blocked>
    
    <blocked>226654</blocked>
          <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>1766695</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-04 00:21:10 -0700</bug_when>
    <thetext>When a snapping scroll area is created, post layout snapping always forces the container to the first snap position. This happens even when the container is right-to-left (the last horizontal snap positions is closest to the origin) and when the first snap position shouldn&apos;t be active because of proximity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767341</commentid>
    <comment_count>1</comment_count>
      <attachid>430720</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-07 01:12:32 -0700</bug_when>
    <thetext>Created attachment 430720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767369</commentid>
    <comment_count>2</comment_count>
      <attachid>430728</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-07 01:59:21 -0700</bug_when>
    <thetext>Created attachment 430728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768888</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-11 00:22:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/79184230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769710</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-15 00:08:15 -0700</bug_when>
    <thetext>Committed r278862 (238806@main): &lt;https://commits.webkit.org/238806@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430728.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430720</attachid>
            <date>2021-06-07 01:12:32 -0700</date>
            <delta_ts>2021-06-07 01:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226630-20210607101229.patch</filename>
            <type>text/plain</type>
            <size>25861</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjOTEwZTY2MmRlOTJl
MjA1N2U3YmZmNTcxZTlhNTUwZjM2ODQ4ZC4uODU2NDM2MWQ4NGUyZWUxODM5NTRiZDNmNjY3ZWNm
YzIxMmQyNmU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTA2LTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBOZXcgc25hcCBjb250YWluZXJzIGFsd2F5cyBzbmFwIHRvIHRoZSBmaXJzdCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZXJlIGFyZSB0d28gc2l0dWF0aW9ucyB3aGVyZSB3ZSBzaG91bGQgbm90IGltbWVkaWF0
ZWx5IHNuYXAgdG8gdGhlIGZpcnN0IHNuYXAgcG9zaXRpb24KKyAgICAgICAgb2YgYSBzY3JvbGxl
ciBhZnRlciBpbml0aWFsIGxheW91dDoKKyAgICAgICAgICAgIDEuIElmIHRoYXQgc2Nyb2xsIGlz
IHJpZ2h0LXRvLWxlZnQuIEluIHRoaXMgY2FzZSB0aGUgbGFzdCBzbmFwIHBvc2l0aW9uIGlzIGNs
b3Nlc3QgdG8KKyAgICAgICAgICAgICAgIHRoZSBvcmlnaW4uCisgICAgICAgICAgICAyLiBJZiB0
aGUgc2Nyb2xsZXIgdXNlcyBwcm94aW1pdHkgc25hcHBpbmcgYW5kIHRoZSBmaXJzdCBzbmFwIHBv
c2l0aW9uIGlzIGZhciBlbm91Z2gKKyAgICAgICAgICAgICAgIGF3YXkgZnJvbSB0aGUgb3JpZ2lu
IHRoYXQgaXQgaXNuJ3QgeWV0IGFjdGl2ZS4KKyAgICAgICAgUHJldmlvdXNseSwgV2ViS2l0IHdh
cyBhbHdheXMgc25hcHBpbmcgdG8gdGhlIGZpcnN0IHBvc2l0aW9uLiBUaGUgY2hhbmdlIGZpeGVz
IHRoYXQgYnkKKyAgICAgICAgbm90IHNuYXBwaW5nIHRvIHRoZSAwIGluZGV4IHNuYXAgcG9pbnQg
aW1tZWRpYXRlbHkgYWZ0ZXIgaW5pdGlhbCBsYXlvdXQgYW5kIG9ubHkgc25hcHBpbmcKKyAgICAg
ICAgdG8gYW4gZWxpZ2libGUgc25hcCBwb3NpdGlvbnMgYWZ0ZXIgcnVubmluZyBhIHNuYXAgcG9p
bnQgc2VhcmNoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBjaGFuZ2UgZml4ZXMgdHdv
IGV4aXN0aW5nIFdQVCB0ZXN0czoKKyAgICAgICAgICAgIC0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtc25hcC0wMDMuaHRt
CisgICAgICAgICAgICAtIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1z
Y3JvbGwtc25hcC9zbmFwLWFmdGVyLWluaXRpYWwtbGF5b3V0L3Njcm9sbC1zbmFwLWluaXRpYWwt
bGF5b3V0LTAwMC5odG0KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldFdpdGhJbmZv
QW5kQXhpcyk6IFB1bGwgaW4gaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkgYXMKKyAg
ICAgICAgYW4gYW5vbnltb3VzIGZ1bmN0aW9uIGFuZCB1c2UgaXQgdG8gYXZvaWQgc25hcHBpbmcg
dG8gdGhlIGZpcnN0IGFuZCBsYXN0IHBvc2l0aW9uIGlmCisgICAgICAgIHRoZXkgYXJlIHRvbyBm
YXIgZm9yIHByb3hpbWl0eSBzbmFwcGluZy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBjb25zdCk6IFVzZSBpbnZhbGlkU25h
cE9mZnNldEluZGV4IGFzCisgICAgICAgIHRoZSBkZWZhdWx0IGZvciB0aGUgc25hcCBpbmRleCBw
cm9wZXJ0eS4gSW50ZXJwcmV0IDAgYXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRp
ZXMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cmVzbmFwQWZ0ZXJMYXlv
dXQpOiBBZGRlZCB0aGlzIG1ldGhvZCB0aGF0IHBhc3NlcyB0aHJvdWdoIHRvIFNjcm9sbENvbnRy
b2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6dXBkYXRlQWN0aXZlU2Ny
b2xsU25hcEluZGV4Rm9yT2Zmc2V0KTogU2ltcGxpZmllZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5k
aWNlc0Zvck9mZnNldAorICAgICAgICBpbnRvIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZv
ckNsaWVudE9mZnNldC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOiBBZGRl
ZCBtZXRob2QgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnNldFNuYXBPZmZzZXRz
SW5mbyk6IFVzZSB1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQgbm93
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyBjb25zdCk6IFJldHVybiBpbnZhbGlkU25hcE9mZnNldEluZGV4IAorICAgICAg
ICB3aGVuIHNuYXBwaW5nIGlzIGRpc2FibGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29u
dHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQpOiBObyBs
b25nZXIgY2xhbXAgdGhlIHNjcm9sbAorICAgICAgICBwb3NpdGlvbiB0byB0aGUgZmlyc3QgYW5k
IGxhc3Qgc25hcCBwb2ludHMuIFdlIG1pZ2h0IGJlIHNjcm9sbGluZyB0byBhIHBvc2l0aW9uIGJl
Zm9yZSBvciBhZnRlcgorICAgICAgICB0aGVtIHRoYXQgaXNuJ3Qgc3ViamVjdCB0byBwcm94aW1p
dHkgc25hcHBpbmcuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQpOiBSZW5hbWVkIGZyb20gc2V0QWN0
aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQKKyAgICAgICAgYmVjYXVzZSBpdCBhbHdheXMg
anVzdCB0b29rIHRoZSBjbGllbnQncyBjdXJyZW50IG9mZnNldC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbENvbnRyb2xsZXI6OnJlc25hcEFmdGVyTGF5b3V0KTogQWRkZWQgdGhpcyBoZWxwZXIg
d2hpY2ggc25hcHMgaW4gYXhlcyB0aGF0IGFyZW4ndCBjdXJyZW50bHkKKyAgICAgICAgc25hcHBl
ZCB0byBhIHNuYXAgcG9zaXRpb24gYWZ0ZXIgYSBsYXlvdXQuCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oOiBSZW1vdmVkIHVudXNlZCBtZXRob2QgdGhhdCB1c2VkIDAgaW5j
b3JyZWN0bHkgYXMgYW4gaW52YWxpZCBzbmFwIHBvc2l0aW9uLgorICAgICAgICBVcGRhdGUgbWV0
aG9kIGRlZmluaXRpb25zLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0
YXRlLmg6IFVzZSBpbnZhbGlkU25hcE9mZnNldEluZGV4IHRvIHNpZ25pZnkgbm8gc25hcHBpbmcu
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYWJsZUFyZWE6OmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpjdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YWJsZUFyZWE6OnJlc25hcEFmdGVyTGF5b3V0KTogQ2FsbCBpbnRvIFNjcm9sbENvbnRyb2xsZXI6
OnJlc25hcEFmdGVyTGF5b3V0LgorCiAyMDIxLTA2LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgYSBmZXcgY2FsbCBzaXRlcyBjcmVhdGluZyBT
aGFyZWRCdWZmZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0OTI5ZTYzYzU0ZWE3YjU2NWQzZGYwNDdm
MWVhMDUxN2I1ZjU0YjBkLi4yNDM3OTUwNTIxNTI4MjZmYjA2MzJlMGExYWM1ZmRiZmU0OGQ4NTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTA3ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBOZXcg
c25hcCBjb250YWluZXJzIGFsd2F5cyBzbmFwIHRvIHRoZSBmaXJzdCBzY3JvbGwgcG9zaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6IFVz
ZSBpbnZhbGlkU25hcE9mZnNldEluZGV4CisgICAgICAgIGluc3RlYWQgb2YgMCB0byBpbml0aWFs
aXplIHRoZSBzbmFwIHBvc2l0aW9uLgorCiAyMDIxLTA2LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgYSBmZXcgY2FsbCBzaXRlcyBjcmVhdGlu
ZyBTaGFyZWRCdWZmZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5kZXggZDA5NGU0OTAxZTdhNjBj
ODY0OGVhNGM5ODVhMWM0ZTZhODI4NmUzZi4uNWNlNTc2OTNlNWNkZjFkNDdmY2NlMDFjOGU2MWI5
YTliMWQxMDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC00MiwxOCArNDIsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZT4KLXN0YXRpYyBib29s
IGlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0
cmljdG5lc3MsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uLCBVbml0VHlwZSBjYW5kaWRhdGVT
bmFwT2Zmc2V0LCBVbml0VHlwZSB2aWV3cG9ydExlbmd0aCkKLXsKLSAgICBpZiAoc3RyaWN0bmVz
cyAhPSBTY3JvbGxTbmFwU3RyaWN0bmVzczo6UHJveGltaXR5KQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIC8vIFRoaXMgaXMgYW4gYXJiaXRyYXJ5IGNob2ljZSBmb3Igd2hhdCBpdCBtZWFu
cyB0byBiZSAiaW4gcHJveGltaXR5IiBvZiBhIHNuYXAgb2Zmc2V0LiBXZSBzaG91bGQgcGxheSBh
cm91bmQgd2l0aAotICAgIC8vIHRoaXMgYW5kIHNlZSB3aGF0IGZlZWxzIGJlc3QuCi0gICAgc3Rh
dGljIGNvbnN0IGZsb2F0IHJhdGlvT2ZTY3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVk
Rm9yUHJveGltaXR5ID0gMC4zOwotICAgIHJldHVybiBzdGQ6OmFicyhmbG9hdCB7Y2FuZGlkYXRl
U25hcE9mZnNldCAtIHNjcm9sbERlc3RpbmF0aW9ufSkgPD0gKHZpZXdwb3J0TGVuZ3RoICogcmF0
aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkpOwotfQot
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KIHN0YXRpYyB2b2lkIGluZGljZXNPZk5l
YXJlc3RTbmFwT2Zmc2V0cyhMYXlvdXRUeXBlIG9mZnNldCwgY29uc3QgVmVjdG9yPFNuYXBPZmZz
ZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgdW5zaWduZWQmIGxvd2VySW5kZXgsIHVuc2ln
bmVkJiB1cHBlckluZGV4KQogewpAQCAtMTEwLDE5ICs5OCwzMyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW5mb1R5cGUsIHR5cGVuYW1lIFNpemVUeXBlLCB0eXBlbmFtZSBMYXlvdXRUeXBlPgogc3Rh
dGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRo
SW5mb0FuZEF4aXMoY29uc3QgSW5mb1R5cGUmIGluZm8sIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBj
b25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBMYXlvdXRUeXBlIHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxMYXlvdXRUeXBlPiBvcmlnaW5h
bE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpCiB7CiAgICAgY29uc3QgYXV0byYgc25hcE9m
ZnNldHMgPSBpbmZvLm9mZnNldHNGb3JBeGlzKGF4aXMpOworICAgIGF1dG8gcGFpckZvck5vU25h
cHBpbmcgPSBzdGQ6Om1ha2VfcGFpcihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgaW52YWxpZFNu
YXBPZmZzZXRJbmRleCk7CiAgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25h
cE9mZnNldEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHBhaXJGb3JOb1NuYXBwaW5nOwogCiAgICAg
aWYgKG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykgewogICAgICAgICBpZiAo
YXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJl
dHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKm9yaWdpbmFsT2Zmc2V0Rm9y
RGlyZWN0aW9uYWxTbmFwcGluZywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzWypmaXJzdFNuYXBTdG9wT2Zmc2V0
SW5kZXhdLm9mZnNldCwgKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCk7CiAgICAgfQogCisgICAg
YXV0byB2aWV3cG9ydExlbmd0aCA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
ID8gdmlld3BvcnRTaXplLndpZHRoKCkgOiB2aWV3cG9ydFNpemUuaGVpZ2h0KCk7CisgICAgYXV0
byBpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eSA9IFsmXShMYXlvdXRUeXBlIGNhbmRp
ZGF0ZVNuYXBPZmZzZXQpIHsKKyAgICAgICAgaWYgKGluZm8uc3RyaWN0bmVzcyAhPSBTY3JvbGxT
bmFwU3RyaWN0bmVzczo6UHJveGltaXR5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgLy8gVGhpcyBpcyBhbiBhcmJpdHJhcnkgY2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRv
IGJlICJpbiBwcm94aW1pdHkiIG9mIGEgc25hcCBvZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3Vu
ZCB3aXRoCisgICAgICAgIC8vIHRoaXMgYW5kIHNlZSB3aGF0IGZlZWxzIGJlc3QuCisgICAgICAg
IHN0YXRpYyBjb25zdCBmbG9hdCByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0JlQ29uc2lk
ZXJlZEZvclByb3hpbWl0eSA9IDAuMzsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YWJzKGZsb2F0IHtj
YW5kaWRhdGVTbmFwT2Zmc2V0IC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXR9KSA8PSAodmlld3Bv
cnRMZW5ndGggKiByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0JlQ29uc2lkZXJlZEZvclBy
b3hpbWl0eSk7CisgICAgfTsKKwogICAgIGlmIChzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCA8PSBz
bmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0LCAwdSk7CisgICAgICAgIHJldHVybiBpc05lYXJF
bm91Z2hUb09mZnNldEZvclByb3hpbWl0eShzbmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCkgPyBz
dGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCwgMHUpIDogcGFpckZvck5v
U25hcHBpbmc7CiAKLSAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgPj0gc25hcE9mZnNl
dHMubGFzdCgpLm9mZnNldCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZz
ZXRzLmxhc3QoKS5vZmZzZXQsIHNuYXBPZmZzZXRzLnNpemUoKSAtIDEpOworICAgIGlmIChzY3Jv
bGxEZXN0aW5hdGlvbk9mZnNldCA+PSBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0KSB7CisgICAg
ICAgIHVuc2lnbmVkIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzbmFwT2Zmc2V0
cy5zaXplKCkgLSAxKTsKKyAgICAgICAgcmV0dXJuIGlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJv
eGltaXR5KHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpID8gc3RkOjptYWtlX3BhaXIoc25hcE9m
ZnNldHMubGFzdCgpLm9mZnNldCwgbGFzdEluZGV4KSA6IHBhaXJGb3JOb1NuYXBwaW5nOworICAg
IH0KIAogICAgIHVuc2lnbmVkIGxvd2VySW5kZXg7CiAgICAgdW5zaWduZWQgdXBwZXJJbmRleDsK
QEAgLTEzMCwxNiArMTMyLDE2IEBAIHN0YXRpYyBzdGQ6OnBhaXI8TGF5b3V0VHlwZSwgdW5zaWdu
ZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aEluZm9BbmRBeGlzKGNvbnN0IEluCiAgICAgTGF5b3V0
VHlwZSBsb3dlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW2xvd2VySW5kZXhdLm9mZnNldDsK
ICAgICBMYXlvdXRUeXBlIHVwcGVyU25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbdXBwZXJJbmRl
eF0ub2Zmc2V0OwogCi0gICAgYXV0byB2aWV3cG9ydExlbmd0aCA9IGF4aXMgPT0gU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsID8gdmlld3BvcnRTaXplLndpZHRoKCkgOiB2aWV3cG9ydFNpemUu
aGVpZ2h0KCk7Ci0gICAgaWYgKCFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eTxMYXlv
dXRUeXBlPihpbmZvLnN0cmljdG5lc3MsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBsb3dlclNu
YXBQb3NpdGlvbiwgdmlld3BvcnRMZW5ndGgpKSB7CisgICAgaWYgKCFpc05lYXJFbm91Z2hUb09m
ZnNldEZvclByb3hpbWl0eShsb3dlclNuYXBQb3NpdGlvbikpIHsKICAgICAgICAgbG93ZXJTbmFw
UG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldDsKICAgICAgICAgbG93ZXJJbmRleCA9
IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CiAgICAgfQogCi0gICAgaWYgKCFpc05lYXJFbm91Z2hU
b09mZnNldEZvclByb3hpbWl0eTxMYXlvdXRUeXBlPihpbmZvLnN0cmljdG5lc3MsIHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0LCB1cHBlclNuYXBQb3NpdGlvbiwgdmlld3BvcnRMZW5ndGgpKSB7Cisg
ICAgaWYgKCFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eSh1cHBlclNuYXBQb3NpdGlv
bikpIHsKICAgICAgICAgdXBwZXJTbmFwUG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dDsKICAgICAgICAgdXBwZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CiAgICAgfQor
CiAgICAgaWYgKCFzdGQ6OmFicyh2ZWxvY2l0eSkpIHsKICAgICAgICAgYm9vbCBpc0Nsb3NlclRv
TG93ZXJTbmFwUG9zaXRpb24gPSAodXBwZXJJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldEluZGV4
KQogICAgICAgICAgICAgfHwgKGxvd2VySW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCAm
JiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBvc2l0aW9uIDw9IHVwcGVyU25h
cFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5jcHAKaW5kZXggODQzMjg4MWM4OWYxNmM1N2I0Njc0YzI0YmI0YTk4Mzg2ZDdhYzkyMy4uNjg1
MGQyMzNhMDAxMmNlZGQ3Y2M2YWY1MjNmOWQxMDEzYTFiNWM5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCkBAIC0zMTMsMTAgKzMxMywxMCBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVAog
ICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzLnNpemUoKSkKICAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzbmFwIG9mZnNldHMiLCBtX3NuYXBPZmZz
ZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKIAotICAgIGlmIChtX2N1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgpCisgICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQogICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImN1cnJlbnQgaG9yaXpvbnRhbCBzbmFwIHBvaW50IGluZGV4IiwgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4KTsKIAotICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KQorICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ICE9IGludmFsaWRT
bmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNh
bCBzbmFwIHBvaW50IGluZGV4IiwgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAppbmRleCBjNWQ3NjM5Y2YxY2FlMGM3ZTAzN2Zj
MzU5OWYyMjU4MWJhYWRhYmU4Li5hMjkwOGZjMGJjMTc4MzA4OGIyNzdhMTEwN2ZjNjk1MTJiNTg4
NWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaApAQCAtMTMxLDggKzEzMSw4IEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvIG1fc25hcE9mZnNldHNJbmZvOwotICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4IHsgMCB9OworICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCB7IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggfTsKKyAgICB1bnNpZ25lZCBtX2N1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgaW52YWxpZFNuYXBPZmZzZXRJbmRleCB9Owog
I2VuZGlmCiAKICAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggY2VjOWZkNGFjM2IzNDQ5OWZkNWIwNWM3N2Y0
YjIxNTdiYTBlM2VhNy4uM2JjYjkxZjgyMDUyOWVmNGQ0YmI2YzYzN2UxZDVhMmIxZjE4ZWYzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzE4LDEwICszMTgsMTAgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNj
cm9sbGluZ1N0YXRlVHIKICAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zm
c2V0cy5zaXplKCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidmVydGljYWwgc25hcCBvZmZz
ZXRzIiwgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyk7CiAKLSAgICBpZiAo
bV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KQorICAgIGlmIChtX2N1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKICAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG1f
Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAKLSAgICBpZiAobV9jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCkKKyAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJ
bmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQogICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImN1cnJlbnQgdmVydGljYWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgpOwogICAgIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCBmZWVl
ZWI0ZDg2MzYzMTNiNzFhMmNmYmUwOTEwZGUyNzlhZTU3M2EwLi44Y2NjOWJmOWFiOGQxNDEzNGI4
ZmZhNTZmMTU2MjIxNDVlN2YyNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTE2MCw4ICsx
NjAsOCBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbV9zbmFw
T2Zmc2V0c0luZm87Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4IHsgMCB9OwotICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgg
eyAwIH07CisgICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4IHsg
aW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OworICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXggeyBpbnZhbGlkU25hcE9mZnNldEluZGV4IH07CiAjZW5kaWYKICAgICBT
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7CiAjaWYg
RU5BQkxFKFNDUk9MTElOR19USFJFQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5jcHAKaW5kZXggZWMyMGIxNzA3NDQyNDYwZTc1NmRmNmExZDkzMDJmZWRmYWNhNWZj
Zi4uY2VkMDcyMDQ3ZmU1ODQyNWFiYTM3ZmI4ZjI4M2ZjOThkNWI0YThkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMTkzLDYgKzE5MywxMSBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9s
bEV2ZW50QXhpcyBheGlzLCB1bnNpZwogewogICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIu
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhheGlzLCBpbmRleCk7CiB9CisKK3ZvaWQg
U2Nyb2xsQW5pbWF0b3I6OnJlc25hcEFmdGVyTGF5b3V0KCkKK3sKKyAgICBtX3Njcm9sbENvbnRy
b2xsZXIucmVzbmFwQWZ0ZXJMYXlvdXQoKTsKK30KICNlbmRpZgogCiBib29sIFNjcm9sbEFuaW1h
dG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKQEAgLTI3
Myw4ICsyNzgsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXRDdXJyZW50UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjp1cGRhdGVBY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKQogewogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0gICAgYXV0byBzY3JvbGxPZmZzZXQgPSBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNl
dEZyb21Qb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkpKTsKLSAgICBt
X3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoc2Ny
b2xsT2Zmc2V0KTsKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlQWN0aXZlU2Nyb2xsU25h
cEluZGV4Rm9yQ2xpZW50T2Zmc2V0KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNWEyODYxN2ZmOGU2ZjdmMmVkYjJiOGFiM2ExYjhi
ZmQ3ZDJiOGEwZi4uYTdhYTdjNzdlMTE5YzFmZWM4ZDkxNDAwNWVkYTFjOGQxYTk3ZjE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0xNjEsNiArMTYxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3Jv
bGxFdmVudEF4aXMsIHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIHNldFNuYXBPZmZzZXRzSW5m
byhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKICAgICBjb25zdCBMYXlvdXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OworICAgIHZvaWQg
cmVzbmFwQWZ0ZXJMYXlvdXQoKTsKICNlbmRpZgogCiAgICAgLy8gU2Nyb2xsQ29udHJvbGxlckNs
aWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKaW5k
ZXggZDg2ZjVkZWMxM2E0MzU4Yjg3YzUxYzkyMGI2YjJiM2QxYjE2YWZlNi4uZjIzYmJkYTIwMjIw
M2RlZjBkYjkzNTllZTliN2Y2NDkxNjFhZWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFNjcm9sbENv
bnRyb2xsZXI6OnNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mIHNuYQogICAgIG1fc2Nyb2xsU25hcFN0YXRlLT5zZXRTbmFwT2Zmc2V0SW5mbyhzbmFw
T2Zmc2V0SW5mbyk7CiAKICAgICBpZiAoc2hvdWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcykK
LSAgICAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQocm91bmRlZEludFBv
aW50KG1fY2xpZW50LnNjcm9sbE9mZnNldCgpKSk7CisgICAgICAgIHVwZGF0ZUFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckNsaWVudE9mZnNldCgpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzZXRTbmFw
T2Zmc2V0c0luZm8gbmV3IHN0YXRlOiAiIDw8IFZhbHVlT3JOdWxsKG1fc2Nyb2xsU25hcFN0YXRl
LmdldCgpKSk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvKiBTY3JvbGxDb250cm9sbGVyOjpzbmFwT2Zmc2V0c0luZm8oKSBjb25zdAogdW5z
aWduZWQgU2Nyb2xsQ29udHJvbGxlcjo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3Jv
bGxFdmVudEF4aXMgYXhpcykgY29uc3QKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsK
IAogICAgIHJldHVybiBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhh
eGlzKTsKIH0KQEAgLTE1MSwxMCArMTUxLDggQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzZXRO
ZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXMKICAg
ICBpZiAoIXNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0
VW5pdCBjbGFtcGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgoTGF5b3V0VW5pdChvZmZzZXQg
LyBzY2FsZUZhY3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KSwgc25hcE9mZnNldHMu
bGFzdCgpLm9mZnNldCk7Ci0KICAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC52
aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7
Ci0gICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5j
bG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIGNsYW1wZWRPZmZzZXQsIDApLnNl
Y29uZDsKKyAgICB1bnNpZ25lZCBhY3RpdmVJbmRleCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5m
bygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHZpZXdwb3J0U2l6ZSwgTGF5b3V0VW5pdChvZmZz
ZXQgLyBzY2FsZUZhY3RvciksIDApLnNlY29uZDsKICAgICBpZiAoYWN0aXZlSW5kZXggPT0gYWN0
aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhheGlzKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
ODEsMTQgKzE3OSwzMSBAQCBmbG9hdCBTY3JvbGxDb250cm9sbGVyOjphZGp1c3RTY3JvbGxEZXN0
aW5hdGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVzdAogfQogCiAKLXZvaWQgU2Ny
b2xsQ29udHJvbGxlcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoU2Nyb2xs
T2Zmc2V0IG9mZnNldCkKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlQWN0aXZlU2Nyb2xs
U25hcEluZGV4Rm9yQ2xpZW50T2Zmc2V0KCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbE9mZnNldCBvZmZzZXQgPSByb3VuZGVkSW50
UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkpOwogICAgIHNldE5lYXJlc3RTY3JvbGxTbmFw
SW5kZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgb2Zmc2V0
LngoKSk7CiAgICAgc2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgb2Zmc2V0LnkoKSk7CiB9CisKK3ZvaWQgU2Nyb2xsQ29u
dHJvbGxlcjo6cmVzbmFwQWZ0ZXJMYXlvdXQoKQoreworICAgIGlmICghdXNlc1Njcm9sbFNuYXAo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgc25hcHBlZCBp
biBhIHBhcnRpY3VsYXIgYXhpcywgbWFpbnRhaW4gdGhhdC4gT3RoZXJ3aXNlLCBzbmFwIHRvIHRo
ZSBuZWFyZXN0IGVsaWdpYmxlIHNuYXAgcG9pbnQuCisgICAgU2Nyb2xsT2Zmc2V0IG9mZnNldCA9
IHJvdW5kZWRJbnRQb2ludChtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSk7CisgICAgc2l6ZV90IGFj
dGl2ZUhvcml6b250YWxJbmRleCA9IG1fc2Nyb2xsU25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhG
b3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCk7CisgICAgaWYgKGFjdGl2ZUhvcml6
b250YWxJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQorICAgICAgICBzZXROZWFyZXN0
U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwsIG9mZnNldC54KCkpOworICAgIHNpemVfdCBhY3RpdmVWZXJ0aWNhbEluZGV4ID0gbV9zY3Jv
bGxTbmFwU3RhdGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0
aWNhbCk7CisgICAgaWYgKGFjdGl2ZVZlcnRpY2FsSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJ
bmRleCkKKyAgICAgICAgc2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgb2Zmc2V0LnkoKSk7CisKK30KICNlbmRpZgogCiAv
LyBDdXJyZW50bHksIG9ubHkgTWFjIHN1cHBvcnRzIG1vbWVudHVtIHNyb2xsaW5nLWJhc2VkIHNj
cm9sbHNuYXBwaW5nIGFuZCBydWJiZXIgYmFuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IDIzYWMzYTRmYzk0ZThjMTA3MmZhNGQwYWYxY2RiNWFl
ZGYwYjcxYzMuLjdmZTBjNTg2MTI5ZWFkMTAxZWM5MmE5MmU4Mjg0Mzc0MjBmZWQ1MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTExMSwxNCArMTEx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Ny
b2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3Rh
cnRTY3JvbGxTbmFwQW5pbWF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BTY3Jv
bGxTbmFwQW5pbWF0aW9uKCkgeyB9Ci0KICAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgYWN0aXZlU2Nyb2xsT2Zmc2V0
SW5kZXgoU2Nyb2xsRXZlbnRBeGlzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIHNjcm9sbEV4dGVudCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCA9IDA7CiAjZW5kaWYK
QEAgLTE0Miw3ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8o
Y29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgY29uc3QgTGF5b3V0U2Ny
b2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAgICB2b2lkIHNl
dEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25lZCk7
Ci0gICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChTY3JvbGxPZmZz
ZXQpOworICAgIHZvaWQgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQ2xpZW50T2Zmc2V0
KCk7CisgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgpOwogICAgIGJvb2wgYWN0aXZlU2Nyb2xs
U25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTY3JvbGxTbmFwSW5k
ZXhEaWRDaGFuZ2U7IH0KICAgICB2b2lkIHNldFNjcm9sbFNuYXBJbmRleERpZENoYW5nZShib29s
IHN0YXRlKSB7IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlID0gc3RhdGU7IH0KICAg
ICB1bnNpZ25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuaAppbmRleCBlNjIwY2U1MzE1MTRlMGIxZTVkZjk2YjllZGM3NTZiYmMxOWM2Y2M1Li5j
YjM1YWQwOWM4YmZmMTIyYzIwNTc1MWI5NWJjZjZjMmJkNGM3YTk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTkyLDggKzky
LDggQEAgcHJpdmF0ZToKIAogICAgIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBtX3NuYXBP
ZmZzZXRzSW5mbzsKIAotICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcEluZGV4WCB7IDAgfTsKLSAg
ICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CisgICAgdW5zaWduZWQgbV9hY3Rp
dmVTbmFwSW5kZXhYIHsgaW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OworICAgIHVuc2lnbmVkIG1f
YWN0aXZlU25hcEluZGV4WSB7IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggfTsKIAogICAgIE1vbm90
b25pY1RpbWUgbV9zdGFydFRpbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcj4gbV9tb21lbnR1bUNhbGN1bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggN2ZkY2U3MzIxNTRhMmE5NjllN2FjNjQyYzdm
YWI0N2EwODU3ZTgxYy4uNzQ4ODk3Zjc1MzI2NGUyNjAyZmExNjEwMzcyODlmZjgzODI1ZWM0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNDk0LDE0
ICs0OTQsMTQgQEAgdW5zaWduZWQgU2Nyb2xsYWJsZUFyZWE6OmN1cnJlbnRIb3Jpem9udGFsU25h
cFBvaW50SW5kZXgoKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzY3JvbGxBbmltYXRvciA9IGV4
aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yLT5h
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCk7
Ci0gICAgcmV0dXJuIDA7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgaW52YWxpZFNu
YXBPZmZzZXRJbmRleC4KKyAgICByZXR1cm4gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKIH0KIAog
dW5zaWduZWQgU2Nyb2xsYWJsZUFyZWE6OmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkg
Y29uc3QKIHsKICAgICBpZiAoYXV0byogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGluZ1Njcm9sbEFu
aW1hdG9yKCkpCiAgICAgICAgIHJldHVybiBzY3JvbGxBbmltYXRvci0+YWN0aXZlU2Nyb2xsU25h
cEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKLSAgICByZXR1cm4gMDsg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbnZhbGlkU25hcE9mZnNldEluZGV4Lgor
ICAgIHJldHVybiBpbnZhbGlkU25hcE9mZnNldEluZGV4OwogfQogCiB2b2lkIFNjcm9sbGFibGVB
cmVhOjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQpA
QCAtNTE4LDkgKzUxOCwxMiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpyZXNuYXBBZnRlckxheW91
dCgpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAqdGhpcyA8
PCAiIHVwZGF0ZVNjcm9sbFNuYXBTdGF0ZTogaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyAiIDw8IGlz
U2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSA8PCAiIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MgIiA8PCBp
c1VzZXJTY3JvbGxJblByb2dyZXNzKCkpOwogCi0gICAgaWYgKCFleGlzdGluZ1Njcm9sbEFuaW1h
dG9yKCkgfHwgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIHx8IGlzVXNlclNjcm9sbEluUHJvZ3Jl
c3MoKSkKKyAgICBTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGluZ1Njcm9s
bEFuaW1hdG9yKCk7CisgICAgaWYgKCFzY3JvbGxBbmltYXRvciB8fCBpc1Njcm9sbFNuYXBJblBy
b2dyZXNzKCkgfHwgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBzY3JvbGxBbmltYXRvci0+cmVzbmFwQWZ0ZXJMYXlvdXQoKTsKKwogICAgIGNvbnN0IGF1
dG8qIGluZm8gPSBzbmFwT2Zmc2V0c0luZm8oKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmlu
ZGV4IDAzMTY3NWRkOTY2OWJiZDI0NmQ1OGYwOTY4ZDMxYzg4OTE5MGIxNTIuLjJiNGM3YzIyN2Uz
MDAwNTQ5N2MwZDg1ZmJmYzY2ZjNhZmIxMWY4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlJl
bW90ZVNjcm9sbGluZ1RyZWUuaCIKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTEzMSw4ICsxMzIsOCBAQCBwcml2YXRlOgogICAg
IFJlcXVlc3RlZFNjcm9sbEluZm8qIG1fcmVxdWVzdGVkU2Nyb2xsSW5mbyB7IG51bGxwdHIgfTsK
ICAgICBSZW1vdGVTY3JvbGxpbmdVSVN0YXRlIG1fdWlTdGF0ZTsKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQotICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
MCB9OworICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7IFdl
YkNvcmU6OmludmFsaWRTbmFwT2Zmc2V0SW5kZXggfTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRW
ZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgV2ViQ29yZTo6aW52YWxpZFNuYXBPZmZzZXRJbmRleCB9
OwogI2VuZGlmCiAgICAgYm9vbCBtX3Byb3BhZ2F0ZXNNYWluRnJhbWVTY3JvbGxzIHsgdHJ1ZSB9
OwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBt
X2xheWVyc1dpdGhTY3JvbGxpbmdSZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTUwZGVmOTE5NDRiMGUwNzYy
MWFkNWU1Y2M3ZTJmYjQ3MmRmMjU5YS4uZWRkYzgzZTU0MmZiZGFhYmZiOWYxOThmMmY1MzEyZWRl
YzkxMzMzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTA3ICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBO
ZXcgc25hcCBjb250YWluZXJzIGFsd2F5cyBzbmFwIHRvIHRoZSBmaXJzdCBzY3JvbGwgcG9zaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYz
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dEV4cGVjdGF0aW9uczogTWFyayB0d28gV1BUIHRlc3RzIGFzIHBhc3NpbmcuCisKIDIwMjEtMDYt
MDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXb3JrZXIuY29u
c3RydWN0b3IgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSB1cmwgcGFyYW0gaXMgYW4gZW1w
dHkgc3RyaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmZjdjZjhmN2NiODk2N2Q4OThlYTcwNmZi
ZjNjMDMxOWEyOGE1OTU3Li44ZGE3NTllMTVlYmQ2OTdhMmQ0YmQ0ZjFkMzc3NmE3ZDIyN2I3MDU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1MzksOSArNDUzOSw3IEBAIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LWFsaWdu
LTAwMi5odG1sCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xs
LXNuYXAvc2Nyb2xsLXRhcmdldC1hbGlnbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9s
bC10YXJnZXQtc25hcC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtc25h
cC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtc25hcC0wMDMuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL3NuYXAtYWZ0ZXItaW5pdGlhbC1sYXlvdXQvZGlyZWN0aW9uLXJ0bC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc25hcC1hZnRlci1pbml0aWFsLWxheW91dC9zY3JvbGwtc25h
cC1pbml0aWFsLWxheW91dC0wMDAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3NuYXAtYWZ0ZXItaW5p
dGlhbC1sYXlvdXQvc2Nyb2xsLXNuYXAtd3JpdGluZy1tb2RlLTAwMC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE4MzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDEuaHRtbCBb
IFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE4MzI1IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1h
cmdpbi0wMDMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430728</attachid>
            <date>2021-06-07 01:59:21 -0700</date>
            <delta_ts>2021-06-15 00:08:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226630-20210607105919.patch</filename>
            <type>text/plain</type>
            <size>27160</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjOTEwZTY2MmRlOTJl
MjA1N2U3YmZmNTcxZTlhNTUwZjM2ODQ4ZC4uMTNhOWU2YmM5OTQxYWQ3NGQyMTc2MTNlNjYyMTU3
MmQyYzA5MzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA2LTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBOZXcgc25hcCBjb250YWluZXJzIGFsd2F5cyBzbmFwIHRvIHRoZSBmaXJzdCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjYzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZXJlIGFyZSB0d28gc2l0dWF0aW9ucyB3aGVyZSB3ZSBzaG91bGQgbm90IGltbWVkaWF0
ZWx5IHNuYXAgdG8gdGhlIGZpcnN0IHNuYXAgcG9zaXRpb24KKyAgICAgICAgb2YgYSBzY3JvbGxl
ciBhZnRlciBpbml0aWFsIGxheW91dDoKKyAgICAgICAgICAgIDEuIElmIHRoYXQgc2Nyb2xsIGlz
IHJpZ2h0LXRvLWxlZnQuIEluIHRoaXMgY2FzZSB0aGUgbGFzdCBzbmFwIHBvc2l0aW9uIGlzIGNs
b3Nlc3QgdG8KKyAgICAgICAgICAgICAgIHRoZSBvcmlnaW4uCisgICAgICAgICAgICAyLiBJZiB0
aGUgc2Nyb2xsZXIgdXNlcyBwcm94aW1pdHkgc25hcHBpbmcgYW5kIHRoZSBmaXJzdCBzbmFwIHBv
c2l0aW9uIGlzIGZhciBlbm91Z2gKKyAgICAgICAgICAgICAgIGF3YXkgZnJvbSB0aGUgb3JpZ2lu
IHRoYXQgaXQgaXNuJ3QgeWV0IGFjdGl2ZS4KKyAgICAgICAgUHJldmlvdXNseSwgV2ViS2l0IHdh
cyBhbHdheXMgc25hcHBpbmcgdG8gdGhlIGZpcnN0IHBvc2l0aW9uLiBUaGUgY2hhbmdlIGZpeGVz
IHRoYXQgYnkKKyAgICAgICAgbm90IHNuYXBwaW5nIHRvIHRoZSAwIGluZGV4IHNuYXAgcG9pbnQg
aW1tZWRpYXRlbHkgYWZ0ZXIgaW5pdGlhbCBsYXlvdXQgYW5kIG9ubHkgc25hcHBpbmcKKyAgICAg
ICAgdG8gYW4gZWxpZ2libGUgc25hcCBwb3NpdGlvbnMgYWZ0ZXIgcnVubmluZyBhIHNuYXAgcG9p
bnQgc2VhcmNoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBjaGFuZ2UgZml4ZXMgdHdv
IGV4aXN0aW5nIFdQVCB0ZXN0czoKKyAgICAgICAgICAgIC0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtc25hcC0wMDMuaHRt
CisgICAgICAgICAgICAtIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1z
Y3JvbGwtc25hcC9zbmFwLWFmdGVyLWluaXRpYWwtbGF5b3V0L3Njcm9sbC1zbmFwLWluaXRpYWwt
bGF5b3V0LTAwMC5odG0KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbG9zZXN0U25hcE9mZnNldFdpdGhJbmZv
QW5kQXhpcyk6IFB1bGwgaW4gaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkgYXMKKyAg
ICAgICAgYW4gYW5vbnltb3VzIGZ1bmN0aW9uIGFuZCB1c2UgaXQgdG8gYXZvaWQgc25hcHBpbmcg
dG8gdGhlIGZpcnN0IGFuZCBsYXN0IHBvc2l0aW9uIGlmCisgICAgICAgIHRoZXkgYXJlIHRvbyBm
YXIgZm9yIHByb3hpbWl0eSBzbmFwcGluZy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyBjb25zdCk6IFVzZSBpbnZhbGlkU25h
cE9mZnNldEluZGV4IGFzCisgICAgICAgIHRoZSBkZWZhdWx0IGZvciB0aGUgc25hcCBpbmRleCBw
cm9wZXJ0eS4gSW50ZXJwcmV0IDAgYXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRp
ZXMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cmVzbmFwQWZ0ZXJMYXlv
dXQpOiBBZGRlZCB0aGlzIG1ldGhvZCB0aGF0IHBhc3NlcyB0aHJvdWdoIHRvIFNjcm9sbENvbnRy
b2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6dXBkYXRlQWN0aXZlU2Ny
b2xsU25hcEluZGV4Rm9yT2Zmc2V0KTogU2ltcGxpZmllZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5k
aWNlc0Zvck9mZnNldAorICAgICAgICBpbnRvIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZv
ckNsaWVudE9mZnNldC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOiBBZGRl
ZCBtZXRob2QgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnNldFNuYXBPZmZzZXRz
SW5mbyk6IFVzZSB1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQgbm93
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyBjb25zdCk6IFJldHVybiBpbnZhbGlkU25hcE9mZnNldEluZGV4IAorICAgICAg
ICB3aGVuIHNuYXBwaW5nIGlzIGRpc2FibGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29u
dHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQpOiBObyBs
b25nZXIgY2xhbXAgdGhlIHNjcm9sbAorICAgICAgICBwb3NpdGlvbiB0byB0aGUgZmlyc3QgYW5k
IGxhc3Qgc25hcCBwb2ludHMuIFdlIG1pZ2h0IGJlIHNjcm9sbGluZyB0byBhIHBvc2l0aW9uIGJl
Zm9yZSBvciBhZnRlcgorICAgICAgICB0aGVtIHRoYXQgaXNuJ3Qgc3ViamVjdCB0byBwcm94aW1p
dHkgc25hcHBpbmcuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQpOiBSZW5hbWVkIGZyb20gc2V0QWN0
aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQKKyAgICAgICAgYmVjYXVzZSBpdCBhbHdheXMg
anVzdCB0b29rIHRoZSBjbGllbnQncyBjdXJyZW50IG9mZnNldC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbENvbnRyb2xsZXI6OnJlc25hcEFmdGVyTGF5b3V0KTogQWRkZWQgdGhpcyBoZWxwZXIg
d2hpY2ggc25hcHMgaW4gYXhlcyB0aGF0IGFyZW4ndCBjdXJyZW50bHkKKyAgICAgICAgc25hcHBl
ZCB0byBhIHNuYXAgcG9zaXRpb24gYWZ0ZXIgYSBsYXlvdXQuCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oOiBSZW1vdmVkIHVudXNlZCBtZXRob2QgdGhhdCB1c2VkIDAgaW5j
b3JyZWN0bHkgYXMgYW4gaW52YWxpZCBzbmFwIHBvc2l0aW9uLgorICAgICAgICBVcGRhdGUgbWV0
aG9kIGRlZmluaXRpb25zLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0
YXRlLmg6IFVzZSBpbnZhbGlkU25hcE9mZnNldEluZGV4IHRvIHNpZ25pZnkgbm8gc25hcHBpbmcu
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0
T2Zmc2V0IGNvbnN0KTogTm8gbG9uZ2VyIGNsYW1wIG9mZnNldHMgdG8gZmlyc3QgYW5kCisgICAg
ICAgIGxhc3Qgc2Nyb2xsIHNuYXAgb2Zmc2V0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6Y3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWE6OmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6cmVzbmFwQWZ0ZXJMYXlvdXQp
OiBDYWxsIGludG8gU2Nyb2xsQ29udHJvbGxlcjo6cmVzbmFwQWZ0ZXJMYXlvdXQuCisKIDIwMjEt
MDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6
ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1ZmZlciBvYmplY3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDQ5MjllNjNjNTRlYTdiNTY1ZDNkZjA0N2YxZWEwNTE3YjVmNTRiMGQuLjI0Mzc5NTA1MjE1
MjgyNmZiMDYzMmUwYTFhYzVmZGJmZTQ4ZDg1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjEtMDYtMDcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIE5ldyBzbmFwIGNvbnRhaW5lcnMgYWx3YXlzIHNuYXAg
dG8gdGhlIGZpcnN0IHNjcm9sbCBwb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDogVXNlIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgKKyAg
ICAgICAgaW5zdGVhZCBvZiAwIHRvIGluaXRpYWxpemUgdGhlIHNuYXAgcG9zaXRpb24uCisKIDIw
MjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRp
bWl6ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1ZmZlciBvYmplY3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmNwcAppbmRleCBkMDk0ZTQ5MDFlN2E2MGM4NjQ4ZWE0Yzk4NWExYzRlNmE4Mjg2ZTNmLi41
Y2U1NzY5M2U1Y2RmMWQ0N2ZjY2UwMWM4ZTYxYjlhOWIxZDEwMzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAK
QEAgLTQyLDE4ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFVuaXRUeXBlPgotc3RhdGljIGJvb2wgaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94
aW1pdHkoU2Nyb2xsU25hcFN0cmljdG5lc3Mgc3RyaWN0bmVzcywgVW5pdFR5cGUgc2Nyb2xsRGVz
dGluYXRpb24sIFVuaXRUeXBlIGNhbmRpZGF0ZVNuYXBPZmZzZXQsIFVuaXRUeXBlIHZpZXdwb3J0
TGVuZ3RoKQotewotICAgIGlmIChzdHJpY3RuZXNzICE9IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQ
cm94aW1pdHkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gVGhpcyBpcyBhbiBhcmJp
dHJhcnkgY2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRvIGJlICJpbiBwcm94aW1pdHkiIG9mIGEg
c25hcCBvZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3VuZCB3aXRoCi0gICAgLy8gdGhpcyBhbmQg
c2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgcmF0aW9PZlNjcm9s
bFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAwLjM7Ci0gICAgcmV0
dXJuIHN0ZDo6YWJzKGZsb2F0IHtjYW5kaWRhdGVTbmFwT2Zmc2V0IC0gc2Nyb2xsRGVzdGluYXRp
b259KSA8PSAodmlld3BvcnRMZW5ndGggKiByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0Jl
Q29uc2lkZXJlZEZvclByb3hpbWl0eSk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRU
eXBlPgogc3RhdGljIHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUg
b2Zmc2V0LCBjb25zdCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRz
LCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCiB7CkBAIC0xMTAs
MTkgKzk4LDMzIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBJbmZvVHlwZSwgdHlwZW5hbWUgU2l6ZVR5
cGUsIHR5cGVuYW1lIExheW91dFR5cGU+CiBzdGF0aWMgc3RkOjpwYWlyPExheW91dFR5cGUsIHVu
c2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcyhjb25zdCBJbmZvVHlwZSYg
aW5mbywgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUs
IExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6
Om9wdGlvbmFsPExheW91dFR5cGU+IG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZykKIHsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMo
YXhpcyk7CisgICAgYXV0byBwYWlyRm9yTm9TbmFwcGluZyA9IHN0ZDo6bWFrZV9wYWlyKHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKICAgICBpZiAoc25h
cE9mZnNldHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc2Nyb2xs
RGVzdGluYXRpb25PZmZzZXQsIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOworICAgICAgICByZXR1
cm4gcGFpckZvck5vU25hcHBpbmc7CiAKICAgICBpZiAob3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rp
b25hbFNuYXBwaW5nKSB7CiAgICAgICAgIGlmIChhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXRJbmRl
eCA9IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKHNu
YXBPZmZzZXRzLCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLCBzY3JvbGxE
ZXN0aW5hdGlvbk9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc25h
cE9mZnNldHNbKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleF0ub2Zmc2V0LCAqZmlyc3RTbmFwU3Rv
cE9mZnNldEluZGV4KTsKICAgICB9CiAKKyAgICBhdXRvIHZpZXdwb3J0TGVuZ3RoID0gYXhpcyA9
PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyB2aWV3cG9ydFNpemUud2lkdGgoKSA6IHZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKTsKKyAgICBhdXRvIGlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJv
eGltaXR5ID0gWyZdKExheW91dFR5cGUgY2FuZGlkYXRlU25hcE9mZnNldCkgeworICAgICAgICBp
ZiAoaW5mby5zdHJpY3RuZXNzICE9IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBUaGlzIGlzIGFuIGFyYml0cmFy
eSBjaG9pY2UgZm9yIHdoYXQgaXQgbWVhbnMgdG8gYmUgImluIHByb3hpbWl0eSIgb2YgYSBzbmFw
IG9mZnNldC4gV2Ugc2hvdWxkIHBsYXkgYXJvdW5kIHdpdGgKKyAgICAgICAgLy8gdGhpcyBhbmQg
c2VlIHdoYXQgZmVlbHMgYmVzdC4KKyAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0IHJhdGlvT2ZT
Y3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJveGltaXR5ID0gMC4zOworICAg
ICAgICByZXR1cm4gc3RkOjphYnMoZmxvYXQge2NhbmRpZGF0ZVNuYXBPZmZzZXQgLSBzY3JvbGxE
ZXN0aW5hdGlvbk9mZnNldH0pIDw9ICh2aWV3cG9ydExlbmd0aCAqIHJhdGlvT2ZTY3JvbGxQb3J0
QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJveGltaXR5KTsKKyAgICB9OworCiAgICAgaWYg
KHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQs
IDB1KTsKKyAgICAgICAgcmV0dXJuIGlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KHNu
YXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KSA/IHN0ZDo6bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmZp
cnN0KCkub2Zmc2V0LCAwdSkgOiBwYWlyRm9yTm9TbmFwcGluZzsKIAotICAgIGlmIChzY3JvbGxE
ZXN0aW5hdGlvbk9mZnNldCA+PSBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0KQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCwgc25hcE9mZnNl
dHMuc2l6ZSgpIC0gMSk7CisgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBP
ZmZzZXRzLmxhc3QoKS5vZmZzZXQpIHsKKyAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNuYXBPZmZzZXRzLnNpemUoKSAtIDEpOworICAgICAgICByZXR1
cm4gaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkoc25hcE9mZnNldHMubGFzdCgpLm9m
ZnNldCkgPyBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0LCBsYXN0SW5k
ZXgpIDogcGFpckZvck5vU25hcHBpbmc7CisgICAgfQogCiAgICAgdW5zaWduZWQgbG93ZXJJbmRl
eDsKICAgICB1bnNpZ25lZCB1cHBlckluZGV4OwpAQCAtMTMwLDE2ICsxMzIsMTYgQEAgc3RhdGlj
IHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoSW5m
b0FuZEF4aXMoY29uc3QgSW4KICAgICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0gc25h
cE9mZnNldHNbbG93ZXJJbmRleF0ub2Zmc2V0OwogICAgIExheW91dFR5cGUgdXBwZXJTbmFwUG9z
aXRpb24gPSBzbmFwT2Zmc2V0c1t1cHBlckluZGV4XS5vZmZzZXQ7CiAKLSAgICBhdXRvIHZpZXdw
b3J0TGVuZ3RoID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyB2aWV3cG9y
dFNpemUud2lkdGgoKSA6IHZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAoIWlzTmVhckVu
b3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5cGU+KGluZm8uc3RyaWN0bmVzcywgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQsIGxvd2VyU25hcFBvc2l0aW9uLCB2aWV3cG9ydExlbmd0aCkp
IHsKKyAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KGxvd2VyU25hcFBv
c2l0aW9uKSkgewogICAgICAgICBsb3dlclNuYXBQb3NpdGlvbiA9IHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0OwogICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAg
ICB9CiAKLSAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5
cGU+KGluZm8uc3RyaWN0bmVzcywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHVwcGVyU25hcFBv
c2l0aW9uLCB2aWV3cG9ydExlbmd0aCkpIHsKKyAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0
Rm9yUHJveGltaXR5KHVwcGVyU25hcFBvc2l0aW9uKSkgewogICAgICAgICB1cHBlclNuYXBQb3Np
dGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0OwogICAgICAgICB1cHBlckluZGV4ID0gaW52
YWxpZFNuYXBPZmZzZXRJbmRleDsKICAgICB9CisKICAgICBpZiAoIXN0ZDo6YWJzKHZlbG9jaXR5
KSkgewogICAgICAgICBib29sIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA9ICh1cHBlcklu
ZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgICAgICB8fCAobG93ZXJJbmRl
eCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4ICYmIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0g
bG93ZXJTbmFwUG9zaXRpb24gPD0gdXBwZXJTbmFwUG9zaXRpb24gLSBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA4NDMyODgxYzg5ZjE2YzU3
YjQ2NzRjMjRiYjRhOTgzODZkN2FjOTIzLi42ODUwZDIzM2EwMDEyY2VkZDdjYzZhZjUyM2Y5ZDEw
MTNhMWI1YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTMxMywxMCArMzEzLDEw
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUCiAgICAgaWYgKG1fc25hcE9mZnNldHNJbmZvLnZl
cnRpY2FsU25hcE9mZnNldHMuc2l6ZSgpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInZlcnRp
Y2FsIHNuYXAgb2Zmc2V0cyIsIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMp
OwogCi0gICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCkKKyAgICBpZiAo
bV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5k
ZXgpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCBob3Jpem9udGFsIHNuYXAgcG9p
bnQgaW5kZXgiLCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogCi0gICAgaWYg
KG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpCisgICAgaWYgKG1fY3VycmVudFZlcnRp
Y2FsU25hcFBvaW50SW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAgcG9pbnQgaW5kZXgiLCBtX2N1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5o
CmluZGV4IGM1ZDc2MzljZjFjYWUwYzdlMDM3ZmMzNTk5ZjIyNTgxYmFhZGFiZTguLmEyOTA4ZmMw
YmMxNzgzMDg4YjI3N2ExMTA3ZmM2OTUxMmI1ODg1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5o
CkBAIC0xMzEsOCArMTMxLDggQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87Ci0g
ICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4IHsgMCB9OwotICAg
IHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggeyAwIH07CisgICAgdW5z
aWduZWQgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4IHsgaW52YWxpZFNuYXBPZmZz
ZXRJbmRleCB9OworICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgg
eyBpbnZhbGlkU25hcE9mZnNldEluZGV4IH07CiAjZW5kaWYKIAogICAgIExheWVyUmVwcmVzZW50
YXRpb24gbV9zY3JvbGxDb250YWluZXJMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRl
eCBjZWM5ZmQ0YWMzYjM0NDk5ZmQ1YjA1Yzc3ZjRiMjE1N2JhMGUzZWE3Li4zYmNiOTFmODIwNTI5
ZWY0ZDRiYjZjNjM3ZTFkNWEyYjFmMThlZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBA
IC0zMTgsMTAgKzMxOCwxMCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpkdW1w
UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcgogICAgIGlmIChtX3Nu
YXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJ2ZXJ0aWNhbCBzbmFwIG9mZnNldHMiLCBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0
aWNhbFNuYXBPZmZzZXRzKTsKIAotICAgIGlmIChtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgpCisgICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCAhPSBpbnZh
bGlkU25hcE9mZnNldEluZGV4KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQgaG9y
aXpvbnRhbCBzbmFwIHBvaW50IGluZGV4IiwgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4KTsKIAotICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQorICAgIGlm
IChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5k
ZXgpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBvaW50
IGluZGV4IiwgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7CiAgICAgCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGZlZWVlYjRkODYzNjMxM2I3MWEyY2ZiZTA5MTBkZTI3
OWFlNTczYTAuLjhjY2M5YmY5YWI4ZDE0MTM0YjhmZmE1NmYxNTYyMjE0NWU3ZjI0MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaApAQCAtMTYwLDggKzE2MCw4IEBAIHByaXZhdGU6CiAgICAgSW50UG9p
bnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKLSAgICB1bnNpZ25lZCBt
X2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyAwIH07Ci0gICAgdW5zaWduZWQgbV9j
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2N1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyBpbnZhbGlkU25hcE9mZnNldEluZGV4IH07Cisg
ICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXggfTsKICNlbmRpZgogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBtX3Nj
cm9sbGFibGVBcmVhUGFyYW1ldGVyczsKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBlYzIwYjE3MDc0
NDI0NjBlNzU2ZGY2YTFkOTMwMmZlZGZhY2E1ZmNmLi5jZWQwNzIwNDdmZTU4NDI1YWJhMzdmYjhm
MjgzZmM5OGQ1YjRhOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwCkBAIC0xOTMsNiArMTkzLDExIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNldEFjdGl2
ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIHVuc2lnCiB7CiAg
ICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JB
eGlzKGF4aXMsIGluZGV4KTsKIH0KKwordm9pZCBTY3JvbGxBbmltYXRvcjo6cmVzbmFwQWZ0ZXJM
YXlvdXQoKQoreworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5yZXNuYXBBZnRlckxheW91dCgpOwor
fQogI2VuZGlmCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBlKQpAQCAtMjczLDggKzI3OCw3IEBAIHZvaWQgU2Nyb2xsQW5p
bWF0b3I6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHZv
aWQgU2Nyb2xsQW5pbWF0b3I6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgp
CiB7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBhdXRvIHNjcm9sbE9mZnNldCA9
IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHJvdW5kZWRJbnRQb2lu
dChjdXJyZW50UG9zaXRpb24oKSkpOwotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVT
Y3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChzY3JvbGxPZmZzZXQpOworICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci51cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQoKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA1
YTI4NjE3ZmY4ZTZmN2YyZWRiMmI4YWIzYTFiOGJmZDdkMmI4YTBmLi5hN2FhN2M3N2UxMTljMWZl
YzhkOTE0MDA1ZWRhMWM4ZDFhOTdmMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgdW5zaWduZWQgaW5kZXgp
OwogICAgIHZvaWQgc2V0U25hcE9mZnNldHNJbmZvKGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyYpOwogICAgIGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogc25hcE9m
ZnNldHNJbmZvKCkgY29uc3Q7CisgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgpOwogI2VuZGlm
CiAKICAgICAvLyBTY3JvbGxDb250cm9sbGVyQ2xpZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAppbmRleCBkODZmNWRlYzEzYTQzNThiODdjNTFjOTIw
YjZiMmIzZDFiMTZhZmU2Li5mMjNiYmRhMjAyMjAzZGVmMGRiOTM1OWVlOWI3ZjY0OTE2MWFlYzZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcApAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0U25hcE9mZnNldHNJbmZv
KGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgc25hCiAgICAgbV9zY3JvbGxTbmFw
U3RhdGUtPnNldFNuYXBPZmZzZXRJbmZvKHNuYXBPZmZzZXRJbmZvKTsKIAogICAgIGlmIChzaG91
bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2VzKQotICAgICAgICBzZXRBY3RpdmVTY3JvbGxTbmFw
SW5kaWNlc0Zvck9mZnNldChyb3VuZGVkSW50UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkp
KTsKKyAgICAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQ2xpZW50T2Zmc2V0KCk7
CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxDb250
cm9sbGVyICIgPDwgdGhpcyA8PCAiIHNldFNuYXBPZmZzZXRzSW5mbyBuZXcgc3RhdGU6ICIgPDwg
VmFsdWVPck51bGwobV9zY3JvbGxTbmFwU3RhdGUuZ2V0KCkpKTsKIH0KQEAgLTEyNiw3ICsxMjYs
NyBAQCBjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIFNjcm9sbENvbnRyb2xsZXI6
OnNuYXBPZmZzZXRzSW5mbygpIGNvbnN0CiB1bnNpZ25lZCBTY3JvbGxDb250cm9sbGVyOjphY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAogewog
ICAgIGlmICghdXNlc1Njcm9sbFNuYXAoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBpbnZhbGlkU25hcE9mZnNldEluZGV4OwogCiAgICAgcmV0dXJuIG1fc2Nyb2xsU25hcFN0
YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlzKGF4aXMpOwogfQpAQCAtMTUxLDEwICsxNTEsOCBA
QCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
QW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgIGlmICghc25hcE9mZnNldHMuc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMYXlvdXRVbml0IGNsYW1wZWRPZmZzZXQgPSBzdGQ6Om1p
bihzdGQ6Om1heChMYXlvdXRVbml0KG9mZnNldCAvIHNjYWxlRmFjdG9yKSwgc25hcE9mZnNldHMu
Zmlyc3QoKS5vZmZzZXQpLCBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0KTsKLQogICAgIExheW91
dFNpemUgdmlld3BvcnRTaXplKG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgpLndpZHRoKCksIG1fY2xp
ZW50LnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpKTsKLSAgICB1bnNpZ25lZCBhY3RpdmVJbmRleCA9
IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHZpZXdw
b3J0U2l6ZSwgY2xhbXBlZE9mZnNldCwgMCkuc2Vjb25kOworICAgIHVuc2lnbmVkIGFjdGl2ZUlu
ZGV4ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywg
dmlld3BvcnRTaXplLCBMYXlvdXRVbml0KG9mZnNldCAvIHNjYWxlRmFjdG9yKSwgMCkuc2Vjb25k
OwogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4
aXMpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE4MSwxNCArMTc5LDMxIEBAIGZsb2F0IFNjcm9s
bENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBmbG9hdCBkZXN0CiB9CiAKIAotdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzZXRBY3RpdmVTY3Jv
bGxTbmFwSW5kaWNlc0Zvck9mZnNldChTY3JvbGxPZmZzZXQgb2Zmc2V0KQordm9pZCBTY3JvbGxD
b250cm9sbGVyOjp1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQoKQog
ewogICAgIGlmICghdXNlc1Njcm9sbFNuYXAoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgU2Ny
b2xsT2Zmc2V0IG9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChtX2NsaWVudC5zY3JvbGxPZmZzZXQo
KSk7CiAgICAgc2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCBvZmZzZXQueCgpKTsKICAgICBzZXROZWFyZXN0U2Nyb2xs
U25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBvZmZz
ZXQueSgpKTsKIH0KKwordm9pZCBTY3JvbGxDb250cm9sbGVyOjpyZXNuYXBBZnRlckxheW91dCgp
Cit7CisgICAgaWYgKCF1c2VzU2Nyb2xsU25hcCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBJZiB3ZSBhcmUgYWxyZWFkeSBzbmFwcGVkIGluIGEgcGFydGljdWxhciBheGlzLCBtYWludGFp
biB0aGF0LiBPdGhlcndpc2UsIHNuYXAgdG8gdGhlIG5lYXJlc3QgZWxpZ2libGUgc25hcCBwb2lu
dC4KKyAgICBTY3JvbGxPZmZzZXQgb2Zmc2V0ID0gcm91bmRlZEludFBvaW50KG1fY2xpZW50LnNj
cm9sbE9mZnNldCgpKTsKKyAgICBzaXplX3QgYWN0aXZlSG9yaXpvbnRhbEluZGV4ID0gbV9zY3Jv
bGxTbmFwU3RhdGUtPmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKTsKKyAgICBpZiAoYWN0aXZlSG9yaXpvbnRhbEluZGV4ID09IGludmFsaWRTbmFwT2Zm
c2V0SW5kZXgpCisgICAgICAgIHNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zm
c2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgb2Zmc2V0LngoKSk7CisgICAgc2l6ZV90
IGFjdGl2ZVZlcnRpY2FsSW5kZXggPSBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4
Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKKyAgICBpZiAoYWN0aXZlVmVydGlj
YWxJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQorICAgICAgICBzZXROZWFyZXN0U2Ny
b2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBv
ZmZzZXQueSgpKTsKKworfQogI2VuZGlmCiAKIC8vIEN1cnJlbnRseSwgb25seSBNYWMgc3VwcG9y
dHMgbW9tZW50dW0gc3JvbGxpbmctYmFzZWQgc2Nyb2xsc25hcHBpbmcgYW5kIHJ1YmJlciBiYW5k
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXggMjNh
YzNhNGZjOTRlOGMxMDcyZmE0ZDBhZjFjZGI1YWVkZjBiNzFjMy4uN2ZlMGM1ODYxMjllYWQxMDFl
YzkyYTkyZTgyODQzNzQyMGZlZDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bENvbnRyb2xsZXIuaApAQCAtMTExLDE0ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRlbHRhKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0KLQogICAg
IHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVh
bCB1bnNpZ25lZCBhY3RpdmVTY3JvbGxPZmZzZXRJbmRleChTY3JvbGxFdmVudEF4aXMpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIExheW91dFNp
emUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZXdw
b3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNlbmRpZgpAQCAtMTQyLDcgKzEzNSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mKTsKICAgICBjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZz
ZXRzSW5mbygpIGNvbnN0OwogICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhp
cyhTY3JvbGxFdmVudEF4aXMsIHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNu
YXBJbmRpY2VzRm9yT2Zmc2V0KFNjcm9sbE9mZnNldCk7CisgICAgdm9pZCB1cGRhdGVBY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQoKTsKKyAgICB2b2lkIHJlc25hcEFmdGVyTGF5
b3V0KCk7CiAgICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQogICAgIHZvaWQgc2V0
U2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKGJvb2wgc3RhdGUpIHsgbV9hY3RpdmVTY3JvbGxTbmFw
SW5kZXhEaWRDaGFuZ2UgPSBzdGF0ZTsgfQogICAgIHVuc2lnbmVkIGFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcAppbmRleCA1YTA2ZDg4NzBh
ODU0ZDg1MjY0MTAwNGZkY2U4OWFmYmFhMDg2NzNhLi5kMWU1YmJhMzRiYzg5NTY5ODgzMmQyNTVl
ZDk0NjUwNzg1MDRiMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCkBAIC0xMDAsMTAgKzEwMCw3IEBAIGZsb2F0IFNjcm9s
bFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVu
dEF4aXMgYXhpcywKICAgICB9CiAKICAgICBmbG9hdCB0YXJnZXRPZmZzZXQgPSBtX3NuYXBPZmZz
ZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRTaXplIHsgdmlld3BvcnRTaXpl
IH0sIExheW91dFVuaXQocHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRh
LCBMYXlvdXRVbml0KHN0YXJ0T2Zmc2V0IC8gcGFnZVNjYWxlKSkuZmlyc3Q7Ci0gICAgZmxvYXQg
bWluaW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzbmFwT2Zmc2V0cy5maXJz
dCgpLm9mZnNldCk7Ci0gICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWluPGZs
b2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwotICAgIHRh
cmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11bVRhcmdldE9m
ZnNldCwgbWF4aW11bVRhcmdldE9mZnNldCk7Ci0gICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHRhcmdl
dE9mZnNldDsKKyAgICByZXR1cm4gcGFnZVNjYWxlICogY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zm
c2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQpOwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSYgc3RhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRl
eCBlNjIwY2U1MzE1MTRlMGIxZTVkZjk2YjllZGM3NTZiYmMxOWM2Y2M1Li5jYjM1YWQwOWM4YmZm
MTIyYzIwNTc1MWI5NWJjZjZjMmJkNGM3YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTkyLDggKzkyLDggQEAgcHJpdmF0
ZToKIAogICAgIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsK
IAotICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcEluZGV4WCB7IDAgfTsKLSAgICB1bnNpZ25lZCBt
X2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CisgICAgdW5zaWduZWQgbV9hY3RpdmVTbmFwSW5kZXhY
IHsgaW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OworICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcElu
ZGV4WSB7IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggfTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9z
dGFydFRpbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cj4gbV9tb21lbnR1bUNhbGN1bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAKaW5kZXggN2ZkY2U3MzIxNTRhMmE5NjllN2FjNjQyYzdmYWI0N2EwODU3ZTgx
Yy4uNzQ4ODk3Zjc1MzI2NGUyNjAyZmExNjEwMzcyODlmZjgzODI1ZWM0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNDk0LDE0ICs0OTQsMTQgQEAg
dW5zaWduZWQgU2Nyb2xsYWJsZUFyZWE6OmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgo
KSBjb25zdAogewogICAgIGlmIChhdXRvKiBzY3JvbGxBbmltYXRvciA9IGV4aXN0aW5nU2Nyb2xs
QW5pbWF0b3IoKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbEFuaW1hdG9yLT5hY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCk7Ci0gICAgcmV0dXJu
IDA7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgaW52YWxpZFNuYXBPZmZzZXRJbmRl
eC4KKyAgICByZXR1cm4gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKIH0KIAogdW5zaWduZWQgU2Ny
b2xsYWJsZUFyZWE6OmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3QKIHsKICAg
ICBpZiAoYXV0byogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCiAg
ICAgICAgIHJldHVybiBzY3JvbGxBbmltYXRvci0+YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhp
cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKTsKLSAgICByZXR1cm4gMDsgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHJlYWxseSBiZSBpbnZhbGlkU25hcE9mZnNldEluZGV4LgorICAgIHJldHVybiBp
bnZhbGlkU25hcE9mZnNldEluZGV4OwogfQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRDdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQpAQCAtNTE4LDkgKzUx
OCwxMiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpyZXNuYXBBZnRlckxheW91dCgpCiB7CiAgICAg
TE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAqdGhpcyA8PCAiIHVwZGF0ZVNj
cm9sbFNuYXBTdGF0ZTogaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyAiIDw8IGlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoKSA8PCAiIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MgIiA8PCBpc1VzZXJTY3JvbGxJ
blByb2dyZXNzKCkpOwogCi0gICAgaWYgKCFleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkgfHwgaXNT
Y3JvbGxTbmFwSW5Qcm9ncmVzcygpIHx8IGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSkKKyAgICBT
Y3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCk7
CisgICAgaWYgKCFzY3JvbGxBbmltYXRvciB8fCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgfHwg
aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBzY3JvbGxB
bmltYXRvci0+cmVzbmFwQWZ0ZXJMYXlvdXQoKTsKKwogICAgIGNvbnN0IGF1dG8qIGluZm8gPSBz
bmFwT2Zmc2V0c0luZm8oKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDAzMTY3NWRk
OTY2OWJiZDI0NmQ1OGYwOTY4ZDMxYzg4OTE5MGIxNTIuLjJiNGM3YzIyN2UzMDAwNTQ5N2MwZDg1
ZmJmYzY2ZjNhZmIxMWY4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGlu
Z1RyZWUuaCIKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTEzMSw4ICsxMzIsOCBAQCBwcml2YXRlOgogICAgIFJlcXVlc3RlZFNj
cm9sbEluZm8qIG1fcmVxdWVzdGVkU2Nyb2xsSW5mbyB7IG51bGxwdHIgfTsKICAgICBSZW1vdGVT
Y3JvbGxpbmdVSVN0YXRlIG1fdWlTdGF0ZTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQot
ICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKLSAg
ICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9OworICAgIHVu
c2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7IFdlYkNvcmU6OmludmFs
aWRTbmFwT2Zmc2V0SW5kZXggfTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4IHsgV2ViQ29yZTo6aW52YWxpZFNuYXBPZmZzZXRJbmRleCB9OwogI2VuZGlmCiAg
ICAgYm9vbCBtX3Byb3BhZ2F0ZXNNYWluRnJhbWVTY3JvbGxzIHsgdHJ1ZSB9OwogICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBtX2xheWVyc1dpdGhT
Y3JvbGxpbmdSZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTUwZGVmOTE5NDRiMGUwNzYyMWFkNWU1Y2M3ZTJm
YjQ3MmRmMjU5YS4uZWRkYzgzZTU0MmZiZGFhYmZiOWYxOThmMmY1MzEyZWRlYzkxMzMzMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTA3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBOZXcgc25hcCBjb250
YWluZXJzIGFsd2F5cyBzbmFwIHRvIHRoZSBmaXJzdCBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czogTWFyayB0d28gV1BUIHRlc3RzIGFzIHBhc3NpbmcuCisKIDIwMjEtMDYtMDQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXb3JrZXIuY29uc3RydWN0b3IgdGhy
b3dzIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSB1cmwgcGFyYW0gaXMgYW4gZW1wdHkgc3RyaW5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBmZjdjZjhmN2NiODk2N2Q4OThlYTcwNmZiZjNjMDMxOWEyOGE1
OTU3Li44ZGE3NTllMTVlYmQ2OTdhMmQ0YmQ0ZjFkMzc3NmE3ZDIyN2I3MDU3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTQ1MzksOSArNDUzOSw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LWFsaWduLTAwMi5odG1sCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xs
LXRhcmdldC1hbGlnbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtc25h
cC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtc25hcC0wMDIuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtc25hcC0wMDMuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1z
bmFwL3NuYXAtYWZ0ZXItaW5pdGlhbC1sYXlvdXQvZGlyZWN0aW9uLXJ0bC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Ny
b2xsLXNuYXAvc25hcC1hZnRlci1pbml0aWFsLWxheW91dC9zY3JvbGwtc25hcC1pbml0aWFsLWxh
eW91dC0wMDAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3NuYXAtYWZ0ZXItaW5pdGlhbC1sYXlvdXQv
c2Nyb2xsLXNuYXAtd3JpdGluZy1tb2RlLTAwMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMjE4MzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDEuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE4MzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LW1hcmdpbi0wMDMuaHRt
bCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>