<?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>231347</bug_id>
          
          <creation_ts>2021-10-06 21:28:55 -0700</creation_ts>
          <short_desc>Clean up state maintenance around animated scrolls</short_desc>
          <delta_ts>2021-10-07 09:22:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cathiechen</cc>
    
    <cc>changseok</cc>
    
    <cc>clord</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801493</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-06 21:28:55 -0700</bug_when>
    <thetext>Clean up state maintenance around animated scrolls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801494</commentid>
    <comment_count>1</comment_count>
      <attachid>440466</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-06 21:35:00 -0700</bug_when>
    <thetext>Created attachment 440466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801543</commentid>
    <comment_count>2</comment_count>
      <attachid>440466</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-07 01:18:00 -0700</bug_when>
    <thetext>Comment on attachment 440466
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440466&amp;action=review

Really glad to see this simplification.

&gt; Source/WebCore/platform/ScrollView.cpp:530
&gt; +    if ((!delegatesScrolling() || currentScrollType() == ScrollType::User) &amp;&amp; scrollAnimationStatus() == ScrollAnimationStatus::NotAnimating &amp;&amp; newScrollPosition == this-&gt;scrollPosition())

I wonder about the combination of testing `scrollAnimationStatus() == ScrollAnimationStatus::NotAnimating` and the call to `scrollAnimator().cancelAnimations();` above. Perhaps `scrollAnimationStatus() == ScrollAnimationStatus::NotAnimating` is always true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801618</commentid>
    <comment_count>3</comment_count>
      <attachid>440466</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-07 08:58:12 -0700</bug_when>
    <thetext>Comment on attachment 440466
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440466&amp;action=review

&gt;&gt; Source/WebCore/platform/ScrollView.cpp:530
&gt;&gt; +    if ((!delegatesScrolling() || currentScrollType() == ScrollType::User) &amp;&amp; scrollAnimationStatus() == ScrollAnimationStatus::NotAnimating &amp;&amp; newScrollPosition == this-&gt;scrollPosition())
&gt; 
&gt; I wonder about the combination of testing `scrollAnimationStatus() == ScrollAnimationStatus::NotAnimating` and the call to `scrollAnimator().cancelAnimations();` above. Perhaps `scrollAnimationStatus() == ScrollAnimationStatus::NotAnimating` is always true?

I think you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801622</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-07 09:21:07 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/283716/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801623</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-07 09:22:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83984449&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440466</attachid>
            <date>2021-10-06 21:35:00 -0700</date>
            <delta_ts>2021-10-07 01:18:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231347-20211006213500.patch</filename>
            <type>text/plain</type>
            <size>21851</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEyOTlmYzM3MzIzYzI5
ZjgyMTlkYjM1MDdlMGUwYzllZjU1NzkwZi4uYTRjODM1NGE4NmVhOGRkNjM4MzRlMDk0NzY3OWEw
NjE5OGM2NjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIxLTEwLTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHN0
YXRlIG1haW50ZW5hbmNlIGFyb3VuZCBhbmltYXRlZCBzY3JvbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEzNDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JvbGxCZWhhdmlvclN0YXR1cyB0cmFj
a2VkIHdoZXRoZXIgYW4gYW5pbWF0ZWQgc2Nyb2xsIGlzIGluIHByb2dyZXNzLiBSZW5hbWUgaXQK
KyAgICAgICAgZm9yIGNsYXJpdHksIGFuZCByZW1vdmUgdGhlICJub24tbmF0aXZlIiB0ZXJtIHNp
bmNlIHRoaXMgd2lsbCBuZXZlciB0cmFjayBuYXRpdmUKKyAgICAgICAgdnMuIG5vbi1uYXRpdmUg
YW5pbWF0aW9ucy4KKworICAgICAgICBTaW5jZSBTY3JvbGxCZWhhdmlvclN0YXR1cyBpcyBzcGVj
aWZpY2FsbHkgYWJvdXQgcHJvZ3JhbW1hdGljIHNtb290aCBzY3JvbGwgYW5pbWF0aW9ucworICAg
ICAgICB0cmlnZ2VyZWQgZnJvbSBzY3JpcHQsIGl0IHNob3VsZCBiZSBzdG9yZWQgb24gU2Nyb2xs
YWJsZUFyZWEgYW5kIGlzIG5vdCByZWxldmFudCB0byB0aGUKKyAgICAgICAgc2Nyb2xsaW5nIHRy
ZWUuIFJlbW92ZSBpdCBmcm9tIHRoZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
cy4KKworICAgICAgICBUaGUgc3RhdGUgYmVjb21lcyBTY3JvbGxBbmltYXRpb25TdGF0dXM6OkFu
aW1hdGluZyBpbW1lZGlhdGVseSB3aGVuIEpTIHRyaWdnZXJzIGFuaW1hdGlvbnMsCisgICAgICAg
IGJ1dCB0aGUgYW5pbWF0aW9uIGNvbXBsZXRpb24gc2lnbmFsIG1heSBjb21lIGJhY2sgaW4gZnV0
dXJlIGZyb20gdGhlIHNjcm9sbGluZyB0aHJlYWQuCisgICAgICAgIEN1cnJlbnRseSBpdCBjb21l
cyB2aWEgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgp
LgorCisgICAgICAgIFdlIG5ldmVyIG5lZWQgdG8gY2FsbCBzZXRTY3JvbGxBbmltYXRpb25TdGF0
dXMoU2Nyb2xsQW5pbWF0aW9uU3RhdHVzOjpOb3RBbmltYXRpbmcpIG90aGVyCisgICAgICAgIHRo
YW4gZnJvbSBzY3JvbGxBbmltYXRpb25EaWRFbmQoKSwgYmVjYXVzZSBjYW5jZWxpbmcgYW4gb25n
b2luZyBhbmltYXRpb24gd2lsbCBhbHdheXMKKyAgICAgICAgY2FsbCB0aGF0LgorCisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3Jv
bGxUbyBjb25zdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbik6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9z
aXRpb25XaXRoQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpy
ZXRhcmdldFJ1bm5pbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OndpbGxTdGFydEFuaW1hdGVkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpkaWRTdG9wQW5pbWF0ZWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3I6OnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxCZWhhdmlvclN0YXR1cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGFibGVBcmVhOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxhYmxlQXJlYTo6cmVzbmFwQWZ0ZXJMYXlvdXQpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
c2Nyb2xsQW5pbWF0aW9uU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
OjpzZXRTY3JvbGxBbmltYXRpb25TdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJs
ZUFyZWE6OmN1cnJlbnRTY3JvbGxCZWhhdmlvclN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRp
b25EaWRFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudDo6
d2lsbFN0YXJ0QW5pbWF0ZWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXJDbGllbnQ6OmRpZFN0b3BBbmltYXRlZFNjcm9sbCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9PZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG8pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb24p
OgorCiAyMDIxLTEwLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbmFtZSB0aGUgQW5pbWF0ZWRTY3JvbGwgZW51bSB0byBTY3JvbGxJc0FuaW1h
dGVkIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGNmYTJk
YzAyMjBlNmZjNjViNmZiZmNiNzk1ZDgwZDk1YTdiZTU4NTAuLjAxYWExNmNjZGQ0YTcxMmQxYjg0
N2JjMWVjMGM2OWZlNGI3NzJlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE3
MTIsNyArMTcxMiw3IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxUbyhjb25zdCBTY3JvbGxUb09w
dGlvbnMmIG9wdGlvbnMsIFNjcm9sbENsYW1waW5nIGNsYW1waW5nCiAKICAgICAvLyBUaGlzIGlz
IGFuIG9wdGltaXphdGlvbiBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIHNjcm9sbGluZyB0byAoMCwg
MCkgd2hlbiB0aGUgc2Nyb2xsZXIgaXMgYWxyZWFkeSBhdCB0aGUgb3JpZ2luLgogICAgIC8vIElm
IGFuIGFuaW1hdGVkIHNjcm9sbCBpcyBpbiBwcm9ncmVzcywgdGhpcyBvcHRpbWl6YXRpb24gaXMg
c2tpcHBlZCB0byBlbnN1cmUgdGhhdCB0aGUgYW5pbWF0ZWQgc2Nyb2xsIGlzIHJlYWxseSBzdG9w
cGVkLgotICAgIGlmICh2aWV3LT5jdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBTY3Jv
bGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24gJiYgIXNjcm9sbFRvT3B0aW9ucy5sZWZ0
LnZhbHVlKCkgJiYgIXNjcm9sbFRvT3B0aW9ucy50b3AudmFsdWUoKSAmJiB2aWV3LT5jb250ZW50
c1Njcm9sbFBvc2l0aW9uKCkgPT0gSW50UG9pbnQoMCwgMCkpCisgICAgaWYgKHZpZXctPnNjcm9s
bEFuaW1hdGlvblN0YXR1cygpID09IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90QW5pbWF0aW5n
ICYmICFzY3JvbGxUb09wdGlvbnMubGVmdC52YWx1ZSgpICYmICFzY3JvbGxUb09wdGlvbnMudG9w
LnZhbHVlKCkgJiYgdmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpLmlzWmVybygpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAwMGViNWZjYzYz
ODQyNWNjZDMwZjg1MzlhMDljNzBhNmQ2OTEzN2FlLi5jMTdkMWRlODgyMGQzNWE5MjlhMzZiMzI1
Y2E3NTJjMjY0YmRjNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzY4LDkg
KzM3NjgsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9u
KGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbiwgU2MKICAgICBhdXRvIHByZXZpb3VzU2Ny
b2xsVHlwZSA9IGN1cnJlbnRTY3JvbGxUeXBlKCk7CiAgICAgc2V0Q3VycmVudFNjcm9sbFR5cGUo
c2Nyb2xsVHlwZSk7CiAKLSAgICBpZiAoY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgPT0g
U2Nyb2xsQmVoYXZpb3JTdGF0dXM6OkluTm9uTmF0aXZlQW5pbWF0aW9uKQorICAgIGlmIChzY3Jv
bGxBbmltYXRpb25TdGF0dXMoKSA9PSBTY3JvbGxBbmltYXRpb25TdGF0dXM6OkFuaW1hdGluZykK
ICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5jYW5jZWxBbmltYXRpb25zKCk7Ci0gICAgaWYgKHBv
c2l0aW9uICE9IHRoaXMtPnNjcm9sbFBvc2l0aW9uKCkpCisKKyAgICBpZiAocG9zaXRpb24gIT0g
c2Nyb2xsUG9zaXRpb24oKSkKICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFRvUG9zaXRp
b25XaXRoQW5pbWF0aW9uKHBvc2l0aW9uKTsKIAogICAgIHNldEN1cnJlbnRTY3JvbGxUeXBlKHBy
ZXZpb3VzU2Nyb2xsVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWMuaAppbmRleCBhOGI3Mzk1ZDc1MmIxZjEwMmNjZjM4Mzc4Y2VmMWVmOThhOTQ2YTI4
Li4wYTg0NTViMjA2MDZkZGQ4NTE0OTExNTVlNjI2NjkwYWY4NTNmMDBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKQEAgLTgxLDggKzgxLDYgQEAg
cHJpdmF0ZToKICAgICBSZWN0RWRnZXM8Ym9vbD4gZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBhbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
c2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXMgc3RhdHVzKSBmaW5h
bCB7IG1fc2Nyb2xsQmVoYXZpb3JTdGF0dXMgPSBzdGF0dXM7IH0KLSAgICBTY3JvbGxCZWhhdmlv
clN0YXR1cyBzY3JvbGxCZWhhdmlvclN0YXR1cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Ny
b2xsQmVoYXZpb3JTdGF0dXM7IH0KIAogICAgIGJvb2wgc2hvdWxkUnViYmVyQmFuZE9uU2lkZShC
b3hTaWRlKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZs
b2F0U2l6ZSYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIGZpbmFs
OwpAQCAtMTA4LDcgKzEwNiw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVu
TG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYz4+IG1fc2Ny
b2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyOwogCi0gICAgU2Nyb2xsQmVoYXZpb3JTdGF0dXMg
bV9zY3JvbGxCZWhhdmlvclN0YXR1cyB7IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1h
dGlvbiB9OwogICAgIGJvb2wgbV9pbk1vbWVudHVtUGhhc2UgeyBmYWxzZSB9OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YS5oCmluZGV4IDJlNGFhYjFiZThiYTdlZmNjNDJmNmExYWY1ZWQ5ZTAyNTFkNGQzMzMuLjIwODc5
MzkyNjA0ZGE4YWJlMzQ0YmYzOGQ4ZmNlNDAxZDcxYjljOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKQEAgLTYzLDkg
KzYzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3Rh
dHVzIHN0YXR1cykgZmluYWwgeyBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzID0gc3RhdHVzOyB9Ci0g
ICAgU2Nyb2xsQmVoYXZpb3JTdGF0dXMgc2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzOyB9Ci0KICAgICB2b2lkIGltbWVkaWF0
ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBp
bmc6OkNsYW1wZWQpIGZpbmFsOwogCiAgICAgdm9pZCBhZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkoKSBmaW5hbDsKQEAgLTgwLDcgKzc3LDYgQEAgcHJpdmF0ZToKIAogICAg
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWE+PiBtX2FuaW1hdGlvblRpbWVyOwotICAgIFNjcm9sbEJlaGF2aW9yU3RhdHVz
IG1fc2Nyb2xsQmVoYXZpb3JTdGF0dXMgeyBTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5Bbmlt
YXRpb24gfTsKIAogICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBmYWxzZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBkYjZh
NzcwYTM4ZjVjMzQzNDcyMTUxNzkxOTYxM2YwYzAyMjA1ZDZlLi5jNTA1MmE2M2Y2NWUyOGY4MDk4
OGQ0NWQyYWNkOWNiMjY4ZGYwN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCkBAIC0xMTksMTQgKzExOSwxMiBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlv
bgogICAgIGlmICghcG9zaXRpb25DaGFuZ2VkICYmICFzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9y
aWdpbkNoYW5nZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9zY3JvbGxDb250
cm9sbGVyLnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKG9mZnNldEZyb21Qb3NpdGlv
bihtX2N1cnJlbnRQb3NpdGlvbiksIG9mZnNldEZyb21Qb3NpdGlvbihuZXdQb3NpdGlvbikpOwot
ICAgIHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5h
dGl2ZUFuaW1hdGlvbik7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fc2Nyb2xsQ29u
dHJvbGxlci5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihvZmZzZXRGcm9tUG9zaXRp
b24obV9jdXJyZW50UG9zaXRpb24pLCBvZmZzZXRGcm9tUG9zaXRpb24obmV3UG9zaXRpb24pKTsK
IH0KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogewotICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYSgp
LmN1cnJlbnRTY3JvbGxCZWhhdmlvclN0YXR1cygpID09IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJ
bk5vbk5hdGl2ZUFuaW1hdGlvbik7CisgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhKCkuc2Nyb2xs
QW5pbWF0aW9uU3RhdHVzKCkgPT0gU2Nyb2xsQW5pbWF0aW9uU3RhdHVzOjpBbmltYXRpbmcpOwog
ICAgIG1fc2Nyb2xsQ29udHJvbGxlci5yZXRhcmdldEFuaW1hdGVkU2Nyb2xsKG9mZnNldEZyb21Q
b3NpdGlvbihuZXdQb3NpdGlvbikpOwogfQogCkBAIC0yOTIsMTQgKzI5MCwxNCBAQCBib29sIFNj
cm9sbEFuaW1hdG9yOjphbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWEuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKIH0KIAotdm9pZCBT
Y3JvbGxBbmltYXRvcjo6c2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0
dXMgc3RhdHVzKQordm9pZCBTY3JvbGxBbmltYXRvcjo6d2lsbFN0YXJ0QW5pbWF0ZWRTY3JvbGwo
KQogewotICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoc3RhdHVz
KTsKKyAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEFuaW1hdGlvblN0YXR1cyhTY3JvbGxB
bmltYXRpb25TdGF0dXM6OkFuaW1hdGluZyk7CiB9CiAKLVNjcm9sbEJlaGF2aW9yU3RhdHVzIFNj
cm9sbEFuaW1hdG9yOjpzY3JvbGxCZWhhdmlvclN0YXR1cygpIGNvbnN0Cit2b2lkIFNjcm9sbEFu
aW1hdG9yOjpkaWRTdG9wQW5pbWF0ZWRTY3JvbGwoKQogewotICAgIHJldHVybiBtX3Njcm9sbGFi
bGVBcmVhLmN1cnJlbnRTY3JvbGxCZWhhdmlvclN0YXR1cygpOworICAgIG1fc2Nyb2xsYWJsZUFy
ZWEuc2V0U2Nyb2xsQW5pbWF0aW9uU3RhdHVzKFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90QW5p
bWF0aW5nKTsKIH0KIAogI2lmIEhBVkUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCBhZTUzYmIwYjc0ODZiNTEyZWUyZjJmZmU3ZGI0
YTRlMGVjYjY0YTczLi40ZThlMGVmNzRkN2RmMTIzZmQ5NDNkZDdlOGEzMjYxOTJiNjAzOGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTE0NSw4ICsxNDUs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsK
IAotICAgIHZvaWQgc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXMp
IGZpbmFsOwotICAgIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2aW9yU3RhdHVzKCkg
Y29uc3QgZmluYWw7CisgICAgdm9pZCB3aWxsU3RhcnRBbmltYXRlZFNjcm9sbCgpIGZpbmFsOwor
ICAgIHZvaWQgZGlkU3RvcEFuaW1hdGVkU2Nyb2xsKCkgZmluYWw7CiAKICAgICB2b2lkIGltbWVk
aWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xh
bXBpbmc6OkNsYW1wZWQpIGZpbmFsOwogICAgIHZvaWQgYWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0Jv
dW5kc0lmTmVjZXNzYXJ5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMu
aAppbmRleCAzYjE3N2M2ZGU0YTM4OTdlMjg4NzdkNjAzY2I1NDA2NWEwNmIzZDliLi5jOWQxNzQ5
YzFmYTQ0MjY2NzIxMmEyNWFhZDA4YTdlMzJmMGJmYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFR5cGVzLmgKQEAgLTY3LDExICs2Nyw5IEBAIGVudW0gU2Nyb2xsTG9naWNhbERpcmVj
dGlvbiA6IHVpbnQ4X3QgewogICAgIFNjcm9sbElubGluZURpcmVjdGlvbkZvcndhcmQKIH07CiAK
LS8vIEZJWE1FOiBBZGQgYW5vdGhlciBzdGF0dXMgSW5OYXRpdmVBbmltYXRpb24gdG8gaW5kaWNh
dGUgbmF0aXZlIHNjcm9sbGluZyBpcyBpbiBwcm9ncmVzcy4KLS8vIFNlZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDkzNgotZW51bSBjbGFzcyBTY3JvbGxCZWhh
dmlvclN0YXR1cyA6IHVpbnQ4X3QgewotICAgIE5vdEluQW5pbWF0aW9uLAotICAgIEluTm9uTmF0
aXZlQW5pbWF0aW9uLAorZW51bSBjbGFzcyBTY3JvbGxBbmltYXRpb25TdGF0dXMgOiB1aW50OF90
IHsKKyAgICBOb3RBbmltYXRpbmcsCisgICAgQW5pbWF0aW5nLAogfTsKIAogZW51bSBjbGFzcyBT
Y3JvbGxJc0FuaW1hdGVkIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IDNkNTQxYTdhNGQ1Y2EyZTljODc3MTc4M2Q2ZjliNDNjNzk2ODFiYjMuLjVl
ZmIyYjEzYmIzMmU0M2E1ZjA4M2M0ZjBiNjAyYWI0YWJjZmQ1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MjMsMTcgKzUyMywxNSBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBzY3JvbGxQb3NpdGlv
biwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGN1cnJlbnRTY3Jv
bGxCZWhhdmlvclN0YXR1cygpID09IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5hdGl2ZUFu
aW1hdGlvbikKKyAgICBpZiAoc2Nyb2xsQW5pbWF0aW9uU3RhdHVzKCkgPT0gU2Nyb2xsQW5pbWF0
aW9uU3RhdHVzOjpBbmltYXRpbmcpCiAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuY2FuY2VsQW5p
bWF0aW9ucygpOwogCiAgICAgU2Nyb2xsUG9zaXRpb24gbmV3U2Nyb2xsUG9zaXRpb24gPSAoIWRl
bGVnYXRlc1Njcm9sbGluZygpICYmIG9wdGlvbnMuY2xhbXBpbmcgPT0gU2Nyb2xsQ2xhbXBpbmc6
OkNsYW1wZWQpID8gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShzY3JvbGxQb3NpdGlv
bikgOiBzY3JvbGxQb3NpdGlvbjsKLSAgICBpZiAoKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSB8fCBj
dXJyZW50U2Nyb2xsVHlwZSgpID09IFNjcm9sbFR5cGU6OlVzZXIpICYmIGN1cnJlbnRTY3JvbGxC
ZWhhdmlvclN0YXR1cygpID09IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbiAm
JiBuZXdTY3JvbGxQb3NpdGlvbiA9PSB0aGlzLT5zY3JvbGxQb3NpdGlvbigpKQorICAgIGlmICgo
IWRlbGVnYXRlc1Njcm9sbGluZygpIHx8IGN1cnJlbnRTY3JvbGxUeXBlKCkgPT0gU2Nyb2xsVHlw
ZTo6VXNlcikgJiYgc2Nyb2xsQW5pbWF0aW9uU3RhdHVzKCkgPT0gU2Nyb2xsQW5pbWF0aW9uU3Rh
dHVzOjpOb3RBbmltYXRpbmcgJiYgbmV3U2Nyb2xsUG9zaXRpb24gPT0gdGhpcy0+c2Nyb2xsUG9z
aXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFyZXF1ZXN0U2Nyb2xsUG9zaXRp
b25VcGRhdGUobmV3U2Nyb2xsUG9zaXRpb24sIGN1cnJlbnRTY3JvbGxUeXBlKCksIG9wdGlvbnMu
Y2xhbXBpbmcpKQogICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG5ld1Njcm9sbFBvc2l0aW9uKTsK
LQotICAgIHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJ
bkFuaW1hdGlvbik7CiB9CiAKIGJvb2wgU2Nyb2xsVmlldzo6c2Nyb2xsKFNjcm9sbERpcmVjdGlv
biBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGM1ZjZlN2ZmM2JlZWZiMzRhMzAw
NTRiMGVmNDkxZjJlZWY5ZWQ5NjEuLjMwMzhiMzRmZWM1OGUzMDBjMzc4YTEzZGMxZDVmNzQzMjEy
YTk4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAg
LTE0Myw3ICsxNDMsOCBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbgogdm9pZCBTY3JvbGxhYmxl
QXJlYTo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb24sIFNjcm9sbENsYW1waW5nKQogewogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcs
IHN0cmVhbSA8PCAiU2Nyb2xsYWJsZUFyZWEgIiA8PCB0aGlzIDw8ICIgc2Nyb2xsVG9Qb3NpdGlv
bldpdGhBbmltYXRpb24gIiA8PCBwb3NpdGlvbik7Ci0gICAgc2Nyb2xsQW5pbWF0b3IoKS5zY3Jv
bGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihwb3NpdGlvbik7CisgICAgaWYgKHNjcm9sbEFuaW1h
dG9yKCkuc2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24ocG9zaXRpb24pKQorICAgICAgICBz
ZXRTY3JvbGxBbmltYXRpb25TdGF0dXMoU2Nyb2xsQW5pbWF0aW9uU3RhdHVzOjpBbmltYXRpbmcp
OwogfQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRp
b24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykKQEAg
LTUzOSw3ICs1NDAsNyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpyZXNuYXBBZnRlckxheW91dCgp
CiAgICAgaWYgKGNvcnJlY3RlZE9mZnNldCAhPSBjdXJyZW50T2Zmc2V0KSB7CiAgICAgICAgIExP
R19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiBhZGp1c3Rpbmcgb2Zmc2V0IGZy
b20gIiA8PCBjdXJyZW50T2Zmc2V0IDw8ICIgdG8gIiA8PCBjb3JyZWN0ZWRPZmZzZXQpOwogICAg
ICAgICBhdXRvIHBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb25Gcm9tT2Zmc2V0KGNvcnJlY3RlZE9m
ZnNldCk7Ci0gICAgICAgIGlmIChjdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBTY3Jv
bGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pCisgICAgICAgIGlmIChzY3JvbGxBbmlt
YXRpb25TdGF0dXMoKSA9PSBTY3JvbGxBbmltYXRpb25TdGF0dXM6Ok5vdEFuaW1hdGluZykKICAg
ICAgICAgICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb3JyZWN0ZWRPZmZzZXQp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzY3JvbGxBbmltYXRvci0+cmV0YXJnZXRSdW5u
aW5nQW5pbWF0aW9uKHBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oCmluZGV4IDQxM2JiYTBiNTU5MjkwYjdkNGQzNjVmZmM2NWM5MDgwYTY5NzFkOWIuLjc5
N2RhNTAzZWU3YWY2Mzk3NmYyY2M4YTZmYzJmZGM5NDI2ZDFjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNjgsOSArNjgsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzUERGUGx1Z2luKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFNj
cm9sbEJlaGF2aW9yU3RhdHVzIGN1cnJlbnRTY3JvbGxCZWhhdmlvclN0YXR1cygpIHsgcmV0dXJu
IG1fY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxCZWhh
dmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cyBzdGF0dXMpIHsgbV9jdXJyZW50U2Nyb2xs
QmVoYXZpb3JTdGF0dXMgPSBzdGF0dXM7IH0KLQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Ny
b2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIg
PSAxKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpD
bGFtcGVkKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0
QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1w
aW5nOjpDbGFtcGVkKTsKQEAgLTI1Miw2ICsyNDksMTAgQEAgcHVibGljOgogICAgIFNjcm9sbFR5
cGUgY3VycmVudFNjcm9sbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTY3JvbGxUeXBl
OyB9CiAgICAgdm9pZCBzZXRDdXJyZW50U2Nyb2xsVHlwZShTY3JvbGxUeXBlIHNjcm9sbFR5cGUp
IHsgbV9jdXJyZW50U2Nyb2xsVHlwZSA9IHNjcm9sbFR5cGU7IH0KIAorICAgIC8vIFRoaXMgcmVm
bGVjdHMgYW5pbWF0ZWQgc2Nyb2xscyB0cmlnZ2VyZWQgYnkgQ1NTIE9NIFZpZXcgInNtb290aCIg
c2Nyb2xscy4KKyAgICBTY3JvbGxBbmltYXRpb25TdGF0dXMgc2Nyb2xsQW5pbWF0aW9uU3RhdHVz
KCkgeyByZXR1cm4gbV9zY3JvbGxBbmltYXRpb25TdGF0dXM7IH0KKyAgICB2b2lkIHNldFNjcm9s
bEFuaW1hdGlvblN0YXR1cyhTY3JvbGxBbmltYXRpb25TdGF0dXMgc3RhdHVzKSB7IG1fc2Nyb2xs
QW5pbWF0aW9uU3RhdHVzID0gc3RhdHVzOyB9CisKICAgICBib29sIHNjcm9sbFNob3VsZENsZWFy
TGF0Y2hlZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxTaG91bGRDbGVhckxhdGNoZWRT
dGF0ZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsU2hvdWxkQ2xlYXJMYXRjaGVkU3RhdGUoYm9vbCBz
aG91bGRDbGVhcikgeyBtX3Njcm9sbFNob3VsZENsZWFyTGF0Y2hlZFN0YXRlID0gc2hvdWxkQ2xl
YXI7IH0KIApAQCAtNDAzLDcgKzQwNCw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHsgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlOjpT
Y3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0IH07CiAKICAgICBTY3JvbGxUeXBlIG1fY3VycmVu
dFNjcm9sbFR5cGUgeyBTY3JvbGxUeXBlOjpVc2VyIH07Ci0gICAgU2Nyb2xsQmVoYXZpb3JTdGF0
dXMgbV9jdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMgeyBTY3JvbGxCZWhhdmlvclN0YXR1czo6
Tm90SW5BbmltYXRpb24gfTsKKyAgICBTY3JvbGxBbmltYXRpb25TdGF0dXMgbV9zY3JvbGxBbmlt
YXRpb25TdGF0dXMgeyBTY3JvbGxBbmltYXRpb25TdGF0dXM6Ok5vdEFuaW1hdGluZyB9OwogCiAg
ICAgYm9vbCBtX2luTGl2ZVJlc2l6ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Njcm9sbE9yaWdp
bkNoYW5nZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCmluZGV4IDRkYWUwMjViY2ExNWExYzUxZTQz
NGU5NWZmNWY3YzVmMmM0NTU5ZTcuLjBkMDkwZjQ1MDRkZGY0MjA4ZTJmNTk1Y2MyNDFjNDI3MDFj
Yzc2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTQ1Niw3ICs0NTYsOCBAQCB2b2lkIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJiBh
bmltYXRpbwogICAgICAgICBzdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOwogICAgIH0KIAotICAg
IG1fY2xpZW50LnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpO
b3RJbkFuaW1hdGlvbik7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gdHJhY2sgc3RhdGUgYmV0dGVy
IGFuZCBvbmx5IGNhbGwgdGhpcyB3aGVuIHRoZSBydW5uaW5nIGFuaW1hdGlvbiBpcyBmb3IgQ1NT
IHNtb290aCBzY3JvbGxpbmcuIENhbGxpbmcgc2hvdWxkIGJlIGhhcm1sZXNzLCB0aG91Z2guCisg
ICAgbV9jbGllbnQuZGlkU3RvcEFuaW1hdGVkU2Nyb2xsKCk7CiAgICAgc3RhcnRPclN0b3BBbmlt
YXRpb25DYWxsYmFja3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKaW5kZXggYTY0NTc2NDUxMGQzNTc4NTU4ZDlh
NDUxNjZlZTFkZGM4MjJkNTU0NC4uNGM2MjRhZWIwNGFmOTU4NzIxNTNiNTYzYzQ4MmM1MmFkMTY0
MzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5oCkBAIC04MiwxMCArODIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgPSAwOwogCi0gICAgLy8gRklYTUU6
IE1heWJlIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNob3VsZCBiZSBzdG9yZWQgb24gU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbEJlaGF2aW9yU3Rh
dHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzKSA9IDA7Ci0gICAgdmlydHVhbCBTY3JvbGxCZWhhdmlv
clN0YXR1cyBzY3JvbGxCZWhhdmlvclN0YXR1cygpIGNvbnN0ID0gMDsKLQogICAgIHZpcnR1YWwg
dm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmLCBTY3JvbGxDbGFtcGluZyA9
IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKSA9IDA7CiAKICAgICAvLyBJZiB0aGUgY3VycmVudCBz
Y3JvbGwgcG9zaXRpb24gaXMgd2l0aGluIHRoZSBvdmVyaGFuZyBhcmVhLCB0aGlzIGZ1bmN0aW9u
IHdpbGwgY2F1c2UKQEAgLTExMyw4ICsxMDksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpEZWZlclJlYXNvbikgY29uc3QgeyAvKiBEbyBub3RoaW5nICovIH0KIAogICAgIHZp
cnR1YWwgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbFN0YXJ0QW5pbWF0ZWRTY3JvbGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RvcEFuaW1hdGVkU2Nyb2xsKCkgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0U2Ny
b2xsU25hcEFuaW1hdGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wU2Nyb2xsU25h
cEFuaW1hdGlvbigpIHsgfQorCiAgICAgdmlydHVhbCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNjcm9sbEFuaW1hdGlvbkVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYmQyODQ3NmMyNTI0NjA0ODYwZWVhMjE3
OTIwOWFlM2YwNTRjOTg5OS4uMDNmMzEzZGE3NTgxNjk4ZmFjZmUwZDVhMDg3Njc1ZWE3YWY1MTAy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYTo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0
aW9uCiAKIFNjcm9sbE9mZnNldCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb09m
ZnNldChjb25zdCBTY3JvbGxPZmZzZXQmIHNjcm9sbE9mZnNldCwgY29uc3QgU2Nyb2xsUG9zaXRp
b25DaGFuZ2VPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmIChjdXJyZW50U2Nyb2xsQmVoYXZp
b3JTdGF0dXMoKSA9PSBTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24p
CisgICAgaWYgKHNjcm9sbEFuaW1hdGlvblN0YXR1cygpID09IFNjcm9sbEFuaW1hdGlvblN0YXR1
czo6QW5pbWF0aW5nKQogICAgICAgICBzY3JvbGxBbmltYXRvcigpLmNhbmNlbEFuaW1hdGlvbnMo
KTsKIAogICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xsT2Zmc2V0ID0gb3B0aW9ucy5jbGFt
cGluZyA9PSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCA/IGNsYW1wU2Nyb2xsT2Zmc2V0KHNjcm9s
bE9mZnNldCkgOiBzY3JvbGxPZmZzZXQ7CkBAIC0yNzAsMTEgKzI3MCw4IEBAIFNjcm9sbE9mZnNl
dCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb09mZnNldChjb25zdCBTY3JvbGxP
ZmZzZXQmIHNjcm9sCiAgICAgYXV0byBzbmFwcGVkUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbkZy
b21PZmZzZXQoc25hcHBlZE9mZnNldCk7CiAgICAgaWYgKG9wdGlvbnMuYW5pbWF0ZWQgPT0gU2Ny
b2xsSXNBbmltYXRlZDo6WWVzKQogICAgICAgICBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9Qb3Np
dGlvbldpdGhBbmltYXRpb24oc25hcHBlZFBvc2l0aW9uKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
aWYgKCFyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoc25hcHBlZFBvc2l0aW9uLCBvcHRpb25z
LnR5cGUsIG9wdGlvbnMuY2xhbXBpbmcpKQotICAgICAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24oc25hcHBlZFBvc2l0aW9uLCBvcHRpb25zLmNsYW1waW5nKTsKLSAgICAg
ICAgc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5p
bWF0aW9uKTsKLSAgICB9CisgICAgZWxzZSBpZiAoIXJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0
ZShzbmFwcGVkUG9zaXRpb24sIG9wdGlvbnMudHlwZSwgb3B0aW9ucy5jbGFtcGluZykpCisgICAg
ICAgIHNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKHNuYXBwZWRQb3NpdGlvbiwgb3B0
aW9ucy5jbGFtcGluZyk7CiAKICAgICBzZXRDdXJyZW50U2Nyb2xsVHlwZShwcmV2aW91c1Njcm9s
bFR5cGUpOwogICAgIHJldHVybiBzbmFwcGVkT2Zmc2V0OwpAQCAtMzEyLDcgKzMwOSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRp
b24mIHBvc2l0aW9uKQogI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKG1fc2Nyb2xsUG9zaXRpb24g
PT0gbmV3UG9zaXRpb24gJiYgY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgPT0gU2Nyb2xs
QmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKSB7CisgICAgaWYgKG1fc2Nyb2xsUG9zaXRp
b24gPT0gbmV3UG9zaXRpb24gJiYgc2Nyb2xsQW5pbWF0aW9uU3RhdHVzKCkgPT0gU2Nyb2xsQW5p
bWF0aW9uU3RhdHVzOjpOb3RBbmltYXRpbmcpIHsKICAgICAgICAgLy8gRklYTUU6IE5vdGhpbmcg
Z3VhcmFudGVlcyB3ZSBnZXQgYSBzY3JvbGxUbygpIHdpdGggYW4gdW5jaGFuZ2VkIHBvc2l0aW9u
IGF0IHRoZSBlbmQgb2YgYSB1c2VyIGdlc3R1cmUuCiAgICAgICAgIC8vIFRoZSBTY3JvbGxpbmdD
b29yZGluYXRvciBwcm9iYWJseSBuZWVkcyB0byBtZXNzYWdlIHRoZSBtYWluIHRocmVhZCB3aGVu
IGEgZ2VzdHVyZSBlbmRzLgogICAgICAgICBpZiAocmVxdWlyZXNTY3JvbGxQb3NpdGlvblJlY29u
Y2lsaWF0aW9uKCkpIHsKQEAgLTE3NTksNyArMTc1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
UmVjdD4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb24oY29u
c3QKICAgICBBU1NFUlQoYm94KTsKIAogICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xsT2Zm
c2V0ID0gY2xhbXBTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCkgKyB0b0ludFNpemUocm91bmRl
ZEludFJlY3QocmV2ZWFsUmVjdCkubG9jYXRpb24oKSkpOwotICAgIGlmIChjbGFtcGVkU2Nyb2xs
T2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpIHx8IGN1cnJlbnRTY3JvbGxCZWhhdmlvclN0YXR1cygp
ICE9IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbikgeworICAgIGlmIChjbGFt
cGVkU2Nyb2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpIHx8IHNjcm9sbEFuaW1hdGlvblN0YXR1
cygpICE9IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90QW5pbWF0aW5nKSB7CiAgICAgICAgIFNj
cm9sbE9mZnNldCBvbGRTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKICAgICAgICAgU2Ny
b2xsT2Zmc2V0IHJlYWxTY3JvbGxPZmZzZXQgPSBzY3JvbGxUb09mZnNldChjbGFtcGVkU2Nyb2xs
T2Zmc2V0LCBvcHRpb25zKTsKIAo=
</data>
<flag name="review"
          id="464405"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>