<?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>132978</bug_id>
          
          <creation_ts>2014-05-15 18:05:32 -0700</creation_ts>
          <short_desc>[iOS WK2] When zoomed, fixed elements jump at the start of a scroll, and jump back at the end.</short_desc>
          <delta_ts>2014-05-15 20:57:23 -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>New Bugs</component>
          <version>528+ (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>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009676</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-15 18:05:32 -0700</bug_when>
    <thetext>[iOS WK2] When zoomed, fixed elements jump at the start of a scroll, and jump back at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009678</commentid>
    <comment_count>1</comment_count>
      <attachid>231545</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-15 18:10:43 -0700</bug_when>
    <thetext>Created attachment 231545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009680</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-15 18:11:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/16894428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009689</commentid>
    <comment_count>3</comment_count>
      <attachid>231545</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-15 18:38:57 -0700</bug_when>
    <thetext>Comment on attachment 231545
Patch

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

Looks good to me but we&apos;ll have to look into the regression.

&gt; Source/WebKit2/UIProcess/PageClient.h:260
&gt; +    virtual float minimumZoomScale() const = 0;

Maybe displayedContentMinimumZoomScale()?

It would be nice to differentiate that scale from the real zoom scale we have in the content.

displayedContentMinimumZoomScale() would make it more obvious when comparing that value to displayedContentScale() in WebPageProxy.

&gt; Source/WebKit2/UIProcess/PageClient.h:261
&gt; +    virtual WebCore::FloatSize contentsSize() const = 0;

That make sense for our current architecture...but it is sooo weird the page proxy has to ask the client for the content size.

Maybe we should store a copy of the contentSize on WebPageProxy and update it on WebPageProxy::didCommitLayerTree()?

&gt; Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:190
&gt; +float PageClientImpl::minimumZoomScale() const

I would make this a double.

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:223
&gt; +    float scale = displayedContentScale();

This should be a double.

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:224
&gt; +    float minimumScale = m_pageClient.minimumZoomScale();

ditto

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:228
&gt; +        const CGFloat slope = 12;
&gt; +        CGFloat factor = std::max&lt;CGFloat&gt;(1 - slope * (minimumScale - scale), 0);

Let&apos;s use double here instead of CGFloat now that this code is in WebPageProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009693</commentid>
    <comment_count>4</comment_count>
      <attachid>231550</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-15 19:09:32 -0700</bug_when>
    <thetext>Created attachment 231550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009699</commentid>
    <comment_count>5</comment_count>
      <attachid>231550</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-15 20:07:24 -0700</bug_when>
    <thetext>Comment on attachment 231550
Patch

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

&gt; Source/WebKit2/UIProcess/PageClient.h:260
&gt; +    virtual float minimumZoomScale() const = 0;

float-&gt;double
minimumZoomScale-&gt;displayedContentMinimumZoomScale().

&gt; Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:192
&gt; +    if (UIScrollView *scroller = [m_contentView _scroller])

I am trying to get rid of all the _scroller.

You can use [m_webView scrollView] here instead.

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:214
&gt; +WebCore::FloatRect WebPageProxy::computeCustomFixedPositionRect(const FloatRect&amp; unobscuredContentRect, float scale, UnobscuredRectConstraint constraint) const

float -&gt; double.
scale -&gt; displayedContentScale for clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009708</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-15 20:57:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/168920</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231545</attachid>
            <date>2014-05-15 18:10:43 -0700</date>
            <delta_ts>2014-05-15 19:09:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132978-20140515181020.patch</filename>
            <type>text/plain</type>
            <size>17031</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNlNjQzNzNhYzRiZmFm
OGY2ZmRjZGUyMmIyOTEzZjk3NWFjYzczYS4uYWFkZjE0ZGQ0OThhMjAxNzM3ODczNTBhMzU3Nzg0
ZjQ5NTQzYjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA1LTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBX
aGVuIHpvb21lZCwgZml4ZWQgZWxlbWVudHMganVtcCBhdCB0aGUgc3RhcnQgb2YgYSBzY3JvbGws
IGFuZCBqdW1wIGJhY2sgYXQgdGhlIGVuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMjk3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgd2FzIHRoZSBhY3R1YWwgY2F1c2Ugb2YgdGhlIGJ1Zzsg
cjE2ODU2MCBjaGFuZ2VkIHRoZSByZWN0IHBhc3NlZCBpbiBoZXJlCisgICAgICAgIHRvIGJlIHRo
ZSBjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCByYXRoZXIgdGhhbiB0aGUgdW5vYnNjdXJlZCByZWN0
LCBidXQgd2UKKyAgICAgICAgdXNlZCBpdCB0byBjYWxsIEZyYW1lVmlldzo6cmVjdEZvclZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzKCkgd2hpY2ggZ2F2ZSBiYWNrCisgICAgICAgIGFub3RoZXIg
Ym9ndXMgcmVjdC4gU28ganVzdCB1c2UgdGhlIHJlY3QgcGFzc2VkIGluLgorCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVy
c0FmdGVyVmlld3BvcnRDaGFuZ2UpOgorCiAyMDE0LTA1LTE1ICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtQcm9jZXNzIGNyYXNoZXMgYXQgUmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTNl
ODY5N2U0NTM4YjI2YmVmYjA4YmM2ZjA0ODM3ZGRlZWU4OGUxOC4uMmU5M2ZjNGNmYzE2YzE4YWY3
OGJmNjhjNzczZmFjZjFlZmE0OWFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0
LTA1LTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgV0syXSBXaGVuIHpvb21lZCwgZml4ZWQgZWxlbWVudHMganVtcCBhdCB0aGUgc3RhcnQg
b2YgYSBzY3JvbGwsIGFuZCBqdW1wIGJhY2sgYXQgdGhlIGVuZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjk3OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTW92ZSB0aGUgc3RhdGljIGZ1
bmN0aW9uIGZpeGVkUG9zaXRpb25SZWN0RnJvbUV4cG9zZWRSZWN0KCkgdG8gYSBtZW1iZXIgZnVu
Y3Rpb24gb24KKyAgICAgICAgV2ViUGFnZVByb3h5IHNvIHdlIGNhbiBjYWxsIGl0IGZyb20gbW9y
ZSBwbGFjZXMuIEFsc28gbmV2ZXIgZ2l2ZSBXZWJDb3JlIGEgY3VzdG9tRml4ZWRQb3NpdGlvbgor
ICAgICAgICByZWN0IHRoYXQgZXh0ZW5kcyBwYXN0IHRoZSBkb2N1bWVudCBib3VuZHMsIGJ1dCBh
bGxvdyBydWJiZXItYmFuZGluZy9waW5jaGluZyBpbiB0aGUgVUkgcHJvY2VzcyB0bworICAgICAg
ICBtb3ZlIGZpeGVkIGVsZW1lbnRzIG91dHNpZGUgdGhlIGRvY3VtZW50LgorICAgICAgICAKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOiBOZWVkIHRvIGV4cG9zZSBtaW5pbXVtWm9v
bVNjYWxlKCkgYW5kIGNvbnRlbnRzU2l6ZSgpIHRvIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjptaW5pbXVtWm9vbVNjYWxlKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNvbnRlbnRzU2l6ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGRpZFVwZGF0ZVZpc2libGVSZWN0OnVub2JzY3VyZWRSZWN0OnVub2JzY3VyZWRSZWN0SW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXM6c2NhbGU6bWluaW11bVNjYWxlOmluU3RhYmxlU3RhdGU6aXND
aGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseTpdKToKKyAgICAgICAgUGFzcyB0aGUg
Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KENvbnN0cmFpbmVkVG9Eb2N1bWVudFJlY3Qp
IHRvIFdlYkNvcmUsIGJ1dCB1c2UgY29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KCkKKyAg
ICAgICAgZm9yIHRoZSBTY3JvbGxpbmdDb29yZGluYXRvciB1cGRhdGUuCisgICAgICAgIChhZGp1
c3RlZFVuZXhwb3NlZEVkZ2UpOiBEZWxldGVkLgorICAgICAgICAoYWRqdXN0ZWRVbmV4cG9zZWRN
YXhFZGdlKTogRGVsZXRlZC4KKyAgICAgICAgKGZpeGVkUG9zaXRpb25SZWN0RnJvbUV4cG9zZWRS
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6YWRqdXN0ZWRVbmV4cG9zZWRFZGdlKToKKyAgICAgICAgKFdl
YktpdDo6YWRqdXN0ZWRVbmV4cG9zZWRNYXhFZGdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpjb21wdXRlQ3VzdG9tRml4ZWRQb3NpdGlvblJlY3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKTog
VGhpcyBmaXhlcyBzb21lIGZsYXNoaW5nIHdoZW4gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAg
IHdhcyBiZWluZyB1cGRhdGVkIHdoaWxlIHNjcm9sbGluZzsgd2Ugbm93IHBhc3MgdGhlIGNvcnJl
Y3QgcmVjdC4KKwogMjAxNC0wNS0xNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXVtXSzJdIFdLV2ViVmlldyBzZW5kcyBpbnZhbGlkIGNvbnRl
bnQgb2Zmc2V0cyBhdCB0aGUgZW5kIG9mIGFuaW1hdGVkIHJlc2l6ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4IDQzMGRiM2Y1MDQwMTQ0YTMwYWM1NzY0ZmRiZGU4ZjJj
NzE4MWZiYWUuLjk2ZWFkYzYxNGMzYmZhNzUzNTE5MWE0N2RjMDE4OTJhMWEyZmRjOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0KQEAgLTEzNywxOCArMTM3LDE2IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgc2NyCiAgICAgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKHNj
cm9sbFBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6
dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0
UmVjdCwgZG91YmxlIHNjYWxlKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6
dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0
UmVjdCwgZG91YmxlIC8qc2NhbGUqLykKIHsKICAgICBbbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIg
c2V0UG9zaXRpb246dmlld3BvcnRSZWN0LmxvY2F0aW9uKCldOwogCiAgICAgaWYgKCFtX2NoaWxk
cmVuKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFJlY3Qgdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHNSZWN0ID0gRnJhbWVWaWV3OjpyZWN0Rm9yVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHMoZW5jbG9zaW5nTGF5b3V0UmVjdCh2aWV3cG9ydFJlY3QpLCB0b3RhbENvbnRlbnRzU2l6ZSgp
LCBzY2FsZSwgZmFsc2UsIHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cygpKTsKLQogICAg
IHNpemVfdCBzaXplID0gbV9jaGlsZHJlbi0+c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBtX2NoaWxkcmVuLT5hdChpKS0+cGFyZW50U2Nyb2xs
UG9zaXRpb25EaWRDaGFuZ2Uodmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNSZWN0LCBGbG9hdFNp
emUoKSk7CisgICAgICAgIG1fY2hpbGRyZW4tPmF0KGkpLT5wYXJlbnRTY3JvbGxQb3NpdGlvbkRp
ZENoYW5nZSh2aWV3cG9ydFJlY3QsIEZsb2F0U2l6ZSgpKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29u
c3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCA2YmI1NjM0NzdjNWI5Y2E3Njk5ODY3ZTU0MWE1ZGIwZTRlMzkwY2RkLi4x
NmFlNmUwYTU5ZTQ3NzQxZDA5YTBlMTE0YTQzYjhmN2M2MGM4M2I4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1Nyw2ICsyNTcsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB6b29t
VG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1h
eGltdW1TY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydE1ldGFU
YWdXaWR0aChmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgbWluaW11bVpvb21TY2FsZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb250ZW50c1NpemUo
KSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHZpcnR1YWwgdm9pZCBz
aG93SW5zcGVjdG9ySW5kaWNhdGlvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA2Njg5NmRiMTY3MTMyNDllMzRkZmRiNDU2NzE3MDFjMmI1NGQ3ZTk0
Li41OWNjZTQ2Mjk1ZTI3Y2Y2NDMzNjgzNmU0Mjc5YWFlM2Y0NDZmNzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01ODksNiArNTg5LDkgQEAgcHVibGljOgog
ICAgIHVpbnQ2NF90IG5leHRWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS51cGRhdGVJRCgpICsgMTsgfQogICAg
IHVpbnQ2NF90IGxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS51cGRhdGVJRCgpOyB9CiAKKyAgICBlbnVt
IGNsYXNzIFVub2JzY3VyZWRSZWN0Q29uc3RyYWludCB7IENvbnN0cmFpbmVkVG9Eb2N1bWVudFJl
Y3QsIFVuY29uc3RyYWluZWQgfTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29tcHV0ZUN1c3Rv
bUZpeGVkUG9zaXRpb25SZWN0KFVub2JzY3VyZWRSZWN0Q29uc3RyYWludCA9IFVub2JzY3VyZWRS
ZWN0Q29uc3RyYWludDo6VW5jb25zdHJhaW5lZCkgY29uc3Q7CisKICAgICB2b2lkIGR5bmFtaWNW
aWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0
U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlcywgZG91YmxlIHRhcmdldFNjYWxlKTsKICAgICAKICAgICB2b2lkIHNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmlu
ZGV4IDJmNWIyNjliZTY2N2UyNWM2OGE3NzAzMWNjNzA2MWI2Njk5YjEzYzEuLjIyYWIxNmQ2Yjdl
NjE4ZDk4MjBhMmFjMzM4YmZhYmQwMjc0NmNkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTEyMyw2ICsxMjMsOCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
Vmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZmxvYXQg
bWluaW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
RmxvYXRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCmluZGV4IDVkMTZiY2NjZjYxNzU0NTlkODhhOTQ2ODRlNTIzY2Y2YjJmYzAwODYuLjA1
NzI5ZGQyNzdjOGNlMDhiMzFmYTRhYmI2ZGY5YjQ0Mzk3OWNjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTg3LDYgKzE4
NywxOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydE1ldGFUYWdXaWR0
aChmbG9hdCBuZXdXaWR0aCkKICAgICBbbV93ZWJWaWV3IF9zZXRWaWV3cG9ydE1ldGFUYWdXaWR0
aDpuZXdXaWR0aF07CiB9CiAKK2Zsb2F0IFBhZ2VDbGllbnRJbXBsOjptaW5pbXVtWm9vbVNjYWxl
KCkgY29uc3QKK3sKKyAgICBpZiAoVUlTY3JvbGxWaWV3ICpzY3JvbGxlciA9IFttX2NvbnRlbnRW
aWV3IF9zY3JvbGxlcl0pCisgICAgICAgIHJldHVybiBzY3JvbGxlci5taW5pbXVtWm9vbVNjYWxl
OworCisgICAgcmV0dXJuIDE7Cit9CisKK1dlYkNvcmU6OkZsb2F0U2l6ZSBQYWdlQ2xpZW50SW1w
bDo6Y29udGVudHNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKFttX2NvbnRl
bnRWaWV3IGJvdW5kc10uc2l6ZSk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEN1cnNv
cihjb25zdCBDdXJzb3ImKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggOWIwZDZlYzUwNzVmMWJl
NDMzYjJjM2EzNjk1OWRmZWFkZDk3OTY1YS4uMTM0MTcyMjcyMzViMmUxYzVlNGEzNjYyN2UwNTYz
ODhjNGVjMTUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQpAQCAtMjkyLDQwICsyOTIsNiBAQCAtICh2b2lkKXNldFNob3dpbmdJbnNwZWN0b3JJ
bmRpY2F0aW9uOihCT09MKXNob3cKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgYWRq
dXN0ZWRVbmV4cG9zZWRFZGdlKGZsb2F0IGRvY3VtZW50RWRnZSwgZmxvYXQgZXhwb3NlZFJlY3RF
ZGdlLCBmbG9hdCBmYWN0b3IpCi17Ci0gICAgaWYgKGV4cG9zZWRSZWN0RWRnZSA8IGRvY3VtZW50
RWRnZSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50RWRnZSAtIGZhY3RvciAqIChkb2N1bWVudEVk
Z2UgLSBleHBvc2VkUmVjdEVkZ2UpOwotICAgIAotICAgIHJldHVybiBleHBvc2VkUmVjdEVkZ2U7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZmxvYXQgYWRqdXN0ZWRVbmV4cG9zZWRNYXhFZGdlKGZsb2F0
IGRvY3VtZW50RWRnZSwgZmxvYXQgZXhwb3NlZFJlY3RFZGdlLCBmbG9hdCBmYWN0b3IpCi17Ci0g
ICAgaWYgKGV4cG9zZWRSZWN0RWRnZSA+IGRvY3VtZW50RWRnZSkKLSAgICAgICAgcmV0dXJuIGRv
Y3VtZW50RWRnZSArIGZhY3RvciAqIChleHBvc2VkUmVjdEVkZ2UgLSBkb2N1bWVudEVkZ2UpOwot
ICAgIAotICAgIHJldHVybiBleHBvc2VkUmVjdEVkZ2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRmxv
YXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0RnJvbUV4cG9zZWRSZWN0KENHUmVjdCB1bm9ic2N1cmVk
UmVjdCwgQ0dTaXplIGRvY3VtZW50U2l6ZSwgQ0dGbG9hdCBzY2FsZSwgQ0dGbG9hdCBtaW5pbXVt
U2NhbGUpCi17Ci0gICAgRmxvYXRSZWN0IGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3QgPSB1bm9i
c2N1cmVkUmVjdDsKLSAgICBGbG9hdFJlY3QgZG9jdW1lbnRSZWN0ID0gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgRmxvYXRTaXplKGRvY3VtZW50U2l6ZSkpOwotICAgIAotICAgIGlmIChzY2FsZSA8
IG1pbmltdW1TY2FsZSkgewotICAgICAgICBjb25zdCBDR0Zsb2F0IHNsb3BlID0gMTI7Ci0gICAg
ICAgIENHRmxvYXQgZmFjdG9yID0gc3RkOjptYXg8Q0dGbG9hdD4oMSAtIHNsb3BlICogKG1pbmlt
dW1TY2FsZSAtIHNjYWxlKSwgMCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgY29uc3RyYWluZWRV
bm9ic2N1cmVkUmVjdC5zZXRYKGFkanVzdGVkVW5leHBvc2VkRWRnZShkb2N1bWVudFJlY3QueCgp
LCBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LngoKSwgZmFjdG9yKSk7Ci0gICAgICAgIGNvbnN0
cmFpbmVkVW5vYnNjdXJlZFJlY3Quc2V0WShhZGp1c3RlZFVuZXhwb3NlZEVkZ2UoZG9jdW1lbnRS
ZWN0LnkoKSwgY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC55KCksIGZhY3RvcikpOwotICAgICAg
ICBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LnNldFdpZHRoKGFkanVzdGVkVW5leHBvc2VkTWF4
RWRnZShkb2N1bWVudFJlY3QubWF4WCgpLCBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0Lm1heFgo
KSwgZmFjdG9yKSAtIGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3QueCgpKTsKLSAgICAgICAgY29u
c3RyYWluZWRVbm9ic2N1cmVkUmVjdC5zZXRIZWlnaHQoYWRqdXN0ZWRVbmV4cG9zZWRNYXhFZGdl
KGRvY3VtZW50UmVjdC5tYXhZKCksIGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3QubWF4WSgpLCBm
YWN0b3IpIC0gY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC55KCkpOwotICAgIH0KLSAgICAKLSAg
ICByZXR1cm4gRnJhbWVWaWV3OjpyZWN0Rm9yVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoZW5j
bG9zaW5nTGF5b3V0UmVjdChjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0KSwgcm91bmRlZExheW91
dFNpemUoRmxvYXRTaXplKGRvY3VtZW50U2l6ZSkpLCBzY2FsZSwgZmFsc2UsIFN0aWNrVG9WaWV3
cG9ydEJvdW5kcyk7Ci19Ci0KIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2
aXNpYmxlUmVjdCB1bm9ic2N1cmVkUmVjdDooQ0dSZWN0KXVub2JzY3VyZWRSZWN0IHVub2JzY3Vy
ZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdCl1bm9ic2N1cmVkUmVjdEluU2Ny
b2xsVmlld0Nvb3JkaW5hdGVzCiAgICAgc2NhbGU6KENHRmxvYXQpem9vbVNjYWxlIG1pbmltdW1T
Y2FsZTooQ0dGbG9hdCltaW5pbXVtU2NhbGUgaW5TdGFibGVTdGF0ZTooQk9PTClpc1N0YWJsZVN0
YXRlIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6KEJPT0wpaXNDaGFuZ2lu
Z09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseQogewpAQCAtMzQ0LDExICszMTAsMTIgQEAgLSAo
dm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVSZWN0IHVub2JzY3VyZWRS
ZWN0OihDR1JlY3QpdW5vYnNjdXIKICAgICAgICAgZmlsdGVyZWRTY2FsZSA9IF9wYWdlLT5kaXNw
bGF5ZWRDb250ZW50U2NhbGUoKTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3QgY3VzdG9tRml4ZWRQ
b3NpdGlvblJlY3QgPSBmaXhlZFBvc2l0aW9uUmVjdEZyb21FeHBvc2VkUmVjdCh1bm9ic2N1cmVk
UmVjdCwgW3NlbGYgYm91bmRzXS5zaXplLCB6b29tU2NhbGUsIG1pbmltdW1TY2FsZSk7Ci0gICAg
X3BhZ2UtPnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mbyhfcGFnZS0+bmV4dFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUlEKCksIHZpc2libGVSZWN0
LCB1bm9ic2N1cmVkUmVjdCwgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywg
Y3VzdG9tRml4ZWRQb3NpdGlvblJlY3QsIGZpbHRlcmVkU2NhbGUsIGlzU3RhYmxlU3RhdGUsIGlz
Q2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHksIHRpbWVzdGFtcCwgdmVsb2NpdHlE
YXRhLmhvcml6b250YWxWZWxvY2l0eSwgdmVsb2NpdHlEYXRhLnZlcnRpY2FsVmVsb2NpdHksIHZl
bG9jaXR5RGF0YS5zY2FsZUNoYW5nZVJhdGUpKTsKLSAgICAKKyAgICBGbG9hdFJlY3QgZml4ZWRQ
b3NpdGlvblJlY3RGb3JMYXlvdXQgPSBfcGFnZS0+Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25S
ZWN0KFdlYlBhZ2VQcm94eTo6VW5vYnNjdXJlZFJlY3RDb25zdHJhaW50OjpDb25zdHJhaW5lZFRv
RG9jdW1lbnRSZWN0KTsKKyAgICBfcGFnZS0+dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKF9wYWdlLT5uZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSUQoKSwgdmlzaWJsZVJlY3QsIHVub2JzY3VyZWRSZWN0LCB1bm9ic2N1cmVkUmVjdEluU2Ny
b2xsVmlld0Nvb3JkaW5hdGVzLCBmaXhlZFBvc2l0aW9uUmVjdEZvckxheW91dCwKKyAgICAgICAg
ZmlsdGVyZWRTY2FsZSwgaXNTdGFibGVTdGF0ZSwgaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50
ZXJhY3RpdmVseSwgdGltZXN0YW1wLCB2ZWxvY2l0eURhdGEuaG9yaXpvbnRhbFZlbG9jaXR5LCB2
ZWxvY2l0eURhdGEudmVydGljYWxWZWxvY2l0eSwgdmVsb2NpdHlEYXRhLnNjYWxlQ2hhbmdlUmF0
ZSkpOworCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOwotICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT52aWV3cG9ydENoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxpbmcoc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnJvb3RTY3JvbGxpbmdOb2RlSUQoKSwgY3VzdG9tRml4ZWRQb3Np
dGlvblJlY3QsIHpvb21TY2FsZSk7CisgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnZpZXdwb3J0
Q2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhzY3JvbGxpbmdDb29yZGluYXRvci0+cm9vdFNj
cm9sbGluZ05vZGVJRCgpLCBfcGFnZS0+Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KCks
IHpvb21TY2FsZSk7CiAKICAgICBpZiAoYXV0byBkcmF3aW5nQXJlYSA9IF9wYWdlLT5kcmF3aW5n
QXJlYSgpKQogICAgICAgICBkcmF3aW5nQXJlYS0+dXBkYXRlRGVidWdJbmRpY2F0b3IoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
MzdiOWNiYzdlNDc1YTY4YzgwMjNmYzY4MzRlYzVmMWU1ODg0NzZkZS4uNjc0YTViZjI1MjM1Mzlh
YTU0ZjJjODI2MDJlMTlkZGE2YjcwNzA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgIldl
YlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVW
aWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KQEAgLTE5
NCw2ICsxOTUsNDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RhdGljIGlubGluZSBmbG9hdCBhZGp1c3RlZFVuZXhwb3NlZEVkZ2UoZmxvYXQgZG9j
dW1lbnRFZGdlLCBmbG9hdCBleHBvc2VkUmVjdEVkZ2UsIGZsb2F0IGZhY3RvcikKK3sKKyAgICBp
ZiAoZXhwb3NlZFJlY3RFZGdlIDwgZG9jdW1lbnRFZGdlKQorICAgICAgICByZXR1cm4gZG9jdW1l
bnRFZGdlIC0gZmFjdG9yICogKGRvY3VtZW50RWRnZSAtIGV4cG9zZWRSZWN0RWRnZSk7CisgICAg
CisgICAgcmV0dXJuIGV4cG9zZWRSZWN0RWRnZTsKK30KKworc3RhdGljIGlubGluZSBmbG9hdCBh
ZGp1c3RlZFVuZXhwb3NlZE1heEVkZ2UoZmxvYXQgZG9jdW1lbnRFZGdlLCBmbG9hdCBleHBvc2Vk
UmVjdEVkZ2UsIGZsb2F0IGZhY3RvcikKK3sKKyAgICBpZiAoZXhwb3NlZFJlY3RFZGdlID4gZG9j
dW1lbnRFZGdlKQorICAgICAgICByZXR1cm4gZG9jdW1lbnRFZGdlICsgZmFjdG9yICogKGV4cG9z
ZWRSZWN0RWRnZSAtIGRvY3VtZW50RWRnZSk7CisgICAgCisgICAgcmV0dXJuIGV4cG9zZWRSZWN0
RWRnZTsKK30KKworV2ViQ29yZTo6RmxvYXRSZWN0IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZUN1c3Rv
bUZpeGVkUG9zaXRpb25SZWN0KFVub2JzY3VyZWRSZWN0Q29uc3RyYWludCBjb25zdHJhaW50KSBj
b25zdAoreworICAgIEZsb2F0UmVjdCBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0ID0gdW5vYnNj
dXJlZENvbnRlbnRSZWN0KCk7CisgICAgRmxvYXRTaXplIGNvbnRlbnRzU2l6ZSA9IG1fcGFnZUNs
aWVudC5jb250ZW50c1NpemUoKTsKKyAgICBGbG9hdFJlY3QgZG9jdW1lbnRSZWN0ID0gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgY29udGVudHNTaXplKTsKKyAgICAKKyAgICBpZiAoY29uc3RyYWlu
dCA9PSBVbm9ic2N1cmVkUmVjdENvbnN0cmFpbnQ6OkNvbnN0cmFpbmVkVG9Eb2N1bWVudFJlY3Qp
CisgICAgICAgIGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3QuaW50ZXJzZWN0KGRvY3VtZW50UmVj
dCk7CisKKyAgICBmbG9hdCBzY2FsZSA9IGRpc3BsYXllZENvbnRlbnRTY2FsZSgpOworICAgIGZs
b2F0IG1pbmltdW1TY2FsZSA9IG1fcGFnZUNsaWVudC5taW5pbXVtWm9vbVNjYWxlKCk7CisgICAg
CisgICAgaWYgKHNjYWxlIDwgbWluaW11bVNjYWxlKSB7CisgICAgICAgIGNvbnN0IENHRmxvYXQg
c2xvcGUgPSAxMjsKKyAgICAgICAgQ0dGbG9hdCBmYWN0b3IgPSBzdGQ6Om1heDxDR0Zsb2F0Pigx
IC0gc2xvcGUgKiAobWluaW11bVNjYWxlIC0gc2NhbGUpLCAwKTsKKyAgICAgICAgICAgIAorICAg
ICAgICBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LnNldFgoYWRqdXN0ZWRVbmV4cG9zZWRFZGdl
KGRvY3VtZW50UmVjdC54KCksIGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3QueCgpLCBmYWN0b3Ip
KTsKKyAgICAgICAgY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC5zZXRZKGFkanVzdGVkVW5leHBv
c2VkRWRnZShkb2N1bWVudFJlY3QueSgpLCBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LnkoKSwg
ZmFjdG9yKSk7CisgICAgICAgIGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3Quc2V0V2lkdGgoYWRq
dXN0ZWRVbmV4cG9zZWRNYXhFZGdlKGRvY3VtZW50UmVjdC5tYXhYKCksIGNvbnN0cmFpbmVkVW5v
YnNjdXJlZFJlY3QubWF4WCgpLCBmYWN0b3IpIC0gY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC54
KCkpOworICAgICAgICBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LnNldEhlaWdodChhZGp1c3Rl
ZFVuZXhwb3NlZE1heEVkZ2UoZG9jdW1lbnRSZWN0Lm1heFkoKSwgY29uc3RyYWluZWRVbm9ic2N1
cmVkUmVjdC5tYXhZKCksIGZhY3RvcikgLSBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LnkoKSk7
CisgICAgfQorICAgIAorICAgIHJldHVybiBGcmFtZVZpZXc6OnJlY3RGb3JWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyhlbmNsb3NpbmdMYXlvdXRSZWN0KGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJl
Y3QpLCByb3VuZGVkTGF5b3V0U2l6ZShjb250ZW50c1NpemUpLCBzY2FsZSwgZmFsc2UsIFN0aWNr
VG9WaWV3cG9ydEJvdW5kcyk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3Bv
cnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFVub2JzY3VyZWRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0SW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMsICBkb3VibGUgdGFyZ2V0U2NhbGUpCiB7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKG1p
bmltdW1MYXlvdXRTaXplLCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIHRhcmdldFVub2JzY3Vy
ZWRSZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCB0YXJn
ZXRTY2FsZSksIG1fcGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA4
NTM0NmZmNDBhY2NlYjM0OWZiOGVmNGM2MDAzMWFkOWIxM2JkNGEyLi40ZDE3OTY0YzUwOWZmMDc3
ZmI4NmNhYmVhYzMwMDljNDRlMDk1OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Ojpjb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnMKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgaWYgKGZpeGVkT3JTdGlja3lMYXllckNoYW5nZWQpIHsKICAgICAgICAgLy8g
SWYgd2UgZ290IGEgbmV3IGxheWVyIGZvciBhIGZpeGVkIG9yIHN0aWNreSBub2RlLCBpdHMgcG9z
aXRpb24gZnJvbSB0aGUgV2ViUHJvY2VzcyBpcyBwcm9iYWJseSBzdGFsZS4gV2UgbmVlZCB0byBy
ZS1ydW4gdGhlICJ2aWV3cG9ydCIgY2hhbmdlZCBsb2dpYyB0byB1ZHBhdGUgaXQgd2l0aCBvdXIg
VUktc2lkZSBzdGF0ZS4KLSAgICAgICAgbV93ZWJQYWdlUHJveHktPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkoKS0+dmlld3BvcnRDaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKG1fd2ViUGFn
ZVByb3h5LT5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCktPnJvb3RTY3JvbGxpbmdOb2RlSUQo
KSwgbV93ZWJQYWdlUHJveHktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLCBtX3dlYlBhZ2VQcm94
eS0+ZGlzcGxheWVkQ29udGVudFNjYWxlKCkpOworICAgICAgICBtX3dlYlBhZ2VQcm94eS0+c2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpLT52aWV3cG9ydENoYW5nZWRWaWFEZWxlZ2F0ZWRTY3Jv
bGxpbmcobV93ZWJQYWdlUHJveHktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKS0+cm9vdFNj
cm9sbGluZ05vZGVJRCgpLCBtX3dlYlBhZ2VQcm94eS0+Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRp
b25SZWN0KCksIG1fd2ViUGFnZVByb3h5LT5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKSk7CiAgICAg
fQogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231550</attachid>
            <date>2014-05-15 19:09:32 -0700</date>
            <delta_ts>2014-05-15 20:07:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132978-20140515190908.patch</filename>
            <type>text/plain</type>
            <size>17386</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNlNjQzNzNhYzRiZmFm
OGY2ZmRjZGUyMmIyOTEzZjk3NWFjYzczYS4uODc2ZmJkMjE1Njg5OGUzMTViMTRmYzA1OTAzYWE4
NzEzYTRjNmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTA1LTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBX
aGVuIHpvb21lZCwgZml4ZWQgZWxlbWVudHMganVtcCBhdCB0aGUgc3RhcnQgb2YgYSBzY3JvbGws
IGFuZCBqdW1wIGJhY2sgYXQgdGhlIGVuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMjk3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY4OTQ0
Mjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyB3YXMgdGhlIGFjdHVhbCBjYXVzZSBvZiB0aGUgYnVnOyByMTY4NTYwIGNoYW5nZWQgdGhlIHJl
Y3QgcGFzc2VkIGluIGhlcmUKKyAgICAgICAgdG8gYmUgdGhlIGN1c3RvbUZpeGVkUG9zaXRpb25S
ZWN0IHJhdGhlciB0aGFuIHRoZSB1bm9ic2N1cmVkIHJlY3QsIGJ1dCB3ZQorICAgICAgICB1c2Vk
IGl0IHRvIGNhbGwgRnJhbWVWaWV3OjpyZWN0Rm9yVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMo
KSB3aGljaCBnYXZlIGJhY2sKKyAgICAgICAgYW5vdGhlciBib2d1cyByZWN0LiBTbyBqdXN0IHVz
ZSB0aGUgcmVjdCBwYXNzZWQgaW4uCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZSk6
CisKIDIwMTQtMDUtMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgTmV0d29ya1Byb2Nlc3MgY3Jhc2hlcyBhdCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxM2U4Njk3ZTQ1MzhiMjZiZWZiMDhiYzZm
MDQ4MzdkZGVlZTg4ZTE4Li4yMTQ5NDBlNTA5OWI3YzM5MzMzMjM2N2YyOGI1NTdkYWE2ZmI2NThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTQtMDUtMTUgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXSzJdIFdoZW4gem9vbWVk
LCBmaXhlZCBlbGVtZW50cyBqdW1wIGF0IHRoZSBzdGFydCBvZiBhIHNjcm9sbCwgYW5kIGp1bXAg
YmFjayBhdCB0aGUgZW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMyOTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjg5NDQyOD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1vdmUg
dGhlIHN0YXRpYyBmdW5jdGlvbiBmaXhlZFBvc2l0aW9uUmVjdEZyb21FeHBvc2VkUmVjdCgpIHRv
IGEgbWVtYmVyIGZ1bmN0aW9uIG9uCisgICAgICAgIFdlYlBhZ2VQcm94eSBzbyB3ZSBjYW4gY2Fs
bCBpdCBmcm9tIG1vcmUgcGxhY2VzLiBBbHNvIG5ldmVyIGdpdmUgV2ViQ29yZSBhIGN1c3RvbUZp
eGVkUG9zaXRpb24KKyAgICAgICAgcmVjdCB0aGF0IGV4dGVuZHMgcGFzdCB0aGUgZG9jdW1lbnQg
Ym91bmRzLCBidXQgYWxsb3cgcnViYmVyLWJhbmRpbmcvcGluY2hpbmcgaW4gdGhlIFVJIHByb2Nl
c3MgdG8KKyAgICAgICAgbW92ZSBmaXhlZCBlbGVtZW50cyBvdXRzaWRlIHRoZSBkb2N1bWVudC4K
KyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogTmVlZCB0byBleHBv
c2UgbWluaW11bVpvb21TY2FsZSgpIGFuZCBjb250ZW50c1NpemUoKSB0byBXZWJQYWdlUHJveHku
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6bWluaW11
bVpvb21TY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb250ZW50c1Np
emUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBkaWRVcGRhdGVWaXNpYmxlUmVjdDp1bm9ic2N1cmVkUmVjdDp1bm9i
c2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0
YWJsZVN0YXRlOmlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6XSk6CisgICAg
ICAgIFBhc3MgdGhlIGNvbXB1dGVDdXN0b21GaXhlZFBvc2l0aW9uUmVjdChDb25zdHJhaW5lZFRv
RG9jdW1lbnRSZWN0KSB0byBXZWJDb3JlLCBidXQgdXNlIGNvbXB1dGVDdXN0b21GaXhlZFBvc2l0
aW9uUmVjdCgpCisgICAgICAgIGZvciB0aGUgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgdXBkYXRlLgor
ICAgICAgICAoYWRqdXN0ZWRVbmV4cG9zZWRFZGdlKTogRGVsZXRlZC4KKyAgICAgICAgKGFkanVz
dGVkVW5leHBvc2VkTWF4RWRnZSk6IERlbGV0ZWQuCisgICAgICAgIChmaXhlZFBvc2l0aW9uUmVj
dEZyb21FeHBvc2VkUmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OmFkanVzdGVkVW5leHBvc2VkRWRnZSk6
CisgICAgICAgIChXZWJLaXQ6OmFkanVzdGVkVW5leHBvc2VkTWF4RWRnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1p
dExheWVyVHJlZSk6IFRoaXMgZml4ZXMgc29tZSBmbGFzaGluZyB3aGVuIHRoZSBzY3JvbGxpbmcg
dHJlZQorICAgICAgICB3YXMgYmVpbmcgdXBkYXRlZCB3aGlsZSBzY3JvbGxpbmc7IHdlIG5vdyBw
YXNzIHRoZSBjb3JyZWN0IHJlY3QuCisKIDIwMTQtMDUtMTUgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0syXSBXS1dlYlZpZXcgc2VuZHMg
aW52YWxpZCBjb250ZW50IG9mZnNldHMgYXQgdGhlIGVuZCBvZiBhbmltYXRlZCByZXNpemUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCA0MzBkYjNmNTA0MDE0NGEzMGFj
NTc2NGZkYmRlOGYyYzcxODFmYmFlLi45NmVhZGM2MTRjM2JmYTc1MzUxOTFhNDdkYzAxODkyYTFh
MmZkYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC0xMzcsMTgg
KzEzNywxNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxM
YXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcgogICAgIHVwZGF0ZUNoaWxkTm9kZXNB
ZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRS
ZWN0JiB2aWV3cG9ydFJlY3QsIGRvdWJsZSBzY2FsZSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRS
ZWN0JiB2aWV3cG9ydFJlY3QsIGRvdWJsZSAvKnNjYWxlKi8pCiB7CiAgICAgW21fY291bnRlclNj
cm9sbGluZ0xheWVyIHNldFBvc2l0aW9uOnZpZXdwb3J0UmVjdC5sb2NhdGlvbigpXTsKIAogICAg
IGlmICghbV9jaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IHZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzUmVjdCA9IEZyYW1lVmlldzo6cmVjdEZvclZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzKGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3BvcnRSZWN0KSwgdG90YWxD
b250ZW50c1NpemUoKSwgc2NhbGUsIGZhbHNlLCBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMoKSk7Ci0KICAgICBzaXplX3Qgc2l6ZSA9IG1fY2hpbGRyZW4tPnNpemUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9jaGlsZHJlbi0+YXQoaSkt
PnBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlKHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
UmVjdCwgRmxvYXRTaXplKCkpOworICAgICAgICBtX2NoaWxkcmVuLT5hdChpKS0+cGFyZW50U2Ny
b2xsUG9zaXRpb25EaWRDaGFuZ2Uodmlld3BvcnRSZWN0LCBGbG9hdFNpemUoKSk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdh
dGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNmJiNTYzNDc3YzViOWNhNzY5OTg2N2U1NDFhNWRi
MGU0ZTM5MGNkZC4uMTZhZTZlMGE1OWU0Nzc0MWQwOWEwZTExNGE0M2I4ZjdjNjBjODNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yNTcsNiArMjU3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNW
aWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJsZSBtaW5pbXVtU2Nh
bGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
Vmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IG1pbmlt
dW1ab29tU2NhbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFNpemUg
Y29udGVudHNTaXplKCkgY29uc3QgPSAwOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICB2
aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjY4OTZkYjE2NzEzMjQ5ZTM0ZGZkYjQ1Njcx
NzAxYzJiNTRkN2U5NC4uOWIzODAyOGM3NDdmNjhkMmVhOGQ5NjBiOTk2MDNiZmFmZWQ2YjZjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTg5LDYgKzU4OSw5
IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBuZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSUQo
KSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudXBkYXRlSUQo
KSArIDE7IH0KICAgICB1aW50NjRfdCBsYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSUQoKSBj
b25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUudXBkYXRlSUQoKTsg
fQogCisgICAgZW51bSBjbGFzcyBVbm9ic2N1cmVkUmVjdENvbnN0cmFpbnQgeyBDb25zdHJhaW5l
ZFRvRG9jdW1lbnRSZWN0LCBVbmNvbnN0cmFpbmVkIH07CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IGNvbXB1dGVDdXN0b21GaXhlZFBvc2l0aW9uUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHVub2JzY3VyZWRDb250ZW50UmVjdCwgZmxvYXQgc2NhbGUsIFVub2JzY3VyZWRSZWN0Q29uc3Ry
YWludCA9IFVub2JzY3VyZWRSZWN0Q29uc3RyYWludDo6VW5jb25zdHJhaW5lZCkgY29uc3Q7CisK
ICAgICB2b2lkIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRF
eHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNj
dXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJ
blNjcm9sbFZpZXdDb29yZGluYXRlcywgZG91YmxlIHRhcmdldFNjYWxlKTsKICAgICAKICAgICB2
b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IDJmNWIyNjliZTY2N2UyNWM2OGE3NzAzMWNjNzA2MWI2Njk5
YjEzYzEuLjIyYWIxNmQ2YjdlNjE4ZDk4MjBhMmFjMzM4YmZhYmQwMjc0NmNkMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTEy
Myw2ICsxMjMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVJ1bk9wZW5Q
YW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVy
cyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgZmxvYXQgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3Rv
ckluZGljYXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDVkMTZiY2NjZjYxNzU0NTlkODhhOTQ2ODRl
NTIzY2Y2YjJmYzAwODYuLjA1NzI5ZGQyNzdjOGNlMDhiMzFmYTRhYmI2ZGY5YjQ0Mzk3OWNjY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQpAQCAtMTg3LDYgKzE4NywxOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VW
aWV3cG9ydE1ldGFUYWdXaWR0aChmbG9hdCBuZXdXaWR0aCkKICAgICBbbV93ZWJWaWV3IF9zZXRW
aWV3cG9ydE1ldGFUYWdXaWR0aDpuZXdXaWR0aF07CiB9CiAKK2Zsb2F0IFBhZ2VDbGllbnRJbXBs
OjptaW5pbXVtWm9vbVNjYWxlKCkgY29uc3QKK3sKKyAgICBpZiAoVUlTY3JvbGxWaWV3ICpzY3Jv
bGxlciA9IFttX2NvbnRlbnRWaWV3IF9zY3JvbGxlcl0pCisgICAgICAgIHJldHVybiBzY3JvbGxl
ci5taW5pbXVtWm9vbVNjYWxlOworCisgICAgcmV0dXJuIDE7Cit9CisKK1dlYkNvcmU6OkZsb2F0
U2l6ZSBQYWdlQ2xpZW50SW1wbDo6Y29udGVudHNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
RmxvYXRTaXplKFttX2NvbnRlbnRWaWV3IGJvdW5kc10uc2l6ZSk7Cit9CisKIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5k
ZXggOWIwZDZlYzUwNzVmMWJlNDMzYjJjM2EzNjk1OWRmZWFkZDk3OTY1YS4uOGU1OGI0ZjM5NDRm
ODY2OGIyZDQxZmJmMDdiNjkwMTdlODVlZjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMjkyLDQwICsyOTIsNiBAQCAtICh2b2lkKXNl
dFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOihCT09MKXNob3cKICAgICB9CiB9CiAKLXN0YXRp
YyBpbmxpbmUgZmxvYXQgYWRqdXN0ZWRVbmV4cG9zZWRFZGdlKGZsb2F0IGRvY3VtZW50RWRnZSwg
ZmxvYXQgZXhwb3NlZFJlY3RFZGdlLCBmbG9hdCBmYWN0b3IpCi17Ci0gICAgaWYgKGV4cG9zZWRS
ZWN0RWRnZSA8IGRvY3VtZW50RWRnZSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50RWRnZSAtIGZh
Y3RvciAqIChkb2N1bWVudEVkZ2UgLSBleHBvc2VkUmVjdEVkZ2UpOwotICAgIAotICAgIHJldHVy
biBleHBvc2VkUmVjdEVkZ2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZmxvYXQgYWRqdXN0ZWRVbmV4
cG9zZWRNYXhFZGdlKGZsb2F0IGRvY3VtZW50RWRnZSwgZmxvYXQgZXhwb3NlZFJlY3RFZGdlLCBm
bG9hdCBmYWN0b3IpCi17Ci0gICAgaWYgKGV4cG9zZWRSZWN0RWRnZSA+IGRvY3VtZW50RWRnZSkK
LSAgICAgICAgcmV0dXJuIGRvY3VtZW50RWRnZSArIGZhY3RvciAqIChleHBvc2VkUmVjdEVkZ2Ug
LSBkb2N1bWVudEVkZ2UpOwotICAgIAotICAgIHJldHVybiBleHBvc2VkUmVjdEVkZ2U7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0RnJvbUV4cG9zZWRSZWN0
KENHUmVjdCB1bm9ic2N1cmVkUmVjdCwgQ0dTaXplIGRvY3VtZW50U2l6ZSwgQ0dGbG9hdCBzY2Fs
ZSwgQ0dGbG9hdCBtaW5pbXVtU2NhbGUpCi17Ci0gICAgRmxvYXRSZWN0IGNvbnN0cmFpbmVkVW5v
YnNjdXJlZFJlY3QgPSB1bm9ic2N1cmVkUmVjdDsKLSAgICBGbG9hdFJlY3QgZG9jdW1lbnRSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGRvY3VtZW50U2l6ZSkpOwotICAg
IAotICAgIGlmIChzY2FsZSA8IG1pbmltdW1TY2FsZSkgewotICAgICAgICBjb25zdCBDR0Zsb2F0
IHNsb3BlID0gMTI7Ci0gICAgICAgIENHRmxvYXQgZmFjdG9yID0gc3RkOjptYXg8Q0dGbG9hdD4o
MSAtIHNsb3BlICogKG1pbmltdW1TY2FsZSAtIHNjYWxlKSwgMCk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC5zZXRYKGFkanVzdGVkVW5leHBvc2VkRWRn
ZShkb2N1bWVudFJlY3QueCgpLCBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LngoKSwgZmFjdG9y
KSk7Ci0gICAgICAgIGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3Quc2V0WShhZGp1c3RlZFVuZXhw
b3NlZEVkZ2UoZG9jdW1lbnRSZWN0LnkoKSwgY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC55KCks
IGZhY3RvcikpOwotICAgICAgICBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LnNldFdpZHRoKGFk
anVzdGVkVW5leHBvc2VkTWF4RWRnZShkb2N1bWVudFJlY3QubWF4WCgpLCBjb25zdHJhaW5lZFVu
b2JzY3VyZWRSZWN0Lm1heFgoKSwgZmFjdG9yKSAtIGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3Qu
eCgpKTsKLSAgICAgICAgY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC5zZXRIZWlnaHQoYWRqdXN0
ZWRVbmV4cG9zZWRNYXhFZGdlKGRvY3VtZW50UmVjdC5tYXhZKCksIGNvbnN0cmFpbmVkVW5vYnNj
dXJlZFJlY3QubWF4WSgpLCBmYWN0b3IpIC0gY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC55KCkp
OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gRnJhbWVWaWV3OjpyZWN0Rm9yVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMoZW5jbG9zaW5nTGF5b3V0UmVjdChjb25zdHJhaW5lZFVub2JzY3VyZWRS
ZWN0KSwgcm91bmRlZExheW91dFNpemUoRmxvYXRTaXplKGRvY3VtZW50U2l6ZSkpLCBzY2FsZSwg
ZmFsc2UsIFN0aWNrVG9WaWV3cG9ydEJvdW5kcyk7Ci19Ci0KIC0gKHZvaWQpZGlkVXBkYXRlVmlz
aWJsZVJlY3Q6KENHUmVjdCl2aXNpYmxlUmVjdCB1bm9ic2N1cmVkUmVjdDooQ0dSZWN0KXVub2Jz
Y3VyZWRSZWN0IHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdCl1
bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCiAgICAgc2NhbGU6KENHRmxvYXQp
em9vbVNjYWxlIG1pbmltdW1TY2FsZTooQ0dGbG9hdCltaW5pbXVtU2NhbGUgaW5TdGFibGVTdGF0
ZTooQk9PTClpc1N0YWJsZVN0YXRlIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZl
bHk6KEJPT0wpaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseQogewpAQCAtMzQ0
LDExICszMTAsMTIgQEAgLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2li
bGVSZWN0IHVub2JzY3VyZWRSZWN0OihDR1JlY3QpdW5vYnNjdXIKICAgICAgICAgZmlsdGVyZWRT
Y2FsZSA9IF9wYWdlLT5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsKICAgICB9CiAKLSAgICBGbG9h
dFJlY3QgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QgPSBmaXhlZFBvc2l0aW9uUmVjdEZyb21FeHBv
c2VkUmVjdCh1bm9ic2N1cmVkUmVjdCwgW3NlbGYgYm91bmRzXS5zaXplLCB6b29tU2NhbGUsIG1p
bmltdW1TY2FsZSk7Ci0gICAgX3BhZ2UtPnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyhfcGFnZS0+bmV4dFZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUlEKCksIHZpc2libGVSZWN0LCB1bm9ic2N1cmVkUmVjdCwgdW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlcywgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QsIGZpbHRlcmVkU2NhbGUs
IGlzU3RhYmxlU3RhdGUsIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHksIHRp
bWVzdGFtcCwgdmVsb2NpdHlEYXRhLmhvcml6b250YWxWZWxvY2l0eSwgdmVsb2NpdHlEYXRhLnZl
cnRpY2FsVmVsb2NpdHksIHZlbG9jaXR5RGF0YS5zY2FsZUNoYW5nZVJhdGUpKTsKLSAgICAKKyAg
ICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3RGb3JMYXlvdXQgPSBfcGFnZS0+Y29tcHV0ZUN1
c3RvbUZpeGVkUG9zaXRpb25SZWN0KHVub2JzY3VyZWRSZWN0LCB6b29tU2NhbGUsIFdlYlBhZ2VQ
cm94eTo6VW5vYnNjdXJlZFJlY3RDb25zdHJhaW50OjpDb25zdHJhaW5lZFRvRG9jdW1lbnRSZWN0
KTsKKyAgICBfcGFnZS0+dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvKF9wYWdlLT5uZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSUQoKSwgdmlz
aWJsZVJlY3QsIHVub2JzY3VyZWRSZWN0LCB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzLCBmaXhlZFBvc2l0aW9uUmVjdEZvckxheW91dCwKKyAgICAgICAgZmlsdGVyZWRTY2Fs
ZSwgaXNTdGFibGVTdGF0ZSwgaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseSwg
dGltZXN0YW1wLCB2ZWxvY2l0eURhdGEuaG9yaXpvbnRhbFZlbG9jaXR5LCB2ZWxvY2l0eURhdGEu
dmVydGljYWxWZWxvY2l0eSwgdmVsb2NpdHlEYXRhLnNjYWxlQ2hhbmdlUmF0ZSkpOworCiAgICAg
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBf
cGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOwotICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT52aWV3cG9ydENoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxpbmcoc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnJvb3RTY3JvbGxpbmdOb2RlSUQoKSwgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QsIHpv
b21TY2FsZSk7CisgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnZpZXdwb3J0Q2hhbmdlZFZpYURl
bGVnYXRlZFNjcm9sbGluZyhzY3JvbGxpbmdDb29yZGluYXRvci0+cm9vdFNjcm9sbGluZ05vZGVJ
RCgpLCBfcGFnZS0+Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KF9wYWdlLT51bm9ic2N1
cmVkQ29udGVudFJlY3QoKSwgem9vbVNjYWxlKSwgem9vbVNjYWxlKTsKIAogICAgIGlmIChhdXRv
IGRyYXdpbmdBcmVhID0gX3BhZ2UtPmRyYXdpbmdBcmVhKCkpCiAgICAgICAgIGRyYXdpbmdBcmVh
LT51cGRhdGVEZWJ1Z0luZGljYXRvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAzN2I5Y2JjN2U0NzVhNjhjODAyM2ZjNjgzNGVj
NWYxZTU4ODQ3NmRlLi5jYzVhY2M2MTllOTdhZWYyOTRhNDI0ZTc1OTk1YTY1ODdhZjczZDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgpAQCAtMTk0LDYgKzE5NSw0NiBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RV
cGRhdGVJbmZvJgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW5saW5lIGZsb2F0IGFk
anVzdGVkVW5leHBvc2VkRWRnZShmbG9hdCBkb2N1bWVudEVkZ2UsIGZsb2F0IGV4cG9zZWRSZWN0
RWRnZSwgZmxvYXQgZmFjdG9yKQoreworICAgIGlmIChleHBvc2VkUmVjdEVkZ2UgPCBkb2N1bWVu
dEVkZ2UpCisgICAgICAgIHJldHVybiBkb2N1bWVudEVkZ2UgLSBmYWN0b3IgKiAoZG9jdW1lbnRF
ZGdlIC0gZXhwb3NlZFJlY3RFZGdlKTsKKyAgICAKKyAgICByZXR1cm4gZXhwb3NlZFJlY3RFZGdl
OworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IGFkanVzdGVkVW5leHBvc2VkTWF4RWRnZShmbG9h
dCBkb2N1bWVudEVkZ2UsIGZsb2F0IGV4cG9zZWRSZWN0RWRnZSwgZmxvYXQgZmFjdG9yKQorewor
ICAgIGlmIChleHBvc2VkUmVjdEVkZ2UgPiBkb2N1bWVudEVkZ2UpCisgICAgICAgIHJldHVybiBk
b2N1bWVudEVkZ2UgKyBmYWN0b3IgKiAoZXhwb3NlZFJlY3RFZGdlIC0gZG9jdW1lbnRFZGdlKTsK
KyAgICAKKyAgICByZXR1cm4gZXhwb3NlZFJlY3RFZGdlOworfQorCitXZWJDb3JlOjpGbG9hdFJl
Y3QgV2ViUGFnZVByb3h5Ojpjb21wdXRlQ3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoY29uc3QgRmxv
YXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QsIGZsb2F0IHNjYWxlLCBVbm9ic2N1cmVkUmVj
dENvbnN0cmFpbnQgY29uc3RyYWludCkgY29uc3QKK3sKKyAgICBGbG9hdFJlY3QgY29uc3RyYWlu
ZWRVbm9ic2N1cmVkUmVjdCA9IHVub2JzY3VyZWRDb250ZW50UmVjdDsKKyAgICBGbG9hdFNpemUg
Y29udGVudHNTaXplID0gbV9wYWdlQ2xpZW50LmNvbnRlbnRzU2l6ZSgpOworICAgIEZsb2F0UmVj
dCBkb2N1bWVudFJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250ZW50c1NpemUpOwor
CisgICAgaWYgKGNvbnN0cmFpbnQgPT0gVW5vYnNjdXJlZFJlY3RDb25zdHJhaW50OjpDb25zdHJh
aW5lZFRvRG9jdW1lbnRSZWN0KQorICAgICAgICBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0Lmlu
dGVyc2VjdChkb2N1bWVudFJlY3QpOworCisgICAgZmxvYXQgbWluaW11bVNjYWxlID0gbV9wYWdl
Q2xpZW50Lm1pbmltdW1ab29tU2NhbGUoKTsKKyAgICAKKyAgICBpZiAoc2NhbGUgPCBtaW5pbXVt
U2NhbGUpIHsKKyAgICAgICAgY29uc3QgQ0dGbG9hdCBzbG9wZSA9IDEyOworICAgICAgICBDR0Zs
b2F0IGZhY3RvciA9IHN0ZDo6bWF4PENHRmxvYXQ+KDEgLSBzbG9wZSAqIChtaW5pbXVtU2NhbGUg
LSBzY2FsZSksIDApOworICAgICAgICAgICAgCisgICAgICAgIGNvbnN0cmFpbmVkVW5vYnNjdXJl
ZFJlY3Quc2V0WChhZGp1c3RlZFVuZXhwb3NlZEVkZ2UoZG9jdW1lbnRSZWN0LngoKSwgY29uc3Ry
YWluZWRVbm9ic2N1cmVkUmVjdC54KCksIGZhY3RvcikpOworICAgICAgICBjb25zdHJhaW5lZFVu
b2JzY3VyZWRSZWN0LnNldFkoYWRqdXN0ZWRVbmV4cG9zZWRFZGdlKGRvY3VtZW50UmVjdC55KCks
IGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3QueSgpLCBmYWN0b3IpKTsKKyAgICAgICAgY29uc3Ry
YWluZWRVbm9ic2N1cmVkUmVjdC5zZXRXaWR0aChhZGp1c3RlZFVuZXhwb3NlZE1heEVkZ2UoZG9j
dW1lbnRSZWN0Lm1heFgoKSwgY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdC5tYXhYKCksIGZhY3Rv
cikgLSBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0LngoKSk7CisgICAgICAgIGNvbnN0cmFpbmVk
VW5vYnNjdXJlZFJlY3Quc2V0SGVpZ2h0KGFkanVzdGVkVW5leHBvc2VkTWF4RWRnZShkb2N1bWVu
dFJlY3QubWF4WSgpLCBjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0Lm1heFkoKSwgZmFjdG9yKSAt
IGNvbnN0cmFpbmVkVW5vYnNjdXJlZFJlY3QueSgpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IEZyYW1lVmlldzo6cmVjdEZvclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKGVuY2xvc2luZ0xh
eW91dFJlY3QoY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdCksIHJvdW5kZWRMYXlvdXRTaXplKGNv
bnRlbnRzU2l6ZSksIHNjYWxlLCBmYWxzZSwgU3RpY2tUb1ZpZXdwb3J0Qm91bmRzKTsKK30KKwog
dm9pZCBXZWJQYWdlUHJveHk6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgRmxvYXRT
aXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29u
dGVudFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgIGRv
dWJsZSB0YXJnZXRTY2FsZSkKIHsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUobWluaW11bUxheW91dFNpemUsIHRhcmdldEV4
cG9zZWRDb250ZW50UmVjdCwgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIHRhcmdldFVub2JzY3VyZWRS
ZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIHRhcmdldFNjYWxlKSwgbV9wYWdlSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDg1MzQ2ZmY0MGFjY2ViMzQ5ZmI4ZWY0YzYw
MDMxYWQ5YjEzYmQ0YTIuLjg5YjIwMGRkOWMwNDkwMDAxNGZiYjdiNDBmZjYxMTRjOTYwYWEwYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEzNCw4ICsxMzQsOSBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1pdExheWVyVHJlZShjb25zdCBS
ZW1vdGVMYXllclRyZWVUcmFucwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChmaXhlZE9y
U3RpY2t5TGF5ZXJDaGFuZ2VkKSB7CisgICAgICAgIEZsb2F0UmVjdCBjdXN0b21GaXhlZFBvc2l0
aW9uUmVjdCA9IG1fd2ViUGFnZVByb3h5LT5jb21wdXRlQ3VzdG9tRml4ZWRQb3NpdGlvblJlY3Qo
bV93ZWJQYWdlUHJveHktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLCBtX3dlYlBhZ2VQcm94eS0+
ZGlzcGxheWVkQ29udGVudFNjYWxlKCkpOwogICAgICAgICAvLyBJZiB3ZSBnb3QgYSBuZXcgbGF5
ZXIgZm9yIGEgZml4ZWQgb3Igc3RpY2t5IG5vZGUsIGl0cyBwb3NpdGlvbiBmcm9tIHRoZSBXZWJQ
cm9jZXNzIGlzIHByb2JhYmx5IHN0YWxlLiBXZSBuZWVkIHRvIHJlLXJ1biB0aGUgInZpZXdwb3J0
IiBjaGFuZ2VkIGxvZ2ljIHRvIHVkcGF0ZSBpdCB3aXRoIG91ciBVSS1zaWRlIHN0YXRlLgotICAg
ICAgICBtX3dlYlBhZ2VQcm94eS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpLT52aWV3cG9y
dENoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxpbmcobV93ZWJQYWdlUHJveHktPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkoKS0+cm9vdFNjcm9sbGluZ05vZGVJRCgpLCBtX3dlYlBhZ2VQcm94eS0+
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCksIG1fd2ViUGFnZVByb3h5LT5kaXNwbGF5ZWRDb250ZW50
U2NhbGUoKSk7CisgICAgICAgIG1fd2ViUGFnZVByb3h5LT5zY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5KCktPnZpZXdwb3J0Q2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhtX3dlYlBhZ2VQcm94
eS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpLT5yb290U2Nyb2xsaW5nTm9kZUlEKCksIGN1
c3RvbUZpeGVkUG9zaXRpb25SZWN0LCBtX3dlYlBhZ2VQcm94eS0+ZGlzcGxheWVkQ29udGVudFNj
YWxlKCkpOwogICAgIH0KICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
Cg==
</data>
<flag name="review"
          id="256000"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>