<?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>70821</bug_id>
          
          <creation_ts>2011-10-25 10:11:03 -0700</creation_ts>
          <short_desc>PDF SUBFRAMES: Incomplete repaint after pinch to zoom</short_desc>
          <delta_ts>2011-10-25 12:00:52 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490096</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-25 10:11:03 -0700</bug_when>
    <thetext>PDF SUBFRAMES: Incomplete repaint after pinch to zoom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490106</commentid>
    <comment_count>1</comment_count>
      <attachid>112354</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-25 10:19:39 -0700</bug_when>
    <thetext>Created attachment 112354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490122</commentid>
    <comment_count>2</comment_count>
      <attachid>112354</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-10-25 10:33:55 -0700</bug_when>
    <thetext>Comment on attachment 112354
Patch

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

&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:212
&gt; +    virtual bool wantsWindowRelativeCoordinates() = 0;

Should this be a const member function?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:124
&gt; +    virtual bool transformsAffectFrameRect();

Should this be a const member function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490131</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-25 10:42:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 112354 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112354&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:212
&gt; &gt; +    virtual bool wantsWindowRelativeCoordinates() = 0;
&gt; 
&gt; Should this be a const member function?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:124
&gt; &gt; +    virtual bool transformsAffectFrameRect();
&gt; 
&gt; Should this be a const member function?

For abstract classes I prefer having pure virtual member functions not be const since the derived classes might want to do things that are non-const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490182</commentid>
    <comment_count>4</comment_count>
      <attachid>112354</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-25 11:28:01 -0700</bug_when>
    <thetext>Comment on attachment 112354
Patch

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

Can we add some tests pls?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.cpp:307
&gt; +        graphicsContext-&gt;translate(-pluginView()-&gt;frameRect().x(), -pluginView()-&gt;frameRect().y());

Hmm, is frameRect() OK to use under transforms?

&gt;&gt;&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:212
&gt;&gt;&gt; +    virtual bool wantsWindowRelativeCoordinates() = 0;
&gt;&gt; 
&gt;&gt; Should this be a const member function?
&gt; 
&gt; For abstract classes I prefer having pure virtual member functions not be const since the derived classes might want to do things that are non-const.

I think the name is a bit too generic. Which coordinates, passed to which function?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:578
&gt; +    if (!m_plugin-&gt;wantsWindowRelativeCoordinates()) {
&gt; +        // FIXME: We should try to intersect the dirty rect with the plug-in&apos;s clip rect here.
&gt; +        paintRect = IntRect(IntPoint(), frameRect().size());
&gt; +    } else {
&gt; +        IntRect dirtyRectInWindowCoordinates = parent()-&gt;contentsToWindow(dirtyRect);
&gt; +        paintRect = intersection(dirtyRectInWindowCoordinates, clipRectInWindowCoordinates());
&gt; +    }

I&apos;d flip the clauses so you can write if (m_plugin-&gt;wantsWindowRelativeCoordinates())

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:593
&gt; +    if (!m_plugin-&gt;wantsWindowRelativeCoordinates()) {
&gt; +        // Translate the coordinate system so that the origin is in the top-left corner of the plug-in.
&gt; +        context-&gt;translate(frameRect().location().x(), frameRect().location().y());
&gt; +    } else {

And here

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:71
&gt; +    // FIXME: Remove this.
&gt; +    WebCore::RenderBoxModelObject* renderer() const;

The FIXME needs to say a bit more about why it should be removed (possibly even linking to a bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490192</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-25 11:46:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 112354 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112354&amp;action=review
&gt; 
&gt; Can we add some tests pls?

I&apos;ll add more tests when I do the work necessary to make plug-ins work better with transforms.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.cpp:307
&gt; &gt; +        graphicsContext-&gt;translate(-pluginView()-&gt;frameRect().x(), -pluginView()-&gt;frameRect().y());
&gt; 
&gt; Hmm, is frameRect() OK to use under transforms?

Not really, but since the scroll bars are child widgets of the enclosing scroll view, they&apos;re going to break horribly in non-trivial transforms anyway.

&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:212
&gt; &gt;&gt;&gt; +    virtual bool wantsWindowRelativeCoordinates() = 0;
&gt; &gt;&gt; 
&gt; &gt;&gt; Should this be a const member function?
&gt; &gt; 
&gt; &gt; For abstract classes I prefer having pure virtual member functions not be const since the derived classes might want to do things that are non-const.
&gt; 
&gt; I think the name is a bit too generic. Which coordinates, passed to which function?

Ideally all coordinates :) The plan is to move all plug-in subclasses to require non-window coordinates and then we can get rid of it.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:578
&gt; &gt; +    if (!m_plugin-&gt;wantsWindowRelativeCoordinates()) {
&gt; &gt; +        // FIXME: We should try to intersect the dirty rect with the plug-in&apos;s clip rect here.
&gt; &gt; +        paintRect = IntRect(IntPoint(), frameRect().size());
&gt; &gt; +    } else {
&gt; &gt; +        IntRect dirtyRectInWindowCoordinates = parent()-&gt;contentsToWindow(dirtyRect);
&gt; &gt; +        paintRect = intersection(dirtyRectInWindowCoordinates, clipRectInWindowCoordinates());
&gt; &gt; +    }
&gt; 
&gt; I&apos;d flip the clauses so you can write if (m_plugin-&gt;wantsWindowRelativeCoordinates())

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:593
&gt; &gt; +    if (!m_plugin-&gt;wantsWindowRelativeCoordinates()) {
&gt; &gt; +        // Translate the coordinate system so that the origin is in the top-left corner of the plug-in.
&gt; &gt; +        context-&gt;translate(frameRect().location().x(), frameRect().location().y());
&gt; &gt; +    } else {
&gt; 
&gt; And here

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:71
&gt; &gt; +    // FIXME: Remove this.
&gt; &gt; +    WebCore::RenderBoxModelObject* renderer() const;
&gt; 
&gt; The FIXME needs to say a bit more about why it should be removed (possibly even linking to a bug).

I&apos;ll make the comment more explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490203</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-25 12:00:52 -0700</bug_when>
    <thetext>Committed r98369: &lt;http://trac.webkit.org/changeset/98369&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112354</attachid>
            <date>2011-10-25 10:19:39 -0700</date>
            <delta_ts>2011-10-25 11:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70821-20111025101943.patch</filename>
            <type>text/plain</type>
            <size>16786</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMjYwYjEwNTE2MzM3YzI4
OTcyZDBmNTFiYjEzN2I2OTYxZDk3MzMyLi41NDVhYjAxNjIyNTA2YjAyMTE5NDY5MTMxMWEzNWEw
ZWZkMzJlZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMTAtMjUgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBQREYgU1VCRlJBTUVT
OiBJbmNvbXBsZXRlIHJlcGFpbnQgYWZ0ZXIgcGluY2ggdG8gem9vbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEwMzEyNzMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIG5ldyBwdXJlIHZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9uLCBQbHVnaW46
OndhbnRzV2luZG93UmVsYXRpdmVDb29yZGluYXRlcy4KKyAgICAgICAgSWYgYSBwbHVnLWluIHN1
YmNsYXNzIHJldHVybnMgdHJ1ZSwgd2UnbGwga2VlcCBnaXZpbmcgdGhlIHBsdWctaW4gY29vcmRp
bmF0ZXMgdGhhdAorICAgICAgICBhcmUgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgd2luZG93
LiBJZiBhIHBsdWctaW4gc3ViY2xhc3MgcmV0dXJucyBmYWxzZSwgd2UnbGwgZ2l2ZSBpdAorICAg
ICAgICBjb29yZGluYXRlcyBpbiBhIG11Y2ggbW9yZSBzYW5lIGNvb3JkaW5hdGUgc3lzdGVtLCB3
aXRoIHRoZSBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgcGx1Zy1pbi4KKwor
ICAgICAgICBDaGFuZ2UgQnVpbHRpblBERlZpZXcgdG8gcmV0dXJuIGZhbHNlIHNvIHRoYXQgaXQn
bGwgd29yayBjb3JyZWN0bHkgd2l0aCBwaW5jaCB0byB6b29tLgorICAgICAgICAKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6d2FudHNXaW5kb3dSZWxhdGl2ZUNvb3JkaW5hdGVz
KToKKyAgICAgICAgTWFrZSB3YW50c1dpbmRvd1JlbGF0aXZlQ29vcmRpbmF0ZXMgcmV0dXJuIHRy
dWUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6OnBhaW50KToKKyAgICAgICAgUmVt
b3ZlIHRyYW5zbGF0aW9uIHNpbmNlIHRoZSBncmFwaGljcyBjb250ZXh0IGlzIGFscmVhZHkgc2V0
IHVwIGluIHRoZSByaWdodCB3YXkuCisKKyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6
OnBhaW50Q29udGVudCk6CisgICAgICAgIE5vIG5lZWQgdG8gb2Zmc2V0IGJ5IHRoZSBwbHVnLWlu
IHZpZXcgbG9jYXRpb24gYW55bW9yZS4KKworICAgICAgICAoV2ViS2l0OjpCdWlsdEluUERGVmll
dzo6cGFpbnRDb250cm9scyk6CisgICAgICAgIEFjY291bnQgZm9yIHRoZSBzY3JvbGxiYXJzIGJl
aW5nIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQgc2Nyb2xsIHZpZXcgaGVyZS4KKworICAgICAgICAo
V2ViS2l0OjpCdWlsdEluUERGVmlldzo6d2FudHNXaW5kb3dSZWxhdGl2ZUNvb3JkaW5hdGVzKToK
KyAgICAgICAgUmV0dXJuIGZhbHNlLgorCisgICAgICAgIChXZWJLaXQ6OkJ1aWx0SW5QREZWaWV3
Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIpOgorICAgICAgICBJbXBsZW1l
bnQgdGhpcyBzbyB0aGF0IHNjcm9sbGJhciBoaXQgdGVzdGluZyB3b3JrcyBjb3JyZWN0bHkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgIEFkZCB3YW50
c1dpbmRvd1JlbGF0aXZlQ29vcmRpbmF0ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6d2FudHNX
aW5kb3dSZWxhdGl2ZUNvb3JkaW5hdGVzKToKKyAgICAgICAgUmV0dXJuIHRydWUgZm9yIG5vdy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6cmVuZGVyZXIpOgorICAgICAgICBBZGQgc2ltcGxlIGdldHRl
ci4KKworICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAgIEhhbmRs
ZSB0aGUgY2FzZSB3aGVuIHRoZSBwbHVnLWluIGRvZXNuJ3Qgd2FudCB3aW5kb3cgcmVsYXRpdmUg
Y29vcmRpbmF0ZXMuCisKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dHJhbnNmb3Jtc0Fm
ZmVjdEZyYW1lUmVjdCk6CisgICAgICAgIFJldHVybiB0cnVlIGhlcmUuCisKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgTm8gbmVl
ZCB0byBhZGp1c3QgdGhlIGJvdW5kcyB0byBhY2NvdW50IGZvciB0aGUgc2NhbGUgZmFjdG9yIG5v
dywgc2luY2UgdGhlIGZyYW1lIHJlY3Qgd2lsbCBhbHdheXMgYmUgdGhlCisgICAgICAgIHNhbWUg
cmVnYXJkbGVzcyBvZiB0aGUgdHJhbnNmb3JtLgorCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OmNsaXBSZWN0SW5XaW5kb3dDb29yZGluYXRlcyk6CisgICAgICAgIERpdHRvLgorCiAyMDEx
LTEwLTI1ICBaZW5vIEFsYmlzc2VyICA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CiAKICAgICAg
ICAgW1F0XVtXSzJdIFFEZXNrdG9wV2ViVmlldyBhbmQgUVRvdWNoV2ViVmlldyBzaG91bGQgYmUg
ZGVjbGFyZWQgaW4gdGhlIG1ldGEgdHlwZSBzeXN0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cAppbmRleCBkYjJjZWI3ZWQ3NTg5MTU5MTk5N2MzYzNhYWJkZjY5MGMzMDcwOWJiLi40ZDg3OTg1
MjY1Zjc3NzAxMTNjNmJhNmNmYjFkOGQ3OWEyZmFlNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAKQEAgLTg5MSw2ICs4OTEsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6aGFuZGxlU2Ny
b2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitib29sIE5ldHNjYXBlUGx1Z2luOjp3YW50c1dpbmRvd1JlbGF0aXZlQ29vcmRpbmF0
ZXMoKQoreworICAgIHJldHVybiB0cnVlOworfQorCiBTY3JvbGxiYXIqIE5ldHNjYXBlUGx1Z2lu
Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKaW5kZXggZDUzODQyYmUxMTgyMDcxZGQ5MzdhYzAzMjcxNWM5ZTU3MmU1MDJhZC4uODRm
NjZmYzhjNTZhNWZlOTRlNmY1ZDZkNDc5MzM2YTdlMGU3ZTMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTIwNyw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1W
YWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKKyAg
ICB2aXJ0dWFsIGJvb2wgd2FudHNXaW5kb3dSZWxhdGl2ZUNvb3JkaW5hdGVzKCk7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3
LmNwcAppbmRleCA4OGQ3ZmY1ZWYzYmM2YTM2MWM4ZWM1MjIyNmExMDc0YTRiOWQ2MzVhLi44YWI3
OWNkNzY4ZmM5YjBhYTdlYTY5MGNmOTdlMWFmMWEwZjQ1N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyQm94TW9kZWxPYmplY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbEFuaW1hdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXJUaGVt
ZS5oPgogCkBAIC0yMzIsMjIgKzIzMywxNSBAQCB2b2lkIEJ1aWx0SW5QREZWaWV3OjpkZXN0cm95
KCkKICAgICBkZXN0cm95U2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBC
dWlsdEluUERGVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpCit2b2lkIEJ1aWx0SW5Q
REZWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQogewogICAgIHNjcm9sbEFuaW1hdG9yKCktPmNvbnRlbnRBcmVhV2ls
bFBhaW50KCk7CiAKLSAgICBwYWludEJhY2tncm91bmQoZ3JhcGhpY3NDb250ZXh0LCBkaXJ0eVJl
Y3RJbldpbmRvd0Nvb3JkaW5hdGVzKTsKKyAgICBwYWludEJhY2tncm91bmQoZ3JhcGhpY3NDb250
ZXh0LCBkaXJ0eVJlY3QpOwogCiAgICAgaWYgKCFtX3BkZkRvY3VtZW50KSAvLyBGSVhNRTogRHJh
dyBsb2FkaW5nIHByb2dyZXNzLgogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0KLSAgICAvLyBVbmRv
IHRyYW5zbGF0aW9uIHRvIHdpbmRvdyBjb29yZGluYXRlcyBwZXJmb3JtZWQgYnkgUGx1Z2luVmll
dzo6cGFpbnQoKS4KLSAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IHBsdWdpblZpZXcoKS0+cGFyZW50
KCktPndpbmRvd1RvQ29udGVudHMoZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcyk7Ci0gICAg
SW50UG9pbnQgZG9jdW1lbnRPcmlnaW5JbldpbmRvd0Nvb3JkaW5hdGVzID0gcGx1Z2luVmlldygp
LT5wYXJlbnQoKS0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludCgpKTsKLSAgICBncmFwaGljc0Nv
bnRleHQtPnRyYW5zbGF0ZSgtZG9jdW1lbnRPcmlnaW5JbldpbmRvd0Nvb3JkaW5hdGVzLngoKSwg
LWRvY3VtZW50T3JpZ2luSW5XaW5kb3dDb29yZGluYXRlcy55KCkpOwotCiAgICAgcGFpbnRDb250
ZW50KGdyYXBoaWNzQ29udGV4dCwgZGlydHlSZWN0KTsKICAgICBwYWludENvbnRyb2xzKGdyYXBo
aWNzQ29udGV4dCwgZGlydHlSZWN0KTsKIH0KQEAgLTI3MSw5ICsyNjUsOCBAQCB2b2lkIEJ1aWx0
SW5QREZWaWV3OjpwYWludENvbnRlbnQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEludFJlYwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKGRpcnR5UmVjdCk7CiAg
ICAgSW50UmVjdCBjb250ZW50UmVjdChkaXJ0eVJlY3QpOwotICAgIGNvbnRlbnRSZWN0Lm1vdmVC
eSgtcGx1Z2luVmlldygpLT5sb2NhdGlvbigpKTsKICAgICBjb250ZW50UmVjdC5tb3ZlQnkoSW50
UG9pbnQobV9zY3JvbGxPZmZzZXQpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZShw
bHVnaW5WaWV3KCktPngoKSAtIG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCksIHBsdWdpblZpZXcoKS0+
eSgpIC0gbV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+dHJh
bnNsYXRlKC1tX3Njcm9sbE9mZnNldC53aWR0aCgpLCAtbV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkp
OwogCiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogCkBAIC0zMDcsMTAg
KzMwMCwxOCBAQCB2b2lkIEJ1aWx0SW5QREZWaWV3OjpwYWludENvbnRlbnQoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlYwogCiB2b2lkIEJ1aWx0SW5QREZWaWV3
OjpwYWludENvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikKLSAg
ICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5wYWludChncmFwaGljc0NvbnRleHQsIGRpcnR5
UmVjdCk7Ci0gICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpCi0gICAgICAgIG1fdmVydGljYWxT
Y3JvbGxiYXItPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgZGlydHlSZWN0KTsKKyAgICB7CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0
KTsKKyAgICAgICAgSW50UmVjdCBzY3JvbGxiYXJEaXJ0eVJlY3QgPSBkaXJ0eVJlY3Q7CisgICAg
ICAgIHNjcm9sbGJhckRpcnR5UmVjdC5tb3ZlQnkocGx1Z2luVmlldygpLT5mcmFtZVJlY3QoKS5s
b2NhdGlvbigpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBsdWdpblZp
ZXcoKS0+ZnJhbWVSZWN0KCkueCgpLCAtcGx1Z2luVmlldygpLT5mcmFtZVJlY3QoKS55KCkpOwor
CisgICAgICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXItPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyRGlydHlSZWN0
KTsKKworICAgICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIG1fdmVy
dGljYWxTY3JvbGxiYXItPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyRGlydHlSZWN0
KTsKKyAgICB9CiAKICAgICBJbnRSZWN0IGRpcnR5Q29ybmVyUmVjdCA9IGludGVyc2VjdGlvbihz
Y3JvbGxDb3JuZXJSZWN0KCksIGRpcnR5UmVjdCk7CiAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnBhaW50U2Nyb2xsQ29ybmVyKDAsIGdyYXBoaWNzQ29udGV4dCwgZGlydHlDb3JuZXJSZWN0
KTsKQEAgLTUzMSw2ICs1MzIsMTEgQEAgYm9vbCBCdWlsdEluUERGVmlldzo6aGFuZGxlU2Nyb2xs
KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGcKICAgICByZXR1
cm4gc2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogfQogCitib29sIEJ1aWx0SW5QREZW
aWV3Ojp3YW50c1dpbmRvd1JlbGF0aXZlQ29vcmRpbmF0ZXMoKQoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogU2Nyb2xsYmFyKiBCdWlsdEluUERGVmlldzo6aG9yaXpvbnRhbFNjcm9sbGJhcigp
CiB7CiAgICAgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsKQEAgLTY1Niw0ICs2
NjIsMTIgQEAgdm9pZCBCdWlsdEluUERGVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKCkKICAg
ICBzY3JvbGxBbmltYXRvcigpLT5jb250ZW50c1Jlc2l6ZWQoKTsKIH0KIAorSW50UG9pbnQgQnVp
bHRJblBERlZpZXc6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdAor
eworICAgIEludFBvaW50IHBvaW50ID0gcGx1Z2luVmlldygpLT5mcmFtZSgpLT52aWV3KCktPmNv
bnZlcnRUb1JlbmRlcmVyKHBsdWdpblZpZXcoKS0+cmVuZGVyZXIoKSwgcGFyZW50UG9pbnQpOwor
ICAgIHBvaW50Lm1vdmUocGx1Z2luVmlldygpLT5sb2NhdGlvbigpIC0gc2Nyb2xsYmFyLT5sb2Nh
dGlvbigpKTsKKworICAgIHJldHVybiBwb2ludDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0
SW5QREZWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0
SW5QREZWaWV3LmgKaW5kZXggNjJkMzBlYzI4NGJkNjQ3ODkwZWFkNjNiZDBhMDYzNzUyZTA5OGMz
NS4uYjMxNTI1ZDM3YWJiMmI2NDViOWE4ZGRlOWY2MGE0NTliMTA0YjRkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcu
aApAQCAtMTExLDYgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVC
cm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVl
KFN0cmluZyYgZm9ybVZhbHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOworICAgIHZp
cnR1YWwgYm9vbCB3YW50c1dpbmRvd1JlbGF0aXZlQ29vcmRpbmF0ZXMoKTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpOwogCkBAIC0xMzcsNiArMTM4
LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAvLyBJZiB3ZSByZXR1cm4gdHJ1ZSwgU2Ny
b2xsQW5pbWF0b3JNYWMgd2lsbCBrZWVwIGN5Y2xpbmcgYSB0aW1lciBmb3JldmVyLCB3YWl0aW5n
IGZvciBhIGdvb2QgdGltZSB0byBhbmltYXRlLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJT
dHlsZUNoYW5nZWQoKTsKIAorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIG90aGVyIGNvbnZl
cnNpb24gZnVuY3Rpb25zOyB0aGlzIG9uZSBpcyBlbm91Z2ggdG8gZ2V0IHNjcm9sbGJhciBoaXQg
dGVzdGluZyB3b3JraW5nLgorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZy
b21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3Q7CisKICAgICAvLyBJbiB3
aW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX2ZyYW1lUmVjdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGNhYjY2NjE2
MWQ3NzYwNGYwZGI3MjRiMWIwNWUzZDE5ZWM3N2Q2YjkuLmJjYTc0NzUwZjQ0NmExZDNkMjkyNGE3
OTMwNDk1ZTA4N2ExYTdjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKQEAgLTIwNyw2ICsyMDcsMTAgQEAgcHVibGljOgogICAgIC8vIFRlbGxzIHRoZSBw
bHVnLWluIHRoYXQgaXQgc2hvdWxkIHNjcm9sbC4gVGhlIHBsdWctaW4gc2hvdWxkIHJldHVybiB0
cnVlIGlmIGl0IGRpZCBzY3JvbGwuCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSA9IDA7CiAK
KyAgICAvLyBXaGV0aGVyIHRoZSBwbHVnLWluIHdhbnRzIGl0cyBjb29yZGluYXRlcyB0byBiZSBy
ZWxhdGl2ZSB0byB0aGUgd2luZG93LgorICAgIC8vIEZJWE1FOiBObyBwbHVnLWlucyBzaG91bGQg
d2FudCB3aW5kb3cgcmVsYXRpdmUgY29vcmRpbmF0ZXMsIHNvIHdlIHNob3VsZCBnZXQgcmlkIG9m
IHRoaXMuCisgICAgdmlydHVhbCBib29sIHdhbnRzV2luZG93UmVsYXRpdmVDb29yZGluYXRlcygp
ID0gMDsKKwogICAgIC8vIEEgcGx1Zy1pbiBjYW4gdXNlIFdlYkNvcmUgc2Nyb2xsIGJhcnMuIE1h
a2UgdGhlbSBrbm93biwgc28gdGhhdCBoaXQgdGVzdGluZyBjYW4gZmluZCB0aGVtLgogICAgIC8v
IEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIGluIFBsdWdpblZpZXcgb3IgaXRzIGJhc2UgY2xh
c3MsIG5vdCBpbiBpbmRpdmlkdWFsIHBsdWctaW5zLgogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Ny
b2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggMjhmMWNiZWI1Y2M5MjMz
OTNhNzgzZGVmMzRlMjUzNDI0OWU0MDU5NC4uOTY4NGM2MDQwNTRkY2Q0YmExMDE1Njc2YThmOTE5
N2U0OWQ0YTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuY3BwCkBAIC0zOTcsNiArMzk3LDExIEBAIGJvb2wgUGx1Z2luUHJveHk6Omhh
bmRsZVNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBQbHVnaW5Qcm94eTo6d2FudHNXaW5kb3dSZWxhdGl2ZUNvb3Jk
aW5hdGVzKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU2Nyb2xsYmFyKiBQbHVnaW5Qcm94
eTo6aG9yaXpvbnRhbFNjcm9sbGJhcigpCiB7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGE1NDM3YjE1NWYx
Y2MyMTQ4MjJjZmU1OTY1NmIyMzdiYWMzNTNlMmYuLjBkZDhlZGQxNjcyYmY4NWZhYzJjMzFkYTQ4
NTgxN2JlNDYzYmM4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCkBAIC0xMDQsNiArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwgYm9v
bCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxh
cml0eSk7CisgICAgdmlydHVhbCBib29sIHdhbnRzV2luZG93UmVsYXRpdmVDb29yZGluYXRlcygp
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCAyZTY1Njc0YzU0YjU4MDRlZTE1NDA4OGQxYzgxNzVlMmMwMmQ2NWI0Li4yODhhZGY4ZTY5
ZjMwY2JlNDIzNzMzMjk1YzE4NTIyYjQ0N2E4MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0zODIsNiArMzgyLDExIEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZEZhaWwoZXJyb3IuaXNDYW5jZWxsYXRp
b24oKSk7CiB9CiAKK1JlbmRlckJveE1vZGVsT2JqZWN0KiBQbHVnaW5WaWV3OjpyZW5kZXJlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9wbHVnaW5FbGVt
ZW50LT5yZW5kZXJlcigpKTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykgICAgCiB2b2lkIFBsdWdp
blZpZXc6OnNldFdpbmRvd0lzVmlzaWJsZShib29sIHdpbmRvd0lzVmlzaWJsZSkKIHsKQEAgLTU2
MywyNCArNTY4LDM4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBJbnRSZWN0IGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBwYXJlbnQoKS0+
Y29udGVudHNUb1dpbmRvdyhkaXJ0eVJlY3QpOwotICAgIEludFJlY3QgcGFpbnRSZWN0SW5XaW5k
b3dDb29yZGluYXRlcyA9IGludGVyc2VjdGlvbihkaXJ0eVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVz
LCBjbGlwUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSk7Ci0gICAgaWYgKHBhaW50UmVjdEluV2lu
ZG93Q29vcmRpbmF0ZXMuaXNFbXB0eSgpKQorICAgIEludFJlY3QgcGFpbnRSZWN0OworICAgIGlm
ICghbV9wbHVnaW4tPndhbnRzV2luZG93UmVsYXRpdmVDb29yZGluYXRlcygpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIGludGVyc2VjdCB0aGUgZGlydHkgcmVjdCB3aXRo
IHRoZSBwbHVnLWluJ3MgY2xpcCByZWN0IGhlcmUuCisgICAgICAgIHBhaW50UmVjdCA9IEludFJl
Y3QoSW50UG9pbnQoKSwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBJbnRSZWN0IGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBwYXJlbnQoKS0+Y29udGVu
dHNUb1dpbmRvdyhkaXJ0eVJlY3QpOworICAgICAgICBwYWludFJlY3QgPSBpbnRlcnNlY3Rpb24o
ZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcywgY2xpcFJlY3RJbldpbmRvd0Nvb3JkaW5hdGVz
KCkpOworICAgIH0KKworICAgIGlmIChwYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAobV9zbmFwc2hvdCkKKyAgICBpZiAobV9zbmFwc2hvdCkgewogICAgICAg
ICBtX3NuYXBzaG90LT5wYWludCgqY29udGV4dCwgZnJhbWVSZWN0KCkubG9jYXRpb24oKSwgbV9z
bmFwc2hvdC0+Ym91bmRzKCkpOwotICAgIGVsc2UgeworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7
CisKKyAgICBpZiAoIW1fcGx1Z2luLT53YW50c1dpbmRvd1JlbGF0aXZlQ29vcmRpbmF0ZXMoKSkg
eworICAgICAgICAvLyBUcmFuc2xhdGUgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHNvIHRoYXQgdGhl
IG9yaWdpbiBpcyBpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSBwbHVnLWluLgorICAgICAg
ICBjb250ZXh0LT50cmFuc2xhdGUoZnJhbWVSZWN0KCkubG9jYXRpb24oKS54KCksIGZyYW1lUmVj
dCgpLmxvY2F0aW9uKCkueSgpKTsKKyAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUgcGx1Z2lu
IGlzIGdpdmVuIGEgZnJhbWUgcmVjdCB3aGljaCBpcyBwYXJlbnQoKS0+Y29udGVudHNUb1dpbmRv
dyhmcmFtZVJlY3QoKSksCiAgICAgICAgIC8vIGFuZCB1bi10cmFuc2xhdGVzIGJ5IHRoZSBpdHMg
b3JpZ2luIHdoZW4gcGFpbnRpbmcuIFRoZSBjdXJyZW50IENUTSByZWZsZWN0cwogICAgICAgICAv
LyB0aGlzIHdpZGdldCdzIGZyYW1lIGlzIGl0cyBwYXJlbnQgKHRoZSBkb2N1bWVudCksIHNvIHdl
IGhhdmUgdG8gb2Zmc2V0IHRoZSBDVE0gYnkKICAgICAgICAgLy8gdGhlIGRvY3VtZW50J3Mgd2lu
ZG93IGNvb3JkaW5hdGVzLgogICAgICAgICBJbnRQb2ludCBkb2N1bWVudE9yaWdpbkluV2luZG93
Q29vcmRpbmF0ZXMgPSBwYXJlbnQoKS0+Y29udGVudHNUb1dpbmRvdyhJbnRQb2ludCgpKTsKLSAg
ICAgICAgCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29u
dGV4dCk7CiAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtZG9jdW1lbnRPcmlnaW5JbldpbmRv
d0Nvb3JkaW5hdGVzLngoKSwgLWRvY3VtZW50T3JpZ2luSW5XaW5kb3dDb29yZGluYXRlcy55KCkp
OwotICAgICAgICBtX3BsdWdpbi0+cGFpbnQoY29udGV4dCwgcGFpbnRSZWN0SW5XaW5kb3dDb29y
ZGluYXRlcyk7CiAgICAgfQorCisgICAgbV9wbHVnaW4tPnBhaW50KGNvbnRleHQsIHBhaW50UmVj
dCk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6ZnJhbWVSZWN0c0NoYW5nZWQoKQpAQCAtNjc5LDE2
ICs2OTgsMTkgQEAgdm9pZCBQbHVnaW5WaWV3OjpoaWRlKCkKICAgICBXaWRnZXQ6OmhpZGUoKTsK
IH0KIAorYm9vbCBQbHVnaW5WaWV3Ojp0cmFuc2Zvcm1zQWZmZWN0RnJhbWVSZWN0KCkKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6dmlld0dlb21ldHJ5RGlkQ2hh
bmdlKCkKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4gfHwgIXBhcmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBHZXQgdGhlIGZyYW1lIHJlY3QgaW4gd2lu
ZG93IGNvb3JkaW5hdGVzLgorICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQgd2Ugc2hvdWxk
IHBhc3MgaGVyZSB3aGVuIG1fcGx1Z2luLT53YW50c1dpbmRvd1JlbGF0aXZlQ29vcmRpbmF0ZXMo
KSByZXR1cm5zIGZhbHNlLgogICAgIEludFJlY3QgZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRl
cyA9IHBhcmVudCgpLT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpKTsKLSAgICAKLSAgICAv
LyBBZGp1c3QgYm91bmRzIHRvIGFjY291bnQgZm9yIGZyYW1lU2NhbGVGYWN0b3IKLSAgICBmcmFt
ZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLnNjYWxlKDEgLyBmcmFtZSgpLT5mcmFtZVNjYWxlRmFj
dG9yKCkpOwogICAgIG1fcGx1Z2luLT5nZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzLCBjbGlwUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKSk7CiB9CiAKQEAgLTcx
NCw3ICs3MzYsNiBAQCBJbnRSZWN0IFBsdWdpblZpZXc6OmNsaXBSZWN0SW5XaW5kb3dDb29yZGlu
YXRlcygpIGNvbnN0CiAgICAgLy8gSW50ZXJzZWN0IHRoZSB0d28gcmVjdHMgdG8gZ2V0IHRoZSB2
aWV3IGNsaXAgcmVjdCBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgZnJhbWVSZWN0SW5XaW5k
b3dDb29yZGluYXRlcy5pbnRlcnNlY3Qod2luZG93Q2xpcFJlY3QpOwogCi0gICAgZnJhbWVSZWN0
SW5XaW5kb3dDb29yZGluYXRlcy5zY2FsZSgxIC8gZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKSk7
CiAgICAgcmV0dXJuIGZyYW1lUmVjdEluV2luZG93Q29vcmRpbmF0ZXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGNlMTk2Yjg5
YzhiM2Q1Zjk1YzViYjk1MjRkM2I0NGVjYTBhOGQ5M2EuLjFkYzhhNDExZmJmOWE3MjQxY2VjZWI0
MWI2ZGJjNzFhYjA3YzM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaApAQCAtNjcsNiArNjcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZW5k
Q29tcGxleFRleHRJbnB1dCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpOwogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMuCisgICAgV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKCkg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgUGx1Z2luVmlldyhQYXNzUmVmUHRyPFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50PiwgUGFzc1JlZlB0cjxQbHVnaW4+LCBjb25zdCBQbHVnaW46OlBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpOwogICAgIHZpcnR1YWwgflBsdWdpblZpZXcoKTsKQEAgLTExOCw2
ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlXaWRnZXQoV2ViQ29y
ZTo6V2lkZ2V0Tm90aWZpY2F0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwogICAgIHZp
cnR1YWwgdm9pZCBoaWRlKCk7CisgICAgdmlydHVhbCBib29sIHRyYW5zZm9ybXNBZmZlY3RGcmFt
ZVJlY3QoKTsKIAogICAgIC8vIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lcgogICAgIHZp
cnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7Cg==
</data>
<flag name="review"
          id="110420"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>