<?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>24648</bug_id>
          
          <creation_ts>2009-03-17 10:48:08 -0700</creation_ts>
          <short_desc>Optimize TransformationMatrix</short_desc>
          <delta_ts>2009-04-04 13:26:17 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114060</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-03-17 10:48:08 -0700</bug_when>
    <thetext>We should make a pass over TransformationMatrix and optimize it to reduce copying. For example, translate() and translate3d() could easily be optimized. multiply() could be factored with multLeft() to avoid matrix copies, and more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116252</commentid>
    <comment_count>1</comment_count>
      <attachid>29183</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-02 00:01:19 -0700</bug_when>
    <thetext>Created attachment 29183
Patch, changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116290</commentid>
    <comment_count>2</comment_count>
      <attachid>29183</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-02 09:26:22 -0700</bug_when>
    <thetext>Comment on attachment 29183
Patch, changelog

Landed in http://trac.webkit.org/changeset/42172

Keeping bug open for further optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116381</commentid>
    <comment_count>3</comment_count>
      <attachid>29214</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-02 18:37:56 -0700</bug_when>
    <thetext>Created attachment 29214
Patch to optimize map functions for translations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116452</commentid>
    <comment_count>4</comment_count>
      <attachid>29214</attachid>
    <who name="">mitz</who>
    <bug_when>2009-04-03 11:10:27 -0700</bug_when>
    <thetext>Comment on attachment 29214
Patch to optimize map functions for translations

&gt; +        return FloatPoint(static_cast&lt;float&gt;(p.x() + m_matrix[3][0]), static_cast&lt;float&gt;(p.y() + m_matrix[3][1]));

I slightly prefer casting the matrix element to float rather than casting the coordinate to double, adding in doubles, and casting the result down to float. r=me either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116461</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-03 11:58:12 -0700</bug_when>
    <thetext>Last patch checked in as http://trac.webkit.org/changeset/42207

I think this is enough for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116534</commentid>
    <comment_count>6</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-04 06:25:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Last patch checked in as http://trac.webkit.org/changeset/42207
&gt; 
&gt; I think this is enough for now.
&gt; 

     // Like the version above, except that it rounds the mapped point to the nearest integer value.
-    IntPoint mapPoint(const IntPoint&amp;) const;
+    IntPoint mapPoint(const IntPoint&amp; p) const
+    {
+        return roundedIntPoint(mapPoint(p));
+    }

Won&apos;t this call itself until the stack blows up? Because I&apos;m getting exactly this with your patch in reddit.com for example.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116543</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-04 13:12:07 -0700</bug_when>
    <thetext>Ah, I guess it will. I need to call the FloatPoint version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116544</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-04 13:26:17 -0700</bug_when>
    <thetext>Fixed mapPoint in http://trac.webkit.org/changeset/42228</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29183</attachid>
            <date>2009-04-02 00:01:19 -0700</date>
            <delta_ts>2009-04-02 09:26:22 -0700</delta_ts>
            <desc>Patch, changelog</desc>
            <filename>24648_patch.txt</filename>
            <type>text/plain</type>
            <size>4689</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjFmMTg0Yy4uNmQwMTJlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0wNC0wMSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDY0OAorICAgICAgICAKKyAgICAgICAgT3B0aW1pemUgY29tbW9uIGNvZGUg
cGF0aHMgaW4gVHJhbnNmb3JtYXRpb25NYXRyaXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZTNkKToKKyAgICAgICAgT3B0aW1pemUgdG8g
YXZvaWQgbWF0cml4IGNvcHkuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmlzSW52ZXJ0aWJsZSk6CisgICAgICAgIFRlc3QgZm9yIGlkZW50aXR5IGFu
ZCB0cmFuc2xhdGlvbiBtYXRyaWNlcyBiZWZvcmUgY29tcHV0aW5nCisgICAgICAgIHRoZSBkZXRl
cm1pbmFudC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6aW52ZXJzZSk6CisgICAgICAgIE9wdGltaXplIGZvciBpZGVudGl0eSBtYXRyaXggYW5kIHRy
YW5zbGF0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKToKKyAgICAgICAgVXRpbGl0eSBt
ZXRob2QuCisKIDIwMDktMDQtMDEgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNv
bT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5
OTcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IDRiY2ZkYjIuLjc4ZTllNjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtNzgxLDI0ICs3ODEsMTkgQEAgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUzZChkb3VibGUgcngsIGRvdWJs
ZSByeSwgZG91YmwKIAogVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4
Ojp0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7Ci0gICAgLy8gRklYTUU6IG9wdGlt
aXplIHRvIGF2b2lkIG1hdHJpeCBjb3B5Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0Owot
ICAgIG1hdC5tX21hdHJpeFszXVswXSA9IHR4OwotICAgIG1hdC5tX21hdHJpeFszXVsxXSA9IHR5
OwotCi0gICAgbXVsdExlZnQobWF0KTsKKyAgICBtX21hdHJpeFszXVswXSArPSB0eCAqIG1fbWF0
cml4WzBdWzBdICsgdHkgKiBtX21hdHJpeFsxXVswXTsKKyAgICBtX21hdHJpeFszXVsxXSArPSB0
eCAqIG1fbWF0cml4WzBdWzFdICsgdHkgKiBtX21hdHJpeFsxXVsxXTsKKyAgICBtX21hdHJpeFsz
XVsyXSArPSB0eCAqIG1fbWF0cml4WzBdWzJdICsgdHkgKiBtX21hdHJpeFsxXVsyXTsKKyAgICBt
X21hdHJpeFszXVszXSArPSB0eCAqIG1fbWF0cml4WzBdWzNdICsgdHkgKiBtX21hdHJpeFsxXVsz
XTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6dHJhbnNsYXRlM2QoZG91YmxlIHR4LCBkb3VibGUgdHksIGRvdWJsZSB0
eikKIHsKLSAgICAvLyBGSVhNRTogb3B0aW1pemUgdG8gYXZvaWQgbWF0cml4IGNvcHkKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXQ7Ci0gICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gdHg7Ci0g
ICAgbWF0Lm1fbWF0cml4WzNdWzFdID0gdHk7Ci0gICAgbWF0Lm1fbWF0cml4WzNdWzJdID0gdHo7
Ci0KLSAgICBtdWx0TGVmdChtYXQpOworICAgIG1fbWF0cml4WzNdWzBdICs9IHR4ICogbV9tYXRy
aXhbMF1bMF0gKyB0eSAqIG1fbWF0cml4WzFdWzBdICsgdHogKiBtX21hdHJpeFsyXVswXTsKKyAg
ICBtX21hdHJpeFszXVsxXSArPSB0eCAqIG1fbWF0cml4WzBdWzFdICsgdHkgKiBtX21hdHJpeFsx
XVsxXSArIHR6ICogbV9tYXRyaXhbMl1bMV07CisgICAgbV9tYXRyaXhbM11bMl0gKz0gdHggKiBt
X21hdHJpeFswXVsyXSArIHR5ICogbV9tYXRyaXhbMV1bMl0gKyB0eiAqIG1fbWF0cml4WzJdWzJd
OworICAgIG1fbWF0cml4WzNdWzNdICs9IHR4ICogbV9tYXRyaXhbMF1bM10gKyB0eSAqIG1fbWF0
cml4WzFdWzNdICsgdHogKiBtX21hdHJpeFsyXVszXTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAK
QEAgLTkzMSw2ICs5MjYsOSBAQCB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0VmVjTWF0
cml4KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSYgcgogCiBib29sIFRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojppc0ludmVydGlibGUoKSBjb25zdAogeworICAgIGlmIChpc0lkZW50
aXR5T3JUcmFuc2xhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGRvdWJsZSBk
ZXQgPSBXZWJDb3JlOjpkZXRlcm1pbmFudDR4NChtX21hdHJpeCk7CiAKICAgICBpZiAoZmFicyhk
ZXQpIDwgU01BTExfTlVNQkVSKQpAQCAtOTQxLDggKzkzOSwxOSBAQCBib29sIFRyYW5zZm9ybWF0
aW9uTWF0cml4Ojppc0ludmVydGlibGUoKSBjb25zdAogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0IAogewotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGludk1hdDsKKyAgICBpZiAoaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkgewor
ICAgICAgICAvLyBpZGVudGl0eSBtYXRyaXgKKyAgICAgICAgaWYgKG1fbWF0cml4WzNdWzBdID09
IDAgJiYgbV9tYXRyaXhbM11bMV0gPT0gMCAmJiBtX21hdHJpeFszXVsyXSA9PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAgICAgIAorICAgICAgICAv
LyB0cmFuc2xhdGlvbgorICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwg
MCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1fbWF0cml4WzNdWzBdLCAtbV9tYXRyaXhbM11b
MV0sIC1tX21hdHJpeFszXVsyXSwgMSk7CisgICAgfQogICAgIAorICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGludk1hdDsKICAgICBib29sIGludmVydGVkID0gV2ViQ29yZTo6aW52ZXJzZShtX21h
dHJpeCwgaW52TWF0Lm1fbWF0cml4KTsKICAgICBpZiAoIWludmVydGVkKQogICAgICAgICByZXR1
cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggZTM0
ZWQxYi4uYTdjMWI4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTMxMyw2ICszMTMsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1lbWNweShtX21hdHJpeCwgbSwgc2l6ZW9mKE1hdHJp
eDQpKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tYXRyaXhbMF1bMF0gPT0gMSAmJiBtX21hdHJp
eFswXVsxXSA9PSAwICYmIG1fbWF0cml4WzBdWzJdID09IDAgJiYgbV9tYXRyaXhbMF1bM10gPT0g
MCAmJgorICAgICAgICAgICAgICAgbV9tYXRyaXhbMV1bMF0gPT0gMCAmJiBtX21hdHJpeFsxXVsx
XSA9PSAxICYmIG1fbWF0cml4WzFdWzJdID09IDAgJiYgbV9tYXRyaXhbMV1bM10gPT0gMCAmJgor
ICAgICAgICAgICAgICAgbV9tYXRyaXhbMl1bMF0gPT0gMCAmJiBtX21hdHJpeFsyXVsxXSA9PSAw
ICYmIG1fbWF0cml4WzJdWzJdID09IDEgJiYgbV9tYXRyaXhbMl1bM10gPT0gMCAmJgorICAgICAg
ICAgICAgICAgbV9tYXRyaXhbM11bM10gPT0gMTsKKyAgICB9CisgICAgCiAgICAgTWF0cml4NCBt
X21hdHJpeDsKIH07CiAK
</data>
<flag name="review"
          id="14471"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29214</attachid>
            <date>2009-04-02 18:37:56 -0700</date>
            <delta_ts>2009-04-03 11:10:27 -0700</delta_ts>
            <desc>Patch to optimize map functions for translations</desc>
            <filename>24648_patch_2.txt</filename>
            <type>text/plain</type>
            <size>4544</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmQzOTcyZS4uOGNmMmY5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNC0wMiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQ2NDgKKworICAgICAgICBPcHRpbWl6ZSBtYXBQb2ludCgpLCBtYXBSZWN0KCkgYW5kIG1h
cFF1YWQoKSBmb3IgaWRlbnRpdHkgbWF0cml4IGFuZCB0cmFuc2xhdGlvbnMuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBRdWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQpOgorCiAyMDA5
LTA0LTAyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBN
YWMgYnVpbGQgYWZ0ZXIgcjQyMTkxLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggNzhl
OWU2NC4uOWRiNDQzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogCisjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NTYsNiArNTU3LDkgQEAgRmxvYXRRdWFkIFRyYW5zZm9y
bWF0aW9uTWF0cml4Ojpwcm9qZWN0UXVhZChjb25zdCBGbG9hdFF1YWQmIHEpIGNvbnN0CiAKIEZs
b2F0UG9pbnQgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IHApIGNvbnN0CiB7CisgICAgaWYgKGlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpCisgICAgICAg
IHJldHVybiBGbG9hdFBvaW50KHN0YXRpY19jYXN0PGZsb2F0PihwLngoKSArIG1fbWF0cml4WzNd
WzBdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHAueSgpICsgbV9tYXRyaXhbM11bMV0pKTsKKwogICAg
IGRvdWJsZSB4LCB5OwogICAgIG11bHRWZWNNYXRyaXgocC54KCksIHAueSgpLCB4LCB5KTsKICAg
ICByZXR1cm4gRmxvYXRQb2ludChzdGF0aWNfY2FzdDxmbG9hdD4oeCksIHN0YXRpY19jYXN0PGZs
b2F0Pih5KSk7CkBAIC01NjMsMjAgKzU2NywxNiBAQCBGbG9hdFBvaW50IFRyYW5zZm9ybWF0aW9u
TWF0cml4OjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50JiBwKSBjb25zdAogCiBGbG9hdFBvaW50
M0QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkg
Y29uc3QKIHsKKyAgICBpZiAoaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEZsb2F0UG9pbnQzRChzdGF0aWNfY2FzdDxmbG9hdD4ocC54KCkgKyBtX21hdHJpeFszXVsw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHAueSgp
ICsgbV9tYXRyaXhbM11bMV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGZsb2F0PihwLnooKSArIG1fbWF0cml4WzNdWzJdKSk7CisKICAgICBkb3VibGUgeCwgeSwg
ejsKICAgICBtdWx0VmVjTWF0cml4KHAueCgpLCBwLnkoKSwgcC56KCksIHgsIHksIHopOwogICAg
IHJldHVybiBGbG9hdFBvaW50M0Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHgpLCBzdGF0aWNfY2FzdDxm
bG9hdD4oeSksIHN0YXRpY19jYXN0PGZsb2F0Pih6KSk7CiB9CiAKLUludFBvaW50IFRyYW5zZm9y
bWF0aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0g
ICAgZG91YmxlIHgsIHk7Ci0gICAgbXVsdFZlY01hdHJpeChwb2ludC54KCksIHBvaW50LnkoKSwg
eCwgeSk7Ci0KLSAgICAvLyBSb3VuZCB0aGUgcG9pbnQuCi0gICAgcmV0dXJuIEludFBvaW50KGxy
b3VuZCh4KSwgbHJvdW5kKHkpKTsKLX0KLQogSW50UmVjdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
bWFwUmVjdChjb25zdCBJbnRSZWN0ICZyZWN0KSBjb25zdAogewogICAgIHJldHVybiBlbmNsb3Np
bmdJbnRSZWN0KG1hcFJlY3QoRmxvYXRSZWN0KHJlY3QpKSk7CkBAIC01ODQsMTIgKzU4NCwyNCBA
QCBJbnRSZWN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEludFJlY3QgJnJl
Y3QpIGNvbnN0CiAKIEZsb2F0UmVjdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdChjb25z
dCBGbG9hdFJlY3QmIHIpIGNvbnN0CiB7CisgICAgaWYgKGlzSWRlbnRpdHlPclRyYW5zbGF0aW9u
KCkpIHsKKyAgICAgICAgRmxvYXRSZWN0IG1hcHBlZFJlY3Qocik7CisgICAgICAgIG1hcHBlZFJl
Y3QubW92ZShzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXhbM11bMF0pLCBzdGF0aWNfY2FzdDxm
bG9hdD4obV9tYXRyaXhbM11bMV0pKTsKKyAgICAgICAgcmV0dXJuIG1hcHBlZFJlY3Q7CisgICAg
fQorCiAgICAgRmxvYXRRdWFkIHJlc3VsdFF1YWQgPSBtYXBRdWFkKEZsb2F0UXVhZChyKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdFF1YWQuYm91bmRpbmdCb3goKTsKIH0KIAogRmxvYXRRdWFkIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjptYXBRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcSkgY29uc3QKIHsKKyAg
ICBpZiAoaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkgeworICAgICAgICBGbG9hdFF1YWQgbWFw
cGVkUXVhZChxKTsKKyAgICAgICAgbWFwcGVkUXVhZC5tb3ZlKHN0YXRpY19jYXN0PGZsb2F0Piht
X21hdHJpeFszXVswXSksIHN0YXRpY19jYXN0PGZsb2F0PihtX21hdHJpeFszXVsxXSkpOworICAg
ICAgICByZXR1cm4gbWFwcGVkUXVhZDsKKyAgICB9CisKICAgICBGbG9hdFF1YWQgcmVzdWx0Owog
ICAgIHJlc3VsdC5zZXRQMShtYXBQb2ludChxLnAxKCkpKTsKICAgICByZXN1bHQuc2V0UDIobWFw
UG9pbnQocS5wMigpKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IGE3YzFiOGMuLmZlNTVm
NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCkBAIC0zOCwxMyArMzgsMTMgQEAKICNpbmNsdWRl
IDx3eC9ncmFwaGljcy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlIDxzdHJpbmcuaD4gLy9mb3IgbWVtY3B5CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xh
c3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UG9pbnQzRDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNs
YXNzIEZsb2F0UXVhZDsKQEAgLTExNCw3ICsxMTQsMTAgQEAgcHVibGljOgogICAgIEZsb2F0UG9p
bnQgbWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogCiAgICAgLy8gTGlrZSB0aGUg
dmVyc2lvbiBhYm92ZSwgZXhjZXB0IHRoYXQgaXQgcm91bmRzIHRoZSBtYXBwZWQgcG9pbnQgdG8g
dGhlIG5lYXJlc3QgaW50ZWdlciB2YWx1ZS4KLSAgICBJbnRQb2ludCBtYXBQb2ludChjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OworICAgIEludFBvaW50IG1hcFBvaW50KGNvbnN0IEludFBvaW50JiBw
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtYXBQb2ludChw
KSk7CisgICAgfQogCiAgICAgLy8gSWYgdGhlIG1hdHJpeCBoYXMgM0QgY29tcG9uZW50cywgdGhl
IHogY29tcG9uZW50IG9mIHRoZSByZXN1bHQgaXMKICAgICAvLyBkcm9wcGVkLCBlZmZlY3RpdmVs
eSBwcm9qZWN0aW5nIHRoZSByZWN0IGludG8gdGhlIHo9MCBwbGFuZQo=
</data>
<flag name="review"
          id="14490"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>