<?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>222111</bug_id>
          
          <creation_ts>2021-02-18 08:59:06 -0800</creation_ts>
          <short_desc>Clean up ScrollableArea and ScrollAnimator API and convert less between offsets and positions</short_desc>
          <delta_ts>2021-02-22 13:40:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146696</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1730878</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-02-18 08:59:06 -0800</bug_when>
    <thetext>The ScrollableArea and ScrollAnimator API is a bit confusing when it comes to scrolling to offsets and positions. It isn&apos;t always clear when these APIs will trigger an animation and we are missing some opportunities to use &quot;native&quot; animations on Mac. These APIs also require a lot of conversion back and forth between offsets and positions. Finally, cleaning up this API will allow us to use native animations to do scroll snapping during thumb dragging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731308</commentid>
    <comment_count>1</comment_count>
      <attachid>420957</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-02-19 05:01:20 -0800</bug_when>
    <thetext>Created attachment 420957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731342</commentid>
    <comment_count>2</comment_count>
      <attachid>420970</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-02-19 08:16:50 -0800</bug_when>
    <thetext>Created attachment 420970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732047</commentid>
    <comment_count>3</comment_count>
      <attachid>421167</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-02-22 00:28:25 -0800</bug_when>
    <thetext>Created attachment 421167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732286</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-22 13:39:45 -0800</bug_when>
    <thetext>Committed r273275: &lt;https://commits.webkit.org/r273275&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421167.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732287</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-22 13:40:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74611765&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420957</attachid>
            <date>2021-02-19 05:01:20 -0800</date>
            <delta_ts>2021-02-19 08:16:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222111-20210219140118.patch</filename>
            <type>text/plain</type>
            <size>32546</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5ODBjNDRjOWZiMDYw
M2UwMmVmNzRmNDQ5NTk1NTQ2MmNmZTFmMC4uNWQ3ZjllMjI0NzZiZDBhZjk0OGQ3OWMxYjczZGFi
YWFiMDA0YzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTAyLTE5ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDbGVhbiB1cCBT
Y3JvbGxhYmxlQXJlYSBhbmQgU2Nyb2xsQW5pbWF0b3IgQVBJIGFuZCBjb252ZXJ0IGxlc3MgYmV0
d2VlbiBvZmZzZXRzIGFuZCBwb3NpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjExMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIHRoZSBBUElzIGV4cG9zZWQgYnkgU2Nyb2xsYWJs
ZUFyZWEgYW5kIFNjcm9sbEFuaW1hdG9yIHRvIG1ha2UgdGhlbSBtb3JlCisgICAgICAgIGNvbnNp
c3RlbnQuIFdpdGggdGhpcyBjaGFuZ2UgaXQgc2hvdWxkIGJlIGEgYml0IGVhc2llciB0byB0ZWxs
IGlmIGEgcGFydGljdWxhcgorICAgICAgICBtZXRob2Qgd2lsbCB0cmlnZ2VyIGFuIGFuaW1hdGlv
biBvciBub3QuIEluIGFkZGl0aW9uLCB3ZSBhY2NlcHQgcG9zaXRpb25zIChhcworICAgICAgICBv
cHBvc2VkIHRvIG9mZnNldHMpIGV2ZXJ5d2hlcmUsIHdoaWNoIGFsbG93cyB1cyB0byByZWR1Y2Ug
dGhlIG51bWJlciBvZgorICAgICAgICBvZmZzZXQgPC0+IHBvc2l0aW9uIGNvbnZlcnNpb25zLgor
CisgICAgICAgIEZpbmFsbHksIHRoaXMgY2hhbmdlIGlzIGFsc28gaW50ZXJlc3RpbmcgZm9yIHNj
cm9sbCBzbmFwLCBiZWNhdXNlIGl0IHdpbGwKKyAgICAgICAgbWFrZSBpdCBlYXNpZXIgdG8gdXNl
IGEgbmF0aXZlIGFuaW1hdGlvbiBvbiBNYWNPUyB0byB1c2UgZm9yIHNuYXBwaW5nIGFmdGVyCisg
ICAgICAgIHNjcm9sbGJhciB0aHVtYiBkcmFnZ2luZy4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9u
KTogVXNlIG5ldyBTY3JvbGxhYmxlQXJlYSBBUElzIHRoYXQKKyAgICAgICAgYWNjZXB0IHBvc2l0
aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhB
bmltYXRpb24pOiBBZGRlZCB0aGlzIHZlcnNpb24KKyAgICAgICAgb2YgdGhlIG1ldGhvZCB0aGF0
IHVzZXMgcG9zaXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb09m
ZnNldFdpdGhBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6
IFVwZGF0ZSBtZXRob2QgZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6IFNp
bXBsaWZpZWQgYSBsaXR0bGUgYml0IHRoZSBjb2RlIHRoYXQgaGFuZGxlcworICAgICAgICBzY3Jv
bGwgc25hcHBpbmcgaGVyZS4gVW5pZmllZCBzY3JvbGwgc25hcCBhbmQgbm9uLXNjcm9sbCBzbmFw
IGNvbXBpbGF0aW9uIHBhdGhzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbik6IFRoaXMgbWV0aG9kCisgICAgICAgIG5vdyBj
b252ZXJ0cyB0byBhIHBvc2l0aW9uIGFuZCB0aGVuIGNhbGxzIHNjcm9sbFRvUG9zaXRpb25XaXRo
b3V0QW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRv
UG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKTogU3BsaXQgdGhpcyBvdXQKKyAgICAgICAgZnJvbSBz
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKTogVGhpcyBtZXRob2Qgbm93Cisg
ICAgICAgIGNvbnZlcnRzIHRvIGEgcG9zaXRpb24gYW5kIGNhbGxzIHNjcm9sbFRvUG9zaXRpb25X
aXRoQW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRv
UG9zaXRpb25XaXRoQW5pbWF0aW9uKTogU3BsaXQgdGhpcworICAgICAgICBvdXQgZnJvbSBzY3Jv
bGxUb09mZnNldFdpdGhBbmltYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudCk6IENhbGwgc2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24K
KyAgICAgICAgaW5zdGVhZCBvZiB1c2luZyB0aGUgc2Nyb2xsKC4uLikgbWV0aG9kLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6IEVsaW1p
bmF0ZSBhIGNvbnZlcnNpb24gaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpzY3JvbGxXaXRob3V0QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjpzY3JvbGxUb09mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaDogVXBkYXRlIG1ldGhvZCBsaXN0LgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRl
U2Nyb2xsYmFycyk6IEVsaW1pbmF0ZSBhIGNvbnZlcnNpb24gaGVyZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIFJlbW92ZWQgc2Nyb2xsVG9PZmZzZXRX
aXRoQW5pbWF0aW9uIGFuZCBhZGRlZCB0d28gbmV3IG1ldGhvZHMgc2Nyb2xsVG9Qb3NpdGlvbldp
dGhBbmltYXRpb24KKyAgICAgICAgYW5kIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9u
LiBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24gaXMgc3RpbGwgdXNlZAorICAgICAgICBp
biBxdWl0ZSBhIGZldyBwbGFjZXMsIHNvIHdlIG1haW50YWluIHRoaXMuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFscyk6IFVzZSBz
ZXRTY3JvbGxQb3NpdGlvbkZyb21BbmltYXRpb24gbm93LgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYWJsZUFyZWE6OnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbik6IFJlbmFtZWQgZnJv
bSBzZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uCisgICAgICAgIGFuZCBlbGltaW5hdGVkIGEg
bWFuZGF0b3J5IGNub3ZlcnNpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOiBVcGRhdGUgbWV0aG9kIGRlY2xh
cmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbCk6IEhhbmRsZSBjYWxsaW5nIGlu
dG8gc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24KKyAgICAgICAgYW5kIHNjcm9sbFRv
UG9zaXRpb25XaXRoQW5pbWF0aW9uIG91cnNlbHZlcyBub3cgdGhhdCB3ZSBoYXZlIHRoaXMgQVBJ
LiBUaGlzIHNpbXBsaWZpZXMKKyAgICAgICAgcHJvZ3JhbSBmbG93IGEgYml0LgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbik6IEV4cG9zZSB0aGVzZSB0d28gbmV3CisgICAgICAgIG1ldGhvZHMg
d2hpY2ggYXJlIHBhcnQgb2YgdGhlIGJhc2UgY2xhc3MgQVBJIG5vdy4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppbW1lZGlhdGVTY3JvbGxUb1Bvc2l0aW9uRm9yU2Nyb2xs
QW5pbWF0aW9uKTogVXNlCisgICAgICAgIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbiBiZWNhdXNlIGl0IHdhcyB0aGUgc2FtZSBhcworICAgICAgICBpbW1l
ZGlhdGVTY3JvbGxUb1Bvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JN
YWM6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbik6IERl
bGV0ZWQuIE5vIGxvbmdlciB1c2VkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFRvT2Zmc2V0KTogVW5jb25kaXRpb25hbGx5IGNvbnZlcnQgdG8gYSBwb3Np
dGlvbgorICAgICAgICBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYTo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KTogVXNlIFNjcm9sbGFibGVBcmVh
OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbgorICAgICAgICBiZWNhdXNlIGl0IGVs
aW1pbmF0ZXMgb25lIGNvbnZlcnNpb24gYmV0d2VlbiB1bml0cy4KKwogMjAyMS0wMi0xOSAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogUmVxdWVzdCBz
ZXJ2ZXIgcHVibGljIGtleSB0byBnZW5lcmF0ZSBzZWNyZXQgdG9rZW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCA1YWYxZGMyYjU4NWNiYmVhMTA3MjliODdhODg5YWM0ZGQyNjljYjQy
Li5lYjgxODcwZDg2ZDc5ZTZiYWRkM2NkYWE5NDQ1ZjkxYjFhNTI4ODA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0yMzI3LDExICsyMzI3LDEyIEBAIHZvaWQgRnJhbWVWaWV3Ojpz
ZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYgc2Nyb2xsUG9zaXRpb24sIGNv
bnN0IFNjCiAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9y
KHBhZ2UtPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKIAogICAgIFNjcm9sbE9mZnNldCBzbmFw
cGVkT2Zmc2V0ID0gY2VpbGVkSW50UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS5hZGp1c3RTY3JvbGxP
ZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKHNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihzY3JvbGxQ
b3NpdGlvbiksIG9wdGlvbnMuc25hcFBvaW50U2VsZWN0aW9uTWV0aG9kKSk7CisgICAgYXV0byBz
bmFwcGVkUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoc25hcHBlZE9mZnNldCk7
CiAKICAgICBpZiAob3B0aW9ucy5hbmltYXRlZCA9PSBBbmltYXRlZFNjcm9sbDo6WWVzKQotICAg
ICAgICBzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24oc25hcHBlZE9mZnNldCwgY3VycmVudFNj
cm9sbFR5cGUoKSwgb3B0aW9ucy5jbGFtcGluZyk7CisgICAgICAgIHNjcm9sbFRvUG9zaXRpb25X
aXRoQW5pbWF0aW9uKHNuYXBwZWRQb3NpdGlvbiwgY3VycmVudFNjcm9sbFR5cGUoKSwgb3B0aW9u
cy5jbGFtcGluZyk7CiAgICAgZWxzZQotICAgICAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3Np
dGlvbihzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoc25hcHBlZE9mZnNldCksIG9wdGlvbnMpOwor
ICAgICAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihzbmFwcGVkUG9zaXRpb24sIG9w
dGlvbnMpOwogCiAgICAgc2V0Q3VycmVudFNjcm9sbFR5cGUob2xkU2Nyb2xsVHlwZSk7CiB9CkBA
IC0zNzYzLDE1ICszNzY0LDE1IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUbyhjb25zdCBTY3Jv
bGxQb3NpdGlvbiYgbmV3UG9zaXRpb24pCiAgICAgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCk7CiB9
CiAKLXZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24oY29uc3QgU2Ny
b2xsT2Zmc2V0JiBvZmZzZXQsIFNjcm9sbFR5cGUgc2Nyb2xsVHlwZSwgU2Nyb2xsQ2xhbXBpbmcp
Cit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgU2Ny
b2xsUG9zaXRpb24mIHBvc2l0aW9uLCBTY3JvbGxUeXBlIHNjcm9sbFR5cGUsIFNjcm9sbENsYW1w
aW5nKQogewogICAgIGF1dG8gcHJldmlvdXNTY3JvbGxUeXBlID0gY3VycmVudFNjcm9sbFR5cGUo
KTsKICAgICBzZXRDdXJyZW50U2Nyb2xsVHlwZShzY3JvbGxUeXBlKTsKIAogICAgIGlmIChjdXJy
ZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25O
YXRpdmVBbmltYXRpb24pCiAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuY2FuY2VsQW5pbWF0aW9u
cygpOwotICAgIGlmIChvZmZzZXQgIT0gdGhpcy0+c2Nyb2xsT2Zmc2V0KCkpCi0gICAgICAgIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24ob2Zmc2V0KTsKKyAgICBp
ZiAocG9zaXRpb24gIT0gdGhpcy0+c2Nyb2xsUG9zaXRpb24oKSkKKyAgICAgICAgU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKHBvc2l0aW9uKTsKIAogICAgIHNl
dEN1cnJlbnRTY3JvbGxUeXBlKHByZXZpb3VzU2Nyb2xsVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAppbmRleCA1YjMyYjZmZDlkZWU5NGJjMTU0NjczMzVhMDlhMTEzNTQzNzY4OThhLi4w
NTlmOGE3YTlkMmZhMDI3ZDkyOGNlN2ZlZDI4ZTNkMzUxM2ZmNDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKQEAgLTY3NCw3ICs2NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbmRlckxh
eWVyRGlkU2Nyb2xsKGNvbnN0IFJlbmRlckxheWVyJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihjb25zdCBTY3JvbGxPZmZzZXQmLCBTY3Jv
bGxUeXBlID0gU2Nyb2xsVHlwZTo6UHJvZ3JhbW1hdGljLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9s
bENsYW1waW5nOjpDbGFtcGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvUG9z
aXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNj
cm9sbFR5cGU6OlByb2dyYW1tYXRpYywgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6
Q2xhbXBlZCk7CiAKICAgICBib29sIGluVXBkYXRlRW1iZWRkZWRPYmplY3RzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pblVwZGF0ZUVtYmVkZGVkT2JqZWN0czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggYWI5NjcxNzBmYTczMDMyNDIwOGQ2OGNiZTk2
NWIyZmM0Y2JjZmRjZS4uY2Y2OWEyZjZhMDllYzA1NThmMzcwMjk1ZWY5ZjFlN2UyNTJkNTA1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtODMsNTcg
KzgzLDU4IEBAIFNjcm9sbEFuaW1hdG9yOjp+U2Nyb2xsQW5pbWF0b3IoKQogYm9vbCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgU2Ny
b2xsQmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICBpZiAoYmVoYXZpb3IgIT0gU2Nyb2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZykK
LSAgICAgICAgcmV0dXJuIHNjcm9sbFdpdGhvdXRBbmltYXRpb24ob3JpZW50YXRpb24sIHN0ZXAs
IG11bHRpcGxpZXIpOwotCi0gICAgRmxvYXRTaXplIHNjcm9sbE9yaWdpbiA9IHRvRmxvYXRTaXpl
KG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpOwotICAgIEZsb2F0UG9pbnQgbmV3UG9z
aXRpb24gPSBwb3NpdGlvbkZyb21TdGVwKG9yaWVudGF0aW9uLCBzdGVwLCBtdWx0aXBsaWVyKTsK
LSAgICBhdXRvIG5ld09mZnNldCA9IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9z
aXRpb24obmV3UG9zaXRpb24sIHNjcm9sbE9yaWdpbik7Ci0gICAgYXV0byBjdXJyZW50T2Zmc2V0
ID0gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih0aGlzLT5jdXJyZW50
UG9zaXRpb24oKSwgc2Nyb2xsT3JpZ2luKTsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpv
bnRhbFNjcm9sbGJhcikgewotICAgICAgICBuZXdPZmZzZXQuc2V0WChtX3Njcm9sbENvbnRyb2xs
ZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBu
ZXdPZmZzZXQueCgpLCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LngoKSkpOwotICAgICAgICBu
ZXdQb3NpdGlvbiA9IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQobmV3
T2Zmc2V0LCBzY3JvbGxPcmlnaW4pOwotICAgICAgICByZXR1cm4gc2Nyb2xsKEhvcml6b250YWxT
Y3JvbGxiYXIsIGdyYW51bGFyaXR5LCBuZXdQb3NpdGlvbi54KCkgLSB0aGlzLT5jdXJyZW50UG9z
aXRpb24oKS54KCksIDEuMCk7CisgICAgaWYgKGJlaGF2aW9yID09IFNjcm9sbEJlaGF2aW9yOjpE
b0RpcmVjdGlvbmFsU25hcHBpbmcpIHsKKyAgICAgICAgYXV0byBuZXdPZmZzZXQgPSBTY3JvbGxh
YmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHBvc2l0aW9uRnJvbVN0ZXAob3JpZW50
YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIpLCB0b0Zsb2F0U2l6ZShtX3Njcm9sbGFibGVBcmVhLnNj
cm9sbE9yaWdpbigpKSk7CisgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG1fc2Nyb2xsYWJs
ZUFyZWEuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBuZXdPZmZzZXQuc2V0WChtX3Njcm9sbENvbnRy
b2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCBuZXdPZmZzZXQueCgpLCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LngoKSkpOworICAgICAg
ICAgICAgcmV0dXJuIHNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgbmV3
T2Zmc2V0LngoKSAtIGN1cnJlbnRPZmZzZXQueCgpLCAxLjApOworICAgICAgICB9CisgICAgICAg
IG5ld09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlv
bihTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBtdWx0aXBsaWVyLCBj
dXJyZW50T2Zmc2V0LnkoKSkpOworICAgICAgICByZXR1cm4gc2Nyb2xsKFZlcnRpY2FsU2Nyb2xs
YmFyLCBncmFudWxhcml0eSwgbmV3T2Zmc2V0LnkoKSAtIGN1cnJlbnRPZmZzZXQueSgpLCAxLjAp
OwogICAgIH0KLQotICAgIG5ld09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RT
Y3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdQb3NpdGlvbi55
KCksIG11bHRpcGxpZXIsIGN1cnJlbnRPZmZzZXQueSgpKSk7Ci0gICAgbmV3UG9zaXRpb24gPSBT
Y3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KG5ld09mZnNldCwgc2Nyb2xs
T3JpZ2luKTsKLSAgICByZXR1cm4gc2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBncmFudWxhcml0
eSwgbmV3UG9zaXRpb24ueSgpIC0gdGhpcy0+Y3VycmVudFBvc2l0aW9uKCkueSgpLCAxLjApOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZ3JhbnVsYXJpdHkpOwogICAgIFVOVVNFRF9QQVJBTShi
ZWhhdmlvcik7Ci0gICAgcmV0dXJuIHNjcm9sbFdpdGhvdXRBbmltYXRpb24ob3JpZW50YXRpb24s
IHN0ZXAsIG11bHRpcGxpZXIpOwogI2VuZGlmCisKKyAgICByZXR1cm4gc2Nyb2xsVG9Qb3NpdGlv
bldpdGhvdXRBbmltYXRpb24ocG9zaXRpb25Gcm9tU3RlcChvcmllbnRhdGlvbiwgc3RlcCwgbXVs
dGlwbGllcikpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxXaXRob3V0QW5pbWF0
aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBt
dWx0aXBsaWVyKQorYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5p
bWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcp
CiB7Ci0gICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKLSAgICBGbG9hdFBvaW50IG5ld1Bvc2l0aW9uID0gcG9zaXRpb25Gcm9tU3RlcChvcmll
bnRhdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7Ci0gICAgbmV3UG9zaXRpb24gPSBuZXdQb3NpdGlv
bi5jb25zdHJhaW5lZEJldHdlZW4obV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRp
b24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgaWYg
KGN1cnJlbnRQb3NpdGlvbiA9PSBuZXdQb3NpdGlvbikKKyAgICByZXR1cm4gc2Nyb2xsVG9Qb3Np
dGlvbldpdGhvdXRBbmltYXRpb24oU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9m
ZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKHNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luKCkp
KSwgY2xhbXBpbmcpOworfQorCitib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBp
bmcgY2xhbXBpbmcpCit7CisgICAgYXV0byBhZGp1c3RlZFBvc2l0aW9uID0gY2xhbXBpbmcgPT0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQgPyBwb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4oc2Ny
b2xsYWJsZUFyZWEoKS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xsYWJsZUFyZWEoKS5t
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKSkgOiBwb3NpdGlvbjsKKyAgICBib29sIHBvc2l0aW9uQ2hh
bmdlZCA9IGFkanVzdGVkUG9zaXRpb24gIT0gY3VycmVudFBvc2l0aW9uKCk7CisgICAgaWYgKCFw
b3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IG5ld1Bv
c2l0aW9uOwotICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChuZXdQb3NpdGlvbiAtIGN1cnJlbnRQ
b3NpdGlvbik7CisgICAgYXV0byBkZWx0YSA9IGFkanVzdGVkUG9zaXRpb24gLSBjdXJyZW50UG9z
aXRpb24oKTsKKyAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247CisgICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKKyAgICB1cGRhdGVBY3RpdmVTY3JvbGxTbmFw
SW5kZXhGb3JPZmZzZXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsVG9PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQorYm9vbCBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG9mZnNldCkKIHsKLSAgICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c2V0Q3VycmVu
dFBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKTsKLSAgICBhdXRvIG5ld1Bvc2l0aW9uID0gU2Ny
b2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXpl
KG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKTsKLSAgICBtX2FuaW1hdGlvblByb2dy
YW1tYXRpY1Njcm9sbC0+c2Nyb2xsKG5ld1Bvc2l0aW9uKTsKLSAgICBtX3Njcm9sbGFibGVBcmVh
LnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2
ZUFuaW1hdGlvbik7CisgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQob2Zmc2V0LCB0b0Zsb2F0U2l6
ZShzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9yaWdpbigpKSkpOwogfQogCi12b2lkIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYg
b2Zmc2V0LCBTY3JvbGxDbGFtcGluZykKK2Jvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9z
aXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogewotICAg
IEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25G
cm9tT2Zmc2V0KG9mZnNldCwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmln
aW4oKSkpOwotICAgIEZsb2F0U2l6ZSBkZWx0YSA9IG5ld1Bvc2l0aW9uIC0gY3VycmVudFBvc2l0
aW9uKCk7Ci0gICAgbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKLSAgICBub3RpZnlQ
b3NpdGlvbkNoYW5nZWQoZGVsdGEpOwotICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZv
ck9mZnNldCgpOworICAgIGJvb2wgcG9zaXRpb25DaGFuZ2VkID0gbmV3UG9zaXRpb24gIT0gY3Vy
cmVudFBvc2l0aW9uKCk7CisgICAgaWYgKCFwb3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVB
cmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c2V0Q3VycmVudFBvc2l0aW9uKG1fY3Vy
cmVudFBvc2l0aW9uKTsKKyAgICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c2Nyb2xs
KG5ld1Bvc2l0aW9uKTsKKyAgICBzY3JvbGxhYmxlQXJlYSgpLnNldFNjcm9sbEJlaGF2aW9yU3Rh
dHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6OnBvc2l0aW9uRnJvbVN0
ZXAoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11
bHRpcGxpZXIpCkBAIC0yMDgsNyArMjA5LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAgICAgICAgICAg
ICAgIGRlbHRhWSA9IC1kZWx0YVk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZS5o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsV2l0aG91
dEFuaW1hdGlvbihWZXJ0aWNhbFNjcm9sbGJhciwgdmVydGljYWxTY3JvbGxiYXItPnBpeGVsU3Rl
cCgpLCAtZGVsdGFZKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFu
aW1hdGlvbihwb3NpdGlvbkZyb21TdGVwKFZlcnRpY2FsU2Nyb2xsYmFyLCB2ZXJ0aWNhbFNjcm9s
bGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVkpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBzY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5LCB2ZXJ0aWNhbFNj
cm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVkpOwogICAgICAgICB9CkBAIC0yMjEsNyArMjIy
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGUpCiAgICAgICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZS5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFz
KCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsV2l0aG91dEFuaW1hdGlvbihIb3Jpem9udGFsU2Ny
b2xsYmFyLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCk7CisgICAg
ICAgICAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24ocG9zaXRpb25Gcm9t
U3RlcChIb3Jpem9udGFsU2Nyb2xsYmFyLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAo
KSwgLWRlbHRhWCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNjcm9sbChI
b3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgaG9yaXpvbnRhbFNjcm9sbGJhci0+cGl4
ZWxTdGVwKCksIC1kZWx0YVgpOwogICAgICAgICB9CkBAIC0yNTcsOCArMjU4LDcgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvcjo6dXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCkKIHZv
aWQgU2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZChjb25zdCBGbG9hdFNpemUm
IGRlbHRhKQogewogICAgIFVOVVNFRF9QQVJBTShkZWx0YSk7Ci0gICAgLy8gRklYTUU6IG5lZWQg
dG8gbm90IG1hcCBiYWNrIGFuZCBmb3J0aCBhbGwgdGhlIHRpbWUuCi0gICAgbV9zY3JvbGxhYmxl
QXJlYS5zZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
T2Zmc2V0RnJvbVBvc2l0aW9uKHJvdW5kZWRJbnRQb2ludChjdXJyZW50UG9zaXRpb24oKSkpKTsK
KyAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihyb3Vu
ZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkpKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICBtX3Njcm9sbENvbnRyb2xsZXIu
c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuaAppbmRleCAyMGIxM2U2ODBkYWZlYjhjZTEyNDliNDIxZGFiMmMxY2Q0MDg3YzhiLi5l
NDllN2ZmMzYxODNlOGMyYWU3NjNiMTJhNTkwNDgyZDI2NzJiYTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTc4LDEwICs3OCwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gZGVzdGluYXRpb24gYW5kIHJldHVybnMgdHJ1ZS4gIFNjcm9sbGluZyBtYXkgYmUgaW1t
ZWRpYXRlIG9yIGFuaW1hdGVkLgogICAgIC8vIFRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9u
IGFsd2F5cyBzY3JvbGxzIGltbWVkaWF0ZWx5LCBuZXZlciBhbmltYXRlcy4KICAgICB2aXJ0dWFs
IGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxv
YXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgU2Nyb2xsQmVoYXZpb3IgPSBTY3JvbGxCZWhhdmlv
cjo6RGVmYXVsdCk7Ci0gICAgYm9vbCBzY3JvbGxXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9y
aWVudGF0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKIAotICAgIHZvaWQgc2Ny
b2xsVG9PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxU
b09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENsYW1waW5n
ID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOworICAgIGJvb2wgc2Nyb2xsVG9PZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENs
YW1waW5nOjpDbGFtcGVkKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsVG9Qb3NpdGlvbldpdGhv
dXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1waW5nID0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOworCisgICAgYm9vbCBzY3JvbGxUb09mZnNldFdpdGhB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxUb1Bv
c2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICBTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMzMzZTkxZTVhYjgy
YTM3MmI1Yjc2NDI3MWViOWM3NTU4ODY4ZWJlZS4uMzRiYWI5N2M1YTlkZjRiNDJjOWNiOTE2ZjVm
YzI1YjQ4MjYzNDU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAg
LTU5Nyw3ICs1OTcsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3Qg
U2Nyb2xsUG9zaXRpb24mIGRlc2lyZWRQb3NpdGlvbikKICAgICAgICAgICAgIGFkanVzdGVkU2Ny
b2xsUG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGFkanVzdGVkU2Ny
b2xsUG9zaXRpb24pOwogCiAgICAgICAgIGlmIChhZGp1c3RlZFNjcm9sbFBvc2l0aW9uICE9IHNj
cm9sbFBvc2l0aW9uKCkgfHwgc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKSB7Ci0gICAgICAgICAgICBT
Y3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHNjcm9sbE9mZnNl
dEZyb21Qb3NpdGlvbihhZGp1c3RlZFNjcm9sbFBvc2l0aW9uKSk7CisgICAgICAgICAgICBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oYWRqdXN0ZWRTY3Jv
bGxQb3NpdGlvbik7CiAgICAgICAgICAgICByZXNldFNjcm9sbE9yaWdpbkNoYW5nZWQoKTsKICAg
ICAgICAgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHAKaW5kZXggOTgwZjBmMGIwYzIxZTJmMjAyMDhlNTVlZTc3NGI4ZjhlODg4NzBhOC4uNjFmN2Vh
NTIwNWYwOTI3YTZjNzg5NGUyMjY0NjhhOTBkN2NjNmZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTQzLDEwICsxNDMsMTYgQEAgYm9vbCBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGEKICAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3IoKS5zY3JvbGwob3JpZW50
YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVyLCBTY3JvbGxBbmltYXRvcjo6U2Ny
b2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7CiB9CiAKLXZvaWQgU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZz
ZXQsIFNjcm9sbENsYW1waW5nKQordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9Qb3NpdGlv
bldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1w
aW5nIGNsYW1waW5nKQogewotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiU2Nyb2xsYWJsZUFyZWEgIiA8PCB0aGlzIDw8ICIgc2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0
aW9uICIgPDwgb2Zmc2V0KTsKLSAgICBzY3JvbGxBbmltYXRvcigpLnNjcm9sbFRvT2Zmc2V0KG9m
ZnNldCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxh
YmxlQXJlYSAiIDw8IHRoaXMgPDwgIiBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbiAi
IDw8IHBvc2l0aW9uKTsKKyAgICBzY3JvbGxBbmltYXRvcigpLnNjcm9sbFRvUG9zaXRpb25XaXRo
b3V0QW5pbWF0aW9uKHBvc2l0aW9uLCBjbGFtcGluZyk7Cit9CisKK3ZvaWQgU2Nyb2xsYWJsZUFy
ZWE6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBTY3JvbGxDbGFtcGluZykKK3sKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBz
dHJlYW0gPDwgIlNjcm9sbGFibGVBcmVhICIgPDwgdGhpcyA8PCAiIHNjcm9sbFRvUG9zaXRpb25X
aXRoQW5pbWF0aW9uICIgPDwgcG9zaXRpb24pOworICAgIHNjcm9sbEFuaW1hdG9yKCkuc2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24ocG9zaXRpb24pOwogfQogCiB2b2lkIFNjcm9sbGFibGVB
cmVhOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zm
c2V0LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKQEAgLTE1OSw5ICsxNjUsOSBAQCB2b2lkIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YQogewogICAgIGF1dG8gY3VycmVudE9mZnNldCA9IHNjcm9sbE9mZnNl
dEZyb21Qb3NpdGlvbihJbnRQb2ludChzY3JvbGxBbmltYXRvcigpLmN1cnJlbnRQb3NpdGlvbigp
KSk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAg
IHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KG9mZnNldCwgY3VycmVu
dE9mZnNldC55KCkpKTsKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zY3JvbGxUb09mZnNldFdp
dGhvdXRBbmltYXRpb24oRmxvYXRQb2ludChvZmZzZXQsIGN1cnJlbnRPZmZzZXQueSgpKSk7CiAg
ICAgZWxzZQotICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oRmxvYXRQb2lu
dChjdXJyZW50T2Zmc2V0LngoKSwgb2Zmc2V0KSk7CisgICAgICAgIHNjcm9sbEFuaW1hdG9yKCku
c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoY3VycmVudE9mZnNldC54
KCksIG9mZnNldCkpOwogfQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpub3RpZnlTY3JvbGxQb3Np
dGlvbkNoYW5nZWQoY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMjMwLDEzICsy
MzYsMTEgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiAvLyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9tIElu
dGVybmFscyBmb3IgdGVzdGluZy4KIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbE9mZnNl
dEZyb21JbnRlcm5hbHMoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvZmZzZXQpCiB7Ci0gICAgc2V0U2Ny
b2xsT2Zmc2V0RnJvbUFuaW1hdGlvbihvZmZzZXQpOworICAgIHNldFNjcm9sbFBvc2l0aW9uRnJv
bUFuaW1hdGlvbihzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQob2Zmc2V0KSk7CiB9CiAKLXZvaWQg
U2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xs
T2Zmc2V0JiBvZmZzZXQpCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3NpdGlvbkZy
b21BbmltYXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogewotICAgIFNjcm9s
bFBvc2l0aW9uIHBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KG9mZnNldCk7Ci0g
ICAgCiAgICAgYXV0byBzY3JvbGxUeXBlID0gY3VycmVudFNjcm9sbFR5cGUoKTsKICAgICBhdXRv
IGNsYW1waW5nID0gc2Nyb2xsVHlwZSA9PSBTY3JvbGxUeXBlOjpVc2VyID8gU2Nyb2xsQ2xhbXBp
bmc6OlVuY2xhbXBlZCA6IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkOwogICAgIGlmIChyZXF1ZXN0
U2Nyb2xsUG9zaXRpb25VcGRhdGUocG9zaXRpb24sIHNjcm9sbFR5cGUsIGNsYW1waW5nKSkKQEAg
LTU1MCw3ICs1NTQsNyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxTbmFwU3Rh
dGUoKQogCiAgICAgaWYgKGNvcnJlY3RlZFBvc2l0aW9uICE9IGN1cnJlbnRQb3NpdGlvbikgewog
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIgYWRqdXN0aW5n
IHBvc2l0aW9uIGZyb20gIiA8PCBjdXJyZW50UG9zaXRpb24gPDwgIiB0byAiIDw8IGNvcnJlY3Rl
ZFBvc2l0aW9uKTsKLSAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvcnJl
Y3RlZFBvc2l0aW9uKTsKKyAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24o
Y29ycmVjdGVkUG9zaXRpb24pOwogICAgIH0KIH0KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA5Y2FiZTQ5OWM2NDkyYmNlYTkzMjU0ODZmNWU4ZjM4
M2U5MzMzNTc4Li4xZTlhMmQzNzk3ZWRmNjBkZWJiNDU0MDY2MzYzYTk0OTcxODYzZGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTcxLDcgKzcxLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JT
dGF0dXMgc3RhdHVzKSB7IG1fY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0YXR1cyk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xs
KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAx
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihj
b25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBl
ZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlv
bihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xh
bXBlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFu
aW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGlu
Zzo6Q2xhbXBlZCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxD
bGFtcGluZzo6Q2xhbXBlZCk7CiAgICAgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRp
b24oU2Nyb2xsYmFyT3JpZW50YXRpb24sIGZsb2F0IG9mZnNldCk7CiAKQEAgLTM3Myw3ICszNzUs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIE5PVEU6IE9ubHkgY2FsbGVkIGZyb20gdGhlIFNj
cm9sbEFuaW1hdG9yLgogICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxBbmltYXRvcjsKLSAgICB2b2lk
IHNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xsT2Zmc2V0Jik7CisgICAg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbkZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24m
KTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xh
c3NlcyB0byBwZXJmb3JtIHRoZSBhY3R1YWwKICAgICAvLyBzY3JvbGwgb2YgdGhlIGNvbnRlbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggMDdhYzFhYTU3NjYwZmE4MzE3OWJjN2M5NzE0ZTllOWI5
ZDBiMDhiOC4uY2QzM2FhNDUxMTU1M2JiZmFhODczMmJjNjc5ODgwN2QxYzBjYzcwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVy
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmNwcApAQCAtMTA5LDkgKzEwOSw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51
CiB9CiAjZW5kaWYKIAotdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbENsYW1waW5n
IGNsYW1waW5nKQorYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbFRvUG9zaXRpb25X
aXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxDbGFtcGlu
ZyBjbGFtcGluZykKIHsKLSAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gU2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xsYWJs
ZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsK
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogCkBAIC0xMjAs
NyArMTE5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmYKICAgICAgICAgbV9zbW9vdGhBbmlt
YXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CiAjZW5kaWYKIAotICAgIFNjcm9s
bEFuaW1hdG9yOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24ob2Zmc2V0LCBjbGFtcGlu
Zyk7CisgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFu
aW1hdGlvbihwb3NpdGlvbiwgY2xhbXBpbmcpOwogfQogCiBib29sIFNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmgKaW5kZXggMGUwNWZjNjIzNWI0Zjk0YjQzMzY4MGNjMTg5MmU1NDBlNjU2Zjgy
ZS4uNDM4MjQ4NmQ4ODFhOTY1YjIxZDNjMmFkZjc5ZWVjYzk5MjY2OGQ1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFy
aXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBTY3JvbGxCZWhhdmlvcikgb3ZlcnJp
ZGU7CiAjZW5kaWYKLSAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25z
dCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcpIG92ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xs
VG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENsYW1w
aW5nKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5oCmluZGV4IDQ5ZjBiNGIxZDc5Zjc3YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLjY0OWI0
Y2Y1NDQ1MDk4YTMzMTIyODM4NTBiNTE3MmNhMWNkMzI3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBAIC04MCw3ICs4MCw4IEBAIHBy
aXZhdGU6CiAgICAgRmxvYXRTaXplIG1fY29udGVudEFyZWFTY3JvbGxlZFRpbWVyU2Nyb2xsRGVs
dGE7CiAKICAgICBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIsIFNjcm9sbEJlaGF2aW9yKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcpIG92ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xsVG9Qb3Np
dGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wg
c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24sIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIG92ZXJyaWRlOwog
CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIGJvb2wgc2hvdWxkRm9yd2FyZFdoZWVs
RXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3Q7CkBAIC0xMzIs
OCArMTMzLDYgQEAgcHJpdmF0ZToKIAogICAgIEZsb2F0UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRp
b25JZk5lY2Vzc2FyeShjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAKLSAgICB2b2lkIGltbWVk
aWF0ZVNjcm9sbFRvUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENsYW1waW5nID0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOwotCiAgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW0KaW5kZXggMTI4OTQzMjA1NDM2ZjA4NGM2ZDZjYjVjNDZjYTFkOWEzOTQxNjI0Yy4u
MDIxNGE2ODFjYzMzNTZhMGFhY2JiMmYzYjU1ZDQ0NjA3NzI2ZmU1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNzg3LDIyICs3
ODcsMTkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcmkKIHsKICAgICBtX2hhdmVTY3JvbGxlZFNp
bmNlUGFnZUxvYWQgPSB0cnVlOwogCi0gICAgaWYgKCFzY3JvbGxBbmltYXRpb25FbmFibGVkRm9y
U3lzdGVtKCkgfHwgIW1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxh
cml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwotCi0gICAgaWYgKGdyYW51bGFyaXR5
ID09IFNjcm9sbEJ5UGl4ZWwpCi0gICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
KG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwot
CiAgICAgLy8gVGhpcyBtZXRob2QgZG9lc24ndCBkbyBkaXJlY3Rpb25hbCBzbmFwcGluZywgYnV0
IG91ciBiYXNlIGNsYXNzIGRvZXMuIEl0IHdpbGwgY2FsbCBpbnRvCiAgICAgLy8gU2Nyb2xsQW5p
bWF0b3JNYWM6OnNjcm9sbCBhZ2FpbiB3aXRoIHRoZSBzbmFwcGVkIHBvc2l0aW9ucyBhbmQgU2Ny
b2xsQmVoYXZpb3I6OkRlZmF1bHQuCiAgICAgaWYgKGJlaGF2aW9yID09IFNjcm9sbEJlaGF2aW9y
OjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpCiAgICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6
c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZp
b3IpOwogCi0gICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9z
aXRpb24oKTsKKyAgICBib29sIHNob3VsZEFuaW1hdGUgPSBzY3JvbGxBbmltYXRpb25FbmFibGVk
Rm9yU3lzdGVtKCkgJiYgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSAm
JiBncmFudWxhcml0eSAhPSBTY3JvbGxCeVBpeGVsOwogICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRp
b24gPSBwb3NpdGlvbkZyb21TdGVwKG9yaWVudGF0aW9uLCBzdGVwLCBtdWx0aXBsaWVyKTsKLSAg
ICBuZXdQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihtX3Njcm9sbGFi
bGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1T
Y3JvbGxQb3NpdGlvbigpKTsKLSAgICBpZiAoY3VycmVudFBvc2l0aW9uID09IG5ld1Bvc2l0aW9u
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbmV3UG9zaXRpb24gPSBuZXdQb3NpdGlvbi5j
b25zdHJhaW5lZEJldHdlZW4oc2Nyb2xsYWJsZUFyZWEoKS5taW5pbXVtU2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsYWJsZUFyZWEoKS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7CisKKyAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbEFuaW1hdG9yTWFjOjpzY3Jv
bGwgZnJvbSAiIDw8IGN1cnJlbnRQb3NpdGlvbigpIDw8ICIgdG8gIiA8PCBuZXdQb3NpdGlvbik7
CisKKyAgICBpZiAoIXNob3VsZEFuaW1hdGUpCisgICAgICAgIHJldHVybiBzY3JvbGxUb1Bvc2l0
aW9uV2l0aG91dEFuaW1hdGlvbihuZXdQb3NpdGlvbik7CiAKICAgICBpZiAoW21fc2Nyb2xsQW5p
bWF0aW9uSGVscGVyIF9pc0FuaW1hdGluZ10pIHsKICAgICAgICAgTlNQb2ludCB0YXJnZXRPcmln
aW4gPSBbbV9zY3JvbGxBbmltYXRpb25IZWxwZXIgdGFyZ2V0T3JpZ2luXTsKQEAgLTgxMiwxNiAr
ODA5LDI0IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpCiAgICAgICAgICAgICBuZXdQb3NpdGlv
bi5zZXRYKHRhcmdldE9yaWdpbi54KTsKICAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwgIiA8PCAiIGZyb20g
IiA8PCBjdXJyZW50UG9zaXRpb24gPDwgIiB0byAiIDw8IG5ld1Bvc2l0aW9uKTsKKyAgICBzY3Jv
bGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihuZXdQb3NpdGlvbik7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQoreworICAgIGJvb2wgcG9zaXRpb25D
aGFuZ2VkID0gbmV3UG9zaXRpb24gIT0gY3VycmVudFBvc2l0aW9uKCk7CisgICAgaWYgKCFwb3Np
dGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBbbV9zY3JvbGxBbmltYXRpb25IZWxwZXIgc2Ny
b2xsVG9Qb2ludDpuZXdQb3NpdGlvbl07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEZJWE1F
OiBNYXliZSB0aGlzIHNob3VsZCB0YWtlIGEgcG9zaXRpb24uCi12b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zm
c2V0LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNj
cm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKIHsKICAgICBbbV9zY3JvbGxBbmltYXRpb25IZWxw
ZXIgX3N0b3BSdW5dOwotICAgIGltbWVkaWF0ZVNjcm9sbFRvUG9zaXRpb24oU2Nyb2xsYWJsZUFy
ZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xs
YWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKSwgY2xhbXBpbmcpOworICAgIHJldHVybiBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24ocG9zaXRpb24sIGNsYW1w
aW5nKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvck1hYzo6YWRqdXN0U2Nyb2xsUG9z
aXRpb25JZk5lY2Vzc2FyeShjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKQEAgLTg0
NCwyMSArODQ5LDYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRp
b25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkKICAgICBtX3Njcm9sbGFibGVBcmVhLnNldENvbnN0cmFp
bnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGN1cnJlbnRseUNvbnN0cmFpbnNUb0NvbnRlbnRFZGdl
KTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcp
Ci17Ci0gICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKLSAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24gPSBjbGFtcGluZyA9PSBTY3Jv
bGxDbGFtcGluZzo6Q2xhbXBlZCA/IGFkanVzdFNjcm9sbFBvc2l0aW9uSWZOZWNlc3NhcnkobmV3
UG9zaXRpb24pIDogbmV3UG9zaXRpb247Ci0gCi0gICAgYm9vbCBwb3NpdGlvbkNoYW5nZWQgPSBh
ZGp1c3RlZFBvc2l0aW9uICE9IGN1cnJlbnRQb3NpdGlvbjsKLSAgICBpZiAoIXBvc2l0aW9uQ2hh
bmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEZsb2F0U2l6ZSBkZWx0YSA9IGFkanVzdGVkUG9zaXRpb24gLSBjdXJy
ZW50UG9zaXRpb247Ci0gICAgbV9jdXJyZW50UG9zaXRpb24gPSBhZGp1c3RlZFBvc2l0aW9uOwot
ICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Ci0gICAgdXBkYXRlQWN0aXZlU2Nyb2xs
U25hcEluZGV4Rm9yT2Zmc2V0KCk7Ci19Ci0KIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzVXNl
clNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogewogICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xs
ZXIuaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpOwpAQCAtOTIyLDcgKzkxMiw3IEBAIFN0cmluZyBT
Y3JvbGxBbmltYXRvck1hYzo6dmVydGljYWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25z
dAogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbkZvclNj
cm9sbEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbikKIHsKICAgICBBU1NF
UlQobV9zY3JvbGxBbmltYXRpb25IZWxwZXIpOwotICAgIGltbWVkaWF0ZVNjcm9sbFRvUG9zaXRp
b24obmV3UG9zaXRpb24pOworICAgIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbihuZXdQb3NpdGlvbik7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6
Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3Bw
CmluZGV4IDRhYjE1YzE4YzIxNGRiNTc4MTUwNzUxOTgwNzE3MzVmOWI1NDAxYWMuLmI2YjdhYjBh
MjEyNTI0ZWZlODdhYzM3ZWFkY2JlMTIwMDdjYzVlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTI2NSwx
MiArMjY1LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZz
ZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JiBzY3JvbGxPZmZzZXQsCiAgICAgc2V0Q3VycmVudFNjcm9s
bFR5cGUob3B0aW9ucy50eXBlKTsKIAogICAgIFNjcm9sbE9mZnNldCBzbmFwcGVkT2Zmc2V0ID0g
Y2VpbGVkSW50UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS5hZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFw
cGluZ0lmTmVlZGVkKGNsYW1wZWRTY3JvbGxPZmZzZXQsIG9wdGlvbnMuc25hcFBvaW50U2VsZWN0
aW9uTWV0aG9kKSk7CisgICAgYXV0byBzbmFwcGVkUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbkZy
b21PZmZzZXQoc25hcHBlZE9mZnNldCk7CiAgICAgaWYgKG9wdGlvbnMuYW5pbWF0ZWQgPT0gQW5p
bWF0ZWRTY3JvbGw6OlllcykKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0
V2l0aEFuaW1hdGlvbihzbmFwcGVkT2Zmc2V0KTsKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNj
cm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKHNuYXBwZWRQb3NpdGlvbik7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGF1dG8gc25hcHBlZFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0
KHNuYXBwZWRPZmZzZXQpOwogICAgICAgICBpZiAoIXJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0
ZShzbmFwcGVkUG9zaXRpb24sIG9wdGlvbnMudHlwZSwgb3B0aW9ucy5jbGFtcGluZykpCi0gICAg
ICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oc25hcHBlZE9mZnNldCwgb3B0
aW9ucy5jbGFtcGluZyk7CisgICAgICAgICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1h
dGlvbihzbmFwcGVkUG9zaXRpb24sIG9wdGlvbnMuY2xhbXBpbmcpOwogICAgICAgICBzZXRTY3Jv
bGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOwog
ICAgIH0KIApAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSA9IHRydWU7Ci0gICAgU2Nyb2xsT2Zmc2V0IG9yaWdp
bmFsU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCk7CisgICAgU2Nyb2xsUG9zaXRpb24gb3Jp
Z2luYWxTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7CiAKICAgICBjb21wdXRlU2Ny
b2xsRGltZW5zaW9ucygpOwogICAgIG1fbGF5ZXIudXBkYXRlU2VsZlBhaW50aW5nTGF5ZXIoKTsK
QEAgLTExODgsOCArMTE4OCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkKIAogICAgIHVwZGF0ZVNjcm9sbGJhcnNBZnRlckxh
eW91dCgpOwogCi0gICAgaWYgKG9yaWdpbmFsU2Nyb2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgp
KQotICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oSW50UG9pbnQoc2Nyb2xs
T2Zmc2V0KCkpKTsKKyAgICBpZiAob3JpZ2luYWxTY3JvbGxQb3NpdGlvbiAhPSBzY3JvbGxQb3Np
dGlvbigpKQorICAgICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihJbnRQb2lu
dChzY3JvbGxQb3NpdGlvbigpKSk7CiAKICAgICBpZiAobV9sYXllci5pc0NvbXBvc2l0ZWQoKSkg
ewogICAgICAgICBtX2xheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdHZW9tZXRyeVVwZGF0ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420970</attachid>
            <date>2021-02-19 08:16:50 -0800</date>
            <delta_ts>2021-02-22 00:28:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222111-20210219171648.patch</filename>
            <type>text/plain</type>
            <size>32892</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5ODBjNDRjOWZiMDYw
M2UwMmVmNzRmNDQ5NTk1NTQ2MmNmZTFmMC4uNWQ3ZjllMjI0NzZiZDBhZjk0OGQ3OWMxYjczZGFi
YWFiMDA0YzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTAyLTE5ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDbGVhbiB1cCBT
Y3JvbGxhYmxlQXJlYSBhbmQgU2Nyb2xsQW5pbWF0b3IgQVBJIGFuZCBjb252ZXJ0IGxlc3MgYmV0
d2VlbiBvZmZzZXRzIGFuZCBwb3NpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjExMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIHRoZSBBUElzIGV4cG9zZWQgYnkgU2Nyb2xsYWJs
ZUFyZWEgYW5kIFNjcm9sbEFuaW1hdG9yIHRvIG1ha2UgdGhlbSBtb3JlCisgICAgICAgIGNvbnNp
c3RlbnQuIFdpdGggdGhpcyBjaGFuZ2UgaXQgc2hvdWxkIGJlIGEgYml0IGVhc2llciB0byB0ZWxs
IGlmIGEgcGFydGljdWxhcgorICAgICAgICBtZXRob2Qgd2lsbCB0cmlnZ2VyIGFuIGFuaW1hdGlv
biBvciBub3QuIEluIGFkZGl0aW9uLCB3ZSBhY2NlcHQgcG9zaXRpb25zIChhcworICAgICAgICBv
cHBvc2VkIHRvIG9mZnNldHMpIGV2ZXJ5d2hlcmUsIHdoaWNoIGFsbG93cyB1cyB0byByZWR1Y2Ug
dGhlIG51bWJlciBvZgorICAgICAgICBvZmZzZXQgPC0+IHBvc2l0aW9uIGNvbnZlcnNpb25zLgor
CisgICAgICAgIEZpbmFsbHksIHRoaXMgY2hhbmdlIGlzIGFsc28gaW50ZXJlc3RpbmcgZm9yIHNj
cm9sbCBzbmFwLCBiZWNhdXNlIGl0IHdpbGwKKyAgICAgICAgbWFrZSBpdCBlYXNpZXIgdG8gdXNl
IGEgbmF0aXZlIGFuaW1hdGlvbiBvbiBNYWNPUyB0byB1c2UgZm9yIHNuYXBwaW5nIGFmdGVyCisg
ICAgICAgIHNjcm9sbGJhciB0aHVtYiBkcmFnZ2luZy4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9u
KTogVXNlIG5ldyBTY3JvbGxhYmxlQXJlYSBBUElzIHRoYXQKKyAgICAgICAgYWNjZXB0IHBvc2l0
aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhB
bmltYXRpb24pOiBBZGRlZCB0aGlzIHZlcnNpb24KKyAgICAgICAgb2YgdGhlIG1ldGhvZCB0aGF0
IHVzZXMgcG9zaXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb09m
ZnNldFdpdGhBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6
IFVwZGF0ZSBtZXRob2QgZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbCk6IFNp
bXBsaWZpZWQgYSBsaXR0bGUgYml0IHRoZSBjb2RlIHRoYXQgaGFuZGxlcworICAgICAgICBzY3Jv
bGwgc25hcHBpbmcgaGVyZS4gVW5pZmllZCBzY3JvbGwgc25hcCBhbmQgbm9uLXNjcm9sbCBzbmFw
IGNvbXBpbGF0aW9uIHBhdGhzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbik6IFRoaXMgbWV0aG9kCisgICAgICAgIG5vdyBj
b252ZXJ0cyB0byBhIHBvc2l0aW9uIGFuZCB0aGVuIGNhbGxzIHNjcm9sbFRvUG9zaXRpb25XaXRo
b3V0QW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRv
UG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKTogU3BsaXQgdGhpcyBvdXQKKyAgICAgICAgZnJvbSBz
Y3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKTogVGhpcyBtZXRob2Qgbm93Cisg
ICAgICAgIGNvbnZlcnRzIHRvIGEgcG9zaXRpb24gYW5kIGNhbGxzIHNjcm9sbFRvUG9zaXRpb25X
aXRoQW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRv
UG9zaXRpb25XaXRoQW5pbWF0aW9uKTogU3BsaXQgdGhpcworICAgICAgICBvdXQgZnJvbSBzY3Jv
bGxUb09mZnNldFdpdGhBbmltYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudCk6IENhbGwgc2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24K
KyAgICAgICAgaW5zdGVhZCBvZiB1c2luZyB0aGUgc2Nyb2xsKC4uLikgbWV0aG9kLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6IEVsaW1p
bmF0ZSBhIGNvbnZlcnNpb24gaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpzY3JvbGxXaXRob3V0QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjpzY3JvbGxUb09mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaDogVXBkYXRlIG1ldGhvZCBsaXN0LgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRl
U2Nyb2xsYmFycyk6IEVsaW1pbmF0ZSBhIGNvbnZlcnNpb24gaGVyZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIFJlbW92ZWQgc2Nyb2xsVG9PZmZzZXRX
aXRoQW5pbWF0aW9uIGFuZCBhZGRlZCB0d28gbmV3IG1ldGhvZHMgc2Nyb2xsVG9Qb3NpdGlvbldp
dGhBbmltYXRpb24KKyAgICAgICAgYW5kIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9u
LiBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24gaXMgc3RpbGwgdXNlZAorICAgICAgICBp
biBxdWl0ZSBhIGZldyBwbGFjZXMsIHNvIHdlIG1haW50YWluIHRoaXMuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFscyk6IFVzZSBz
ZXRTY3JvbGxQb3NpdGlvbkZyb21BbmltYXRpb24gbm93LgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYWJsZUFyZWE6OnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbik6IFJlbmFtZWQgZnJv
bSBzZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uCisgICAgICAgIGFuZCBlbGltaW5hdGVkIGEg
bWFuZGF0b3J5IGNub3ZlcnNpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOiBVcGRhdGUgbWV0aG9kIGRlY2xh
cmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbCk6IEhhbmRsZSBjYWxsaW5nIGlu
dG8gc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24KKyAgICAgICAgYW5kIHNjcm9sbFRv
UG9zaXRpb25XaXRoQW5pbWF0aW9uIG91cnNlbHZlcyBub3cgdGhhdCB3ZSBoYXZlIHRoaXMgQVBJ
LiBUaGlzIHNpbXBsaWZpZXMKKyAgICAgICAgcHJvZ3JhbSBmbG93IGEgYml0LgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbik6IEV4cG9zZSB0aGVzZSB0d28gbmV3CisgICAgICAgIG1ldGhvZHMg
d2hpY2ggYXJlIHBhcnQgb2YgdGhlIGJhc2UgY2xhc3MgQVBJIG5vdy4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppbW1lZGlhdGVTY3JvbGxUb1Bvc2l0aW9uRm9yU2Nyb2xs
QW5pbWF0aW9uKTogVXNlCisgICAgICAgIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbiBiZWNhdXNlIGl0IHdhcyB0aGUgc2FtZSBhcworICAgICAgICBpbW1l
ZGlhdGVTY3JvbGxUb1Bvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JN
YWM6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbik6IERl
bGV0ZWQuIE5vIGxvbmdlciB1c2VkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFRvT2Zmc2V0KTogVW5jb25kaXRpb25hbGx5IGNvbnZlcnQgdG8gYSBwb3Np
dGlvbgorICAgICAgICBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYTo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KTogVXNlIFNjcm9sbGFibGVBcmVh
OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbgorICAgICAgICBiZWNhdXNlIGl0IGVs
aW1pbmF0ZXMgb25lIGNvbnZlcnNpb24gYmV0d2VlbiB1bml0cy4KKwogMjAyMS0wMi0xOSAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogUmVxdWVzdCBz
ZXJ2ZXIgcHVibGljIGtleSB0byBnZW5lcmF0ZSBzZWNyZXQgdG9rZW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCA1YWYxZGMyYjU4NWNiYmVhMTA3MjliODdhODg5YWM0ZGQyNjljYjQy
Li5lYjgxODcwZDg2ZDc5ZTZiYWRkM2NkYWE5NDQ1ZjkxYjFhNTI4ODA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0yMzI3LDExICsyMzI3LDEyIEBAIHZvaWQgRnJhbWVWaWV3Ojpz
ZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYgc2Nyb2xsUG9zaXRpb24sIGNv
bnN0IFNjCiAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9y
KHBhZ2UtPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKIAogICAgIFNjcm9sbE9mZnNldCBzbmFw
cGVkT2Zmc2V0ID0gY2VpbGVkSW50UG9pbnQoc2Nyb2xsQW5pbWF0b3IoKS5hZGp1c3RTY3JvbGxP
ZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKHNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihzY3JvbGxQ
b3NpdGlvbiksIG9wdGlvbnMuc25hcFBvaW50U2VsZWN0aW9uTWV0aG9kKSk7CisgICAgYXV0byBz
bmFwcGVkUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoc25hcHBlZE9mZnNldCk7
CiAKICAgICBpZiAob3B0aW9ucy5hbmltYXRlZCA9PSBBbmltYXRlZFNjcm9sbDo6WWVzKQotICAg
ICAgICBzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24oc25hcHBlZE9mZnNldCwgY3VycmVudFNj
cm9sbFR5cGUoKSwgb3B0aW9ucy5jbGFtcGluZyk7CisgICAgICAgIHNjcm9sbFRvUG9zaXRpb25X
aXRoQW5pbWF0aW9uKHNuYXBwZWRQb3NpdGlvbiwgY3VycmVudFNjcm9sbFR5cGUoKSwgb3B0aW9u
cy5jbGFtcGluZyk7CiAgICAgZWxzZQotICAgICAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3Np
dGlvbihzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoc25hcHBlZE9mZnNldCksIG9wdGlvbnMpOwor
ICAgICAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihzbmFwcGVkUG9zaXRpb24sIG9w
dGlvbnMpOwogCiAgICAgc2V0Q3VycmVudFNjcm9sbFR5cGUob2xkU2Nyb2xsVHlwZSk7CiB9CkBA
IC0zNzYzLDE1ICszNzY0LDE1IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUbyhjb25zdCBTY3Jv
bGxQb3NpdGlvbiYgbmV3UG9zaXRpb24pCiAgICAgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCk7CiB9
CiAKLXZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24oY29uc3QgU2Ny
b2xsT2Zmc2V0JiBvZmZzZXQsIFNjcm9sbFR5cGUgc2Nyb2xsVHlwZSwgU2Nyb2xsQ2xhbXBpbmcp
Cit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgU2Ny
b2xsUG9zaXRpb24mIHBvc2l0aW9uLCBTY3JvbGxUeXBlIHNjcm9sbFR5cGUsIFNjcm9sbENsYW1w
aW5nKQogewogICAgIGF1dG8gcHJldmlvdXNTY3JvbGxUeXBlID0gY3VycmVudFNjcm9sbFR5cGUo
KTsKICAgICBzZXRDdXJyZW50U2Nyb2xsVHlwZShzY3JvbGxUeXBlKTsKIAogICAgIGlmIChjdXJy
ZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25O
YXRpdmVBbmltYXRpb24pCiAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuY2FuY2VsQW5pbWF0aW9u
cygpOwotICAgIGlmIChvZmZzZXQgIT0gdGhpcy0+c2Nyb2xsT2Zmc2V0KCkpCi0gICAgICAgIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24ob2Zmc2V0KTsKKyAgICBp
ZiAocG9zaXRpb24gIT0gdGhpcy0+c2Nyb2xsUG9zaXRpb24oKSkKKyAgICAgICAgU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKHBvc2l0aW9uKTsKIAogICAgIHNl
dEN1cnJlbnRTY3JvbGxUeXBlKHByZXZpb3VzU2Nyb2xsVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAppbmRleCA1YjMyYjZmZDlkZWU5NGJjMTU0NjczMzVhMDlhMTEzNTQzNzY4OThhLi4w
NTlmOGE3YTlkMmZhMDI3ZDkyOGNlN2ZlZDI4ZTNkMzUxM2ZmNDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKQEAgLTY3NCw3ICs2NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbmRlckxh
eWVyRGlkU2Nyb2xsKGNvbnN0IFJlbmRlckxheWVyJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihjb25zdCBTY3JvbGxPZmZzZXQmLCBTY3Jv
bGxUeXBlID0gU2Nyb2xsVHlwZTo6UHJvZ3JhbW1hdGljLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9s
bENsYW1waW5nOjpDbGFtcGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvUG9z
aXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNj
cm9sbFR5cGU6OlByb2dyYW1tYXRpYywgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6
Q2xhbXBlZCk7CiAKICAgICBib29sIGluVXBkYXRlRW1iZWRkZWRPYmplY3RzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pblVwZGF0ZUVtYmVkZGVkT2JqZWN0czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggYWI5NjcxNzBmYTczMDMyNDIwOGQ2OGNiZTk2
NWIyZmM0Y2JjZmRjZS4uY2Y2OWEyZjZhMDllYzA1NThmMzcwMjk1ZWY5ZjFlN2UyNTJkNTA1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtODMsNTcg
KzgzLDU4IEBAIFNjcm9sbEFuaW1hdG9yOjp+U2Nyb2xsQW5pbWF0b3IoKQogYm9vbCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgU2Ny
b2xsQmVoYXZpb3IgYmVoYXZpb3IpCiB7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICBpZiAoYmVoYXZpb3IgIT0gU2Nyb2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZykK
LSAgICAgICAgcmV0dXJuIHNjcm9sbFdpdGhvdXRBbmltYXRpb24ob3JpZW50YXRpb24sIHN0ZXAs
IG11bHRpcGxpZXIpOwotCi0gICAgRmxvYXRTaXplIHNjcm9sbE9yaWdpbiA9IHRvRmxvYXRTaXpl
KG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpOwotICAgIEZsb2F0UG9pbnQgbmV3UG9z
aXRpb24gPSBwb3NpdGlvbkZyb21TdGVwKG9yaWVudGF0aW9uLCBzdGVwLCBtdWx0aXBsaWVyKTsK
LSAgICBhdXRvIG5ld09mZnNldCA9IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9z
aXRpb24obmV3UG9zaXRpb24sIHNjcm9sbE9yaWdpbik7Ci0gICAgYXV0byBjdXJyZW50T2Zmc2V0
ID0gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih0aGlzLT5jdXJyZW50
UG9zaXRpb24oKSwgc2Nyb2xsT3JpZ2luKTsKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpv
bnRhbFNjcm9sbGJhcikgewotICAgICAgICBuZXdPZmZzZXQuc2V0WChtX3Njcm9sbENvbnRyb2xs
ZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBu
ZXdPZmZzZXQueCgpLCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LngoKSkpOwotICAgICAgICBu
ZXdQb3NpdGlvbiA9IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQobmV3
T2Zmc2V0LCBzY3JvbGxPcmlnaW4pOwotICAgICAgICByZXR1cm4gc2Nyb2xsKEhvcml6b250YWxT
Y3JvbGxiYXIsIGdyYW51bGFyaXR5LCBuZXdQb3NpdGlvbi54KCkgLSB0aGlzLT5jdXJyZW50UG9z
aXRpb24oKS54KCksIDEuMCk7CisgICAgaWYgKGJlaGF2aW9yID09IFNjcm9sbEJlaGF2aW9yOjpE
b0RpcmVjdGlvbmFsU25hcHBpbmcpIHsKKyAgICAgICAgYXV0byBuZXdPZmZzZXQgPSBTY3JvbGxh
YmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHBvc2l0aW9uRnJvbVN0ZXAob3JpZW50
YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIpLCB0b0Zsb2F0U2l6ZShtX3Njcm9sbGFibGVBcmVhLnNj
cm9sbE9yaWdpbigpKSk7CisgICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IG1fc2Nyb2xsYWJs
ZUFyZWEuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7CisgICAgICAgICAgICBuZXdPZmZzZXQuc2V0WChtX3Njcm9sbENvbnRy
b2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCBuZXdPZmZzZXQueCgpLCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LngoKSkpOworICAgICAg
ICAgICAgcmV0dXJuIHNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgbmV3
T2Zmc2V0LngoKSAtIGN1cnJlbnRPZmZzZXQueCgpLCAxLjApOworICAgICAgICB9CisgICAgICAg
IG5ld09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlv
bihTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBtdWx0aXBsaWVyLCBj
dXJyZW50T2Zmc2V0LnkoKSkpOworICAgICAgICByZXR1cm4gc2Nyb2xsKFZlcnRpY2FsU2Nyb2xs
YmFyLCBncmFudWxhcml0eSwgbmV3T2Zmc2V0LnkoKSAtIGN1cnJlbnRPZmZzZXQueSgpLCAxLjAp
OwogICAgIH0KLQotICAgIG5ld09mZnNldC5zZXRZKG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RT
Y3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdQb3NpdGlvbi55
KCksIG11bHRpcGxpZXIsIGN1cnJlbnRPZmZzZXQueSgpKSk7Ci0gICAgbmV3UG9zaXRpb24gPSBT
Y3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KG5ld09mZnNldCwgc2Nyb2xs
T3JpZ2luKTsKLSAgICByZXR1cm4gc2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBncmFudWxhcml0
eSwgbmV3UG9zaXRpb24ueSgpIC0gdGhpcy0+Y3VycmVudFBvc2l0aW9uKCkueSgpLCAxLjApOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZ3JhbnVsYXJpdHkpOwogICAgIFVOVVNFRF9QQVJBTShi
ZWhhdmlvcik7Ci0gICAgcmV0dXJuIHNjcm9sbFdpdGhvdXRBbmltYXRpb24ob3JpZW50YXRpb24s
IHN0ZXAsIG11bHRpcGxpZXIpOwogI2VuZGlmCisKKyAgICByZXR1cm4gc2Nyb2xsVG9Qb3NpdGlv
bldpdGhvdXRBbmltYXRpb24ocG9zaXRpb25Gcm9tU3RlcChvcmllbnRhdGlvbiwgc3RlcCwgbXVs
dGlwbGllcikpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxXaXRob3V0QW5pbWF0
aW9uKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBt
dWx0aXBsaWVyKQorYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5p
bWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcp
CiB7Ci0gICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRp
b24oKTsKLSAgICBGbG9hdFBvaW50IG5ld1Bvc2l0aW9uID0gcG9zaXRpb25Gcm9tU3RlcChvcmll
bnRhdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7Ci0gICAgbmV3UG9zaXRpb24gPSBuZXdQb3NpdGlv
bi5jb25zdHJhaW5lZEJldHdlZW4obV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRp
b24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgaWYg
KGN1cnJlbnRQb3NpdGlvbiA9PSBuZXdQb3NpdGlvbikKKyAgICByZXR1cm4gc2Nyb2xsVG9Qb3Np
dGlvbldpdGhvdXRBbmltYXRpb24oU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9m
ZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKHNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luKCkp
KSwgY2xhbXBpbmcpOworfQorCitib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBp
bmcgY2xhbXBpbmcpCit7CisgICAgYXV0byBhZGp1c3RlZFBvc2l0aW9uID0gY2xhbXBpbmcgPT0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQgPyBwb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4oc2Ny
b2xsYWJsZUFyZWEoKS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xsYWJsZUFyZWEoKS5t
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKSkgOiBwb3NpdGlvbjsKKyAgICBib29sIHBvc2l0aW9uQ2hh
bmdlZCA9IGFkanVzdGVkUG9zaXRpb24gIT0gY3VycmVudFBvc2l0aW9uKCk7CisgICAgaWYgKCFw
b3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IG5ld1Bv
c2l0aW9uOwotICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChuZXdQb3NpdGlvbiAtIGN1cnJlbnRQ
b3NpdGlvbik7CisgICAgYXV0byBkZWx0YSA9IGFkanVzdGVkUG9zaXRpb24gLSBjdXJyZW50UG9z
aXRpb24oKTsKKyAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247CisgICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKKyAgICB1cGRhdGVBY3RpdmVTY3JvbGxTbmFw
SW5kZXhGb3JPZmZzZXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsVG9PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQorYm9vbCBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG9mZnNldCkKIHsKLSAgICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c2V0Q3VycmVu
dFBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKTsKLSAgICBhdXRvIG5ld1Bvc2l0aW9uID0gU2Ny
b2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXpl
KG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKTsKLSAgICBtX2FuaW1hdGlvblByb2dy
YW1tYXRpY1Njcm9sbC0+c2Nyb2xsKG5ld1Bvc2l0aW9uKTsKLSAgICBtX3Njcm9sbGFibGVBcmVh
LnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2
ZUFuaW1hdGlvbik7CisgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQob2Zmc2V0LCB0b0Zsb2F0U2l6
ZShzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9yaWdpbigpKSkpOwogfQogCi12b2lkIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYg
b2Zmc2V0LCBTY3JvbGxDbGFtcGluZykKK2Jvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9z
aXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogewotICAg
IEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25G
cm9tT2Zmc2V0KG9mZnNldCwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmln
aW4oKSkpOwotICAgIEZsb2F0U2l6ZSBkZWx0YSA9IG5ld1Bvc2l0aW9uIC0gY3VycmVudFBvc2l0
aW9uKCk7Ci0gICAgbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKLSAgICBub3RpZnlQ
b3NpdGlvbkNoYW5nZWQoZGVsdGEpOwotICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZv
ck9mZnNldCgpOworICAgIGJvb2wgcG9zaXRpb25DaGFuZ2VkID0gbmV3UG9zaXRpb24gIT0gY3Vy
cmVudFBvc2l0aW9uKCk7CisgICAgaWYgKCFwb3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVB
cmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c2V0Q3VycmVudFBvc2l0aW9uKG1fY3Vy
cmVudFBvc2l0aW9uKTsKKyAgICBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbC0+c2Nyb2xs
KG5ld1Bvc2l0aW9uKTsKKyAgICBzY3JvbGxhYmxlQXJlYSgpLnNldFNjcm9sbEJlaGF2aW9yU3Rh
dHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6OnBvc2l0aW9uRnJvbVN0
ZXAoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11
bHRpcGxpZXIpCkBAIC0yMDgsNyArMjA5LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAgICAgICAgICAg
ICAgIGRlbHRhWSA9IC1kZWx0YVk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZS5o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsV2l0aG91
dEFuaW1hdGlvbihWZXJ0aWNhbFNjcm9sbGJhciwgdmVydGljYWxTY3JvbGxiYXItPnBpeGVsU3Rl
cCgpLCAtZGVsdGFZKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFu
aW1hdGlvbihwb3NpdGlvbkZyb21TdGVwKFZlcnRpY2FsU2Nyb2xsYmFyLCB2ZXJ0aWNhbFNjcm9s
bGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVkpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBzY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5LCB2ZXJ0aWNhbFNj
cm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVkpOwogICAgICAgICB9CkBAIC0yMjEsNyArMjIy
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGUpCiAgICAgICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZS5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFz
KCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsV2l0aG91dEFuaW1hdGlvbihIb3Jpem9udGFsU2Ny
b2xsYmFyLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCk7CisgICAg
ICAgICAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24ocG9zaXRpb25Gcm9t
U3RlcChIb3Jpem9udGFsU2Nyb2xsYmFyLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAo
KSwgLWRlbHRhWCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNjcm9sbChI
b3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgaG9yaXpvbnRhbFNjcm9sbGJhci0+cGl4
ZWxTdGVwKCksIC1kZWx0YVgpOwogICAgICAgICB9CkBAIC0yNTcsOCArMjU4LDcgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvcjo6dXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCkKIHZv
aWQgU2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZChjb25zdCBGbG9hdFNpemUm
IGRlbHRhKQogewogICAgIFVOVVNFRF9QQVJBTShkZWx0YSk7Ci0gICAgLy8gRklYTUU6IG5lZWQg
dG8gbm90IG1hcCBiYWNrIGFuZCBmb3J0aCBhbGwgdGhlIHRpbWUuCi0gICAgbV9zY3JvbGxhYmxl
QXJlYS5zZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
T2Zmc2V0RnJvbVBvc2l0aW9uKHJvdW5kZWRJbnRQb2ludChjdXJyZW50UG9zaXRpb24oKSkpKTsK
KyAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihyb3Vu
ZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkpKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICBtX3Njcm9sbENvbnRyb2xsZXIu
c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuaAppbmRleCAyMGIxM2U2ODBkYWZlYjhjZTEyNDliNDIxZGFiMmMxY2Q0MDg3YzhiLi5l
NDllN2ZmMzYxODNlOGMyYWU3NjNiMTJhNTkwNDgyZDI2NzJiYTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTc4LDEwICs3OCwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gZGVzdGluYXRpb24gYW5kIHJldHVybnMgdHJ1ZS4gIFNjcm9sbGluZyBtYXkgYmUgaW1t
ZWRpYXRlIG9yIGFuaW1hdGVkLgogICAgIC8vIFRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9u
IGFsd2F5cyBzY3JvbGxzIGltbWVkaWF0ZWx5LCBuZXZlciBhbmltYXRlcy4KICAgICB2aXJ0dWFs
IGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxv
YXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgU2Nyb2xsQmVoYXZpb3IgPSBTY3JvbGxCZWhhdmlv
cjo6RGVmYXVsdCk7Ci0gICAgYm9vbCBzY3JvbGxXaXRob3V0QW5pbWF0aW9uKFNjcm9sbGJhck9y
aWVudGF0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKIAotICAgIHZvaWQgc2Ny
b2xsVG9PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxU
b09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENsYW1waW5n
ID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOworICAgIGJvb2wgc2Nyb2xsVG9PZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENs
YW1waW5nOjpDbGFtcGVkKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsVG9Qb3NpdGlvbldpdGhv
dXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1waW5nID0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOworCisgICAgYm9vbCBzY3JvbGxUb09mZnNldFdpdGhB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxUb1Bv
c2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICBTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMzMzZTkxZTVhYjgy
YTM3MmI1Yjc2NDI3MWViOWM3NTU4ODY4ZWJlZS4uMzRiYWI5N2M1YTlkZjRiNDJjOWNiOTE2ZjVm
YzI1YjQ4MjYzNDU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAg
LTU5Nyw3ICs1OTcsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3Qg
U2Nyb2xsUG9zaXRpb24mIGRlc2lyZWRQb3NpdGlvbikKICAgICAgICAgICAgIGFkanVzdGVkU2Ny
b2xsUG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGFkanVzdGVkU2Ny
b2xsUG9zaXRpb24pOwogCiAgICAgICAgIGlmIChhZGp1c3RlZFNjcm9sbFBvc2l0aW9uICE9IHNj
cm9sbFBvc2l0aW9uKCkgfHwgc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKSB7Ci0gICAgICAgICAgICBT
Y3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHNjcm9sbE9mZnNl
dEZyb21Qb3NpdGlvbihhZGp1c3RlZFNjcm9sbFBvc2l0aW9uKSk7CisgICAgICAgICAgICBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oYWRqdXN0ZWRTY3Jv
bGxQb3NpdGlvbik7CiAgICAgICAgICAgICByZXNldFNjcm9sbE9yaWdpbkNoYW5nZWQoKTsKICAg
ICAgICAgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHAKaW5kZXggOTgwZjBmMGIwYzIxZTJmMjAyMDhlNTVlZTc3NGI4ZjhlODg4NzBhOC4uNjFmN2Vh
NTIwNWYwOTI3YTZjNzg5NGUyMjY0NjhhOTBkN2NjNmZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMTQzLDEwICsxNDMsMTYgQEAgYm9vbCBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGEKICAgICByZXR1cm4gc2Nyb2xsQW5pbWF0b3IoKS5zY3JvbGwob3JpZW50
YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVyLCBTY3JvbGxBbmltYXRvcjo6U2Ny
b2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7CiB9CiAKLXZvaWQgU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZz
ZXQsIFNjcm9sbENsYW1waW5nKQordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9Qb3NpdGlv
bldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1w
aW5nIGNsYW1waW5nKQogewotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiU2Nyb2xsYWJsZUFyZWEgIiA8PCB0aGlzIDw8ICIgc2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0
aW9uICIgPDwgb2Zmc2V0KTsKLSAgICBzY3JvbGxBbmltYXRvcigpLnNjcm9sbFRvT2Zmc2V0KG9m
ZnNldCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxh
YmxlQXJlYSAiIDw8IHRoaXMgPDwgIiBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbiAi
IDw8IHBvc2l0aW9uKTsKKyAgICBzY3JvbGxBbmltYXRvcigpLnNjcm9sbFRvUG9zaXRpb25XaXRo
b3V0QW5pbWF0aW9uKHBvc2l0aW9uLCBjbGFtcGluZyk7Cit9CisKK3ZvaWQgU2Nyb2xsYWJsZUFy
ZWE6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBTY3JvbGxDbGFtcGluZykKK3sKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBz
dHJlYW0gPDwgIlNjcm9sbGFibGVBcmVhICIgPDwgdGhpcyA8PCAiIHNjcm9sbFRvUG9zaXRpb25X
aXRoQW5pbWF0aW9uICIgPDwgcG9zaXRpb24pOworICAgIHNjcm9sbEFuaW1hdG9yKCkuc2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24ocG9zaXRpb24pOwogfQogCiB2b2lkIFNjcm9sbGFibGVB
cmVhOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zm
c2V0LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKQEAgLTE1OSw5ICsxNjUsOSBAQCB2b2lkIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YQogewogICAgIGF1dG8gY3VycmVudE9mZnNldCA9IHNjcm9sbE9mZnNl
dEZyb21Qb3NpdGlvbihJbnRQb2ludChzY3JvbGxBbmltYXRvcigpLmN1cnJlbnRQb3NpdGlvbigp
KSk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAg
IHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KG9mZnNldCwgY3VycmVu
dE9mZnNldC55KCkpKTsKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zY3JvbGxUb09mZnNldFdp
dGhvdXRBbmltYXRpb24oRmxvYXRQb2ludChvZmZzZXQsIGN1cnJlbnRPZmZzZXQueSgpKSk7CiAg
ICAgZWxzZQotICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oRmxvYXRQb2lu
dChjdXJyZW50T2Zmc2V0LngoKSwgb2Zmc2V0KSk7CisgICAgICAgIHNjcm9sbEFuaW1hdG9yKCku
c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0UG9pbnQoY3VycmVudE9mZnNldC54
KCksIG9mZnNldCkpOwogfQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpub3RpZnlTY3JvbGxQb3Np
dGlvbkNoYW5nZWQoY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMjMwLDEzICsy
MzYsMTEgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiAvLyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9tIElu
dGVybmFscyBmb3IgdGVzdGluZy4KIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbE9mZnNl
dEZyb21JbnRlcm5hbHMoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvZmZzZXQpCiB7Ci0gICAgc2V0U2Ny
b2xsT2Zmc2V0RnJvbUFuaW1hdGlvbihvZmZzZXQpOworICAgIHNldFNjcm9sbFBvc2l0aW9uRnJv
bUFuaW1hdGlvbihzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQob2Zmc2V0KSk7CiB9CiAKLXZvaWQg
U2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xs
T2Zmc2V0JiBvZmZzZXQpCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3NpdGlvbkZy
b21BbmltYXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogewotICAgIFNjcm9s
bFBvc2l0aW9uIHBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KG9mZnNldCk7Ci0g
ICAgCiAgICAgYXV0byBzY3JvbGxUeXBlID0gY3VycmVudFNjcm9sbFR5cGUoKTsKICAgICBhdXRv
IGNsYW1waW5nID0gc2Nyb2xsVHlwZSA9PSBTY3JvbGxUeXBlOjpVc2VyID8gU2Nyb2xsQ2xhbXBp
bmc6OlVuY2xhbXBlZCA6IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkOwogICAgIGlmIChyZXF1ZXN0
U2Nyb2xsUG9zaXRpb25VcGRhdGUocG9zaXRpb24sIHNjcm9sbFR5cGUsIGNsYW1waW5nKSkKQEAg
LTU1MCw3ICs1NTQsNyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxTbmFwU3Rh
dGUoKQogCiAgICAgaWYgKGNvcnJlY3RlZFBvc2l0aW9uICE9IGN1cnJlbnRQb3NpdGlvbikgewog
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIgYWRqdXN0aW5n
IHBvc2l0aW9uIGZyb20gIiA8PCBjdXJyZW50UG9zaXRpb24gPDwgIiB0byAiIDw8IGNvcnJlY3Rl
ZFBvc2l0aW9uKTsKLSAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvcnJl
Y3RlZFBvc2l0aW9uKTsKKyAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24o
Y29ycmVjdGVkUG9zaXRpb24pOwogICAgIH0KIH0KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA5Y2FiZTQ5OWM2NDkyYmNlYTkzMjU0ODZmNWU4ZjM4
M2U5MzMzNTc4Li4xZTlhMmQzNzk3ZWRmNjBkZWJiNDU0MDY2MzYzYTk0OTcxODYzZGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTcxLDcgKzcxLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JT
dGF0dXMgc3RhdHVzKSB7IG1fY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0YXR1cyk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xs
KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAx
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihj
b25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBl
ZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlv
bihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xh
bXBlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFu
aW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGlu
Zzo6Q2xhbXBlZCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxD
bGFtcGluZzo6Q2xhbXBlZCk7CiAgICAgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRp
b24oU2Nyb2xsYmFyT3JpZW50YXRpb24sIGZsb2F0IG9mZnNldCk7CiAKQEAgLTM3Myw3ICszNzUs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIE5PVEU6IE9ubHkgY2FsbGVkIGZyb20gdGhlIFNj
cm9sbEFuaW1hdG9yLgogICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxBbmltYXRvcjsKLSAgICB2b2lk
IHNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xsT2Zmc2V0Jik7CisgICAg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbkZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24m
KTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xh
c3NlcyB0byBwZXJmb3JtIHRoZSBhY3R1YWwKICAgICAvLyBzY3JvbGwgb2YgdGhlIGNvbnRlbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggMDdhYzFhYTU3NjYwZmE4MzE3OWJjN2M5NzE0ZTllOWI5
ZDBiMDhiOC4uY2QzM2FhNDUxMTU1M2JiZmFhODczMmJjNjc5ODgwN2QxYzBjYzcwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVy
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmNwcApAQCAtMTA5LDkgKzEwOSw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51
CiB9CiAjZW5kaWYKIAotdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbENsYW1waW5n
IGNsYW1waW5nKQorYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbFRvUG9zaXRpb25X
aXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxDbGFtcGlu
ZyBjbGFtcGluZykKIHsKLSAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gU2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xsYWJs
ZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsK
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogCkBAIC0xMjAs
NyArMTE5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmYKICAgICAgICAgbV9zbW9vdGhBbmlt
YXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CiAjZW5kaWYKIAotICAgIFNjcm9s
bEFuaW1hdG9yOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24ob2Zmc2V0LCBjbGFtcGlu
Zyk7CisgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFu
aW1hdGlvbihwb3NpdGlvbiwgY2xhbXBpbmcpOwogfQogCiBib29sIFNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmgKaW5kZXggMGUwNWZjNjIzNWI0Zjk0YjQzMzY4MGNjMTg5MmU1NDBlNjU2Zjgy
ZS4uNDM4MjQ4NmQ4ODFhOTY1YjIxZDNjMmFkZjc5ZWVjYzk5MjY2OGQ1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFy
aXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBTY3JvbGxCZWhhdmlvcikgb3ZlcnJp
ZGU7CiAjZW5kaWYKLSAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25z
dCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcpIG92ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xs
VG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENsYW1w
aW5nKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5oCmluZGV4IDQ5ZjBiNGIxZDc5Zjc3YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLjY0OWI0
Y2Y1NDQ1MDk4YTMzMTIyODM4NTBiNTE3MmNhMWNkMzI3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBAIC04MCw3ICs4MCw4IEBAIHBy
aXZhdGU6CiAgICAgRmxvYXRTaXplIG1fY29udGVudEFyZWFTY3JvbGxlZFRpbWVyU2Nyb2xsRGVs
dGE7CiAKICAgICBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIsIFNjcm9sbEJlaGF2aW9yKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcpIG92ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xsVG9Qb3Np
dGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wg
c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24sIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIG92ZXJyaWRlOwog
CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIGJvb2wgc2hvdWxkRm9yd2FyZFdoZWVs
RXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3Q7CkBAIC0xMzIs
OCArMTMzLDYgQEAgcHJpdmF0ZToKIAogICAgIEZsb2F0UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRp
b25JZk5lY2Vzc2FyeShjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAKLSAgICB2b2lkIGltbWVk
aWF0ZVNjcm9sbFRvUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbENsYW1waW5nID0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOwotCiAgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW0KaW5kZXggMTI4OTQzMjA1NDM2ZjA4NGM2ZDZjYjVjNDZjYTFkOWEzOTQxNjI0Yy4u
MDcxOTdlMDM4YTNhMjg0ODMxYTY5MDdhODc0MGM5MWUxY2Q2NTlhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNzg3LDIyICs3
ODcsMTkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcmkKIHsKICAgICBtX2hhdmVTY3JvbGxlZFNp
bmNlUGFnZUxvYWQgPSB0cnVlOwogCi0gICAgaWYgKCFzY3JvbGxBbmltYXRpb25FbmFibGVkRm9y
U3lzdGVtKCkgfHwgIW1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxh
cml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwotCi0gICAgaWYgKGdyYW51bGFyaXR5
ID09IFNjcm9sbEJ5UGl4ZWwpCi0gICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
KG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZpb3IpOwot
CiAgICAgLy8gVGhpcyBtZXRob2QgZG9lc24ndCBkbyBkaXJlY3Rpb25hbCBzbmFwcGluZywgYnV0
IG91ciBiYXNlIGNsYXNzIGRvZXMuIEl0IHdpbGwgY2FsbCBpbnRvCiAgICAgLy8gU2Nyb2xsQW5p
bWF0b3JNYWM6OnNjcm9sbCBhZ2FpbiB3aXRoIHRoZSBzbmFwcGVkIHBvc2l0aW9ucyBhbmQgU2Ny
b2xsQmVoYXZpb3I6OkRlZmF1bHQuCiAgICAgaWYgKGJlaGF2aW9yID09IFNjcm9sbEJlaGF2aW9y
OjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpCiAgICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6
c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllciwgYmVoYXZp
b3IpOwogCi0gICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9z
aXRpb24oKTsKKyAgICBib29sIHNob3VsZEFuaW1hdGUgPSBzY3JvbGxBbmltYXRpb25FbmFibGVk
Rm9yU3lzdGVtKCkgJiYgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSAm
JiBncmFudWxhcml0eSAhPSBTY3JvbGxCeVBpeGVsOwogICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRp
b24gPSBwb3NpdGlvbkZyb21TdGVwKG9yaWVudGF0aW9uLCBzdGVwLCBtdWx0aXBsaWVyKTsKLSAg
ICBuZXdQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihtX3Njcm9sbGFi
bGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1T
Y3JvbGxQb3NpdGlvbigpKTsKLSAgICBpZiAoY3VycmVudFBvc2l0aW9uID09IG5ld1Bvc2l0aW9u
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbmV3UG9zaXRpb24gPSBuZXdQb3NpdGlvbi5j
b25zdHJhaW5lZEJldHdlZW4oc2Nyb2xsYWJsZUFyZWEoKS5taW5pbXVtU2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsYWJsZUFyZWEoKS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7CisKKyAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbEFuaW1hdG9yTWFjOjpzY3Jv
bGwgZnJvbSAiIDw8IGN1cnJlbnRQb3NpdGlvbigpIDw8ICIgdG8gIiA8PCBuZXdQb3NpdGlvbik7
CisKKyAgICBpZiAoIXNob3VsZEFuaW1hdGUpCisgICAgICAgIHJldHVybiBzY3JvbGxUb1Bvc2l0
aW9uV2l0aG91dEFuaW1hdGlvbihuZXdQb3NpdGlvbik7CiAKICAgICBpZiAoW21fc2Nyb2xsQW5p
bWF0aW9uSGVscGVyIF9pc0FuaW1hdGluZ10pIHsKICAgICAgICAgTlNQb2ludCB0YXJnZXRPcmln
aW4gPSBbbV9zY3JvbGxBbmltYXRpb25IZWxwZXIgdGFyZ2V0T3JpZ2luXTsKQEAgLTgxMiwxNiAr
ODA5LDI3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpCiAgICAgICAgICAgICBuZXdQb3NpdGlv
bi5zZXRYKHRhcmdldE9yaWdpbi54KTsKICAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwgIiA8PCAiIGZyb20g
IiA8PCBjdXJyZW50UG9zaXRpb24gPDwgIiB0byAiIDw8IG5ld1Bvc2l0aW9uKTsKKyAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbEFuaW1hdG9yTWFjOjpzY3Jv
bGwgIiA8PCAiIGZyb20gIiA8PCBjdXJyZW50UG9zaXRpb24oKSA8PCAiIHRvICIgPDwgbmV3UG9z
aXRpb24pOwogICAgIFttX3Njcm9sbEFuaW1hdGlvbkhlbHBlciBzY3JvbGxUb1BvaW50Om5ld1Bv
c2l0aW9uXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gRklYTUU6IE1heWJlIHRoaXMgc2hv
dWxkIHRha2UgYSBwb3NpdGlvbi4KLXZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbFRvT2Zm
c2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbENsYW1w
aW5nIGNsYW1waW5nKQorYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsVG9Qb3NpdGlvbldp
dGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24pCiB7CisgICAgYm9vbCBw
b3NpdGlvbkNoYW5nZWQgPSBuZXdQb3NpdGlvbiAhPSBjdXJyZW50UG9zaXRpb24oKTsKKyAgICBp
ZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFu
Z2VkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIHVz
ZWQgcHJpbWFyaWx5IGJ5IHNtb290aCBzY3JvbGxpbmcuIFRoaXMgc2hvdWxkIGlkZWFsbHkgdXNl
IG5hdGl2ZSBzY3JvbGwgYW5pbWF0aW9ucy4KKyAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NTcKICAgICBbbV9zY3JvbGxBbmltYXRpb25IZWxw
ZXIgX3N0b3BSdW5dOwotICAgIGltbWVkaWF0ZVNjcm9sbFRvUG9zaXRpb24oU2Nyb2xsYWJsZUFy
ZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xs
YWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKSwgY2xhbXBpbmcpOworICAgIHJldHVybiBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24obmV3UG9zaXRpb24pOworfQor
Citib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCit7
CisgICAgW21fc2Nyb2xsQW5pbWF0aW9uSGVscGVyIF9zdG9wUnVuXTsKKyAgICByZXR1cm4gU2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uLCBj
bGFtcGluZyk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3JNYWM6OmFkanVzdFNjcm9s
bFBvc2l0aW9uSWZOZWNlc3NhcnkoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0CkBA
IC04NDQsMjEgKzg1Miw2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmFkanVzdFNjcm9sbFBv
c2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpCiAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRDb25z
dHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShjdXJyZW50bHlDb25zdHJhaW5zVG9Db250ZW50
RWRnZSk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmltbWVkaWF0ZVNjcm9sbFRvUG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24sIFNjcm9sbENsYW1waW5nIGNsYW1w
aW5nKQotewotICAgIEZsb2F0UG9pbnQgY3VycmVudFBvc2l0aW9uID0gdGhpcy0+Y3VycmVudFBv
c2l0aW9uKCk7Ci0gICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uID0gY2xhbXBpbmcgPT0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQgPyBhZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5
KG5ld1Bvc2l0aW9uKSA6IG5ld1Bvc2l0aW9uOwotIAotICAgIGJvb2wgcG9zaXRpb25DaGFuZ2Vk
ID0gYWRqdXN0ZWRQb3NpdGlvbiAhPSBjdXJyZW50UG9zaXRpb247Ci0gICAgaWYgKCFwb3NpdGlv
bkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFNpemUgZGVsdGEgPSBhZGp1c3RlZFBvc2l0aW9uIC0g
Y3VycmVudFBvc2l0aW9uOwotICAgIG1fY3VycmVudFBvc2l0aW9uID0gYWRqdXN0ZWRQb3NpdGlv
bjsKLSAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwotICAgIHVwZGF0ZUFjdGl2ZVNj
cm9sbFNuYXBJbmRleEZvck9mZnNldCgpOwotfQotCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpp
c1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JvbGxDb250
cm9sbGVyLmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKTsKQEAgLTkyMiw3ICs5MTUsNyBAQCBTdHJp
bmcgU2Nyb2xsQW5pbWF0b3JNYWM6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkg
Y29uc3QKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmltbWVkaWF0ZVNjcm9sbFRvUG9zaXRpb25G
b3JTY3JvbGxBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24pCiB7CiAgICAg
QVNTRVJUKG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyKTsKLSAgICBpbW1lZGlhdGVTY3JvbGxUb1Bv
c2l0aW9uKG5ld1Bvc2l0aW9uKTsKKyAgICBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlv
bldpdGhvdXRBbmltYXRpb24obmV3UG9zaXRpb24pOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmNwcAppbmRleCA0YWIxNWMxOGMyMTRkYjU3ODE1MDc1MTk4MDcxNzM1ZjliNTQwMWFjLi5iNmI3
YWIwYTIxMjUyNGVmZTg3YWMzN2VhZGNiZTEyMDA3Y2M1ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0y
NjUsMTIgKzI2NSwxMiBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRv
T2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYgc2Nyb2xsT2Zmc2V0LAogICAgIHNldEN1cnJlbnRT
Y3JvbGxUeXBlKG9wdGlvbnMudHlwZSk7CiAKICAgICBTY3JvbGxPZmZzZXQgc25hcHBlZE9mZnNl
dCA9IGNlaWxlZEludFBvaW50KHNjcm9sbEFuaW1hdG9yKCkuYWRqdXN0U2Nyb2xsT2Zmc2V0Rm9y
U25hcHBpbmdJZk5lZWRlZChjbGFtcGVkU2Nyb2xsT2Zmc2V0LCBvcHRpb25zLnNuYXBQb2ludFNl
bGVjdGlvbk1ldGhvZCkpOworICAgIGF1dG8gc25hcHBlZFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRp
b25Gcm9tT2Zmc2V0KHNuYXBwZWRPZmZzZXQpOwogICAgIGlmIChvcHRpb25zLmFuaW1hdGVkID09
IEFuaW1hdGVkU2Nyb2xsOjpZZXMpCi0gICAgICAgIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb09m
ZnNldFdpdGhBbmltYXRpb24oc25hcHBlZE9mZnNldCk7CisgICAgICAgIFNjcm9sbGFibGVBcmVh
OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihzbmFwcGVkUG9zaXRpb24pOwogICAgIGVs
c2UgewotICAgICAgICBhdXRvIHNuYXBwZWRQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uRnJvbU9m
ZnNldChzbmFwcGVkT2Zmc2V0KTsKICAgICAgICAgaWYgKCFyZXF1ZXN0U2Nyb2xsUG9zaXRpb25V
cGRhdGUoc25hcHBlZFBvc2l0aW9uLCBvcHRpb25zLnR5cGUsIG9wdGlvbnMuY2xhbXBpbmcpKQot
ICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHNuYXBwZWRPZmZzZXQs
IG9wdGlvbnMuY2xhbXBpbmcpOworICAgICAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRB
bmltYXRpb24oc25hcHBlZFBvc2l0aW9uLCBvcHRpb25zLmNsYW1waW5nKTsKICAgICAgICAgc2V0
U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9u
KTsKICAgICB9CiAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYTo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9zY3JvbGxEaW1lbnNpb25zRGlydHkgPSB0cnVlOwotICAgIFNjcm9sbE9mZnNldCBv
cmlnaW5hbFNjcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCgpOworICAgIFNjcm9sbFBvc2l0aW9u
IG9yaWdpbmFsU2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbigpOwogCiAgICAgY29tcHV0
ZVNjcm9sbERpbWVuc2lvbnMoKTsKICAgICBtX2xheWVyLnVwZGF0ZVNlbGZQYWludGluZ0xheWVy
KCk7CkBAIC0xMTg4LDggKzExODgsOCBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6
OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpCiAKICAgICB1cGRhdGVTY3JvbGxiYXJzQWZ0
ZXJMYXlvdXQoKTsKIAotICAgIGlmIChvcmlnaW5hbFNjcm9sbE9mZnNldCAhPSBzY3JvbGxPZmZz
ZXQoKSkKLSAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEludFBvaW50KHNj
cm9sbE9mZnNldCgpKSk7CisgICAgaWYgKG9yaWdpbmFsU2Nyb2xsUG9zaXRpb24gIT0gc2Nyb2xs
UG9zaXRpb24oKSkKKyAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oSW50
UG9pbnQoc2Nyb2xsUG9zaXRpb24oKSkpOwogCiAgICAgaWYgKG1fbGF5ZXIuaXNDb21wb3NpdGVk
KCkpIHsKICAgICAgICAgbV9sYXllci5zZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421167</attachid>
            <date>2021-02-22 00:28:25 -0800</date>
            <delta_ts>2021-02-22 13:39:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222111-20210222092824.patch</filename>
            <type>text/plain</type>
            <size>33092</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5ODBjNDRjOWZiMDYw
M2UwMmVmNzRmNDQ5NTk1NTQ2MmNmZTFmMC4uYzcwMjM2MWRhY2Q5YmY0ODI2NzRjYWNhZmZjZGRi
YjQwNWUwMThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTAyLTE5ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDbGVhbiB1cCBT
Y3JvbGxhYmxlQXJlYSBhbmQgU2Nyb2xsQW5pbWF0b3IgQVBJIGFuZCBjb252ZXJ0IGxlc3MgYmV0
d2VlbiBvZmZzZXRzIGFuZCBwb3NpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjExMQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBDbGVhbiB1cCB0aGUgQVBJcyBleHBvc2VkIGJ5IFNjcm9sbGFibGVB
cmVhIGFuZCBTY3JvbGxBbmltYXRvciB0byBtYWtlIHRoZW0gbW9yZQorICAgICAgICBjb25zaXN0
ZW50LiBXaXRoIHRoaXMgY2hhbmdlIGl0IHNob3VsZCBiZSBhIGJpdCBlYXNpZXIgdG8gdGVsbCBp
ZiBhIHBhcnRpY3VsYXIKKyAgICAgICAgbWV0aG9kIHdpbGwgdHJpZ2dlciBhbiBhbmltYXRpb24g
b3Igbm90LiBJbiBhZGRpdGlvbiwgd2UgYWNjZXB0IHBvc2l0aW9ucyAoYXMKKyAgICAgICAgb3Bw
b3NlZCB0byBvZmZzZXRzKSBldmVyeXdoZXJlLCB3aGljaCBhbGxvd3MgdXMgdG8gcmVkdWNlIHRo
ZSBudW1iZXIgb2YKKyAgICAgICAgb2Zmc2V0IDwtPiBwb3NpdGlvbiBjb252ZXJzaW9ucy4KKwor
ICAgICAgICBGaW5hbGx5LCB0aGlzIGNoYW5nZSBpcyBhbHNvIGludGVyZXN0aW5nIGZvciBzY3Jv
bGwgc25hcCwgYmVjYXVzZSBpdCB3aWxsCisgICAgICAgIG1ha2UgaXQgZWFzaWVyIHRvIHVzZSBh
IG5hdGl2ZSBhbmltYXRpb24gb24gTWFjT1MgdG8gdXNlIGZvciBzbmFwcGluZyBhZnRlcgorICAg
ICAgICBzY3JvbGxiYXIgdGh1bWIgZHJhZ2dpbmcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBU
aGlzIHNob3VsZCBub3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6
IFVzZSBuZXcgU2Nyb2xsYWJsZUFyZWEgQVBJcyB0aGF0CisgICAgICAgIGFjY2VwdCBwb3NpdGlv
bnMuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5p
bWF0aW9uKTogQWRkZWQgdGhpcyB2ZXJzaW9uCisgICAgICAgIG9mIHRoZSBtZXRob2QgdGhhdCB1
c2VzIHBvc2l0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9PZmZz
ZXRXaXRoQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOiBV
cGRhdGUgbWV0aG9kIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGwpOiBTaW1w
bGlmaWVkIGEgbGl0dGxlIGJpdCB0aGUgY29kZSB0aGF0IGhhbmRsZXMKKyAgICAgICAgc2Nyb2xs
IHNuYXBwaW5nIGhlcmUuIFVuaWZpZWQgc2Nyb2xsIHNuYXAgYW5kIG5vbi1zY3JvbGwgc25hcCBj
b21waWxhdGlvbiBwYXRocy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3Jv
bGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24pOiBUaGlzIG1ldGhvZAorICAgICAgICBub3cgY29u
dmVydHMgdG8gYSBwb3NpdGlvbiBhbmQgdGhlbiBjYWxscyBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91
dEFuaW1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bv
c2l0aW9uV2l0aG91dEFuaW1hdGlvbik6IFNwbGl0IHRoaXMgb3V0CisgICAgICAgIGZyb20gc2Ny
b2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3I6OnNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbik6IFRoaXMgbWV0aG9kIG5vdworICAg
ICAgICBjb252ZXJ0cyB0byBhIHBvc2l0aW9uIGFuZCBjYWxscyBzY3JvbGxUb1Bvc2l0aW9uV2l0
aEFuaW1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bv
c2l0aW9uV2l0aEFuaW1hdGlvbik6IFNwbGl0IHRoaXMKKyAgICAgICAgb3V0IGZyb20gc2Nyb2xs
VG9PZmZzZXRXaXRoQW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OmhhbmRsZVdoZWVsRXZlbnQpOiBDYWxsIHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uCisg
ICAgICAgIGluc3RlYWQgb2YgdXNpbmcgdGhlIHNjcm9sbCguLi4pIG1ldGhvZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQpOiBFbGltaW5h
dGUgYSBjb252ZXJzaW9uIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
c2Nyb2xsV2l0aG91dEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsVG9PZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6IFVwZGF0ZSBtZXRob2QgbGlzdC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNj
cm9sbGJhcnMpOiBFbGltaW5hdGUgYSBjb252ZXJzaW9uIGhlcmUuCisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICBSZW1vdmVkIHNjcm9sbFRvT2Zmc2V0V2l0
aEFuaW1hdGlvbiBhbmQgYWRkZWQgdHdvIG5ldyBtZXRob2RzIHNjcm9sbFRvUG9zaXRpb25XaXRo
QW5pbWF0aW9uCisgICAgICAgIGFuZCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbi4g
c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uIGlzIHN0aWxsIHVzZWQKKyAgICAgICAgaW4g
cXVpdGUgYSBmZXcgcGxhY2VzLCBzbyB3ZSBtYWludGFpbiB0aGlzLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbE9mZnNldEZyb21JbnRlcm5hbHMpOiBVc2Ugc2V0
U2Nyb2xsUG9zaXRpb25Gcm9tQW5pbWF0aW9uIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhOjpzZXRTY3JvbGxQb3NpdGlvbkZyb21BbmltYXRpb24pOiBSZW5hbWVkIGZyb20g
c2V0U2Nyb2xsT2Zmc2V0RnJvbUFuaW1hdGlvbgorICAgICAgICBhbmQgZWxpbWluYXRlZCBhIG1h
bmRhdG9yeSBjbm92ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNj
cm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsT2Zmc2V0RnJvbUFuaW1hdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDogVXBkYXRlIG1ldGhvZCBkZWNsYXJh
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwpOiBIYW5kbGUgY2FsbGluZyBpbnRv
IHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uCisgICAgICAgIGFuZCBzY3JvbGxUb1Bv
c2l0aW9uV2l0aEFuaW1hdGlvbiBvdXJzZWx2ZXMgbm93IHRoYXQgd2UgaGF2ZSB0aGlzIEFQSS4g
VGhpcyBzaW1wbGlmaWVzCisgICAgICAgIHByb2dyYW0gZmxvdyBhIGJpdC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24pOiBFeHBvc2UgdGhlc2UgdHdvIG5ldworICAgICAgICBtZXRob2RzIHdo
aWNoIGFyZSBwYXJ0IG9mIHRoZSBiYXNlIGNsYXNzIEFQSSBub3cuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbkZvclNjcm9sbEFu
aW1hdGlvbik6IFVzZQorICAgICAgICBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24gYmVjYXVzZSBpdCB3YXMgdGhlIHNhbWUgYXMKKyAgICAgICAgaW1tZWRp
YXRlU2Nyb2xsVG9Qb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
OjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmltbWVkaWF0ZVNjcm9sbFRvUG9zaXRpb24pOiBEZWxl
dGVkLiBObyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjpzY3JvbGxUb09mZnNldCk6IFVuY29uZGl0aW9uYWxseSBjb252ZXJ0IHRvIGEgcG9zaXRp
b24KKyAgICAgICAgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCk6IFVzZSBTY3JvbGxhYmxlQXJlYTo6
c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24KKyAgICAgICAgYmVjYXVzZSBpdCBlbGlt
aW5hdGVzIG9uZSBjb252ZXJzaW9uIGJldHdlZW4gdW5pdHMuCisKIDIwMjEtMDItMTkgIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFJlcXVlc3Qgc2Vy
dmVyIHB1YmxpYyBrZXkgdG8gZ2VuZXJhdGUgc2VjcmV0IHRva2VuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggNWFmMWRjMmI1ODVjYmJlYTEwNzI5Yjg3YTg4OWFjNGRkMjY5Y2I0Mi4u
ZWI4MTg3MGQ4NmQ3OWU2YmFkZDNjZGFhOTQ0NWY5MWIxYTUyODgwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMjMyNywxMSArMjMyNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6c2V0
U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mIHNjcm9sbFBvc2l0aW9uLCBjb25z
dCBTYwogICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihw
YWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7CiAKICAgICBTY3JvbGxPZmZzZXQgc25hcHBl
ZE9mZnNldCA9IGNlaWxlZEludFBvaW50KHNjcm9sbEFuaW1hdG9yKCkuYWRqdXN0U2Nyb2xsT2Zm
c2V0Rm9yU25hcHBpbmdJZk5lZWRlZChzY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oc2Nyb2xsUG9z
aXRpb24pLCBvcHRpb25zLnNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCkpOworICAgIGF1dG8gc25h
cHBlZFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KHNuYXBwZWRPZmZzZXQpOwog
CiAgICAgaWYgKG9wdGlvbnMuYW5pbWF0ZWQgPT0gQW5pbWF0ZWRTY3JvbGw6OlllcykKLSAgICAg
ICAgc2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKHNuYXBwZWRPZmZzZXQsIGN1cnJlbnRTY3Jv
bGxUeXBlKCksIG9wdGlvbnMuY2xhbXBpbmcpOworICAgICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0
aEFuaW1hdGlvbihzbmFwcGVkUG9zaXRpb24sIGN1cnJlbnRTY3JvbGxUeXBlKCksIG9wdGlvbnMu
Y2xhbXBpbmcpOwogICAgIGVsc2UKLSAgICAgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRp
b24oc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KHNuYXBwZWRPZmZzZXQpLCBvcHRpb25zKTsKKyAg
ICAgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oc25hcHBlZFBvc2l0aW9uLCBvcHRp
b25zKTsKIAogICAgIHNldEN1cnJlbnRTY3JvbGxUeXBlKG9sZFNjcm9sbFR5cGUpOwogfQpAQCAt
Mzc2MywxNSArMzc2NCwxNSBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG8oY29uc3QgU2Nyb2xs
UG9zaXRpb24mIG5ld1Bvc2l0aW9uKQogICAgIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpOwogfQog
Ci12b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKGNvbnN0IFNjcm9s
bE9mZnNldCYgb2Zmc2V0LCBTY3JvbGxUeXBlIHNjcm9sbFR5cGUsIFNjcm9sbENsYW1waW5nKQor
dm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IFNjcm9s
bFBvc2l0aW9uJiBwb3NpdGlvbiwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxDbGFtcGlu
ZykKIHsKICAgICBhdXRvIHByZXZpb3VzU2Nyb2xsVHlwZSA9IGN1cnJlbnRTY3JvbGxUeXBlKCk7
CiAgICAgc2V0Q3VycmVudFNjcm9sbFR5cGUoc2Nyb2xsVHlwZSk7CiAKICAgICBpZiAoY3VycmVu
dFNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgPT0gU2Nyb2xsQmVoYXZpb3JTdGF0dXM6OkluTm9uTmF0
aXZlQW5pbWF0aW9uKQogICAgICAgICBzY3JvbGxBbmltYXRvcigpLmNhbmNlbEFuaW1hdGlvbnMo
KTsKLSAgICBpZiAob2Zmc2V0ICE9IHRoaXMtPnNjcm9sbE9mZnNldCgpKQotICAgICAgICBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKG9mZnNldCk7CisgICAgaWYg
KHBvc2l0aW9uICE9IHRoaXMtPnNjcm9sbFBvc2l0aW9uKCkpCisgICAgICAgIFNjcm9sbGFibGVB
cmVhOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihwb3NpdGlvbik7CiAKICAgICBzZXRD
dXJyZW50U2Nyb2xsVHlwZShwcmV2aW91c1Njcm9sbFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggNWIzMmI2ZmQ5ZGVlOTRiYzE1NDY3MzM1YTA5YTExMzU0Mzc2ODk4YS4uMDU5
ZjhhN2E5ZDJmYTAyN2Q5MjhjZTdmZWQyOGUzZDM1MTNmZjQyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC02NzQsNyArNjc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW5kZXJMYXll
ckRpZFNjcm9sbChjb25zdCBSZW5kZXJMYXllciYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24oY29uc3QgU2Nyb2xsT2Zmc2V0JiwgU2Nyb2xs
VHlwZSA9IFNjcm9sbFR5cGU6OlByb2dyYW1tYXRpYywgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxD
bGFtcGluZzo6Q2xhbXBlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxUb1Bvc2l0
aW9uV2l0aEFuaW1hdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYsIFNjcm9sbFR5cGUgPSBTY3Jv
bGxUeXBlOjpQcm9ncmFtbWF0aWMsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNs
YW1wZWQpOwogCiAgICAgYm9vbCBpblVwZGF0ZUVtYmVkZGVkT2JqZWN0cygpIGNvbnN0IHsgcmV0
dXJuIG1faW5VcGRhdGVFbWJlZGRlZE9iamVjdHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGFiOTY3MTcwZmE3MzAzMjQyMDhkNjhjYmU5NjVi
MmZjNGNiY2ZkY2UuLjU1NDI0ZTliMmU4MWQyYzc4NjBlNjY4OGExOWE2NzAzZTNhMGRjZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTgzLDU3ICs4
Myw2MCBAQCBTY3JvbGxBbmltYXRvcjo6flNjcm9sbEFuaW1hdG9yKCkKIGJvb2wgU2Nyb2xsQW5p
bWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIsIFNjcm9s
bEJlaGF2aW9yIGJlaGF2aW9yKQogewogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAg
aWYgKGJlaGF2aW9yICE9IFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpCi0g
ICAgICAgIHJldHVybiBzY3JvbGxXaXRob3V0QW5pbWF0aW9uKG9yaWVudGF0aW9uLCBzdGVwLCBt
dWx0aXBsaWVyKTsKLQotICAgIEZsb2F0U2l6ZSBzY3JvbGxPcmlnaW4gPSB0b0Zsb2F0U2l6ZSht
X3Njcm9sbGFibGVBcmVhLnNjcm9sbE9yaWdpbigpKTsKLSAgICBGbG9hdFBvaW50IG5ld1Bvc2l0
aW9uID0gcG9zaXRpb25Gcm9tU3RlcChvcmllbnRhdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7Ci0g
ICAgYXV0byBuZXdPZmZzZXQgPSBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0
aW9uKG5ld1Bvc2l0aW9uLCBzY3JvbGxPcmlnaW4pOwotICAgIGF1dG8gY3VycmVudE9mZnNldCA9
IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24odGhpcy0+Y3VycmVudFBv
c2l0aW9uKCksIHNjcm9sbE9yaWdpbik7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250
YWxTY3JvbGxiYXIpIHsKLSAgICAgICAgbmV3T2Zmc2V0LnNldFgobV9zY3JvbGxDb250cm9sbGVy
LmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgbmV3
T2Zmc2V0LngoKSwgbXVsdGlwbGllciwgY3VycmVudE9mZnNldC54KCkpKTsKLSAgICAgICAgbmV3
UG9zaXRpb24gPSBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KG5ld09m
ZnNldCwgc2Nyb2xsT3JpZ2luKTsKLSAgICAgICAgcmV0dXJuIHNjcm9sbChIb3Jpem9udGFsU2Ny
b2xsYmFyLCBncmFudWxhcml0eSwgbmV3UG9zaXRpb24ueCgpIC0gdGhpcy0+Y3VycmVudFBvc2l0
aW9uKCkueCgpLCAxLjApOworICAgIGlmIChiZWhhdmlvciA9PSBTY3JvbGxCZWhhdmlvcjo6RG9E
aXJlY3Rpb25hbFNuYXBwaW5nKSB7CisgICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihwb3NpdGlvbkZyb21TdGVwKG9yaWVudGF0
aW9uLCBzdGVwLCBtdWx0aXBsaWVyKSwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3Jv
bGxPcmlnaW4oKSkpOworICAgICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBtX3Njcm9sbGFibGVB
cmVhLnNjcm9sbE9mZnNldCgpOworICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikgeworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFgobV9zY3JvbGxDb250cm9s
bGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwg
bmV3T2Zmc2V0LngoKSwgbXVsdGlwbGllciwgY3VycmVudE9mZnNldC54KCkpKTsKKyAgICAgICAg
ICAgIHJldHVybiBzY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgZ3JhbnVsYXJpdHksIG5ld09m
ZnNldC54KCkgLSBjdXJyZW50T2Zmc2V0LngoKSwgMS4wKTsKKyAgICAgICAgfQorICAgICAgICBu
ZXdPZmZzZXQuc2V0WShtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24o
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgbmV3T2Zmc2V0LnkoKSwgbXVsdGlwbGllciwgY3Vy
cmVudE9mZnNldC55KCkpKTsKKyAgICAgICAgcmV0dXJuIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJh
ciwgZ3JhbnVsYXJpdHksIG5ld09mZnNldC55KCkgLSBjdXJyZW50T2Zmc2V0LnkoKSwgMS4wKTsK
ICAgICB9Ci0KLSAgICBuZXdPZmZzZXQuc2V0WShtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Ny
b2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgbmV3UG9zaXRpb24ueSgp
LCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LnkoKSkpOwotICAgIG5ld1Bvc2l0aW9uID0gU2Ny
b2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChuZXdPZmZzZXQsIHNjcm9sbE9y
aWdpbik7Ci0gICAgcmV0dXJuIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgZ3JhbnVsYXJpdHks
IG5ld1Bvc2l0aW9uLnkoKSAtIHRoaXMtPmN1cnJlbnRQb3NpdGlvbigpLnkoKSwgMS4wKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGdyYW51bGFyaXR5KTsKICAgICBVTlVTRURfUEFSQU0oYmVo
YXZpb3IpOwotICAgIHJldHVybiBzY3JvbGxXaXRob3V0QW5pbWF0aW9uKG9yaWVudGF0aW9uLCBz
dGVwLCBtdWx0aXBsaWVyKTsKICNlbmRpZgorCisgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRpb25X
aXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uRnJvbVN0ZXAob3JpZW50YXRpb24sIHN0ZXAsIG11bHRp
cGxpZXIpKTsKK30KKworYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0
QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBp
bmcpCit7CisgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKFNjcm9s
bGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQob2Zmc2V0LCB0b0Zsb2F0U2l6ZShz
Y3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9yaWdpbigpKSksIGNsYW1waW5nKTsKIH0KIAotYm9vbCBT
Y3JvbGxBbmltYXRvcjo6c2Nyb2xsV2l0aG91dEFuaW1hdGlvbihTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikKK2Jvb2wgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uLCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKIHsKICAgICBGbG9hdFBvaW50
IGN1cnJlbnRQb3NpdGlvbiA9IHRoaXMtPmN1cnJlbnRQb3NpdGlvbigpOwotICAgIEZsb2F0UG9p
bnQgbmV3UG9zaXRpb24gPSBwb3NpdGlvbkZyb21TdGVwKG9yaWVudGF0aW9uLCBzdGVwLCBtdWx0
aXBsaWVyKTsKLSAgICBuZXdQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2Vl
bihtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVB
cmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKLSAgICBpZiAoY3VycmVudFBvc2l0aW9uID09
IG5ld1Bvc2l0aW9uKQorICAgIGF1dG8gYWRqdXN0ZWRQb3NpdGlvbiA9IGNsYW1waW5nID09IFNj
cm9sbENsYW1waW5nOjpDbGFtcGVkID8gcG9zaXRpb24uY29uc3RyYWluZWRCZXR3ZWVuKHNjcm9s
bGFibGVBcmVhKCkubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGFibGVBcmVhKCkubWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkpIDogcG9zaXRpb247CisKKyAgICAvLyBGSVhNRTogSW4gc29t
ZSBjYXNlcyBvbiBpT1MgdGhlIFNjcm9sbGFibGVBcmVhIHBvc2l0aW9uIGlzIG91dCBvZiBzeW5j
IHdpdGggdGhlIFNjcm9sbEFuaW1hdG9yIHBvc2l0aW9uLgorICAgIC8vIFdoZW4gdGhlc2UgY2Fz
ZXMgYXJlIGZpeGVkLCB0aGlzIGV4dHJhIGNoZWNrIGFnYWluc3QgdGhlIFNjcm9sbGFibGVBcmVh
IHBvc2l0aW9uIGNhbiBiZSByZW1vdmVkLgorICAgIGlmIChhZGp1c3RlZFBvc2l0aW9uID09IGN1
cnJlbnRQb3NpdGlvbiAmJiBhZGp1c3RlZFBvc2l0aW9uID09IHNjcm9sbGFibGVBcmVhKCkuc2Ny
b2xsUG9zaXRpb24oKSAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fY3VycmVudFBvc2l0aW9uID0gbmV3UG9z
aXRpb247Ci0gICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKG5ld1Bvc2l0aW9uIC0gY3VycmVudFBv
c2l0aW9uKTsKKyAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247CisgICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGFkanVzdGVkUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24p
OworICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb09mZnNldChjb25zdCBG
bG9hdFBvaW50JiBvZmZzZXQpCitib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb09mZnNldFdp
dGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQogewotICAgIG1fYW5pbWF0aW9u
UHJvZ3JhbW1hdGljU2Nyb2xsLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24p
OwotICAgIGF1dG8gbmV3UG9zaXRpb24gPSBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25G
cm9tT2Zmc2V0KG9mZnNldCwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmln
aW4oKSkpOwotICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zY3JvbGwobmV3UG9z
aXRpb24pOwotICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Ny
b2xsQmVoYXZpb3JTdGF0dXM6OkluTm9uTmF0aXZlQW5pbWF0aW9uKTsKKyAgICByZXR1cm4gc2Ny
b2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24oU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9u
RnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKHNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3Jp
Z2luKCkpKSk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvT2Zmc2V0V2l0aG91
dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbENsYW1waW5nKQorYm9v
bCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxv
YXRQb2ludCYgbmV3UG9zaXRpb24pCiB7Ci0gICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbiA9IFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQob2Zmc2V0LCB0b0Zsb2F0U2l6
ZShtX3Njcm9sbGFibGVBcmVhLnNjcm9sbE9yaWdpbigpKSk7Ci0gICAgRmxvYXRTaXplIGRlbHRh
ID0gbmV3UG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24oKTsKLSAgICBtX2N1cnJlbnRQb3NpdGlv
biA9IG5ld1Bvc2l0aW9uOwotICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Ci0gICAg
dXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CisgICAgYm9vbCBwb3NpdGlv
bkNoYW5nZWQgPSBuZXdQb3NpdGlvbiAhPSBjdXJyZW50UG9zaXRpb24oKTsKKyAgICBpZiAoIXBv
c2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fYW5pbWF0aW9uUHJvZ3JhbW1hdGljU2Ny
b2xsLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOworICAgIG1fYW5pbWF0
aW9uUHJvZ3JhbW1hdGljU2Nyb2xsLT5zY3JvbGwobmV3UG9zaXRpb24pOworICAgIHNjcm9sbGFi
bGVBcmVhKCkuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Oklu
Tm9uTmF0aXZlQW5pbWF0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRmxvYXRQb2ludCBT
Y3JvbGxBbmltYXRvcjo6cG9zaXRpb25Gcm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikKQEAgLTIwOCw3ICsyMTEsNyBA
QCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgZSkKICAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWRlbHRhWTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChlLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkK
LSAgICAgICAgICAgICAgICBzY3JvbGxXaXRob3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xsYmFy
LCB2ZXJ0aWNhbFNjcm9sbGJhci0+cGl4ZWxTdGVwKCksIC1kZWx0YVkpOworICAgICAgICAgICAg
ICAgIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uRnJvbVN0ZXAoVmVy
dGljYWxTY3JvbGxiYXIsIHZlcnRpY2FsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWSkp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNjcm9sbChWZXJ0aWNhbFNjcm9s
bGJhciwgZ3JhbnVsYXJpdHksIHZlcnRpY2FsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRh
WSk7CiAgICAgICAgIH0KQEAgLTIyMSw3ICsyMjQsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICAgICAgICAg
ICAgICAgICAgZGVsdGFYID0gLWRlbHRhWDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChlLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxX
aXRob3V0QW5pbWF0aW9uKEhvcml6b250YWxTY3JvbGxiYXIsIGhvcml6b250YWxTY3JvbGxiYXIt
PnBpeGVsU3RlcCgpLCAtZGVsdGFYKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbihwb3NpdGlvbkZyb21TdGVwKEhvcml6b250YWxTY3JvbGxiYXIsIGhv
cml6b250YWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVsdGFYKSk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIGdyYW51bGFy
aXR5LCBob3Jpem9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCk7CiAgICAgICAg
IH0KQEAgLTI1Nyw4ICsyNjAsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjp1cGRhdGVBY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKQogdm9pZCBTY3JvbGxBbmltYXRvcjo6bm90aWZ5UG9z
aXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGRlbHRhKTsKLSAgICAvLyBGSVhNRTogbmVlZCB0byBub3QgbWFwIGJhY2sgYW5kIGZvcnRoIGFs
bCB0aGUgdGltZS4KLSAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbE9mZnNldEZyb21Bbmlt
YXRpb24obV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24ocm91bmRlZElu
dFBvaW50KGN1cnJlbnRQb3NpdGlvbigpKSkpOworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Ny
b2xsUG9zaXRpb25Gcm9tQW5pbWF0aW9uKHJvdW5kZWRJbnRQb2ludChjdXJyZW50UG9zaXRpb24o
KSkpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5E
SU5HKQogICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDIwYjEzZTY4MGRhZmVi
OGNlMTI0OWI0MjFkYWIyYzFjZDQwODdjOGIuLmU0OWU3ZmYzNjE4M2U4YzJhZTc2M2IxMmE1OTA0
ODJkMjY3MmJhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApA
QCAtNzgsMTAgKzc4LDEyIEBAIHB1YmxpYzoKICAgICAvLyBkZXN0aW5hdGlvbiBhbmQgcmV0dXJu
cyB0cnVlLiAgU2Nyb2xsaW5nIG1heSBiZSBpbW1lZGlhdGUgb3IgYW5pbWF0ZWQuCiAgICAgLy8g
VGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24gYWx3YXlzIHNjcm9sbHMgaW1tZWRpYXRlbHks
IG5ldmVyIGFuaW1hdGVzLgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50
YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBT
Y3JvbGxCZWhhdmlvciA9IFNjcm9sbEJlaGF2aW9yOjpEZWZhdWx0KTsKLSAgICBib29sIHNjcm9s
bFdpdGhvdXRBbmltYXRpb24oU2Nyb2xsYmFyT3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0
IG11bHRpcGxpZXIpOwogCi0gICAgdm9pZCBzY3JvbGxUb09mZnNldChjb25zdCBGbG9hdFBvaW50
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25z
dCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCk7
CisgICAgYm9vbCBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2lu
dCYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpOworICAgIHZpcnR1
YWwgYm9vbCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCk7CisK
KyAgICBib29sIHNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7
CisgICAgdmlydHVhbCBib29sIHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmKTsKIAogICAgIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAppbmRleCAzMzNlOTFlNWFiODJhMzcyYjViNzY0MjcxZWI5Yzc1NTg4NjhlYmVl
Li4zNGJhYjk3YzVhOWRmNGI0MmM5Y2I5MTZmNWZjMjViNDgyNjM0NTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgZGVzaXJlZFBvc2l0
aW9uKQogICAgICAgICAgICAgYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbiA9IGFkanVzdFNjcm9sbFBv
c2l0aW9uV2l0aGluUmFuZ2UoYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbik7CiAKICAgICAgICAgaWYg
KGFkanVzdGVkU2Nyb2xsUG9zaXRpb24gIT0gc2Nyb2xsUG9zaXRpb24oKSB8fCBzY3JvbGxPcmln
aW5DaGFuZ2VkKCkpIHsKLSAgICAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNl
dFdpdGhvdXRBbmltYXRpb24oc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKGFkanVzdGVkU2Nyb2xs
UG9zaXRpb24pKTsKKyAgICAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1Bvc2l0aW9u
V2l0aG91dEFuaW1hdGlvbihhZGp1c3RlZFNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAgICAgIHJl
c2V0U2Nyb2xsT3JpZ2luQ2hhbmdlZCgpOwogICAgICAgICB9CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA5ODBmMGYwYjBjMjFlMmYyMDIw
OGU1NWVlNzc0YjhmOGU4ODg3MGE4Li42MWY3ZWE1MjA1ZjA5MjdhNmM3ODk0ZTIyNjQ2OGE5MGQ3
Y2M2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBA
IC0xNDMsMTAgKzE0MywxNiBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoU2Nyb2xsRGly
ZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYQogICAgIHJldHVybiBz
Y3JvbGxBbmltYXRvcigpLnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11
bHRpcGxpZXIsIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNu
YXBwaW5nKTsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXRXaXRoQW5p
bWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsQ2xhbXBpbmcpCit2b2lkIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCiB7Ci0gICAgTE9HX1dJ
VEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxhYmxlQXJlYSAiIDw8IHRoaXMg
PDwgIiBzY3JvbGxUb09mZnNldFdpdGhBbmltYXRpb24gIiA8PCBvZmZzZXQpOwotICAgIHNjcm9s
bEFuaW1hdG9yKCkuc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTsKKyAgICBMT0dfV0lUSF9TVFJFQU0o
U2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGFibGVBcmVhICIgPDwgdGhpcyA8PCAiIHNjcm9s
bFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uICIgPDwgcG9zaXRpb24pOworICAgIHNjcm9sbEFu
aW1hdG9yKCkuc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24ocG9zaXRpb24sIGNsYW1w
aW5nKTsKK30KKwordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1waW5nKQoreworICAg
IExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsYWJsZUFyZWEgIiA8
PCB0aGlzIDw8ICIgc2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24gIiA8PCBwb3NpdGlvbik7
CisgICAgc2Nyb2xsQW5pbWF0b3IoKS5zY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihwb3Np
dGlvbik7CiB9CiAKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFu
aW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbENsYW1waW5nIGNsYW1waW5n
KQpAQCAtMTU5LDkgKzE2NSw5IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhCiB7CiAgICAgYXV0
byBjdXJyZW50T2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKEludFBvaW50KHNjcm9s
bEFuaW1hdG9yKCkuY3VycmVudFBvc2l0aW9uKCkpKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0
aW9uKEZsb2F0UG9pbnQob2Zmc2V0LCBjdXJyZW50T2Zmc2V0LnkoKSkpOworICAgICAgICBzY3Jv
bGxBbmltYXRvcigpLnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KG9m
ZnNldCwgY3VycmVudE9mZnNldC55KCkpKTsKICAgICBlbHNlCi0gICAgICAgIHNjcm9sbFRvT2Zm
c2V0V2l0aG91dEFuaW1hdGlvbihGbG9hdFBvaW50KGN1cnJlbnRPZmZzZXQueCgpLCBvZmZzZXQp
KTsKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRp
b24oRmxvYXRQb2ludChjdXJyZW50T2Zmc2V0LngoKSwgb2Zmc2V0KSk7CiB9CiAKIHZvaWQgU2Ny
b2xsYWJsZUFyZWE6Om5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3Np
dGlvbiYgcG9zaXRpb24pCkBAIC0yMzAsMTMgKzIzNiwxMSBAQCBib29sIFNjcm9sbGFibGVBcmVh
OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCkK
IC8vIE5PVEU6IE9ubHkgY2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciB0ZXN0aW5nLgogdm9pZCBT
Y3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFscyhjb25zdCBTY3JvbGxP
ZmZzZXQmIG9mZnNldCkKIHsKLSAgICBzZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uKG9mZnNl
dCk7CisgICAgc2V0U2Nyb2xsUG9zaXRpb25Gcm9tQW5pbWF0aW9uKHNjcm9sbFBvc2l0aW9uRnJv
bU9mZnNldChvZmZzZXQpKTsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsT2Zm
c2V0RnJvbUFuaW1hdGlvbihjb25zdCBTY3JvbGxPZmZzZXQmIG9mZnNldCkKK3ZvaWQgU2Nyb2xs
YWJsZUFyZWE6OnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihjb25zdCBTY3JvbGxQb3Np
dGlvbiYgcG9zaXRpb24pCiB7Ci0gICAgU2Nyb2xsUG9zaXRpb24gcG9zaXRpb24gPSBzY3JvbGxQ
b3NpdGlvbkZyb21PZmZzZXQob2Zmc2V0KTsKLSAgICAKICAgICBhdXRvIHNjcm9sbFR5cGUgPSBj
dXJyZW50U2Nyb2xsVHlwZSgpOwogICAgIGF1dG8gY2xhbXBpbmcgPSBzY3JvbGxUeXBlID09IFNj
cm9sbFR5cGU6OlVzZXIgPyBTY3JvbGxDbGFtcGluZzo6VW5jbGFtcGVkIDogU2Nyb2xsQ2xhbXBp
bmc6OkNsYW1wZWQ7CiAgICAgaWYgKHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShwb3NpdGlv
biwgc2Nyb2xsVHlwZSwgY2xhbXBpbmcpKQpAQCAtNTUwLDcgKzU1NCw3IEBAIHZvaWQgU2Nyb2xs
YWJsZUFyZWE6OnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpCiAKICAgICBpZiAoY29ycmVjdGVkUG9z
aXRpb24gIT0gY3VycmVudFBvc2l0aW9uKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxTbmFwLCBzdHJlYW0gPDwgIiBhZGp1c3RpbmcgcG9zaXRpb24gZnJvbSAiIDw8IGN1cnJlbnRQ
b3NpdGlvbiA8PCAiIHRvICIgPDwgY29ycmVjdGVkUG9zaXRpb24pOwotICAgICAgICBzY3JvbGxU
b09mZnNldFdpdGhvdXRBbmltYXRpb24oY29ycmVjdGVkUG9zaXRpb24pOworICAgICAgICBzY3Jv
bGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb3JyZWN0ZWRQb3NpdGlvbik7CiAgICAgfQog
fQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDlj
YWJlNDk5YzY0OTJiY2VhOTMyNTQ4NmY1ZThmMzgzZTkzMzM1NzguLjFlOWEyZDM3OTdlZGY2MGRl
YmI0NTQwNjYzNjNhOTQ5NzE4NjNkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaApAQCAtNzEsNyArNzEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxC
ZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cyBzdGF0dXMpIHsgbV9jdXJyZW50U2Ny
b2xsQmVoYXZpb3JTdGF0dXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdHVzKTsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2Nyb2xsVG9PZmZzZXRXaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFt
cGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxD
bGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBT
Y3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKTsKKwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKTsKICAgICB2b2lk
IHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihTY3JvbGxiYXJPcmllbnRhdGlvbiwgZmxv
YXQgb2Zmc2V0KTsKIApAQCAtMzczLDcgKzM3NSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8g
Tk9URTogT25seSBjYWxsZWQgZnJvbSB0aGUgU2Nyb2xsQW5pbWF0b3IuCiAgICAgZnJpZW5kIGNs
YXNzIFNjcm9sbEFuaW1hdG9yOwotICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0RnJvbUFuaW1hdGlv
bihjb25zdCBTY3JvbGxPZmZzZXQmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uRnJvbUFu
aW1hdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYpOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBz
aG91bGQgYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gdGhlIGFjdHVhbAog
ICAgIC8vIHNjcm9sbCBvZiB0aGUgY29udGVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCAwN2Fj
MWFhNTc2NjBmYTgzMTc5YmM3Yzk3MTRlOWU5YjlkMGIwOGI4Li5jZDMzYWE0NTExNTUzYmJmYWE4
NzMyYmM2Nzk4ODA3ZDFjMGNjNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC0xMDksOSArMTA5
LDggQEAgYm9vbCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnUKIH0KICNlbmRpZgogCi12b2lkIFNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIG9mZnNldCwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCitib29sIFNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1waW5nIGNsYW1waW5nKQogewotICAgIEZsb2F0UG9p
bnQgcG9zaXRpb24gPSBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KG9m
ZnNldCwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmlnaW4oKSkpOwogICAg
IG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xl
YXJTY3JvbGxIaXN0b3J5KCk7CiAKQEAgLTEyMCw3ICsxMTksNyBAQCB2b2lkIFNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIG9mZgogICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBv
c2l0aW9uKTsKICNlbmRpZgogCi0gICAgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihvZmZzZXQsIGNsYW1waW5nKTsKKyAgICByZXR1cm4gU2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uLCBjbGFtcGluZyk7
CiB9CiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAppbmRleCAwZTA1ZmM2MjM1
YjRmOTRiNDMzNjgwY2MxODkyZTU0MGU2NTZmODJlLi40MzgyNDg2ZDg4MWE5NjViMjFkM2MyYWRm
NzllZWNjOTkyNjY4ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICBib29sIHNjcm9sbChTY3JvbGxi
YXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRp
cGxpZXIsIFNjcm9sbEJlaGF2aW9yKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZvaWQgc2Nyb2xs
VG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFtcGlu
Zykgb3ZlcnJpZGU7CisgICAgYm9vbCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihj
b25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgd2ls
bEVuZExpdmVSZXNpemUoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKaW5kZXggNDlmMGI0YjFkNzlmNzdhOTY4
YTk1MmY4YWViOTc5NTRlMjk3MmUyOS4uNjQ5YjRjZjU0NDUwOThhMzMxMjI4Mzg1MGI1MTcyY2Ex
Y2QzMjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLmgKQEAgLTgwLDcgKzgwLDggQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9jb250
ZW50QXJlYVNjcm9sbGVkVGltZXJTY3JvbGxEZWx0YTsKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9s
bGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVs
dGlwbGllciwgU2Nyb2xsQmVoYXZpb3IpIG92ZXJyaWRlOwotICAgIHZvaWQgc2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFtcGluZykgb3Zl
cnJpZGU7CisgICAgYm9vbCBzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxD
bGFtcGluZzo6Q2xhbXBlZCkgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
CiAgICAgYm9vbCBzaG91bGRGb3J3YXJkV2hlZWxFdmVudHNUb1BhcmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKSBjb25zdDsKQEAgLTEzMiw4ICsxMzMsNiBAQCBwcml2YXRlOgogCiAgICAg
RmxvYXRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0IEZsb2F0UG9p
bnQmKSBjb25zdDsKIAotICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCk7Ci0K
ICAgICBib29sIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlz
U2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCAxMjg5NDMyMDU0MzZm
MDg0YzZkNmNiNWM0NmNhMWQ5YTM5NDE2MjRjLi4wNzE5N2UwMzhhM2EyODQ4MzFhNjkwN2E4NzQw
YzkxZTFjZDY1OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCkBAIC03ODcsMjIgKzc4NywxOSBAQCBib29sIFNjcm9sbEFuaW1hdG9y
TWFjOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaQogewogICAgIG1faGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZCA9IHRydWU7CiAKLSAgICBp
ZiAoIXNjcm9sbEFuaW1hdGlvbkVuYWJsZWRGb3JTeXN0ZW0oKSB8fCAhbV9zY3JvbGxhYmxlQXJl
YS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9y
OjpzY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVyLCBiZWhh
dmlvcik7Ci0KLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gU2Nyb2xsQnlQaXhlbCkKLSAgICAgICAg
cmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBz
dGVwLCBtdWx0aXBsaWVyLCBiZWhhdmlvcik7Ci0KICAgICAvLyBUaGlzIG1ldGhvZCBkb2Vzbid0
IGRvIGRpcmVjdGlvbmFsIHNuYXBwaW5nLCBidXQgb3VyIGJhc2UgY2xhc3MgZG9lcy4gSXQgd2ls
bCBjYWxsIGludG8KICAgICAvLyBTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsIGFnYWluIHdpdGgg
dGhlIHNuYXBwZWQgcG9zaXRpb25zIGFuZCBTY3JvbGxCZWhhdmlvcjo6RGVmYXVsdC4KICAgICBp
ZiAoYmVoYXZpb3IgPT0gU2Nyb2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZykKICAg
ICAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFy
aXR5LCBzdGVwLCBtdWx0aXBsaWVyLCBiZWhhdmlvcik7CiAKLSAgICBGbG9hdFBvaW50IGN1cnJl
bnRQb3NpdGlvbiA9IHRoaXMtPmN1cnJlbnRQb3NpdGlvbigpOworICAgIGJvb2wgc2hvdWxkQW5p
bWF0ZSA9IHNjcm9sbEFuaW1hdGlvbkVuYWJsZWRGb3JTeXN0ZW0oKSAmJiBtX3Njcm9sbGFibGVB
cmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpICYmIGdyYW51bGFyaXR5ICE9IFNjcm9sbEJ5UGl4
ZWw7CiAgICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbiA9IHBvc2l0aW9uRnJvbVN0ZXAob3JpZW50
YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIpOwotICAgIG5ld1Bvc2l0aW9uID0gbmV3UG9zaXRpb24u
Y29uc3RyYWluZWRCZXR3ZWVuKG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9u
KCksIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOwotICAgIGlmIChj
dXJyZW50UG9zaXRpb24gPT0gbmV3UG9zaXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBuZXdQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihzY3JvbGxhYmxl
QXJlYSgpLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxhYmxlQXJlYSgpLm1heGltdW1T
Y3JvbGxQb3NpdGlvbigpKTsKKworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVh
bSA8PCAiU2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbCBmcm9tICIgPDwgY3VycmVudFBvc2l0aW9u
KCkgPDwgIiB0byAiIDw8IG5ld1Bvc2l0aW9uKTsKKworICAgIGlmICghc2hvdWxkQW5pbWF0ZSkK
KyAgICAgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKG5ld1Bvc2l0
aW9uKTsKIAogICAgIGlmIChbbV9zY3JvbGxBbmltYXRpb25IZWxwZXIgX2lzQW5pbWF0aW5nXSkg
ewogICAgICAgICBOU1BvaW50IHRhcmdldE9yaWdpbiA9IFttX3Njcm9sbEFuaW1hdGlvbkhlbHBl
ciB0YXJnZXRPcmlnaW5dOwpAQCAtODEyLDE2ICs4MDksMjcgQEAgYm9vbCBTY3JvbGxBbmltYXRv
ck1hYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFu
dWxhcmkKICAgICAgICAgICAgIG5ld1Bvc2l0aW9uLnNldFgodGFyZ2V0T3JpZ2luLngpOwogICAg
IH0KIAotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsQW5p
bWF0b3JNYWM6OnNjcm9sbCAiIDw8ICIgZnJvbSAiIDw8IGN1cnJlbnRQb3NpdGlvbiA8PCAiIHRv
ICIgPDwgbmV3UG9zaXRpb24pOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVh
bSA8PCAiU2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbCAiIDw8ICIgZnJvbSAiIDw8IGN1cnJlbnRQ
b3NpdGlvbigpIDw8ICIgdG8gIiA8PCBuZXdQb3NpdGlvbik7CiAgICAgW21fc2Nyb2xsQW5pbWF0
aW9uSGVscGVyIHNjcm9sbFRvUG9pbnQ6bmV3UG9zaXRpb25dOwogICAgIHJldHVybiB0cnVlOwog
fQogCi0vLyBGSVhNRTogTWF5YmUgdGhpcyBzaG91bGQgdGFrZSBhIHBvc2l0aW9uLgotdm9pZCBT
Y3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCitib29sIFNjcm9sbEFu
aW1hdG9yTWFjOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50
JiBuZXdQb3NpdGlvbikKIHsKKyAgICBib29sIHBvc2l0aW9uQ2hhbmdlZCA9IG5ld1Bvc2l0aW9u
ICE9IGN1cnJlbnRQb3NpdGlvbigpOworICAgIGlmICghcG9zaXRpb25DaGFuZ2VkICYmICFzY3Jv
bGxhYmxlQXJlYSgpLnNjcm9sbE9yaWdpbkNoYW5nZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gRklYTUU6IFRoaXMgaXMgdXNlZCBwcmltYXJpbHkgYnkgc21vb3RoIHNjcm9s
bGluZy4gVGhpcyBzaG91bGQgaWRlYWxseSB1c2UgbmF0aXZlIHNjcm9sbCBhbmltYXRpb25zLgor
ICAgIC8vIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODg1
NwogICAgIFttX3Njcm9sbEFuaW1hdGlvbkhlbHBlciBfc3RvcFJ1bl07Ci0gICAgaW1tZWRpYXRl
U2Nyb2xsVG9Qb3NpdGlvbihTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0
KG9mZnNldCwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmlnaW4oKSkpLCBj
bGFtcGluZyk7CisgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aEFuaW1hdGlvbihuZXdQb3NpdGlvbik7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNj
cm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKK3sKKyAgICBbbV9zY3JvbGxBbmltYXRpb25IZWxw
ZXIgX3N0b3BSdW5dOworICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlv
bldpdGhvdXRBbmltYXRpb24ocG9zaXRpb24sIGNsYW1waW5nKTsKIH0KIAogRmxvYXRQb2ludCBT
Y3JvbGxBbmltYXRvck1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25JZk5lY2Vzc2FyeShjb25zdCBG
bG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKQEAgLTg0NCwyMSArODUyLDYgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvck1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkK
ICAgICBtX3Njcm9sbGFibGVBcmVhLnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdl
KGN1cnJlbnRseUNvbnN0cmFpbnNUb0NvbnRlbnRFZGdlKTsKIH0KIAotdm9pZCBTY3JvbGxBbmlt
YXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQ
b3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCi17Ci0gICAgRmxvYXRQb2ludCBjdXJy
ZW50UG9zaXRpb24gPSB0aGlzLT5jdXJyZW50UG9zaXRpb24oKTsKLSAgICBGbG9hdFBvaW50IGFk
anVzdGVkUG9zaXRpb24gPSBjbGFtcGluZyA9PSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCA/IGFk
anVzdFNjcm9sbFBvc2l0aW9uSWZOZWNlc3NhcnkobmV3UG9zaXRpb24pIDogbmV3UG9zaXRpb247
Ci0gCi0gICAgYm9vbCBwb3NpdGlvbkNoYW5nZWQgPSBhZGp1c3RlZFBvc2l0aW9uICE9IGN1cnJl
bnRQb3NpdGlvbjsKLSAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEo
KS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0U2l6
ZSBkZWx0YSA9IGFkanVzdGVkUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb247Ci0gICAgbV9jdXJy
ZW50UG9zaXRpb24gPSBhZGp1c3RlZFBvc2l0aW9uOwotICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdl
ZChkZWx0YSk7Ci0gICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7Ci19
Ci0KIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25z
dAogewogICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaXNVc2VyU2Nyb2xsSW5Qcm9ncmVz
cygpOwpAQCAtOTIyLDcgKzkxNSw3IEBAIFN0cmluZyBTY3JvbGxBbmltYXRvck1hYzo6dmVydGlj
YWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdAogdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb3NpdGlvbkZvclNjcm9sbEFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50JiBuZXdQb3NpdGlvbikKIHsKICAgICBBU1NFUlQobV9zY3JvbGxBbmltYXRpb25IZWxw
ZXIpOwotICAgIGltbWVkaWF0ZVNjcm9sbFRvUG9zaXRpb24obmV3UG9zaXRpb24pOworICAgIFNj
cm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihuZXdQb3NpdGlv
bik7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZChj
b25zdCBGbG9hdFNpemUmIGRlbHRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDRhYjE1YzE4YzIxNGRiNTc4
MTUwNzUxOTgwNzE3MzVmOWI1NDAxYWMuLmI2YjdhYjBhMjEyNTI0ZWZlODdhYzM3ZWFkY2JlMTIw
MDdjYzVlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTI2NSwxMiArMjY1LDEyIEBAIHZvaWQgUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JiBz
Y3JvbGxPZmZzZXQsCiAgICAgc2V0Q3VycmVudFNjcm9sbFR5cGUob3B0aW9ucy50eXBlKTsKIAog
ICAgIFNjcm9sbE9mZnNldCBzbmFwcGVkT2Zmc2V0ID0gY2VpbGVkSW50UG9pbnQoc2Nyb2xsQW5p
bWF0b3IoKS5hZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKGNsYW1wZWRTY3Jv
bGxPZmZzZXQsIG9wdGlvbnMuc25hcFBvaW50U2VsZWN0aW9uTWV0aG9kKSk7CisgICAgYXV0byBz
bmFwcGVkUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoc25hcHBlZE9mZnNldCk7
CiAgICAgaWYgKG9wdGlvbnMuYW5pbWF0ZWQgPT0gQW5pbWF0ZWRTY3JvbGw6OlllcykKLSAgICAg
ICAgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihzbmFwcGVkT2Zm
c2V0KTsKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0
aW9uKHNuYXBwZWRQb3NpdGlvbik7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gc25hcHBlZFBv
c2l0aW9uID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KHNuYXBwZWRPZmZzZXQpOwogICAgICAg
ICBpZiAoIXJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShzbmFwcGVkUG9zaXRpb24sIG9wdGlv
bnMudHlwZSwgb3B0aW9ucy5jbGFtcGluZykpCi0gICAgICAgICAgICBzY3JvbGxUb09mZnNldFdp
dGhvdXRBbmltYXRpb24oc25hcHBlZE9mZnNldCwgb3B0aW9ucy5jbGFtcGluZyk7CisgICAgICAg
ICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihzbmFwcGVkUG9zaXRpb24sIG9w
dGlvbnMuY2xhbXBpbmcpOwogICAgICAgICBzZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxC
ZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOwogICAgIH0KIApAQCAtMTE1Nyw3ICsxMTU3
LDcgQEAgdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxJbmZvQWZ0
ZXJMYXlvdXQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Njcm9sbERpbWVuc2lvbnNEaXJ0
eSA9IHRydWU7Ci0gICAgU2Nyb2xsT2Zmc2V0IG9yaWdpbmFsU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xs
T2Zmc2V0KCk7CisgICAgU2Nyb2xsUG9zaXRpb24gb3JpZ2luYWxTY3JvbGxQb3NpdGlvbiA9IHNj
cm9sbFBvc2l0aW9uKCk7CiAKICAgICBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOwogICAgIG1f
bGF5ZXIudXBkYXRlU2VsZlBhaW50aW5nTGF5ZXIoKTsKQEAgLTExODgsOCArMTE4OCw4IEBAIHZv
aWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
KCkKIAogICAgIHVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCgpOwogCi0gICAgaWYgKG9yaWdp
bmFsU2Nyb2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpKQotICAgICAgICBzY3JvbGxUb09mZnNl
dFdpdGhvdXRBbmltYXRpb24oSW50UG9pbnQoc2Nyb2xsT2Zmc2V0KCkpKTsKKyAgICBpZiAob3Jp
Z2luYWxTY3JvbGxQb3NpdGlvbiAhPSBzY3JvbGxQb3NpdGlvbigpKQorICAgICAgICBzY3JvbGxU
b1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihJbnRQb2ludChzY3JvbGxQb3NpdGlvbigpKSk7CiAK
ICAgICBpZiAobV9sYXllci5pc0NvbXBvc2l0ZWQoKSkgewogICAgICAgICBtX2xheWVyLnNldE5l
ZWRzQ29tcG9zaXRpbmdHZW9tZXRyeVVwZGF0ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>