<?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>70789</bug_id>
          
          <creation_ts>2011-10-24 17:48:54 -0700</creation_ts>
          <short_desc>Optimize canvas fills / drawImage when covering entire canvas</short_desc>
          <delta_ts>2011-11-03 18:55:50 -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>Canvas</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="Ben Wells">benwells</reporter>
          <assigned_to name="Ben Wells">benwells</assigned_to>
          <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>489814</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-10-24 17:48:54 -0700</bug_when>
    <thetext>When compositing fills / drawImage calls in canvas, and the composite mode is Source-In, Source-Out, Destination-In, Destination-Atop or Copy, the canvas is cleared. For all of these modes apart from Copy a temporary buffer is also used. If the fill / drawImage is covering the entire canvas we can optimise away the clear and the use of a temporary buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495159</commentid>
    <comment_count>1</comment_count>
      <attachid>113422</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-11-02 19:35:36 -0700</bug_when>
    <thetext>Created attachment 113422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495199</commentid>
    <comment_count>2</comment_count>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-11-02 21:59:27 -0700</bug_when>
    <thetext>It would be nice to do the same optimization for filling a path, but there doesn&apos;t seem to be any easy way to see if a path contains a rectangle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495485</commentid>
    <comment_count>3</comment_count>
      <attachid>113422</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-11-03 08:29:35 -0700</bug_when>
    <thetext>Comment on attachment 113422
Patch

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

Looks good.  Thanks for implementing this!  r=me

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1566
&gt; +    Path transformedPath;
&gt; +    transformedPath.addRect(rect);
&gt; +    transformedPath.transform(state().m_transform);
&gt; +
&gt; +    IntRect canvasRect(0, 0, canvas()-&gt;width(), canvas()-&gt;height());
&gt; +    return transformedPath.contains(canvasRect.minXMinYCorner()) &amp;&amp; transformedPath.contains(canvasRect.minXMaxYCorner())
&gt; +        &amp;&amp; transformedPath.contains(canvasRect.maxXMinYCorner()) &amp;&amp; transformedPath.contains(canvasRect.maxXMaxYCorner());

This looks fine, but I&apos;m wondering if it would be easier to use FloatQuad:

FloatQuad quad(rect);
FloatQuad canvasQuad(FloatRect(0, 0, canvas-&gt;width(), canvas-&gt;height()));
return state().m_transform.mapQuad(quad).containsQuad(canvasQuad);

OTOH, I&apos;ve never actually tried it, so feel free to go with what you&apos;ve already got.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495861</commentid>
    <comment_count>4</comment_count>
      <attachid>113571</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-11-03 16:26:59 -0700</bug_when>
    <thetext>Created attachment 113571
Patch using FloatQuad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495880</commentid>
    <comment_count>5</comment_count>
      <attachid>113571</attachid>
    <who name="Ben Wells">benwells</who>
    <bug_when>2011-11-03 16:38:41 -0700</bug_when>
    <thetext>Comment on attachment 113571
Patch using FloatQuad

Using FloatQuad is much nicer. Thanks for the tip!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495969</commentid>
    <comment_count>6</comment_count>
      <attachid>113571</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-11-03 18:24:01 -0700</bug_when>
    <thetext>Comment on attachment 113571
Patch using FloatQuad

Looks great.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495990</commentid>
    <comment_count>7</comment_count>
      <attachid>113571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 18:55:45 -0700</bug_when>
    <thetext>Comment on attachment 113571
Patch using FloatQuad

Clearing flags on attachment: 113571

Committed r99257: &lt;http://trac.webkit.org/changeset/99257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495991</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 18:55:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113422</attachid>
            <date>2011-11-02 19:35:36 -0700</date>
            <delta_ts>2011-11-03 16:26:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70789-20111103133532.patch</filename>
            <type>text/plain</type>
            <size>4494</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZTdlYWQxMTVmNmM2Njg0
ZTIxYzIyMmFiZTAwNWFkYzVkN2Q5N2NiLi5mYmY2ZjlkM2MyYTRjNTI1OWI4ZDljYWMxNGM3YTZj
NjUwMjZiNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTEtMDIgIEJlbiBX
ZWxscyAgPGJlbndlbGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBjYW52YXMg
ZmlsbHMgLyBkcmF3SW1hZ2Ugd2hlbiBjb3ZlcmluZyBlbnRpcmUgY2FudmFzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDc4OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlJ3JlIGZpbGxpbmcgYSBy
ZWN0IG9yIGRyYXdpbmcgYW4gaW1hZ2UsIGFuZCBpdCBjb3ZlcnMgdGhlIGVudGlyZSBjYW52YXMs
IHdlIGRvbid0CisgICAgICAgIG5lZWQgdG8gd29ycnkgYWJvdXQgY2xlYXJpbmcgb3V0c2lkZSB0
aGUgYXJlYSB1cGRhdGVkIGJ5IHRoZSBvcGVyYXRpb24gaWYgd2UncmUgaW4KKyAgICAgICAgYSBj
b21wb3NpdGUgbW9kZSB0aGF0IHJlcXVpcmVzIHRoaXMgKHN1Y2ggYXMgc291cmNlLWluLCBjb3B5
LCBldGMuKS4gSW4gdGhpcyBjYXNlIHdlCisgICAgICAgIGNhbiB0YWtlIHRoZSBzaW1wbGUgcGF0
aCB0aHJvdWdoIHRoZSBjb2RlIGFuZCBzYXZlIGEgY2xlYXIgKGZvciBjb3B5KSBvciBhIHRlbXBv
cmFyeQorICAgICAgICBpbWFnZSBidWZmZXIgKGZvciB0aGUgb3RoZXIgbW9kZXMpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAtIG9wdGltaXphdGlvbiwgYmVoYXZpb3VyIGlzIHVuY2hhbmdlZCBh
bmQgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cmVjdENvbnRhaW5zQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAxMS0xMS0wMiAgRW1pbCBBIEVrbHVu
ZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3dpdGNoIFJlbmRlclRleHQgdG8gbmV3
IGxheW91dCB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNmE4OWM5Y2NmNGEwMzNlYjYyZjE5NDYy
YmZjYjdlMDg2MGM4ZGUwOS4uYTk5NGQzZmY3ZDhlZDAzN2M1MWIwOTJlODYyMmQ4NzQ5NGQ5YmRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xMDU1LDcgKzEwNTUsMTAgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWkKIAogICAgIEZsb2F0UmVjdCByZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCi0g
ICAgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0
ZSkpIHsKKyAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKHJlY3QpKSB7CisgICAgICAgIGMtPmZp
bGxSZWN0KHJlY3QpOworICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CisgICAgfSBlbHNl
IGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUp
KSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChyZWN0KTsKICAgICAgICAgZGlk
RHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5tX2dsb2JhbENvbXBv
c2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CkBAIC0xMzM2LDcgKzEzMzksMTAgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWMKIAogICAgIGNoZWNrT3JpZ2luKGltYWdlKTsKIAotICAgIGlmIChpc0Z1
bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgeworICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMo
bm9ybWFsaXplZERzdFJlY3QpKSB7CisgICAgICAgIGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOworICAgICAgICBkaWRE
cmF3RW50aXJlQ2FudmFzKCk7CisgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVN
b2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3NpdGVD
b3B5KSB7CkBAIC0xNTQ5LDYgKzE1NTUsMTcgQEAgUGF0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnRyYW5zZm9ybUFyZWFUb0RldmljZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnMKICAg
ICByZXR1cm4gdHJhbnNmb3JtQXJlYVRvRGV2aWNlKHBhdGgpOwogfQogCitib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6cmVjdENvbnRhaW5zQ2FudmFzKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkgY29uc3QKK3sKKyAgICBQYXRoIHRyYW5zZm9ybWVkUGF0aDsKKyAgICB0cmFuc2Zvcm1lZFBh
dGguYWRkUmVjdChyZWN0KTsKKyAgICB0cmFuc2Zvcm1lZFBhdGgudHJhbnNmb3JtKHN0YXRlKCku
bV90cmFuc2Zvcm0pOworCisgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53
aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOworICAgIHJldHVybiB0cmFuc2Zvcm1lZFBhdGgu
Y29udGFpbnMoY2FudmFzUmVjdC5taW5YTWluWUNvcm5lcigpKSAmJiB0cmFuc2Zvcm1lZFBhdGgu
Y29udGFpbnMoY2FudmFzUmVjdC5taW5YTWF4WUNvcm5lcigpKQorICAgICAgICAmJiB0cmFuc2Zv
cm1lZFBhdGguY29udGFpbnMoY2FudmFzUmVjdC5tYXhYTWluWUNvcm5lcigpKSAmJiB0cmFuc2Zv
cm1lZFBhdGguY29udGFpbnMoY2FudmFzUmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKK30KKwogdGVt
cGxhdGU8Y2xhc3MgVD4gSW50UmVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNhbGN1bGF0
ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiBhcmVhLCBJbnRTaXplKiBjcm9wcGVkT2Zm
c2V0KQogewogICAgIEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwg
Y2FudmFzKCktPmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggMzI2YzI5MjU0NzY2YjRmMmFhMWI5
YTlhMWNhZjViYTMzZmQ5MzVkYy4uZGQ5NDk5ZmU0NGQ4MjQ5MTRkMjFhMWVmYTUxYjkzYWU4M2Q1
MjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xlYXJDYW52YXMoKTsKICAgICBQYXRoIHRyYW5zZm9ybUFyZWFUb0RldmljZShjb25zdCBQYXRo
JikgY29uc3Q7CiAgICAgUGF0aCB0cmFuc2Zvcm1BcmVhVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0
JikgY29uc3Q7CisgICAgYm9vbCByZWN0Q29udGFpbnNDYW52YXMoY29uc3QgRmxvYXRSZWN0Jikg
Y29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0
aW5nQnVmZmVyUmVjdChjb25zdCBUJiwgSW50U2l6ZSopOwogICAgIFBhc3NPd25QdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3QmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113571</attachid>
            <date>2011-11-03 16:26:59 -0700</date>
            <delta_ts>2011-11-03 18:55:45 -0700</delta_ts>
            <desc>Patch using FloatQuad</desc>
            <filename>bug-70789-20111104102657.patch</filename>
            <type>text/plain</type>
            <size>4449</size>
            <attacher name="Ben Wells">benwells</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZTdlYWQxMTVmNmM2Njg0
ZTIxYzIyMmFiZTAwNWFkYzVkN2Q5N2NiLi4zOTRmYjVmMjFkNGExOTljZWZlNGM2YmY5YWNkYjUw
YWRhMDMzZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTEtMDMgIEJlbiBX
ZWxscyAgPGJlbndlbGxzQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBjYW52YXMg
ZmlsbHMgLyBkcmF3SW1hZ2Ugd2hlbiBjb3ZlcmluZyBlbnRpcmUgY2FudmFzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDc4OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlJ3JlIGZpbGxpbmcgYSBy
ZWN0IG9yIGRyYXdpbmcgYW4gaW1hZ2UsIGFuZCBpdCBjb3ZlcnMgdGhlIGVudGlyZSBjYW52YXMs
IHdlIGRvbid0CisgICAgICAgIG5lZWQgdG8gd29ycnkgYWJvdXQgY2xlYXJpbmcgb3V0c2lkZSB0
aGUgYXJlYSB1cGRhdGVkIGJ5IHRoZSBvcGVyYXRpb24gaWYgd2UncmUgaW4KKyAgICAgICAgYSBj
b21wb3NpdGUgbW9kZSB0aGF0IHJlcXVpcmVzIHRoaXMgKHN1Y2ggYXMgc291cmNlLWluLCBjb3B5
LCBldGMuKS4gSW4gdGhpcyBjYXNlIHdlCisgICAgICAgIGNhbiB0YWtlIHRoZSBzaW1wbGUgcGF0
aCB0aHJvdWdoIHRoZSBjb2RlIGFuZCBzYXZlIGEgY2xlYXIgKGZvciBjb3B5KSBvciBhIHRlbXBv
cmFyeQorICAgICAgICBpbWFnZSBidWZmZXIgKGZvciB0aGUgb3RoZXIgbW9kZXMpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAtIG9wdGltaXphdGlvbiwgYmVoYXZpb3VyIGlzIHVuY2hhbmdlZCBh
bmQgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cmVjdENvbnRhaW5zQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAxMS0xMS0wMiAgRW1pbCBBIEVrbHVu
ZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3dpdGNoIFJlbmRlclRleHQgdG8gbmV3
IGxheW91dCB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNmE4OWM5Y2NmNGEwMzNlYjYyZjE5NDYy
YmZjYjdlMDg2MGM4ZGUwOS4uMzg0NzMyZTVmYjk2NGJjZDQxN2FhNGRlYjcxMjcyMTk3NzhmMTk1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiQ29uc29sZS5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24u
aCIKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgpA
QCAtMTA1NSw3ICsxMDU2LDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxs
UmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpCiAKICAgICBGbG9h
dFJlY3QgcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGlmIChpc0Z1bGxDYW52YXND
b21wb3NpdGVNb2RlKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpKSB7CisgICAgaWYgKHJlY3RD
b250YWluc0NhbnZhcyhyZWN0KSkgeworICAgICAgICBjLT5maWxsUmVjdChyZWN0KTsKKyAgICAg
ICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOworICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29t
cG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgewogICAgICAgICBmdWxsQ2Fu
dmFzQ29tcG9zaXRlZEZpbGwocmVjdCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsK
ICAgICB9IGVsc2UgaWYgKHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29w
eSkgewpAQCAtMTMzNiw3ICsxMzQwLDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGNvbnN0IEZsb2F0UmVjCiAKICAg
ICBjaGVja09yaWdpbihpbWFnZSk7CiAKLSAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9k
ZShvcCkpIHsKKyAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKG5vcm1hbGl6ZWREc3RSZWN0KSkg
eworICAgICAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1h
Z2UtPnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKKyAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwor
ICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKICAgICAgICAg
ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2UtPnJlbmRlcmVyKCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwogICAgIH0gZWxzZSBpZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewpAQCAtMTU0OSw2ICsx
NTU2LDEzIEBAIFBhdGggQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2Zvcm1BcmVhVG9E
ZXZpY2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zCiAgICAgcmV0dXJuIHRyYW5zZm9ybUFy
ZWFUb0RldmljZShwYXRoKTsKIH0KIAorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJl
Y3RDb250YWluc0NhbnZhcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgRmxv
YXRRdWFkIHF1YWQocmVjdCk7CisgICAgRmxvYXRRdWFkIGNhbnZhc1F1YWQoRmxvYXRSZWN0KDAs
IDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpKTsKKyAgICByZXR1cm4g
c3RhdGUoKS5tX3RyYW5zZm9ybS5tYXBRdWFkKHF1YWQpLmNvbnRhaW5zUXVhZChjYW52YXNRdWFk
KTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgVD4gSW50UmVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiBhcmVhLCBJbnRTaXpl
KiBjcm9wcGVkT2Zmc2V0KQogewogICAgIEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMo
KS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggMzI2YzI5MjU0
NzY2YjRmMmFhMWI5YTlhMWNhZjViYTMzZmQ5MzVkYy4uZGQ5NDk5ZmU0NGQ4MjQ5MTRkMjFhMWVm
YTUxYjkzYWU4M2Q1MjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTMwMCw2ICszMDAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2xlYXJDYW52YXMoKTsKICAgICBQYXRoIHRyYW5zZm9ybUFyZWFUb0Rldmlj
ZShjb25zdCBQYXRoJikgY29uc3Q7CiAgICAgUGF0aCB0cmFuc2Zvcm1BcmVhVG9EZXZpY2UoY29u
c3QgRmxvYXRSZWN0JikgY29uc3Q7CisgICAgYm9vbCByZWN0Q29udGFpbnNDYW52YXMoY29uc3Qg
RmxvYXRSZWN0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IGNhbGN1
bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiwgSW50U2l6ZSopOwogICAgIFBhc3NP
d25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKGNvbnN0IEludFJlY3Qm
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>