<?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>36652</bug_id>
          
          <creation_ts>2010-03-26 04:05:13 -0700</creation_ts>
          <short_desc>Fixed, transformed elements are not repainted while scrolling or update</short_desc>
          <delta_ts>2010-07-23 22:13:14 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          <dependson>36686</dependson>
    
    <dependson>31283</dependson>
    
    <dependson>33150</dependson>
    
    <dependson>37637</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>hamaji</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204492</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-26 04:05:13 -0700</bug_when>
    <thetext>Fixed, transformed elements are not repainted correctly because the update rect we sent to ChromeClient does not correspond to the area where the element really is.

It seems there are two patches causing this issue:
-31283: update the way fixed, transformed element are handled, but did not update RenderBox::computeRectForRepaint() accordingly.
-33150: paintingRootRect() is used to find the repaint rect. This method does not (and should not) take into account the transformation of the current element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204495</commentid>
    <comment_count>1</comment_count>
      <attachid>51725</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-26 04:14:00 -0700</bug_when>
    <thetext>Created attachment 51725
Patch

I could not make an layouttest because:
1) We don&apos;t have pixel tests in Qt
1) Apple&apos;s port don&apos;t use FrameView.

Any idea is welcome on how to test the repaint rect after scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204566</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-26 07:39:50 -0700</bug_when>
    <thetext>Does the bug reproduce on Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204598</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-26 08:44:46 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Does the bug reproduce on Mac?

The change in RenderBox::computeRectForRepaint() is a problem for Mac. I just found a way to reproduce it:
-scroll the page
-update the transformed-fixed block
-enjoy :)

So I guess I have now a way to do the pixel test :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204603</commentid>
    <comment_count>4</comment_count>
      <attachid>51743</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-26 08:51:59 -0700</bug_when>
    <thetext>Created attachment 51743
Test case for Safari

A test page to test the problem easily on Safari trunk:
-scroll the page
-open the inspector
-change the color of the transformed rect
-&gt; the color does not change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204625</commentid>
    <comment_count>5</comment_count>
      <attachid>51750</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-26 09:33:39 -0700</bug_when>
    <thetext>Created attachment 51750
Test case for Safari

Test case with Javascript, the one I plan to use for the pixel test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204661</commentid>
    <comment_count>6</comment_count>
      <attachid>51757</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-26 10:26:24 -0700</bug_when>
    <thetext>Created attachment 51757
Patch

Same patch with a pixel test for Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204663</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-26 10:28:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Does the bug reproduce on Mac?
&gt; 
&gt; The change in RenderBox::computeRectForRepaint() is a problem for Mac.

I meant the change in RenderBox::computeRectForRepaint() also fix a problem for Mac...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204704</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-26 11:57:11 -0700</bug_when>
    <thetext>I plan to review this but I&apos;ll have to think about it for a bit. Please don&apos;t r+ it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204883</commentid>
    <comment_count>9</comment_count>
      <attachid>51757</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-26 18:00:08 -0700</bug_when>
    <thetext>Comment on attachment 51757
Patch

&gt; From 99851c34f49d4e81dc4fff9f21d37b30688a260a Mon Sep 17 00:00:00 2001
&gt; From: Benjamin Poulain &lt;benjamin.poulain@nokia.com&gt;
&gt; Date: Fri, 26 Mar 2010 18:24:34 +0100
&gt; Subject: [PATCH] Patch
&gt; 
&gt; ---
&gt;  LayoutTests/ChangeLog                              |   12 ++++++++
&gt;  .../fixed-transformed-update-after-scroll.html     |   28 ++++++++++++++++++++
&gt;  ...ansformed-update-after-scroll-expected.checksum |    1 +
&gt;  ...ed-transformed-update-after-scroll-expected.png |  Bin 0 -&gt; 18398 bytes
&gt;  ...ed-transformed-update-after-scroll-expected.txt |   10 +++++++
&gt;  WebCore/ChangeLog                                  |   27 +++++++++++++++++++
&gt;  WebCore/page/FrameView.cpp                         |    3 +-
&gt;  WebCore/rendering/RenderBox.cpp                    |    1 -
&gt;  WebCore/rendering/RenderObject.cpp                 |    8 +++++
&gt;  WebCore/rendering/RenderObject.h                   |    4 ++-
&gt;  10 files changed, 90 insertions(+), 4 deletions(-)
&gt;  create mode 100644 LayoutTests/fast/repaint/fixed-transformed-update-after-scroll.html
&gt;  create mode 100644 LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.checksum
&gt;  create mode 100644 LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.png
&gt;  create mode 100644 LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.txt
&gt; 
&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index b4bdacc..051db0f 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,15 @@
&gt; +2010-03-26  Benjamin Poulain  &lt;benjamin.poulain@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fixed, transformed elements are not repainted while scrolling or update
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=36652
&gt; +
&gt; +        * fast/repaint/fixed-transformed-update-after-scroll.html: Added.
&gt; +        * platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.checksum: Added.
&gt; +        * platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.png: Added.
&gt; +        * platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.txt: Added.
&gt; +
&gt;  2010-03-26  Yael Aharon  &lt;yael.aharon@nokia.com&gt;
&gt;  
&gt;          Reviewed by Antti Koivisto.
&gt; diff --git a/LayoutTests/fast/repaint/fixed-transformed-update-after-scroll.html b/LayoutTests/fast/repaint/fixed-transformed-update-after-scroll.html
&gt; new file mode 100644
&gt; index 0000000..78709cb
&gt; --- /dev/null
&gt; +++ b/LayoutTests/fast/repaint/fixed-transformed-update-after-scroll.html
&gt; @@ -0,0 +1,28 @@
&gt; +&lt;html&gt;
&gt; +&lt;/head&gt;
&gt; +    &lt;script type=&quot;text/javascript&quot;&gt;
&gt; +        function scrollAndRepaint()
&gt; +        {
&gt; +            scrollBy(0, 100);
&gt; +            if (window.layoutTestController) {
&gt; +                document.body.offsetTop;
&gt; +                layoutTestController.display();
&gt; +                repaintTest();
&gt; +            } else {
&gt; +                setTimeout(repaintTest, 100);
&gt; +            }
&gt; +       }
&gt; +       function repaintTest()
&gt; +       {
&gt; +           document.getElementById(&apos;transformed&apos;).style.backgroundColor = &quot;blue&quot;;
&gt; +       }
&gt; +    &lt;/script&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body onload=&quot;scrollAndRepaint()&quot;&gt;
&gt; +
&gt; +&lt;body style=&quot;height: 5000px;&quot;&gt;
&gt; + &lt;div style=&quot;width: 100px; height: 100px; background-color: red; position: fixed; top: 60px; left: 60px;&quot;&gt;&lt;/div&gt;
&gt; + &lt;div id=&quot;transformed&quot; style=&quot;width: 100px; height: 100px; background-color: green; position: fixed; top: 70px; left: 170px; -webkit-transform:
&gt; +rotate(30deg);&quot;&gt;&lt;/div&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;
&gt; diff --git a/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.checksum b/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.checksum
&gt; new file mode 100644
&gt; index 0000000..527f090
&gt; --- /dev/null
&gt; +++ b/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.checksum
&gt; @@ -0,0 +1 @@
&gt; +08b405fcf3bf7631cd6a1d4fb9fa6e6b
&gt; \ No newline at end of file
&gt; diff --git a/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.png b/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.png
&gt; new file mode 100644
&gt; index 0000000000000000000000000000000000000000..944fb098d46505bf1ddfa360e440a42c5180ee09
&gt; GIT binary patch
&gt; literal 18398
&gt; zcmeHv`9GB3`~R41Sz=Nl*^3uhqHNiwtflCcLSYCY`&lt;AhcWl{`cXrb&amp;&lt;sq9PEv1Ke-
&gt; zqZo{&gt;v9Dv_m(MLT&lt;@Nsl1&gt;eUbzv0~HzRq=?*YjG=x$fW_+8T^&gt;C+R&gt;S5aSh1)teyD
&gt; zAs!G2Y(Ps5{3XWykrVLC&gt;;n~*8&amp;_0Rcy72jT0XG54+42mJh|0s%W~=1j&lt;mzaZ+x_O
&gt; zZI9%7MDSg?lV+{&lt;LwXxxX3K!*E&gt;MfGIDe(nL3(Od;PX4wFriJjUu`CtX4jv~YtBOa
&gt; z&gt;XW-_|MaK*W0uS+I^XPYt&gt;E2cWsC1(zYNjG(R~2K=+b^+*`IQlvF_#@$OAjXWt%M&amp;
&gt; zDE!UgOBc@E#!qXXroI&amp;5y6!#J&lt;;8?F)T{R1gy+IDV%iI0XdZ7v2Q^~4g|msQ&amp;UAN&lt;
&gt; zf&gt;8&lt;s$wGB*v;#w33)5&amp;hZBLJ?&amp;rD|(v3K|oP$|(Czw1T1&amp;1b$t12kn{EIZ#+io=Dz
&gt; zz;V(%aImbcXD-u;cwgEyn`V|Ar@e9{qAY&amp;NS39p?=?m`{diD%u^`fwZ&lt;)&lt;CWgnK{V
&gt; zj$#89Pq9fYt(hJ#Jo#}=&gt;dP?`=IerQZaH_0G0wlr+}2yT`p79lw!z|_zw2F19o#jC
&gt; zwUQtz9|0Uo76GpJ?@v!Oi&amp;g)RKB8I=IP2UIPKJ{VF^rlwnAIrny~@4;4OBQOaUs`5
&gt; znLmx1&lt;GHuw!_zjUZf2@Em%OEW6$}4;+o!Pe51;c3mCv-#wl3`mXMNQf@my~-%I?xz
&gt; zeUT9xQ?f89Uo-N$_#_wZd;O5&gt;br|C15BKN#8d2$&lt;UYMBalgiWj(GsJNq|jK`?9F*m
&gt; zlb21=LQjv?4BcLw)O!5zu7u1$qMe_-B0;QG&gt;~p7UMsTQ%UTn10wvFcI&gt;?h3g(c9}f
&gt; zu;uwJt7fb@K}bTtJ!FhGIJ!n`{#ln+8a=_(zK%BjWuQ&gt;IedNaJ4pY+@%(A$#vY|(r
&gt; zx*x;xzc1LE+HVD~`h5|$xDa1_#Bl?SuiIiBUJV&amp;b{0A&amp;&lt;H(39=#9r5#$eeutor7y8
&gt; zn6;wKXRg4(HpN$Vi_$&lt;L?L@{+sYD(O#VPk7FRpQ+SKp(en&amp;oZ=i6lNRnP@P(*&gt;nT1
&gt; za`Ptc4DP&lt;xiM-dh%_iKtUVrCwIF&amp;4Sc@&gt;*__5SmXta(WGcJ|Hn_4J$FzS&lt;`{k&lt;lBD
&gt; zm6&amp;a{N{`TB5QqnKMfK7x4~m(-!!Imu`zX(uz;#-c&amp;Lw?7`Jvb-!fX|=eazS21WSlX
&gt; zJgQ}ra&amp;D9Wixna193V2PVgH&amp;xl@Q33h&amp;`z&amp;Aa+=yHYF&amp;Dmo}IhOLgg9#JyLq6B2ee
&gt; z%O+)XzcZ+;Uc=3NDoIS0%9`v*gA&lt;9a8cZg$h636O^Vs-%yik7-1(=eSnFs1$38oUO
&gt; z*jnf+cC|`3DwcGg?t&lt;jy&lt;;{qvzJG7#;^KnFVX&gt;;4a;sl`^hL56OCi7$&lt;VTZ^*GJ@7
&gt; zHpdtgIv872);md@KmWbFq_T}$)y0td1O?WFhxCfQ2Tq7aAo-$qvUAL8Lb}R*yg4pQ
&gt; zB9{DcR1plqme3Q;Gc^0s&gt;&lt;yhfQ4fvGTGuKp^IJ)w=a)P5j7Sx+ZllEV=iS-=AQ@P&lt;
&gt; zQ%z^4&gt;cI8oZU~LvLitxJQ7z&lt;u$}lV}pg1jlnW$aZa3i-+4b&amp;YQV*lqAw7qYk@QvGn
&gt; zPp7gflrqa!dR8{jn0idvH%u|tX=21@_nDrqB4_jAW!}ErP2&lt;9v81kC;-m}R(ZYd+_
&gt; zVb_!Yv8?)bi|;iZ9pc7q&gt;c}lID~%(HOWzF2ydG}GgK|UbISwj7INKgy(1r1Il`oC_
&gt; z$!{g+VtHEpLhBiw&lt;_3N0$h55Ti$~;!Biy+uERw&amp;h@c&amp;24Njdi$qhLwak2F?6U&amp;Q=}
&gt; zOJdJ_Wq!u`!OB2xJSm`;s&amp;Rn#;EMz!e)6ekuquoWxXYlUcuz+=3?S4s%bWc3MRxwE
&gt; z5NetXmP&gt;2nR+6+^YV~z%-5C#$-W)41qUVVZks^ZwSZ(OhaV9R~@o`I)67~oMQ&amp;w%t
&gt; z2(|g1*MAg()J~%3-kuVB?1toDZC+(pD6zfV&lt;nQ*V^MJZVG?SFw+=!)fZOVt94U9a)
&gt; zmw?(!H98-~&lt;ggrg73IpYad3TtA&gt;8D#(ysS;p2c?vfj^2Ew4^HO4(pZB$!Tcq`=}&gt;}
&gt; zk0dT$UPcT&amp;i2!7l(XypEpo39*i|p}7&gt;Y0mGkJrCdAre!KMgk5mes&amp;pYaPQlOfhJC;
&gt; zAKt_M{vr%sKwDhw`Z0&gt;-ejNpC^P?zH`Bd|&lt;Vb%0I#ZpJ^7Rwzm&lt;aVyVG-Wo^^I1Ys
&gt; zv5#IL)TXNCz~Y##DJ2m`KFupd(;=KW52hMWFPle3zU$_gdGWbl%LuWJ^(laP8yopm
&gt; zzc1?G#hX_LGUnKH2&amp;bB^&lt;5dpemO#01Ax%`KsrJ5d{hUPESp&lt;M9&gt;GPb;wl=xNJLY@&gt;
&gt; zg3`60@zOOvq?8|I(R{VN9QWw6tgZJSqxb;hIaL2rU*@N|7K@&lt;Xbt#I|R!WkHYc&amp;m{
&gt; zQe|es@AWS5zAYX{n01H_mDm&lt;yOPXVw{cr8c&amp;&gt;YyvZRUEA%ksnKMa7sw=SIVf@Q;&gt;d
&gt; z_M0uQUfZ{Pu{l&amp;9BJg-gOf?Y|pYsr31wfL?+|sg^q2AYH^YHIYL{3s=4k)n~7S&amp;9S
&gt; zZiL@n|Ay|8&amp;O7g$?`f58tzB`qyUG7rR#U0zasrKH&amp;Q3(vN_8W?)WVbb-m&gt;3A(19I^
&gt; zgSPlLHEGvgno5nWjKq0eIM01n;LTSqd(c&lt;rcJD-dY+in6x=pnPtZ4RRM9m$1?15Dr
&gt; zv%ahWTb1a3iw=%&amp;9vhYFphgQs43`vNIBf-u(Rh?UU}gO^8bruq`YkkI(t_U}N5pM+
&gt; zwLL}~=}2F($d%(fi&lt;_YuXTK@wYyo|3826~-ioqXM^JF_A1+0gkb@L6ZNUA#;$}38)
&gt; z7Q9~SGKWA{2Ir6mgn2@jf6r|8$0uoI{sVI{=cWwFxTgCrSF*LM?taMJ{zbt1qq|g+
&gt; zWJ=p&amp;C+jgedBx`}3Ot`@6&gt;qgENGK-8ly6#DLfs8L4w4)nWlUoOd|Qyet|h+oxjKic
&gt; zBw~2J&lt;a}OCA-JB;f9C1|Tsa^yo44U%b&lt;-`QkpZrWt}7|tiQcOtM=30165$76EOOO!
&gt; zRv}HHM%Xb2AG&gt;Vb*&amp;Jxh`*z(yL!Pl+K9@a0?J)j7M$gll-ta9_OMWPFY7~(c-)yJJ
&gt; zp&amp;mnYQ7qIdO$4&lt;|t_2*&gt;LJi$;x`vosRU~m?$WET6y~+Oq(bbSuHKuTeAZ8H%_&amp;&lt;EZ
&gt; z@~X7LLFsY!&gt;m_T)!q`|ZCjMz32d&lt;Fvx|d^sr_iu-JYeS=faML&gt;jL$48#mwlsQoOzM
&gt; znKiC(YRlXK0=;&lt;H_Q1dsg5TZ+7cW~pR~K05pbR(88ZAW(i1z7}v&gt;v1&gt;W`GJtLj~OP
&gt; z(VOGB&gt;Mc*NS*}@E;C*B%EDE3ekE$FB_^UOZU+Bq&gt;tV&amp;t`*6fu(wPohu4Dk}Ycm06w
&gt; z36wFR$^xU$)Zv_(L{Qlb;LFZ)c_O_EUs3!I2fc-g-?5&lt;n%JVF%|D%4X6}0C;WO)i5
&gt; zj}Ke_(ceV12RlTIhL|h*&amp;;y-Pn*hx`(UdEj4R&lt;2Sf3&amp;Si``P@*t$(4EG;sTAZnfA|
&gt; zHTyGw{hIre=c7VT^48yeDOUSm0*r&amp;QhzRrywqe7z9G^qorO`@`0h-iku_sHM9cttM
&gt; zj|~0O8pMkcO(&amp;b*joFXa54PP$$8DcGl&lt;TDHeLz+x7VyjieYr#JwPA7VT|Sw&amp;10$pn
&gt; z!;aqU?-WCHvmL&lt;SEe~wZifBY(|4j3v;R(IwuLdNLYK%9YnX&amp;g=^|&gt;{0U|y)HBlz`&amp;
&gt; zm@`%v7dFuS=^A+s($jRj&amp;2V{lou{-sijsZ@#%3EJ74klne#6AiTPuw{&lt;dKi&lt;j*xzO
&gt; zLFhEjRqmZ4MmPIJnw{SPG43Mcmg~&lt;5$}SlD#@Sn4j$w}&amp;^&gt;LVbq`6pN+)I`AJR9bM
&gt; zWb&amp;O0(DH2&gt;ksW06Wp?hm2hr7SY};5X^lZN(80Hr#eEOGH84`{_Lmi_K8=mJUBvyI8
&gt; zZ1sBcdHE{7)aCN|&amp;gJ8XAJ_;0Aw9upA3JR8jvaPPNrp(z{o5t=%tf-MSan(NaOgI3
&gt; zvqKkr0&gt;j+n{hCC&lt;ngF^?#lhTbP^{;envv5bYykJE`Jy^C#3tUmyG?+!6lfUOIOdh1
&gt; zj&lt;hZ&gt;%eoD?E&gt;nNexSSX@E7)fR*u*GhW`z==M!f&amp;|5I=Wt(f4@17Fm8m$&lt;)eLiy(P|
&gt; z4Df4lmzI&gt;mS)t(vcb&gt;B=^$^_~X?aRTG5py&lt;m9{1v^YO&amp;#oR8bt4{fn&amp;u;b3tIS@G&amp;
&gt; zN%%}h7(D+8$?ngsfL-%A*_C46wgrYUa5V=xbfy@OvATwW+5svZXDOP_Mah)sI99{@
&gt; zeTm)&gt;9fTRyXO?AtM4Wh^CYDT$Lt@{Iwj?B2rAy}8&amp;dL?8T0$kAhV3*9X?XzBKq?`}
&gt; zl$FgIqskdKJvO;_A&lt;hGv&gt;I&amp;;$A?#O0NW6yhqV)R8SFJ9NTAKCkfYG-&lt;33pHo;`9Hp
&gt; zSg7)j{@5DMFRb2H@kHM60|TPB309&amp;`b@-#9OmFrp6MQsz9Wmf$W$&lt;S$_|=U}o_4$D
&gt; z-nQ}&gt;Y$WcHo7Mo{;kgvji^?)KbvzESu!F1cbj51H+DmV24{;Cd4y~Obc^K1Ue{2zv
&gt; znEclJKBIiBUwMOH?PSyjm+D$F)5Fh(Om|IrJNpK@F0I~2*6lu54qofQohVvVa^I}j
&gt; z4fSX;=hK$uCB(V%&amp;HAqTOi!OB?NsFlx(iiiZ-P12^A{0E?&lt;ukSSS=&lt;q^06z#%q%93
&gt; z*il&gt;DqA{$9HX7`)&lt;%g~0zEhkYQy%a}{Uq-CVsGn&lt;&amp;g5{0k(Qa=3oi4E?v?NUBr_$^
&gt; z78uUJwJsMOw&gt;_Rn0fBmn?VM(|N?&gt;=cIj+SNxf|eJC(k$QQHOGE4Ff{?3A~dkSsEAG
&gt; z{8VG9fBAQxN19tDI7$^-&amp;_1Zv@NIc2`D@D_c7UUej?NbpGDZ!?*m~ijduJRVi91WC
&gt; zco#P^^bR9O#V|7ydflCN-gJ6IR}PJh@~Or%y#6oP*zFn0Duq&amp;2?eKc&lt;V_A)l&amp;1VOx
&gt; zDQx|O3~X7xmi~O1#Jg-Ls6d$I*Vo~gofMg=w)9xW(#x8Qec^p9{9sLVQ=$|-V)Q&amp;D
&gt; zam&amp;IJX}6dO539Edx9ho8?juSjjw827zRmlmXXaw=lBM)pM*e1aaRUBbUn_%V;~@Gj
&gt; zm8B)0w&amp;KI}Ppwmz7J{cdeKh-#XLo0izrimImYa&amp;y+Tp)e-iXedxu$vkP&amp;=m8-kAA8
&gt; zf59&amp;U&amp;=-op`51ZpT!{7^c?r?+zKboJJwE?LT*S|BiR?eJd60+&amp;)4XfaX^3Sm)mKDs
&gt; z9o5!W-Rp#U{lcZP8R&lt;JLA5;c4ltW~v(tmzh-dgl-Jt8-cMQMq1W|mJdlA-4awx6?p
&gt; zf3at-ZTehCU}W%0tv&lt;VS4BB3H!uPDd+tJRB!*RY|*baRrt8VTcC#-Xw8fI$*vhMbf
&gt; zo;&lt;@iWdRWtEOy&lt;Z!TL?D&gt;hsGB`Dxeq*)@BX+A&gt;_d^W2mtd=&gt;&lt;eS1HTq!%*-F@1oGM
&gt; zpMm`h%{g`ITO%ebEgw(Ka!qmW&amp;voNvWjF?Zo7kd1^O&lt;{HiRk;1HK}zLH9BRC^Si(e
&gt; z7X{ag(K*^2m0cemb$9aFRbd&lt;Lso3m84QynfHv7a0XHD2g6DB#xb3tP-##{+6Pl_zW
&gt; z_q9Ea;AB^i@#}2x&gt;u-qNX&lt;F*D)&amp;PB+bPP7r9W&gt;_-T^sY`QVjLmT}62h$P&lt;Kgg4cFd
&gt; zHL`ZSuI;P(&gt;1!y9r2B=hZ&amp;tU^{nK^Vp3Ayl5VCmRt@Qk73O&amp;zt+OOa97S8xT?H)KZ
&gt; zGHqx&amp;)rtD9jbBx&amp;-m&gt;2b4OHIDLz#yMd-P55&lt;#LgAmXr^r4nD36Q7-ni#AU$ow#q%-
&gt; z5iqvy9CJ&amp;YNd1bap}CEXuz;W-RYZHhyRwnv^;QmuDZ@s5&amp;^znxk|{pe(i@cgfE&gt;Yb
&gt; z$5JSKoQ=$7HHXuU6*=^`t!&lt;4yKd{}hXbdkJEfH|KkZRIgP-U*sBs~UezQCjy+kKG*
&gt; zpH*&gt;DFVm=-o;TFCwx3d6pGU{gYsOZiaMydvGw`E^@&lt;jqKQ}EgbZnYqYoE9VBvDULk
&gt; zs2oXn%Gn&amp;BUG7)IIA6xy&amp;#Z4!ShmXiML{a97-aGOFdsX#z;WP&amp;e4#^#lx-(A&lt;oMYp
&gt; zf01n`Swc1)X6^|@&amp;h=cl7VNuAtGBwsW;bLV!9v!FX#|)ZdZe@_MApOJl}-;v({8jX
&gt; zfyeYrDZBIm9RIz^-!AciB{Z{CxKoFSdN|ejIgclkf_=DNcI6xGa9_#}K|Jui{GkcW
&gt; z{`-U(M|9B;Cx8D&amp;XFsPPb$dhr$#gsDEkJilErr7|*I6!i4%=rgWa@kV&gt;$PapiI2ry
&gt; zTkI*muWR?J=V)P95pQRvu`Tu6jS9J!py4NYPkf&amp;dE_=B8c;aFls&lt;cm(a6a*4vY8ZV
&gt; z+D6_8))xbWh?ma2k&gt;8z%lkw);KMF&gt;xxX)jw?dCdbDP0%Xoi;SLj2|ip;ygvejc`i8
&gt; z`}tEDtxt`Mn_evCRl4D(y6Ey-xivqnrz&amp;&gt;k3CT=h9$0?91;S&lt;=dk#72iMq;TbxHEE
&gt; zok0a(XO&gt;}iDX7ec`De?hd+GOPySkWH2?_lV=RIc=3#T8_b&gt;0l~A7Xe{Iob&gt;n_np7t
&gt; zo?(!&gt;vqR*cb&amp;2ku3Cb!fFvvT}x1ZYzGuPjUEW|a-8;uC*aY)-)Tggj1^mdiE+V}Nk
&gt; zxeORlM$qk;{V+1?UlvY04cpAkcn$H{p7PG)A$sbZm%nIOirUx@N|5i40R;fbr^E4?
&gt; zCHlUzk2G)zdu|*ZU-&gt;S2MO*P?&gt;6ar(N!&amp;Z&lt;2&amp;=y0gta05oe`5GgHT^`8qyUC4Ga@=
&gt; za+_K&amp;J&lt;PMHhT!5rjwy;00y%2m$DI)!wlxX$_!hv&amp;wY!FD6f&lt;mBk!K@wPa+sxujGl4
&gt; z`vf-GGQ-v&gt;Nq;I6#}S!)&amp;k&gt;4-_+axPsHrS*TxQgMxB$3f$_TGIU%RudQydEgrBP1~
&gt; z+jSpx9(@g|&lt;Kl=!Vt+e`xBehWP2)P)2_(Eip0KqT{ca-CVQHb!JJq6ZcL!p!J*gS}
&gt; zW^v!_Dw*kNc~lf+OA0)Y*JFWD$$Y+IF|-f7yW&amp;_D`onJ(&amp;JP5HefTnR#YW_bKPdND
&gt; zNVvoWu%~GCOZ_9);pzqa&gt;p#|%x4-WZh3w`u3KNz^b`;sifEC{S=VI**S|fxr7C)eL
&gt; z%$Pk^duvz_B96F+jVGR(hx^G$-xqqk@23saDJU%1=cUT&gt;!Kn!+b9^@2xxTk~fp&lt;46
&gt; zAZUaIR($&amp;=)^D5jIN2ZX0K#uNjzz1Sp8Kk!KHMm2fNb@ZCd|UoYXQorwRtoRJ}QNj
&gt; z*A5Bs_&amp;*&amp;h(!1T!bWK&amp;s?b}Ut)4Fg}VVNi)96lYt5S1uOCZZ&gt;Fv^?}La|gcBVU{x&gt;
&gt; zti~7e`#A97BMkL&lt;iG8t&lt;udgA$ZJrlc-Q^e4=kvk(#&gt;bsI@2KF*gfB+n9uI%!MSI;+
&gt; zg`G7c=Pc7&amp;P*8VtI57}5_)a{mXf!67XnCA-3tutQCwi6`^Ag^gOE#4i0UrP9&gt;oo&lt;D
&gt; z%teEbP^%cL(&lt;OJW3od%{uJ=YDeCxdjI3inFejC;X01975qQ=$1;phBDAjLS9D4iRA
&gt; zle*qIx0H#PpVKKYQcbgwpT}PWU8=`)V=#p~Y;9|dX^zKN$qAX|D@CASLV0{);S;Ms
&gt; z3^qR?#~BpBR!~x3VO&gt;2|^fPeJC%DGyREy5(`|Sn9WgOIY-IBdN9rF8oVVVu7!qkV;
&gt; z2LyKXP{9^fDEc3gABIxx#o{C4XxZ5!6qAp2(seo6ee9pZ0^^yP!ZZ5}2E7MD*Q%8&lt;
&gt; z^X`V~8iToweA*X&lt;2$z^biWVB$CJGZsB&amp;D?{eppJ%v7_~d7&gt;9nN4-(A`w@kmkN2xGz
&gt; zTC*I{-j|vo8NmMIfHzv+tZNI={7Q4kGC!-S@xyVh+SngI#+MDzB!fT1!VEpq)S5+q
&gt; zczE$NU`z&gt;T|D{D#HgAnOs&amp;9P}XDEUM3GQ=D;7urqz2RQl$8|8#&amp;rh|*-$32OwBr*B
&gt; zSLU!Zb%SDmHQ9c^YIcg(Z(l-UMu%#|#k!K-Qwz^MVpZ+kSvh3?rHb@c-V@BwKo2Lk
&gt; z48gfceU0J1ERhs(Cp=z#IE&lt;1M(nHI@V9hdf&lt;)bgh7M1$9MkB{RX^TMzr}OwbvrH&lt;(
&gt; z-AQ&lt;=)dQr$Cv&amp;2|B&lt;yaX5DUfkm#BPa$M_QF9=BzwP?2mKd6&lt;@mW^@d9=oqlw{5u&lt;2
&gt; zG+q8GtSqlyp=4KkQAUO&amp;UMT?}R8r?&gt;oi&gt;n@0&gt;}3y&amp;m@J5ULCxm6H&gt;HV#=6WRPck5L
&gt; zVZeYUD#N|*5WV!VRIE?Ej&amp;CG_r#jUzqf#Q|j7E`y0z2?HnFT;ND!R;WyyTtArqEn_
&gt; zwEEs+$p&amp;_e8M&gt;v&amp;b`hzM;Uj!X3(PdUn9mJXUe&lt;-ACX{e1FR_pyWe3QW!`ag&amp;GW{l$
&gt; zuYYHyZMqaTU@&amp;;yF~p#3qZV&amp;Z(#7O)X6Pj6W^%g1uKjvb(+&amp;6QsV9V-z8r?2eV6$B
&gt; zEa0TsruSy!CbS97u_U6_&gt;ikZ{?@Ufyr@tn&gt;+v?IHC$nAV_+Og+AUsg6NGNXQ{3JHf
&gt; zL_w=C#14U1Y*L)6)FEwV4)ESucWaHbY=mZC4J%qNaoL&gt;+=8#d3d)V1uk@u36dGPqJ
&gt; z$!AZ4^&lt;nJu4f&lt;l&lt;GH#~9lr0M92~mYcZvx~PNao-U0H}*`V*L1v*5I!E2TL0nbuuUR
&gt; ztj0=l&gt;d#VX-2ik5-YXLUk0o-?C#;HSeLu&lt;R5AAn{dwGFq+%?IHqXd@9-q0p83~+*_
&gt; zl|~-Xt1PuLYx^!XYpWpvk07~E+9p&lt;JpdPelbZxMDzG#iW8Y-2VOaaug&gt;Nxt(RZ^cK
&gt; zoeHpV07PIH=#o!Y%&amp;S-Tz&lt;I^`;ax|^n}c$#!Lln|v0FW?&lt;b5&gt;;76F8~SLrZHFy`pm
&gt; zf6v7J==7&amp;NA}&gt;OCdY;&lt;NDd^0;N!4lt;4S6l+&lt;8&gt;ap@HSD4GpYF@haj$;xGb)!2s6$
&gt; zw0JU_c&gt;UM3ZW!_Cl$9uTo^aF;&amp;=Pk-d#fref7J3b(%3IWP}b@Lvkl~MHZ+tUTMerS
&gt; zsbji7;AS%q9*bj&lt;nAlZ2!8EonUy&gt;Qc?)Z)Q!Dulbt83V=^HKGm0i)qsEkY&amp;kuKzI_
&gt; z=p71*x9RYXj52Xw!SbVZ`u69&lt;YO-LQ&amp;IPfr!Wx}E?brQ|0ec_fg2Q(`%u#|JZSH7@
&gt; z%3+qB$w#I1V(mm~Z$f@)Bq`q?bn`BzeFerT9!9MD`BG0AcAwi&gt;Rh63gw+Hb9wrcy|
&gt; z#aOk&amp;h_m70GIbwAH^SnBfOxj-ZlQz6W~vp*l$`)iSFNaI-c~wR!(nclelql~jW|JR
&gt; zHP{0a`&gt;JCH2i^WPaL^x^?+{^eD3)a{)kAaZy29kB`{Fh&amp;?X?Rs;_?TK9;gYQ1&gt;8(l
&gt; z+(2J?W%#QQ-8Y^$9^V(C^c{oqg~M6$a@e%gemNxM2w&lt;&amp;Ix_(Xga$yH{n!5KAS-Ig0
&gt; zomps)8QZB3w_lRvGX&lt;=xYD3Rw$*}JDeAc}GTBwKFR&gt;hij$B7i!)&lt;mjC@2GSN?8y#^
&gt; zN~(Ey{28kMdFsjSdsc~=wZ_@m3nSc#jgrW6-)fNG7)R-9vsaYdQr#zY5i}5UD9m&lt;z
&gt; zE|Jbe&gt;({c|Gp{$VX+B&amp;=yHq(M%(22U5*#DEKlbhX+${iuHyG&gt;I;G^|LB1)&amp;wp?&lt;+M
&gt; zwXL&lt;d+KNF))?5`+xW@}%BiH_!RQhFkY+?Yoi)vG1`W2FjFAkq|Mqn1&gt;A%*1+rS79|
&gt; zCF|-!#)^WwHN#%F{BlFcf0&gt;z~&gt;i1sM=A)lWaOn7XVQW}56jqBNXZ6D$B=g_xJfFz!
&gt; zj4KVd9(zbC*|XgR=C=-dpAgRJc0(0rH5cZnx;2^Ask?ek-&gt;aS%VwE7*r1(RIWVp8g
&gt; zE&amp;j_{EHS;xNo1Q3)=@=le22ix7uin8UOsbwt*Ay+{X=yLDeQdu6!3MDDz|ks{MMuS
&gt; zcNUfT0e^wol9`Xn1;a~pv3Uu%3$AC7y#F#SEzk1PWzE|qW@^N47NATKiQ^llYKxKt
&gt; zvv0Kz{Ei(T19Q^et}~KEDlm?75&gt;c{%d%&gt;JZzn=|8d#GYnxG#1|pNijSwhx9-&amp;`0kr
&gt; zjrSX+y=MrCJ3&lt;5?uBaDuHH?Ds5HCl`9Lgp~G}J)o#c&amp;gs0~BgxeEA7q==ovWlc?pX
&gt; z=&amp;iZi+;ad&amp;EvSP|?5n`Pk_XVirOAscP)faw5Rb1~Uad^)GXvqTUa@JOzs&lt;R%R~RC@
&gt; zz4Ym-p2)BL&lt;H^1TY`A2V?Mfxp5oHBJ&gt;#hQ!(ImWx=)&lt;(-A;tYuDl52tEXROMC;@;2
&gt; zrWT!EJH#rxvxZu1nR*h*AI|3CYL2T^B(l%HNPTL2hmJ&amp;#fwur+X-BqY)EoxtXPy^3
&gt; zWh&amp;U`0Z*0=D=QknVO9&lt;Mj{*d9*k&lt;Q!lKU^=Z``U&gt;c0V@K*_A}qnGx#Ik;W%h@(-W5
&gt; zLE*IF;M?bXTx*p+#34iSI&amp;T6|rq;&amp;^0~LO!AODsauK50&gt;hpZOWeRH$@a52~NI(7;s
&gt; zbIZ7$eSdfo7+|GGmokg7G&gt;ZQa(oDkEhLpo)r?X?uI2dg{NL4%KIUH7q|GkT(41kLc
&gt; zi7Efd-ij(3eg&gt;FS@T&amp;x_5C&gt;6PK?is#ih+l$ap(i&amp;@pl|XD=XRx&amp;fTRquG1*3RV52A
&gt; z4+i|gla*o`tE$rS$K**^TMK4q8Dfh&amp;VSm$n-|Rt1y-EgD1#QRSQ?A#rg39cX6vIVB
&gt; zpUx`J!YeA5jdsX)0Z^E=Ub1ioM*xeE`|(-s7?{c10Ei=0F%#Dz95P4LqN)3XF~;-7
&gt; zV@ELTjAZOM0P$Dxm6Ikvcp`8Cab7mWjfhlbMKc&gt;4Oj--gk^U*zka5Z+$#ehQ3$MHp
&gt; zOPLXsqK@qIEpT&lt;jj4ebk?#73&lt;FU@vc%=44_tPZza$+CL_$WdVCo;p#4@8eTiEk&gt;ac
&gt; zrwJ&gt;C+~T3%b&lt;jo4_O)pO9V9VQ1cBJ6|J8&amp;u1ro^8ej#|h0fi{p_#h51QX#gOq`-p6
&gt; z&lt;dz~1jNM`TWC{hR0YP4R)gDL82SYq5RzHY&amp;CT};qOzH97CY}7&amp;UI9Rs+IFiEO6lN@
&gt; zN3B*U6SPeB0xz0&amp;ER&lt;;@w1RDZszT|Tz^OQLA=4C4U)3%5bYq@sjlhW2GI2hYum6a6
&gt; z&gt;SwvOus=zd&lt;li@o8=-*jY1B+}y#gG&amp;rVA&gt;5gx~E9H8~ZT`haoqnU2ry&gt;qPcZuHVI`
&gt; zSYR+7l?Dd}e_6s|-oukO%(?PT2N^8{obs~9zP1uuzsDItlE4WH=#652-FXJ=nbwc?
&gt; zNrzAMW1bMtiCV=UkL3N6h6(_JzEW2)QP&amp;%M%;Lo)v6Z46QXh0uZ1q{HvEt(E#y&lt;KP
&gt; z@{yy12#&lt;en7xn~r^GpOQVoZt^;3wyWuaL8P)3|$4!y2AHJy+_;0AiB{Chk&amp;K^;3tL
&gt; z4%PO@r&lt;U(5qk&lt;IE5pqC^sM_y^`#o?knPk&amp;YORT*-2;|cMh*5rPK|q!&amp;q&lt;d4z4q#%D
&gt; z?@@YWX4nMsi)nPs0JFj4%4%+|d4Q)eKN%r3+!z%1Y+Yt*+)?Ks`RO{QZBnMnb3+pf
&gt; z5~9p_T|)Ifl|Nw&gt;)4$BSSLYlC?L@&lt;4@v1=Cv9IM5If*ba1?{q3*ixI~MUET=&gt;=p$t
&gt; zJG*DbKwTiJfOXyI86!v3%Byg7QtoA714#Z+jT2o7rkr&amp;~qr?%s1QqTO*~t%7TZ5MF
&gt; z#kexQgstJ&amp;?yop9mU#ik6lluqmJCDIDT)z*fO#PqX^We!sNSO~iJaYvRV@&lt;pK!pG&lt;
&gt; zd6Dl&lt;+xxh3vIAlj2XUUSf#`UAAp~HDxVfEoHwUm)_T-xh46gx?U~%Y;{4(7sXH_hX
&gt; z60&gt;u^C!~(M;#^Ril-%a@lNnoa(!`bL04Gy@j&amp;1{*q%&amp;B)8n%~#^&gt;6m0s+owJX5x+}
&gt; zYhO_KJ_m7=E|OnoX1fV2Q&lt;Fx$5V#UECAaWqK|yp%O+3Wl^JFcT1{eGMBi3Gz(%)(M
&gt; zy*=ypbX&amp;^sLM~77!!~&lt;R^x{uFex$4n*Xw3=rgsDBDOnr$fWS7;=kXF6%I~z)2I1cI
&gt; zz*;GDI7gSND$F4vf(fWV5|+&lt;-fzPUEHF{l3f+2$xP6Ndf{&gt;+k3utP6N$V?FhY&lt;Xpk
&gt; z@gY&amp;?;&gt;6qJ*~FILH-uiWI??HQy8bS!(=vYmlCqEP&lt;Ht$4C_o)a7{IXljY3IsQGh8w
&gt; z0fFNuPOm3q&lt;kK?$1JK0_85|$*PZEvU03OgL2=?&gt;OQw&gt;1$H`4rBlLQZ7Vj!$|+mozM
&gt; z%BF$18o2&lt;Z27kr*rL(`&lt;`HLL@2!Ac&gt;4}&lt;*WoxiO7*Gc?!p?jCDkbeV=zv0*4;Ph|k
&gt; zzL#(Ojg|k#%70_!zd8D^^26T&gt;#@~Vp0EEBgroY9wzop8*h1_4s;@`UR-&gt;Uonk0k?B
&gt; z5lZ*j-eL{T^&lt;sQyMk!|rkupLXd!W-9sYdTs^+wsL_s6C}5h&amp;N%OnDFQB&lt;4?2ws1RX
&gt; z%=Wd_8)(PWbCWmxQ!(Iyn&amp;yCwzrCuMRo3&gt;!?RPExe$K!05#?x5*p`C4JO&gt;L4%gjY4
&gt; zNjbUhmPc;*5+BM4DhNK9{05*7&lt;BN=?&lt;29bEhqjCMl^0(JP2BpQzFoiUdT#eT&amp;c4lA
&gt; zQ=sn{%IEJUe6XKSM3cu#&amp;eGD-eI~XlMZQM30-s~9!J+OF&lt;gmFigEw!EkpdbkKYAYQ
&gt; z!hJ+3&gt;10t~@3hyauJ}dWVG4YOO9W`7O}97)wAY`2o;Yns?vmOQ)cr6pxcg~ytV|&amp;V
&gt; zaH-!$pZRN2q!zsAwhV_$J#SEc6;{Zgl&amp;y?&gt;%N58cfwt?j`k8iCQquN4$2`4&amp;wm8H?
&gt; zt&amp;oS0B0wO@=X&gt;7;phhDyU}YD9#&gt;R_Qmw_#*Ke#1Shlhpqich(HyEM~O_ZbJn2SzaP
&gt; zv0q%sPiOdN3YUcr&lt;B%yxbnQINO7Zso9L;YpO#!AqKK@0OI&amp;$w`Jq5p&amp;j0^Q?ovKM#
&gt; z-`LI&amp;9nbd3{sX(W*IUogH*vc!K1cGETi)qKrq0sK7CU;0``7yR=gfuzgFJ)M5PiLT
&gt; z{=IP#!~_2&lt;imcpX58vuFew&gt;hM{V?@G^KLRo(gbToKEDHIaL_Y#q~O=7+n7iDVQ&gt;TP
&gt; zoAf;1BRP==w!VfAxC5;myt|&amp;b8*J2SQo_zcVNw3H^-sZ`wl^IrlhRf(R9L&gt;8u`={7
&gt; z8a8&lt;&gt;-Iwj4AYFdQxaM)o3neK=K&lt;iSerP9LT34NI7{nZXG+w(l$PHTVQ&gt;|fb@xG8bF
&gt; zK8OkC-hJPDOGFu7I5M+)88m^LOE@5w8a-mQbRZ1)yuj&gt;yDFgSS%9Yu{OOL(Jtsk7q
&gt; zj4E7Vp&amp;mGlPBC+LFJR&gt;Jl&lt;(icFRX9_%|jJ|s|S|Auy=#zpR9lb+W!Web}rd^=o~N@
&gt; zC~(|~T)6lr@}&gt;Z9gT*cr|0`MS@p^gKNCv#n9^aX{NLZZh#1z}RxJWKsUP4^g(WwJE
&gt; zHG1^93_!(qVDh9(8+(#`6VJBk__X)Qf^@^eOh%4%&lt;NjqEM|f4kxn~3Sp&lt;fLbFH)tM
&gt; zw0j@eJ8IyXE5i#M&gt;B{aeIE(|w$s1A_(qaBy)x&lt;Oj46cWIa*}Ul&gt;{V5LDOi(N|GTs|
&gt; zRAQymxoa)(^6xuh#PFA_@nchS)lBHbor%Q$ArH&amp;{ZKtjQ&amp;e*Y#NO&lt;j}$wFtT2A8MB
&gt; z?)#N8kPH7&amp;j{URYU*dE{Lt7k{#Md$C^?UrvR&lt;y4xX!p7f$S3xD;w6IDuc2qF0{X)D
&gt; z;Ir3~KU0TLs=pV++3EAS?k=c1p!(qV1Wxds^E+|c&amp;vmIyqfl89*w`Lh=!*L(3JXW!
&gt; zg5L+;%skoF$T*6xp)IAaBX$nCofnW%5=!$EKL|;lY+9rWlcF20e^IBSp%tK?d5?qi
&gt; zbD46KCUjP2?+YBCdA&amp;E43P;SS-+s?MD0&amp;5zq-j%A)AWW9&gt;*bQcNRwf23JcaqnFFvA
&gt; zQB9&amp;hUfgmAjkv#7uMc&lt;L7#_ALRYXVQT}&amp;t}cuQ6evJn%K;S|moZfu7y5MB5&gt;1~mO4
&gt; mxPaE*9sNMG*wf+iUGDooJ8w&amp;s*nS29KUdVWRWmP}KKeg9Y{3fv
&gt; 
&gt; literal 0
&gt; HcmV?d00001
&gt; 
&gt; diff --git a/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.txt b/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.txt
&gt; new file mode 100644
&gt; index 0000000..f089252
&gt; --- /dev/null
&gt; +++ b/LayoutTests/platform/mac/fast/repaint/fixed-transformed-update-after-scroll-expected.txt
&gt; @@ -0,0 +1,10 @@
&gt; +layer at (0,0) size 785x5016
&gt; +  RenderView at (0,0) size 785x600
&gt; +layer at (0,0) size 785x5016
&gt; +  RenderBlock {HTML} at (0,0) size 785x5016
&gt; +    RenderBody {BODY} at (8,8) size 769x5000
&gt; +layer at (60,160) size 100x100
&gt; +  RenderBlock (positioned) {DIV} at (60,60) size 100x100 [bgcolor=#FF0000]
&gt; +layer at (170,170) size 100x100
&gt; +  RenderBlock (positioned) {DIV} at (170,70) size 100x100 [bgcolor=#0000FF]
&gt; +scrolled to 0,100
&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 685dd1b..ad7221a 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,30 @@
&gt; +2010-03-26  Benjamin Poulain  &lt;benjamin.poulain@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fixed, transformed elements are not repainted while scrolling or update
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=36652
&gt; +
&gt; +        FrameViewWebCore::scrollContentsFastPath() now use the new
&gt; +        function RenderObject::clippedOverflowRectIncludingDescendants() so
&gt; +        the returned rect take into account the transformations of the current
&gt; +        and child elements.
&gt; +
&gt; +        RenderBox::computeRectForRepaint() is updated to take into account
&gt; +        if an element is fixed whe computing the repaint rect,
&gt; +        even if there is a transformation.
&gt; +
&gt; +
&gt; +        Test: fast/repaint/fixed-transformed-update-after-scroll.html
&gt; +
&gt; +        * page/FrameView.cpp:
&gt; +        (WebCore::FrameView::scrollContentsFastPath):
&gt; +        * rendering/RenderBox.cpp:
&gt; +        (WebCore::RenderBox::computeRectForRepaint):
&gt; +        * rendering/RenderObject.cpp:
&gt; +        (WebCore::RenderObject::clippedOverflowRectIncludingDescendants):
&gt; +        * rendering/RenderObject.h:
&gt; +
&gt;  2010-03-26  Yael Aharon  &lt;yael.aharon@nokia.com&gt;
&gt;  
&gt;          Reviewed by Antti Koivisto.
&gt; diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
&gt; index 32127e3..d911a00 100644
&gt; --- a/WebCore/page/FrameView.cpp
&gt; +++ b/WebCore/page/FrameView.cpp
&gt; @@ -881,8 +881,7 @@ bool FrameView::scrollContentsFastPath(const IntSize&amp; scrollDelta, const IntRect
&gt;          RenderBox* renderBox = *it;
&gt;          if (renderBox-&gt;style()-&gt;position() != FixedPosition)
&gt;              continue;
&gt; -        IntRect topLevelRect;
&gt; -        IntRect updateRect = renderBox-&gt;paintingRootRect(topLevelRect);
&gt; +        IntRect updateRect = renderBox-&gt;clippedOverflowRectIncludingDescendants(renderBox-&gt;containerForRepaint());
&gt;          updateRect.move(-scrollX(), -scrollY());
&gt;          updateRect.intersect(rectToScroll);
&gt;          if (!updateRect.isEmpty()) {


&gt; diff --git a/WebCore/rendering/RenderBox.cpp b/WebCore/rendering/RenderBox.cpp
&gt; index 1c0e837..de9d779 100644
&gt; --- a/WebCore/rendering/RenderBox.cpp
&gt; +++ b/WebCore/rendering/RenderBox.cpp
&gt; @@ -1195,7 +1195,6 @@ void RenderBox::computeRectForRepaint(RenderBoxModelObject* repaintContainer, In
&gt;      // We are now in our parent container&apos;s coordinate space.  Apply our transform to obtain a bounding box
&gt;      // in the parent&apos;s coordinate space that encloses us.
&gt;      if (layer() &amp;&amp; layer()-&gt;transform()) {
&gt; -        fixed = false;

This method should have similar code to mapLocalToContainer(), but now that I look at that code, it seems wrong, and I&apos;m not convinced that this change makes computeRectForRepaint() do the right thing in call cases. It seems that it may break a repaint of a fixed pos element inside a transformed element; please test that.

mapAbsoluteToLocalPoint()&apos;s looks right (it&apos;s going down, not up the hierarchy).


&gt; +IntRect RenderObject::clippedOverflowRectIncludingDescendants(RenderBoxModelObject* repaintContainer)
&gt; +{
&gt; +    IntRect repaintRect = clippedOverflowRectForRepaint(repaintContainer);
&gt; +    for (RenderObject* child = firstChild(); child; child = child-&gt;nextSibling())
&gt; +        repaintRect.unite(child-&gt;clippedOverflowRectIncludingDescendants(repaintContainer));
&gt; +    return repaintRect;
&gt; +}

It&apos;s sad that you have to add this, but I guess you need it for the fast scrolling code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204891</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-26 18:13:32 -0700</bug_when>
    <thetext>I filed bug 36686 to look into mapLocalToContainer. I think it&apos;s mostly correct, but assumes that &apos;fixed&apos; has been set to &apos;true&apos; when called directly on a fixed element.

computeRectForRepaint() should have similar code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205451</commentid>
    <comment_count>11</comment_count>
      <attachid>51913</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-29 08:33:15 -0700</bug_when>
    <thetext>Created attachment 51913
First half of the patch, fix FrameView

I split the patch in two, so the part that does not depends on transformations can already be reviewed.

The other half need to be fixed with 36686.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205595</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-29 12:13:43 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=51913) [details]
&gt; First half of the patch, fix FrameView
&gt; 
&gt; I split the patch in two, so the part that does not depends on transformations
&gt; can already be reviewed.
&gt; 
&gt; The other half need to be fixed with 36686.

For info, I did not submitted a test on this half because a pixel test is the only way to reproduce the issue, but:
-the pixel tests are not run for Qt
-the patch cannot be reproduced on Mac because the port does not use FrameView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206803</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-03-31 16:29:07 -0700</bug_when>
    <thetext>Does this handle outlines correctly?  They&apos;re handled separately from overflow.

It seems really unfortunate that clippedOverflowRectIncludingDescendants() is an O(N^2) pass through all the fixed position&apos;s descendants in the fast path scrolling code.  I&apos;m worried that this might be slower than just going through the slowpath if a large part of the DOM is inside a position:fixed element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207120</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-04-01 06:46:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Does this handle outlines correctly?  They&apos;re handled separately from overflow.

I think it should, we already use clippedOverflowRect() to compute repaint rects elsewhere in Webkit.
I can test that on Tuesday though.

&gt; It seems really unfortunate that clippedOverflowRectIncludingDescendants() is
&gt; an O(N^2) pass through all the fixed position&apos;s descendants in the fast path
&gt; scrolling code.  I&apos;m worried that this might be slower than just going through
&gt; the slowpath if a large part of the DOM is inside a position:fixed element.

O(N^2)?
I would say N*M where N is the number of fixed element but capped to 5, and M the number of child.
It is marginally slower than paintingRootRect() which almost do the same thing.

If you think this will be a performance problem, I can have a look at using the repaint rect of RenderLayer. If https://bugs.webkit.org/show_bug.cgi?id=36783 is correct, the repaintrect of the layers becomes meaningful for fixed elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207252</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-01 11:05:10 -0700</bug_when>
    <thetext>&gt; &gt; It seems really unfortunate that clippedOverflowRectIncludingDescendants() is
&gt; &gt; an O(N^2) pass through all the fixed position&apos;s descendants in the fast path
&gt; &gt; scrolling code.  I&apos;m worried that this might be slower than just going through
&gt; &gt; the slowpath if a large part of the DOM is inside a position:fixed element.
&gt; 
&gt; O(N^2)?
&gt; I would say N*M where N is the number of fixed element but capped to 5, and M
&gt; the number of child.

RenderObject::clippedOverflowRectForRepaint() does a recursive walk up its containers, so calling it on an element that is D levels deep in the render tree takes O(D) time.  Thus, calling it on an element and all its descendants takes O(N*M) time where N is the number of elements and M is the average number of containers, and in the worst case N =~ M.

&gt; It is marginally slower than paintingRootRect() which almost do the same thing.
&gt; 
&gt; If you think this will be a performance problem, I can have a look at using the
&gt; repaint rect of RenderLayer. If https://bugs.webkit.org/show_bug.cgi?id=36783
&gt; is correct, the repaintrect of the layers becomes meaningful for fixed
&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209192</commentid>
    <comment_count>16</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-06 13:09:24 -0700</bug_when>
    <thetext>repaintIncludingDescendants on RenderLayer is kind of what you want here (rather than crawling the whole render tree, which is way slower).  I don&apos;t know if you need to get the rects out to do your heuristics with them, but in terms of repainting, conceptually you just want to repaint the layer tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209193</commentid>
    <comment_count>17</comment_count>
      <attachid>51913</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-06 13:09:50 -0700</bug_when>
    <thetext>Comment on attachment 51913
First half of the patch, fix FrameView

Minusing the patch since a render tree grovel is too slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228344</commentid>
    <comment_count>18</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-05-20 06:16:53 -0700</bug_when>
    <thetext>Closing. This is not relevant anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255657</commentid>
    <comment_count>19</comment_count>
      <attachid>51913</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-07-23 22:13:14 -0700</bug_when>
    <thetext>Comment on attachment 51913
First half of the patch, fix FrameView

Clearing commit-queue flag to get this out of the commit-queue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51725</attachid>
            <date>2010-03-26 04:14:00 -0700</date>
            <delta_ts>2010-03-26 10:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>36652.patch</filename>
            <type>text/plain</type>
            <size>4364</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTA5ZmY3YS4uMjNiZmYzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMy0yNiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkLCB0cmFuc2Zvcm1lZCBlbGVtZW50cyBh
cmUgbm90IHJlcGFpbnRlZCB3aGlsZSBzY3JvbGxpbmcgb3IgdXBkYXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjY1MgorCisgICAgICAgIEZyYW1l
Vmlld1dlYkNvcmU6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoKSBub3cgdXNlIHRoZSBuZXcKKyAg
ICAgICAgZnVuY3Rpb24gUmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0SW5jbHVkaW5n
RGVzY2VuZGFudHMoKSBzbworICAgICAgICB0aGUgcmV0dXJuZWQgcmVjdCB0YWtlIGludG8gYWNj
b3VudCB0aGUgdHJhbnNmb3JtYXRpb25zIG9mIHRoZSBjdXJyZW50CisgICAgICAgIGFuZCBjaGls
ZCBlbGVtZW50cy4KKworICAgICAgICBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCgp
IGlzIHVwZGF0ZWQgdG8gdGFrZSBpbnRvIGFjY291bnQKKyAgICAgICAgaWYgYW4gZWxlbWVudCBp
cyBmaXhlZCB3aGUgY29tcHV0aW5nIHRoZSByZXBhaW50IHJlY3QsCisgICAgICAgIGV2ZW4gaWYg
dGhlcmUgaXMgYSB0cmFuc2Zvcm1hdGlvbi4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNsaXBwZWRP
dmVyZmxvd1JlY3RJbmNsdWRpbmdEZXNjZW5kYW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oOgorCiAyMDEwLTAzLTIzICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3Nr
aS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCmluZGV4IDMyMTI3ZTMuLmQ5MTFhMDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC04
ODEsOCArODgxLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29u
c3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QKICAgICAgICAgUmVuZGVyQm94
KiByZW5kZXJCb3ggPSAqaXQ7CiAgICAgICAgIGlmIChyZW5kZXJCb3gtPnN0eWxlKCktPnBvc2l0
aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBJ
bnRSZWN0IHRvcExldmVsUmVjdDsKLSAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gcmVuZGVy
Qm94LT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CisgICAgICAgIEludFJlY3QgdXBk
YXRlUmVjdCA9IHJlbmRlckJveC0+Y2xpcHBlZE92ZXJmbG93UmVjdEluY2x1ZGluZ0Rlc2NlbmRh
bnRzKHJlbmRlckJveC0+Y29udGFpbmVyRm9yUmVwYWludCgpKTsKICAgICAgICAgdXBkYXRlUmVj
dC5tb3ZlKC1zY3JvbGxYKCksIC1zY3JvbGxZKCkpOwogICAgICAgICB1cGRhdGVSZWN0LmludGVy
c2VjdChyZWN0VG9TY3JvbGwpOwogICAgICAgICBpZiAoIXVwZGF0ZVJlY3QuaXNFbXB0eSgpKSB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAxYzBlODM3Li5kZTlkNzc5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTExOTUsNyArMTE5NSw2IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IEluCiAgICAgLy8gV2UgYXJlIG5vdyBpbiBvdXIgcGFyZW50IGNvbnRhaW5lcidzIGNvb3JkaW5h
dGUgc3BhY2UuICBBcHBseSBvdXIgdHJhbnNmb3JtIHRvIG9idGFpbiBhIGJvdW5kaW5nIGJveAog
ICAgIC8vIGluIHRoZSBwYXJlbnQncyBjb29yZGluYXRlIHNwYWNlIHRoYXQgZW5jbG9zZXMgdXMu
CiAgICAgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+dHJhbnNmb3JtKCkpIHsKLSAgICAgICAgZml4
ZWQgPSBmYWxzZTsKICAgICAgICAgcmVjdCA9IGxheWVyKCktPnRyYW5zZm9ybSgpLT5tYXBSZWN0
KHJlY3QpOwogICAgICAgICAvLyBGSVhNRTogdGhpcyBjbG9iYmVycyB0b3BMZWZ0IGFkanVzdG1l
bnQgZG9uZSBmb3IgbXVsdGljb2wgYWJvdmUKICAgICAgICAgdG9wTGVmdCA9IHJlY3QubG9jYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDgyMTJkY2EuLjM4OTEwZDIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTMwNiw2ICsxMzA2LDE0IEBAIElu
dFJlY3QgUmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29uCiAgICAgcmV0dXJuIHI7CiB9CiAKK0ludFJlY3QgUmVuZGVy
T2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCit7CisgICAgSW50UmVjdCByZXBhaW50UmVj
dCA9IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOworICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIHJlcGFpbnRSZWN0LnVuaXRlKGNoaWxkLT5j
bGlwcGVkT3ZlcmZsb3dSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMocmVwYWludENvbnRhaW5lcikp
OworICAgIHJldHVybiByZXBhaW50UmVjdDsKK30KKwogSW50UmVjdCBSZW5kZXJPYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNWU3
OGJiZC4uZjRiNTUxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTYzNiw3ICs2MzYs
OSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoMCk7CiAgICAgfQotICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7ICAg
IAorICAgIC8vIFJldHVybiB0aGUgcmVjdCB0aGF0IHNob3VsZCBiZSByZXBhaW50ZWQgaWYgdGhp
cyBvYmplY3Qgb2YgYW55IG9mIGl0cyBkZXNjZW5kYW50cyBjaGFuZ2VzCisgICAgSW50UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpOworICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7
CiAgICAgdmlydHVhbCBJbnRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGludCBvdXRsaW5lV2lkdGgpOwogCiAgICAg
Ly8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRl
IGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51743</attachid>
            <date>2010-03-26 08:51:59 -0700</date>
            <delta_ts>2010-03-26 09:33:39 -0700</delta_ts>
            <desc>Test case for Safari</desc>
            <filename>fixed.html</filename>
            <type>text/html</type>
            <size>317</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5IHN0eWxlPSJoZWlnaHQ6IDUwMDBweDsiPgogPGRpdiBzdHlsZT0id2lkdGg6
IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHBvc2l0aW9uOiBm
aXhlZDsgdG9wOiA2MHB4OyBsZWZ0OiA2MHB4OyI+PC9kaXY+CiA8ZGl2IHN0eWxlPSJ3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjog
Zml4ZWQ7IHRvcDogNzBweDsgbGVmdDogMTcwcHg7IC13ZWJraXQtdHJhbnNmb3JtOgpyb3RhdGUo
MzBkZWcpOyI+PC9kaXY+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51750</attachid>
            <date>2010-03-26 09:33:39 -0700</date>
            <delta_ts>2010-03-26 09:33:39 -0700</delta_ts>
            <desc>Test case for Safari</desc>
            <filename>fixed-transformed-update-after-scroll.html</filename>
            <type>text/html</type>
            <size>899</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">PGh0bWw+CjwvaGVhZD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxBbmRSZXBhaW50KCkKICAgICAgICB7CiAgICAgICAgICAgIHNjcm9s
bEJ5KDAsIDEwMCk7CiAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOwogICAgICAgICAgICAgICAgcmVwYWlu
dFRlc3QoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
cmVwYWludFRlc3QsIDEwMCk7CiAgICAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGZ1bmN0aW9u
IHJlcGFpbnRUZXN0KCkKICAgICAgIHsKICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndHJhbnNmb3JtZWQnKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1ZSI7CiAgICAgICB9
CiAgICA8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InNjcm9sbEFuZFJlcGFpbnQoKSI+
Cgo8Ym9keSBzdHlsZT0iaGVpZ2h0OiA1MDAwcHg7Ij4KIDxkaXYgc3R5bGU9IndpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyBwb3NpdGlvbjogZml4ZWQ7
IHRvcDogNjBweDsgbGVmdDogNjBweDsiPjwvZGl2PgogPGRpdiBpZD0idHJhbnNmb3JtZWQiIHN0
eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVu
OyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogNzBweDsgbGVmdDogMTcwcHg7IC13ZWJraXQtdHJhbnNm
b3JtOgpyb3RhdGUoMzBkZWcpOyI+PC9kaXY+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51757</attachid>
            <date>2010-03-26 10:26:24 -0700</date>
            <delta_ts>2010-03-29 08:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>36652.patch</filename>
            <type>text/plain</type>
            <size>23041</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">RnJvbSA5OTg1MWMzNGY0OWQ0ZTgxZGM0ZmZmOWYyMWQzN2IzMDY4OGEyNjBhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCZW5qYW1pbiBQb3VsYWluIDxiZW5qYW1pbi5wb3VsYWluQG5v
a2lhLmNvbT4KRGF0ZTogRnJpLCAyNiBNYXIgMjAxMCAxODoyNDozNCArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIFBhdGNoCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxMiArKysrKysrKwogLi4uL2ZpeGVkLXRyYW5zZm9ybWVkLXVwZGF0
ZS1hZnRlci1zY3JvbGwuaHRtbCAgICAgfCAgIDI4ICsrKysrKysrKysrKysrKysrKysrCiAuLi5h
bnNmb3JtZWQtdXBkYXRlLWFmdGVyLXNjcm9sbC1leHBlY3RlZC5jaGVja3N1bSB8ICAgIDEgKwog
Li4uZWQtdHJhbnNmb3JtZWQtdXBkYXRlLWFmdGVyLXNjcm9sbC1leHBlY3RlZC5wbmcgfCAgQmlu
IDAgLT4gMTgzOTggYnl0ZXMKIC4uLmVkLXRyYW5zZm9ybWVkLXVwZGF0ZS1hZnRlci1zY3JvbGwt
ZXhwZWN0ZWQudHh0IHwgICAxMCArKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrKysrKysrKysrKysrKysrKwogV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
LQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICAgICAgfCAg
ICA4ICsrKysrCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgICAg
ICAgICB8ICAgIDQgKystCiAxMCBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA0IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9m
aXhlZC10cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xsLmh0bWwKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2ZpeGVkLXRyYW5zZm9y
bWVkLXVwZGF0ZS1hZnRlci1zY3JvbGwtZXhwZWN0ZWQuY2hlY2tzdW0KIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2ZpeGVkLXRyYW5zZm9y
bWVkLXVwZGF0ZS1hZnRlci1zY3JvbGwtZXhwZWN0ZWQucG5nCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9maXhlZC10cmFuc2Zvcm1lZC11
cGRhdGUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNGJkYWNjLi4wNTFkYjBm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMjYgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXhlZCwgdHJhbnNmb3JtZWQgZWxlbWVudHMgYXJlIG5vdCBy
ZXBhaW50ZWQgd2hpbGUgc2Nyb2xsaW5nIG9yIHVwZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2NTIKKworICAgICAgICAqIGZhc3QvcmVwYWlu
dC9maXhlZC10cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xsLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvZml4ZWQtdHJhbnNmb3JtZWQtdXBkYXRl
LWFmdGVyLXNjcm9sbC1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2Zhc3QvcmVwYWludC9maXhlZC10cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xs
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWlu
dC9maXhlZC10cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTAtMDMtMjYgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZXBhaW50L2ZpeGVkLXRyYW5zZm9ybWVkLXVwZGF0ZS1hZnRlci1zY3JvbGwu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9maXhlZC10cmFuc2Zvcm1lZC11cGRhdGUt
YWZ0ZXItc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg3
MDljYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9maXhlZC10
cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xsLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPGh0
bWw+Cis8L2hlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxBbmRSZXBhaW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgc2Ny
b2xsQnkoMCwgMTAwKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7CisgICAgICAgICAgICAgICAg
cmVwYWludFRlc3QoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChyZXBhaW50VGVzdCwgMTAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICB9CisgICAg
ICAgZnVuY3Rpb24gcmVwYWludFRlc3QoKQorICAgICAgIHsKKyAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RyYW5zZm9ybWVkJykuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJs
dWUiOworICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2Ny
b2xsQW5kUmVwYWludCgpIj4KKworPGJvZHkgc3R5bGU9ImhlaWdodDogNTAwMHB4OyI+CisgPGRp
diBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBy
ZWQ7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiA2MHB4OyBsZWZ0OiA2MHB4OyI+PC9kaXY+CisgPGRp
diBpZD0idHJhbnNmb3JtZWQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogNzBweDsgbGVmdDog
MTcwcHg7IC13ZWJraXQtdHJhbnNmb3JtOgorcm90YXRlKDMwZGVnKTsiPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVw
YWludC9maXhlZC10cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLmNoZWNr
c3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9maXhlZC10cmFuc2Zv
cm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyN2YwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2ZpeGVkLXRyYW5zZm9ybWVkLXVwZGF0ZS1h
ZnRlci1zY3JvbGwtZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBAQAorMDhiNDA1ZmNmM2Jm
NzYzMWNkNmExZDRmYjlmYTZlNmIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2ZpeGVkLXRyYW5zZm9y
bWVkLXVwZGF0ZS1hZnRlci1zY3JvbGwtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvcmVwYWludC9maXhlZC10cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xs
LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDRmYjA5OGQ0NjUwNWJmMWRkZmEzNjBlNDQwYTQy
YzUxODBlZTA5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxODM5OAp6Y21lSHZgOUdCM2B+UjQx
U3o9TmwqXjN1aHFITml3dGZsQ2NMU1lDWWA8QWhjV2x7YGNYcmImPHNxOVBFdjFLZS0KenFab3s+
djlEdl9tKE1MVDxATnNsMT5lVWJ6djB+SHpScT0/KllqRz14JGZXXys4VF4+QytSPlM1YVNoMSl0
ZXlECnpBcyFHMlkoUHM1ezNYV3lrclZMQz47bn4qOCZfMFJjeTcyalQwWEc1NCs0Mm1KaHwwcyVX
fj0xajxtemFaK3hfTwp6Wkk5JTdNRFNnP2xWK3s8THdYeHhYM0shKkU+TWZHSURlKG5MMyhPZDtQ
WDR3RnJpSmpVdWBDdFg0anZ+WXRCT2EKej5YVy1ffE1hSypXMHVTK0leWFBZdD5FMmNXc0MxKHpZ
TmpHKFJ+Mks9K2JeKypgSVFsdkZfI0AkT0FqWFd0JU0mCnpERSFVZ09CY0BFIyFxWFhyb0kmNXk2
ISNKPDs4P0YpVHtSMWd5K0lEViVpSTBYZFo3djJRXn40Z3xtc1EmVUFOPAp6Zj44PHMkd0dCKnY7
I3czMyk1JmhaQkxKPyZyRHwodjNLfG9QJHwoQ3p3MVQxJjFiJHQxMmtue0VJWiMraW89RHoKeno7
ViglYUltYmNYRC11O2N3Z0V5bmBWfEFyQGU5e3FBWSZOUzM5cD89P21ge2RpRCV1XmBmd1o8KTxD
V2duS3tWCnpqJCM4OVBxOWZZdChoSiNKbyN9PT5kUD9gPUllclFaYUhfMEcwd2xyK30yeVRgcDc5
bHchenxfencyRjE5byNqQwp6d1VRdHo5fDBVbzc2R3BKP0B2IU9pJmcpUktCOEk9SVAyVUlQS0p7
VkZecmx3bkFJcm55fkA0OzRPQlFPYVVzYDUKem5MbXgxPEdIdXchX3pqVVpmMkBFbSVPRVc2JH00
OytvIVBlNTE7YzNtQ3YtI3dsM2BtWE1OUWZAbXl+LSVJP3h6CnplVVQ5eFE/Zjg5VW8tTiRfI193
WmQ7TzU+YnJ8QzE1QktOIzhkMiQ8VVlNQmFsZ2lXaihHc0pOcXxqS2A/OUYqbQp6bGIyMT1MUWp2
PzRCY0x3KU8hNXp1N3UxJHFNZV8tQjA7UUc+fnA3VU1zVFElVVRuMTB3dkZjST4/aDNnKGM5fWYK
enU7dXdKdDdmYkBLfWJUdEohRmhHSUohbmB7I2xuKzhhPV8oekslQmpXdVE+SWVkTmFKNHBZK0Al
KEEkI3ZZfChyCnp4Kng7eHpjMUxFK0hWRH5gaDV8JHhEYTFfI0JsP1N1aUlpQlVKViZiezBBJjxI
KDM5PSM5cjUjJGVldXRvcjd5OAp6bjY7d0tYUmc0KEhwTiRWaV8kPEw/TEB7K3NZRChPI1ZQazdG
UnBRK1NLcChlbiZvWj1pNmxOUm5QQFAoKj5uVDEKemFgUHRjNERQPHhpTS1kaCVfaUt0VVZyQ3dJ
RiY0U2NAPipfXzVTbVh0YShXR2NKfEhuXzRKJEZ6Uzxge2s8bEJECnptNiZhe057YFRCNVFxbktN
Zks3eDR+bSgtISFJbXVgelgodXo7Iy1jJkx3PzdgSnZiLSFmWHw9ZWF6UzIxV1NsWAp6SmdRfXJh
JkQ5V2l4bmExOTNWMlBWZ0gmeGxAUTMzaCZgeiZBYSs9eUhZRiZEbW99SWhPTGdnOSNKeUxxNkIy
ZWUKeiVPKylYemNaKztVYz0zTkRvSVMwJTlgdipnQTw5YThjWmckaDYzNk9eVnMtJXlpazctMSg9
ZVNuRnMxJDM4b1VPCnoqam5mK2NDfGAzRHdjR2c/dDxqeTw7e3F2ekpHNyM7XktuRlZYPjs0YTtz
bGBeaEw1Nk9DaTckPFZUWl4qR0pANwp6SHBkdGdJdjg3Mik7bWRAS21XYkZxX1R9JCl5MHRkMU8/
V0ZoeENmUTJUcTdhQW8tJHF2VUFMOExifVIqeWc0cFEKekI5e0RjUjFwbHFtZTNRO0djXjBzPjx5
aGZRNGZ2R1RHdUtwXklKKXc9YSlQNWo3U3grWmxsRVY9aVMtPUFRQFA8CnpRJXpeND5jSThvWlV+
THZMaXR4SlE3ejx1JH1sVn1wZzFqbG5XJGFaYTNpLSs0YiZZUVYqbHFBdzdxWWtAUXZHbgp6UHA3
Z2ZscnFhIWRSOHtqbjBpZHZIJXV8dFg9MjFAX25EcnFCNF9qQVchfUVyUDI8OXY4MWtDOy1tfVIo
WllkK18KelZiXyFZdjg/KWJpfDtpWjlwYzdxPmN9bElEfiUoSE9XekYyeWRHfUdnS3xVYklTd2o3
SU5LZ3koMXIxSWxgb0NfCnokIXtnK1Z0SEVwTGhCaXc8XzNOMCRoNTVUaSR+OyFCaXkrdUVSdyZo
QGMmMjROamRpJHFoTHdhazJGPzZVJlE9fQp6T0pkSl9XcSF1YCFPQjJ4SlNtYDtzJlJuIztFTXoh
ZSk2ZWt1cXVvV3hYWWxVY3V6Kz0zP1M0cyViV2MzTVJ4d0UKejVOZXRYbVA+Mm5SKzYrXllWfnol
LTVDIyQtVyk0MXFVVlZaa3NeWndTWihPaGFWOVJ+QG9gSSk2N35vTVEmdyV0CnoyKHxnMSpNQWco
KUp+JTMta3VWQj8xdG9EWkMrKHBENnpmVjxuUSpWXk1KWlZHP1NGdys9ISlmWk9WdDk0VTlhKQp6
bXc/KCFIOTgtfjxnZ3JnNzNJcFlhZDNUdEE+OEQjKHlzUztwMmM/dmZqXjJFdzReSE80KHBaQiQh
VGNxYD19Pn0KemswZFQkVVBjVCZpMiE3bChYeXBFcG8zOSppfHB9Nz5ZMG1Ha0pyQ2RBcmUhS01n
azVtZXMmcFlhUFFsT2ZoSkM7CnpBS3RfTXt2ciVzS3dEaHdgWjA+LWVqTnBDXlA/ekhgQmR8PFZi
JTBJI1pwSl43Und6bTxhVnlWRy1Xb15eSTFZcwp6djUjSUwpVFhOQ3p+WSMjREoybWBLRnVwZCg7
PUtXNTJoTVdGUGxlM3pVJF9nZEdXYmwlTHVXSl4obGFQOHlvcG0KenpjMT9HI2hYX0xHVW5LSDIm
YkJePDVkcGVtTyMwMUF4JWBLc3JKNWR7aFVQRVNwPE05PkdQYjt3bD14TkpMWUA+CnpnM2A2MEB6
T092cT84fEkoUntWTjlRV3c2dGdaSlNxeGI7aElhTDJyVSpATnw3S0A8WGJ0I0l8UiFXa0hZYyZt
ewp6UWV8ZXNAQVdTNXpBWVh7bjAxSF9tRG08eU9QWFZ3e2NyOGMmPll5dlpSVUVBJWtzbktNYTdz
dz1TSVZmQFE7PmQKel9NMHVRVWZae1B1e2wmOUJKZy1nT2Y/WXxwWXNyMzF3Zkw/K3xzZ15xMkFZ
SF5ZSElZTHszcz00aylufjdTJjlTCnpaaUxAbnxBeXw4Jk83ZyQ/YGY1OHR6QmBxeVVHN3JSI1Uw
emFzcktIJlEzKHZOXzhXPylXVmJiLW0+M0EoMTlJXgp6Z1NQbExIRUd2Z25vNW5XaktxMGVJTTAx
bjtMVFNxZChjPHJjSkQtZFkraW42eD1wblB0WjRSUk05bSQxPzE1RHIKenYlYWhXVGIxYTNpdz0l
Jjl2aFlGcGhnUXM0M2B2TklCZi11KFJoP1VVfWdPXjhicnVxYFlra0kodF9VfU41cE0rCnp3TEx9
fj19MkYoJGQlKGZpPF9ZdVhUS0B3WXlvfDM4MjZ+LWlvcVhNXkpGX0ExKzBna2JATDZaTlVBIzsk
fTM4KQp6N1E5flNHS1dBezJJcjZtZ24yQGpmNnJ8OCQwdW9Je3NWSXs9Y1d3RnhUZ0NyU0YqTE0/
dGFNSnt6YnQxcXF8ZysKeldKPXAmQytqZ2VkQnhgfTNPdGBANj5xZ0VOR0stOGx5NiNETGZzOEw0
dzQpbldsVW9PZHxReWV0fGgrb3hqS2ljCnpCd34ySjxhfU9DQS1KQjtmOUMxfFRzYV55bzQ0VSVi
PC1gUWtwWnJXdH03fHRpUWNPdE09MzAxNjUkNzZFT09PIQp6UnZ9SEhNJVhiMkFHPlZiKiZKeGhg
KnooeUwhUGwrSzlAYTA/SilqN00kZ2xsLXRhOV9PTVdQRlk3fihjLSl5SkoKenAmbW5ZUTdxSWRP
JDQ8fHRfMio+TEppJDt4YHZvc1JVfm0/JFdFVDZ5fitPcShiYlN1SEt1VGVBWjhIJV8mPEVaCnpA
flg3TExGc1khPm1fVCkhcWB8WkNqTXozMmQ8RnZ4fGRec3JfaXUtSlllUz1mYU1MPmpMJDQ4I213
bHNRb096TQp6bktpQyhZUmxYSzA9OzxIX1ExZHNnNVRaKzdjV35wUn5LMDVwYlIoODhaQVcoaTF6
N312PnYxPldgR0p0TGp+T1AKeihWT0dCPk1jKk5TKn1ARTtDKkIlRURFM2VrRSRGQl9eVU9aVStC
cT50ViZ0YCo2ZnUod1BvaHU0RGt9WWNtMDZ3CnozNndGUiReeFUkKVp2XyhMe1FsYjtMRlopY19P
X0VVczMhSTJmYy1nLT81PG4lSlZGJXxEJTRYNn0wQztXTylpNQp6an1LZV8oY2VWMTJSbFRJaEx8
aComO3ktUG4qaHhgKFVkRWo0UjwyU2YzJlNpYGBQQCp0JCg0RUc7c1RBWm5mQXwKekhUeUd3e2hJ
cmU9YzdWVF40OHllRE9VU20wKnImUWh6UnJ5d3FlN3o5R15xb3JPYEBgMGgtaWt1X3NITTljdHRN
CnpqfH4wTzhwTWtjTygmYipqb0ZYYTU0UFAkJDhEY0dsPFRESGVMeit4N1Z5amllWXIjSndQQTdW
VHxTdyYxMCRwbgp6ITthcVU/LVdDSHZtTDxTRWV+d1ppZkJZKHw0ajN2O1IoSXd1TGROTFlLJTlZ
blgmZz1efD57MFV8eSlIQmx6YCYKem1AYCV2N2RGdVM9XkErcygkalJqJjJWe2xvdXstc2lqc1pA
IyUzRUo3NGtsbmUjNkFpVFB1d3s8ZEtpPGoqeHpPCnpMRmhFalJxbVo0TW1QSUpud3tTUEc0M01j
bWd+PDUkfVNsRCNAU240aiR3fSZePkxWYnFgNnBOKylJYEFKUjliTQp6V2ImTzAoREgyPmtzVzA2
V3A/aG0yaHI3U1l9OzVYXmxaTig4MEhyI2VFT0dIODRge19MbWlfSzg9bUpVQnZ5STgKeloxc0Jj
ZEhFezcpYUNOfCZnSjhYQUpfOzBBdzl1cEEzSlI4anZhUFBOcnAoentvNXQ9JXRmLU1TYW4oTmFP
Z0kzCnp2cUtrcjA+aitue2hDQzxuZ0ZePyNsaFRiUF57O2VudnY1Yll5a0pFYEp5XkMjM3RVbXlH
PyshNmxmVU9JT2RoMQp6ajxoWj4lZW9EP0U+bk5leFNTWEBFNylmUip1KkdoV2B6PT1NIWYmfDVJ
PVd0KGY0QDE3Rm04bSQ8KWVMaXkoUHwKejREZjRsbXpJPm1TKXQodmNiPkI9XiReX35YP2FSVEc1
cHk8bTl7MXZeWU8mI29SOGJ0NHtmbiZ1O2IzdElTQEcmCnpOJSV9aDcoRCs4JD9uZ3NmTC0lQSpf
QzQ2d2dyWVVhNVY9eGJmeUBPdkFUd1crNXN2WlhET1BfTWFoKXNJOTl7QAp6ZVRtKT45ZlRSeVhP
P0F0TTRXaF5DWURUJEx0QHtJd2o/QjJyQXl9OCZkTD84VDAka0FoVjMqOVg/WHpCS3E/YH0Kemwk
RmdJcXNrZEtKdk87X0E8aEd2PkkmOyRBPyNPME5XNnlocVYpUjhTRko5TlRBS0NrZllHLTwzM3BI
bztgOUhwCnpTZzcpantANURNRlJiMkhAa0hNNjB8VFBCMzA5JmBiQC0jOU9tRnJwNk1Rc3o5V21m
JFckPFMkX3w9VX1vXzQkRAp6LW5RfT5ZJFdjSG83TW97O2tndmppXj8pS2J2ekVTdSFGMWNiajUx
SCtEbVYyNHs7Q2Q0eX5PYmNeSzFVZXsyenYKem5FY2xKS0JJaUJVd01PSD9QU3lqbStEJEYpNUZo
KE9tfElySk5wS0BGMEl+Mio2bHU1NHFvZlFvaFZ2VmFeSX1qCno0ZlNYOz1oSyR1Q0IoViUmSEFx
VE9pIU9CP05zRmx4KGlpaVotUDEyXkF7MEU/PHVrU1NTPTxxXjA2eiMlcSU5Mwp6KmlsPkRxQXsk
OUhYN2ApPCVnfjB6RWhrWVF5JWF9e1VxLUNWc0duPCZnNXswayhRYT0zb2k0RT92P05VQnJfJF4K
ejc4dVVKd0pzTU93Pl9SbjBmQm1uP1ZNKHxOPz49Y0lqK1NOeGZ8ZUpDKGskUVFIT0dFNEZmez8z
QX5ka1NzRUFHCnp7OFZHOWZCQVF4TjE5dERJNyReLSZfMVp2QE5JYzJgREBEX2M3VVVlaj9OYnBH
RFohPyptfmlqZHVKUlZpOTFXQwp6Y28jUF5eYlI5TyNWfDd5ZGZsQ04tZ0o2SVJ9UEpoQH5PciV5
IzZvUCp6Rm4wRHVxJjI/ZUtjPFZfQSlsJjFWT3gKekRReHxPM35YN3htaX5PMSNKZy1MczZkJEkq
Vm9+Z29mTWc9dyk5eFcoI3g4UWVjXnA5ezlzTFZRPSR8LVYpUSZECnphbSZJSlh9NmRPNTM5RWR4
OWhvOD9qdVNqanc4Mjd6Um1sbVhYYXc9bEJNKXBNKmUxYWFSVUJiVW5fJVY7fkBHagp6bThCKTB3
JktJfVBwd216N0p7Y2RlS2gtI1hMbzBpenJpbUltWWEmeStUcCllLWlYZWR4dSR2a1AmPW04LWtB
QTgKemY1OSZVJj0tb3BgNTFacFQhezdeYz9yPyt6S2JvSkp3RT9MVCpTfEJpUj9lSmQ2MCsmKTRY
ZmFYXjNTbSltS0RzCno5bzUhVy1ScCNVe2xjWlA4UjxKTEE1O2M0bHRXfnYodG16aC1kZ2wtSnQ4
LWNNUU1xMVd8bUpkbEEtNGF3eDY/cAp6ZjNhdC1aVGVoQ1V9VyUwdHY8VlM0QkIzSCF1UERkK3RK
UkIhKlJZfCpiYVJydDhWVGNDIy1YdzhmSSQqdmhNYmYKem87PEBpV2RSV3RFT3k8WiFUTD9EPmhz
R0JgRHhlcSopQEJYK0E+X2ReVzJtdGQ9PjxlUzFIVHEhJSotRkAxb0dNCnpwTW1gaCV7Z2BJVE8l
ZWJFZ3coS2EhcW1XJnZvTnZXakY/Wm83a2QxXk88e0hpUms7MUhLfXpMSDlCUkNeU2koZQp6N1h7
YWcoSypeMm0wY2VtYiQ5YUZSYmQ8THNvM204NFF5bmZIdjdhMFhIRDJnNkRCI3hiM3RQLSMjeys2
UGxfelcKel9xOUVhO0FCXmlAI30yeD51LXFOWDxGKkQpJlBCK2JQUDdyOVc+Xy1UXnNZYFFWakxt
VH02MmgkUDxLZ2c0Y0ZkCnpITGBaU3VJO1AoPjEheTlyMkI9aFomdFVee25LXlZwM0F5bDVWQ21S
dEBRazczTyZ6dCtPT2E5N1M4eFQ/SClLWgp6R0hxeCYpcnREOWpiQngmLW0+MmI0T0hJREx6I3lN
ZC1QNTU8I0xnQW1Ycl5yNG5EMzZRNy1uaSNBVSRvdyNxJS0KejVpcXZ5OUNKJllOZDFiYXB9Q0VY
dXo7Vy1SWVpIaHlSd252XjtRbXVEWkBzNSZeem54a3x7cGUoaUBjZ2ZFPlliCnokNUpTS29RPSQ3
SEhYdVU2Kj1eYHQhPDR5S2R7fWhYYmRrSkVmSHxLa1pSSWdQLVUqc0JzflVlelFDankra0tHKgp6
cEgqPkRGVm09LW87VEZDd3gzZDZwR1V7Z1lzT1ppYU15ZHZHd2BFXkA8anFLUX1FZ2JabllxWW9F
OVZCdkRVTGsKenMyb1huJUduJkJVRzcpSUlBNnh5JiNaNCFTaG1YaU1Me2E5Ny1hR09GZHNYI3o7
V1AmZTQjXiNseC0oQTxvTVlwCnpmMDFuYFN3YzEpWDZefEAmaD1jbDdWTnVBdEdCd3NXO2JMViE5
diFGWCN8KVpkWmVAX01BcE9KbH0tO3YoezhqWAp6ZnllWXJEWkJJbTlSSXpeLSFBY2lCe1p7Q3hL
b0ZTZE58ZWpJZ2Nsa2ZfPUROY0k2eEdhOV8jfUt8SnVpe0drY1cKentgLVUoTXw5QjtDeDhEJlhG
c1BQYiRkaHIkI2dzREVrSmlsRXJyN3wqSTYhaTQlPXJnV2FAa1Y+JFBhcGlJMnJ5CnpUa0kqbXVX
Uj9KPVYpUDk1cFFSdnVgVHU2alM5SiFweTROWVBrZiZkRV89QjhjO2FGbHM8Y20oYTZhKjR2WTha
Vgp6K0Q2XzgpKXhiV2g/bWEyaz44eiVsa3cpO0tNRj54eFgpanc/ZENkYkRQMCVYb2k7U0xqMnxp
cDt5Z3ZlamNgaTgKemB9dEVEdHh0YE1uX2V2Q1JsNEQoeTZFeS14aXZxbnJ6Jj5rM0NUPWg5JDA/
OTE7Uzw9ZGsjNzJpTXE7VGJ4SEVFCnpvazBhKFhPPn1pRFg3ZWNgRGU/aGQrR09QeVNrV0gyP19s
Vj1SSWM9MyNUOF9iPjBsfkE3WGV7SW9iPm5fbnA3dAp6bz8oIT52cVIqY2ImMmt1M0NiIWZGdnZU
fXgxWll6R3VQalVFV3xhLTg7dUMqYVkpLSlUZ2dqMV5tZGlFK1Z9TmsKenhlT1JsTSRxazt7Visx
P1VsdlkwNGNwQWtjbiRIe3A3UEcpQSRzYlptJW5JT2lyVXhATnw1aTQwUjtmYnJeRTQ/CnpDSGxV
emsyRyl6ZHV8KlpVLT5TMk1PKlA/PjZhcihOISZaPDImPXkwZ3RhMDVvZWA1R2dIVF5gOHF5VUM0
R2FAPQp6YStfSyZKPFBNSGhUITVyand5OzAweSUybSRESSkhd2x4WCRfIWh2JndZIUZENmY8bUJr
IUtAd1BhK3N4dWpHbDQKemB2Zi1HR1Etdj5OcTtJNiN9UyEpJms+NC1fK2F4UHNIclMqVHhRZ014
QiQzZiRfVEdJVSVSdWRReWRFZ3JCUDF+CnoralNweDkoQGd8PEtsPSFWdCtlYHhCZWhXUDIpUCky
XyhFaXAwS3FUe2NhLUNWUUhiIUpKcTZaY0whcCFKKmdTfQp6V152IV9EdyprTmN+bGYrT0EwKVkq
SkZXRCQkWStJRnwtZjd5VyZfRGBvbkooJkpQNUhlZlRuUiNZV19iS1BkTkQKek5Wdm9XdSV+R0NP
Wl85KTtwenFhPnAjfCV4NC1XWmgzd2B1M0tOel5iYDtzaWZFQ3tTPVZJKipTfGZ4cjdDKWVMCnol
JFBrXmR1dnpfQjk2RitqVkdSKGh4XkckLXhxcWtAMjNzYURKVSUxPWNVVD4hS24hK2I5XkAyeHhU
a35mcDw0Ngp6QVpVYUlSKCQmPSleRDVqSU4yWlgwSyN1Tmp6ejFTcDhLayFLSE1tMmZOYkBaQ2R8
VW9ZWFFvcndSdG9SSn1RTmoKeipBNUJzXyYqJmgoITFUIWJXSyZzP2J9VXQpNEZnfVZWTmkpOTZs
WXQ1UzF1T0NaWj5Gdl4/fUxhfGdjQlZVe3g+Cnp0aX43ZWAjQTk3Qk1rTDxpRzh0PHVkZ0EkWkpy
bGMtUV5lND1rdmsoIz5ic0lAMktGKmdmQituOXVJJSFNU0k7Kwp6Z2BHN2M9UGM3JlAqOFZ0STU3
fTVfKWF7bVhmITY3WG5DQS0zdHV0UUN3aTZgXkFnXmdPRSM0aTBVclA5Pm9vPEQKeiV0ZUViUF4l
Y0woPE9KVzNvZCV7dUo9WURlQ3hkakkzaW5GZWpDO1gwMTk3NXFRPSQxO3BoQkRBakxTOUQ0aVJB
CnpsZSpxSXgwSCNQcFZLS1lRY2Jnd3BUfVBXVTg9YClWPSNwflk7OXxkWF56S04kcUFYfERAQ0FT
TFYweyk7UztNcwp6M15xUj8jfkJwQlIhfngzVk8+MnxeZlBlSkMlREd5UkV5NShgfFNuOVdnT0lZ
LUlCZE45ckY4b1ZWVnU3IXFrVjsKejJMeUtYUHs5XmZERWMzZ0FCSXh4I297QzRYeFo1ITZxQXAy
KHNlbzZlZTlwWjBeXnlQIVpaNX0yRTdNRCpRJTg8CnpeWGBWfjhpVG93ZUEqWDwyJHpeYmlXVkIk
Q0pHWnNCJkQ/e2VwcEoldjdffmQ3PjluTjQtKEFgd0BrbWtOMnhHegp6VEMqSXstanx2bzhObU1J
Zkh6dit0Wk5JPXs3UTRrR0MhLVNAeHlWaCtTbmdJIytNRHpCIWZUMSFWRXBxKVM1K3EKemN6RSRO
VWB6PlR8RHtEI0hnQW5PcyY5UH1YREVVTTNHUT1EOzd1cnF6MlJRbCQ4fDgjJnJofCotJDMyT3dC
cipCCnpTTFUhWmIlU0RtSFE5Y15ZSWNnKFoobC1VTXUlI3wjayFLLVF3el5NVnBaK2tTdmgzP3JI
YkBjLVZAQndLbzJMawp6NDhnZmNlVTBKMUVSaHMoQ3A9eiNJRTwxTShuSElAVjloZGY8KWJnaDdN
MSQ5TWtCe1JYXlRNenJ9T3didnJIPCgKei1BUTw9KWRRciRDdiYyfEI8eWFYNURVZmttI0JQYSRN
X1FGOT1CendQPzJtS2Q2PEBtV15AZDk9b3Fsd3s1dTwyCnpHK3E4R3RTcWx5cD00S2tRQVVPJlVN
VD99UjhyPz5vaT5uQDA+fTN5Jm1ASjVVTEN4bTZIPkhWIz02V1JQY2s1TAp6VlplWVVEI058KjVX
ViFWUklFP0VqJkNHX3IjalV6cWYjUXxqN0VgeTB6Mj9IbkZUO05EIVI7V3l5VHRBcnFFbl8KendF
RXMrJHAmX2U4TT52JmJgaHpNO1VqIVgzKFBkVW45bUpYVWU8LUFDWHtlMUZSX3B5V2UzUVchYGFn
JkdXe2wkCnp1WVlIeVpNcWFUVUAmO3lGfnAjM3FaViZaKCM3TylYNlBqNldeJWcxdUtqdmIoKyY2
UXNWOVYtejhyPzJlVjYkQgp6RWEwVHNydVN5IUNiUzk3dV9VNl8+aWtaez9AVWZ5ckB0bj4rdj9J
SEMkbkFWXytPZytBVXNnNk5HTlhRezNKSGYKekxfdz1DIzE0VTFZKkwpNilGRXdWNClFU3VjV2FI
Ylk9bVpDNEolcU5hb0w+Kz04I2QzZClWMXVrQHUzNmRHUHFKCnokIUFaNF48bkp1NGY8bDxHSCN+
OWxyME05Mn5tWWNadnh+UE5hby1VMEh9KmBWKkwxdio1SSFFMlRMMG5idXVVUgp6dGowPWw+ZCNW
WC0yaWs1LVlYTFVrMG8tP0MjO0hTZUx1PFI1QUFue2R3R0ZxKyU/SUhxWGRAOS1xMHA4M34rKl8K
emx8fi1YdDFQdUxZeF4hWFlwV3B2azA3fkUrOXA8SnBkUGVsYlp4TUR6RyNpVzhZLTJWT2FhdWc+
Tnh0KFJaXmNLCnpvZUhwVjA3UElIPSNvIVklJlMtVHo8SV5gO2F4fF5ufWMkIyFMbG58djBGVz88
YjU+Ozc2Rjh+U0xyWkhGeWBwbQp6ZjZ2N0o9PTcmTkF9Pk9DZFk7PE5EZF4wO04hNGx0OzRTNmwr
PDg+YXBASFNENEdwWUZAaGFqJDt4R2IpITJzNiQKencwSlVfYz5VTTNaVyFfQ2wkOXVUb15hRjsm
PVBrLWQjZnJlZjdKM2IoJTNJV1B9YkBMdmtsfk1IWit0VVRNZXJTCnpzYmppNztBUyVxOSpiajxu
QWxaMiE4RW9uVXk+UWM/KVopUSFEdWxidDgzVj1eSEtHbTBpKXFzRWtZJmt1S3pJXwp6PXA3MSp4
OVJZWGo1Mlh3IVNiVlpgdTY5PFlPLUxRJklQZnIhV3h9RT9iclF8MGVjX2ZnMlEoYCV1I3xKWlNI
N0AKeiUzK3FCJHcjSTFWKG1tflokZkApQnFgcT9ibmBCemVGZXJUOSE5TURgQkcwQWNBd2k+Umg2
M2d3K0hiOXdyY3l8CnojYU9rJmhfbTcwR0lid0FIXlNuQmZPeGotWmxRejZXfnZwKmwkYClpU0ZO
YUktY353UiEobmNsZWxxbH5qV3xKUgp6SFB7MGFgPkpDSDJpXldQYUxeeF4/K3teZUQzKWF7KWtB
YVp5MjlrQmB7RmgmP1g/UnM7Xz9USzk7Z1lRMT44KGwKeisoMko/VyUjUVEtOFleJDleVihDXmN7
b3Fnfk02JGFAZSVnZW1OeE0ydzwmSXhfKFhnYSR5SHtuITVLQVMtSWcwCnpvbXBzKThRWkIzd19s
UnZHWDw9eFlEM1J3JCp9SkRlQWN9R1RCd0tGUj5oaWokQjdpISk8bWpDQDJHU04/OHkjXgp6Tn4o
RXl7MjhrTWRGc2pTZHNjfj13Wl9AbTNuU2MjamdyVzYtKWZORzcpUi05dnNhWWRRciN6WTVpfTVV
RDltPHoKekV8SmJlPih7Y3xHcHskVlgrQiY9eUhxKE0lKDIyVTUqI0RFS2xiaFgrJHtpdUh5Rz5J
O0defExCMSkmd3A/PCtNCnp3WEw8ZCtLTkYpKT81YCt4V0B9JUJpSF8hUlFoRmtZKz9Zb2kpdkcx
YFcyRmpGQWtxfE1xbjE+QSUqMStyUzc5fAp6Q0Z8LSEjKV5Xd0hOIyVGe0JsRmNmMD56fj5pMXNN
PUEpbFdhT243WFZRV301NmpxQk5YWjZEJEI9Z194SmZGeiEKemo0S1ZkOSh6YkMqfFhnUj1DPS1k
cEFnUkpjMCgwckg1Y1pueDsyXkFzaz9lay0+YVMlVndFNypyMShSSVdWcDhnCnpFJmpfe0VIUzt4
Tm8xUTMpPUA9bGUyMml4N3VpbjhVT3Nid3QqQXkre1g9eUxEZVFkdTYhM01ERHp8a3N7TU11Uwp6
Y05VZlQwZV53b2w5YFhuMTthfnB2M1V1JTMkQUM3eSNGI1NFemsxUFd6RXxxV0BeTjQ3TkFUS2lR
XmxsWUt4S3QKenZ2MEt6e0VpKFQxOVFeZXR9fktFRGxtPzc1PmN7JWQlPkpaem49fDhkI0dZbnhH
IzF8cE5palN3aHg5LSZgMGtyCnpqclNYK3k9TXJDSjM8NT91QmFEdUhIP0RzNUhDbGA5TGdwfkd9
SilvI2MmZ3MwfkJneGVFQTdxPT1vdldsYz9wWAp6PSZpWmkrO2FkJkV2U1B8PzVuYFBrX1hWaXJP
QXNjUClmYXc1UmIxflVhZF4pR1h2cVRVYUBKT3pzPFIlUn5SQ0AKeno0WW0tcDIpQkw8SF4xVFlg
QTJWP01meHA1b0hCSj4jaFEhKEltV3g9KTwoLUE7dFl1RGw1MnRFWFJPTUM7QDsyCnpyV1QhRUpI
I3J4dnhadTFuUipoKkFJfDNDWUwyVF5CKGwlSE5QVEwyaG1KJiNmd3VyK1gtQnFZKUVveHRYUHle
Mwp6V2gmVWAwWiowPUQ9UWtuVk85PE1qeypkOSprPFEhbEtVXj1aYGBVPmMwVkBLKl9BfXFuR3gj
SWs7VyVoQCgtVzUKekxFKklGO00/YlhUeCpwKyMzNGlTSSZUNnxycTsmXjB+TE8hQU9Ec2F1SzUw
PmhwWk9XZVJIJEBhNTJ+TkkoNztzCnpiSVo3JGVTZGZvNyt8R0dtb2tnN0c+WlFhKG9Ea0VoTHBv
KXI/WD91STJkZ3tOTDQlS0lVSDdxfEdrVCg0MWtMYwp6aTdFZmQtaWooM2VnPkZTQFQmeF81Qz42
UEs/aXMjaWgrbCRhcChpJkBwbHxYRD1YUngmZlRScXVHMSozUlY1MkEKejQraXxnbGEqb2B0RSRy
UyRLKipeVE1LNHE4RGZoJlZTbSRuLXxSdDF5LUVnRDEjUVJTUT9BI3JnMzljWDZ2SVZCCnpwVXhg
SiFZZUE1amRzWCkwWl5FPVViMWlvTSp4ZUVgfCgtczc/e2MxMEVpPTBGJSNEejk1UDRMcU4pM1hG
fjstNwp6VkBFTFRqQVpPTTBQJER4bTZJa3ZjcGA4Q2FiN21XamZobGJNS2M+NE9qLS1na15VKnpr
YTVaKyQjZWhRMyRNSHAKek9QTFhzcUtAcUlFcFQ8amo0ZWJrPyM3MzxGVUB2YyU9NDRfdFBaemEk
K0NMXyRXZFZDbztwIzRAOGVUaUVrPmFjCnpyd0o+Qyt+VDMlYjxqbzRfTylwTzlWOVZRMWNCSjZ8
SjgmdTFyb144ZWojfGgwZml7cF8jaDUxUVgjZ09xYC1wNgp6PGR6fjFqTk1gVFdDe2hSMFlQNFIp
Z0RMODJTWXE1UnpIWSZDVH07cU96SDk3Q1l9NyZVSTlScytJRmlFTzZsTkAKek4zQipVNlNQZUIw
eHowJkVSPDtAdzFSRFpzelR8VHpeT1FMQT00QzRVKTMlNWJZcUBzamxoVzJHSTJoWXVtNmE2Cno+
U3d2T3VzPXpkPGxpQG84PS0qalkxQit9eSNnRyZyVkE+NWd4fkU5SDh+WlRgaGFvcW5VMnJ5PnFQ
Y1p1SFZJYAp6U1lSKzdsP0RkfWVfNnN8LW91a08lKD9QVDJOXjh7b2Jzfjl6UDF1dXpzREl0bEU0
V0g9IzY1Mi1GWEo9bmJ3Yz8Kek5yekFNVzFiTXRpQ1Y9VWtMM042aDYoX0p6RVcyKVFQJiVNJTtM
byl2Nlo0NlFYaDB1WjFxe0h2RXQoRSN5PEtQCnpAe3l5MTIjPGVuN3hufnJeR3BPUVZvWnReOzN3
eVd1YUw4UCkzfCQ0IXkyQUhKeStfOzBBaUJ7Q2hrJkteOzN0TAp6NCVQT0ByPFUoNXFrPElFNXBx
Q15zTV95XmAjbz9rblBrJllPUlQqLTI7fGNNaCo1clBLfHEhJnE8ZDR6NHEjJUQKej9AQFlXWDRu
TXNpKW5QczBKRmo0JTQlK3xkNFEpZUtOJXIzKyF6JTFZK1l0KispP0tzYFJPe1FaQm5NbmIzK3Bm
Cno1fjlwX1R8KUlmbHxOdz4pNCRCU1NMWWxDP0xAPDRAdjE9Q3Y5SU01SWYqYmExP3txMyppeEl+
TVVFVD0+PXAkdAp6SkcqRGJLd1RpSmZPWHlJODYhdjMlQnlnN1F0b0E3MTQjWitqVDJvN3JrciZ+
cXI/JXMxUXFUTyp+dCU3VFo1TUYKeiNrZXhRZ3N0SiY/eW9wOW1VI2lrNmxsdXFtSkNESURUKXoq
Zk8jUHFYXldlIXNOU09+aUphWXZSVkA8cEshcEc8CnpkNkRsPCt4eGgzdklBbGoyWFVVU2YjYFVB
QXB+SER4VmZFb0h3VW0pX1QteGg0Nmd4P1V+JVk7ezQoN3NYSF9oWAp6NjA+dV5DIX4oTTsjXlJp
bC0lYUBsTm5vYSghYGJMMDRHeUBqJjF7KnElJkIpOG4lfiNePjZtMHMrb3dKWDV4K30KelloT19L
Sl9tNz1FfE9ub1gxZlYyUTxGeCQ1ViNVRUNBYVdxS3x5cCVPKzNXbF5KRmNUMXtlR01CaTNHeigl
KShNCnp5Kj15cGJYJl5zTE1+NzchIX48Ul54e3VGZXgkNG4qWHczPXJnc0RCRE9uciRmV1M3Oz1r
WEY2JUl+eikySTFjSQp6eio7R0RJN2dTTkQkRjR2ZihmV1Y1fCs8LWZ6UFVFSEZ7bDNmKzIkeFA2
TmRmez4razN1dFA2TiRWP0ZoWTxYcGsKekBnWSY/Oz42cUoqfkZJTEgtdWlXST8/SFF5OGJTISg9
dlltbENxRVA8SHQkNENfbylhN3tJWGxqWTNJc1FHaDh3CnowZkZOdVBPbTNxPGtLPyQxSkswXzg1
fCQqUFpFdlUwM09nTDI9Pz5PUXc+MSRIYDRyQmxMUVo3VmohJHwrbW96TQp6JUJGJDE4bzI8WjI3
a3IqckwoYDxgSExMQDIhQWM+NH08KldveGlPNypHYz8hcD9qQ0RrYmVWPXp2MCo0O1BofGsKenpM
IyhPamd8ayMlNzBfIXpkOEReXjI2VD4jQH5WcDBFRUJncm9ZOXd6b3A4KmgxXzRzO0BgVVItPlVv
bmswaz9CCno1bFoqai1lTHtUXjxzUXlNayF8cmt1cExYZCFXLTlzWWRUc14rd3NMX3M2Q301aCZO
JU9uREZRQjw0PzJ3czFSWAp6JT1XZF84KShQV2JDV214USEoSXluJnlDd3pyQ3VNUm8zPiE/UlBF
eGUkSyEwNSM/eDUqcGBDNEpPPkw0JWdqWTQKek5qYlVobVBjOyo1K0JNNERoTks5ezA1Kjc8Qk49
PzwyOWJFaHFqQ01sXjAoSlAyQnBRekZvaVVkVCNlVCZjNGxBCnpRPXNueyVJRUpVZTZYS1NNM2N1
IyZlR0QtZUl+WGxNWlFNMzAtc345IUorT0Y8Z21GaWdFdyFFa3BkYmtLWUFZUQp6IWhKKzM+MTB0
fkAzaHlhdUp9ZFdWRzRZT085V2A3T305Nyl3QVlgMm87WW5zP3ZtT1EpY3I2cHhjZ355dFZ8JlYK
emFILSEkcFpSTjJxIXpzQXdoVl8kSiNTRWM2O3taZ2wmeT8+JU41OGNmd3Q/amBrOGlDUXF1TjQk
MmA0JndtOEg/Cnp0Jm9TMEIwd09APVg+NztwaGhEeVV9WUQ5Iz5SX1Ftd18jKktlIzFTaGxocHFp
Y2goSHlFTX5PX1piSm4yU3phUAp6djBxJXNQaU9kTjNZVWNyPEIleXhiblFJTk83WnNvOUw7WXBP
IyFBcUtLQDBPSSYkd2BKcTVwJmowXlE/b3ZLTSMKei1gTEkmOW5iZDN7c1goVypJVW9nSCp2YyFL
MWNHRVRpKXFLcnEwc0s3Q1U7MGBgN3lSPWdmdXpnRkopTTVQaUxUCnp7PUlQIyF+XzI8aW1jcFg1
OHZ1RmV3PmhNe1Y/QEdeS0xSbyhnYlRvS0VESElhTF9ZI3F+Tz03K243aURWUT5UUAp6b0FmOzFC
UlA9PXchVmZBeEM1O215dHwmYjgqSjJTUW9femNWTnczSF4tc1pgd2xeSXJsaFJmKFI5TD44dWA9
ezcKejhhODw+LUl3ajRBWUZkUXhhTSlvM25lSz1LPGlTZXJQOUxUMzROSTd7blpYRyt3KGwkUEhU
VlE+fGZiQHhHOGJGCnpLOE9rQy1oSlBET0dGdTdJNU0rKTg4bV5MT0VANXc4YS1tUWJSWjEpeXVq
PnlERmdTUyU5WXV7T09MKEp0c2s3cQp6ajRFN1ZwJm1HbFBCQytMRkpSPkpsPChpY0ZSWDlfJXxq
SnxzfFN8QXV5PSN6cFI5bGIrVyFXZWJ9cmRePW9+TkAKekN+KHx+VCk2bHJAfT5aOWdUKmNyfDBg
TVNAcF5nS05DdiNuOV5hWHtOTFpaaCMxen1SeEpXS3NVUDReZyhXd0pFCnpIRzFeOTNfIShxVkRo
OSg4KygjYDZWSkJrX19YKVFmXkBeZU9oJTQlPE5qcUVNfGY0a3hufjNTcDxmTGJGSCl0TQp6dzBq
QGVKOEl5WEU1aSNNPkJ7YWVJRSh8dyRzMUFfKHFhQnkpeDxPajQ2Y1dJYSp9VWw+e1Y1TERPaShO
fEdUc3wKelJBUXlteG9hKSheNnh1aCNQRkFfQG5jaFMpbEJIYm9yJVEkQXJIJntaS3RqUSZlKlkj
Tk88an0kd0Z0VDJBOE1CCno/KSNOOGtQSDcmantVUllVKmRFe0x0N2t7I01kJENeP1VydlI8eTR4
WCFwN2YkUzN4RDt3NklEdWMycUYwe1gpRAp6O0lyM35LVTBUTHM9cFYrKzNFQVM/az1jMXAhKHFW
MVd4ZHNeRSt8YyZ2bUl5cWZsODkqd2BMaD0hKkwoM0pYVyEKemc1TCs7JXNrb0YkVCo2eHApSUFh
QlgkbkNvZm5XJTU9ISRFS0x8O2xZKzlyV2xjRjIwZV5JQlNwJXRLP2Q1P3FpCnpiRDQ2S0NValAy
PytZQkNkQSZFNDNQO1NTLStzP01EMCY1enEtaiVBKUFXVzk+KmJRY05Sd2YyM0pjYXFuRkZ2QQp6
UUI5JmhVZmdtQWprdiM3dU1jPEw3I19BTFJZWFZRVH0mdH1jdVE2ZXZKbiVLO1N8bW9aZnU3eTVN
QjU+MX5tTzQKbXhQYUUqOXNOTUcqd2YraVVHRG9vSjh3JnMqblMyOUtVZFZXUldtUH1LS2VnOVl7
M2Z2CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2ZpeGVkLXRyYW5zZm9ybWVkLXVwZGF0ZS1hZnRlci1zY3Jv
bGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9m
aXhlZC10cmFuc2Zvcm1lZC11cGRhdGUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDg5MjUyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9maXhlZC10cmFuc2Zvcm1lZC11
cGRhdGUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitsYXllciBh
dCAoMCwwKSBzaXplIDc4NXg1MDE2CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA3ODV4NjAw
CitsYXllciBhdCAoMCwwKSBzaXplIDc4NXg1MDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDc4NXg1MDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
Njl4NTAwMAorbGF5ZXIgYXQgKDYwLDE2MCkgc2l6ZSAxMDB4MTAwCisgIFJlbmRlckJsb2NrIChw
b3NpdGlvbmVkKSB7RElWfSBhdCAoNjAsNjApIHNpemUgMTAweDEwMCBbYmdjb2xvcj0jRkYwMDAw
XQorbGF5ZXIgYXQgKDE3MCwxNzApIHNpemUgMTAweDEwMAorICBSZW5kZXJCbG9jayAocG9zaXRp
b25lZCkge0RJVn0gYXQgKDE3MCw3MCkgc2l6ZSAxMDB4MTAwIFtiZ2NvbG9yPSMwMDAwRkZdCitz
Y3JvbGxlZCB0byAwLDEwMApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA2ODVkZDFiLi5hZDcyMjFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTAz
LTI2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQsIHRyYW5z
Zm9ybWVkIGVsZW1lbnRzIGFyZSBub3QgcmVwYWludGVkIHdoaWxlIHNjcm9sbGluZyBvciB1cGRh
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjUy
CisKKyAgICAgICAgRnJhbWVWaWV3V2ViQ29yZTo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCgpIG5v
dyB1c2UgdGhlIG5ldworICAgICAgICBmdW5jdGlvbiBSZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RJbmNsdWRpbmdEZXNjZW5kYW50cygpIHNvCisgICAgICAgIHRoZSByZXR1cm5lZCBy
ZWN0IHRha2UgaW50byBhY2NvdW50IHRoZSB0cmFuc2Zvcm1hdGlvbnMgb2YgdGhlIGN1cnJlbnQK
KyAgICAgICAgYW5kIGNoaWxkIGVsZW1lbnRzLgorCisgICAgICAgIFJlbmRlckJveDo6Y29tcHV0
ZVJlY3RGb3JSZXBhaW50KCkgaXMgdXBkYXRlZCB0byB0YWtlIGludG8gYWNjb3VudAorICAgICAg
ICBpZiBhbiBlbGVtZW50IGlzIGZpeGVkIHdoZSBjb21wdXRpbmcgdGhlIHJlcGFpbnQgcmVjdCwK
KyAgICAgICAgZXZlbiBpZiB0aGVyZSBpcyBhIHRyYW5zZm9ybWF0aW9uLgorCisKKyAgICAgICAg
VGVzdDogZmFzdC9yZXBhaW50L2ZpeGVkLXRyYW5zZm9ybWVkLXVwZGF0ZS1hZnRlci1zY3JvbGwu
aHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RG
b3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEluY2x1ZGluZ0Rl
c2NlbmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisKIDIwMTAt
MDMtMjYgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAzMjEyN2UzLi5kOTEx
YTAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtODgxLDggKzg4MSw3IEBAIGJvb2wgRnJhbWVWaWV3Ojpz
Y3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJ
bnRSZWN0CiAgICAgICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gKml0OwogICAgICAgICBpZiAo
cmVuZGVyQm94LT5zdHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgICAgIElu
dFJlY3QgdXBkYXRlUmVjdCA9IHJlbmRlckJveC0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpOworICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSByZW5kZXJCb3gtPmNsaXBwZWRPdmVy
Zmxvd1JlY3RJbmNsdWRpbmdEZXNjZW5kYW50cyhyZW5kZXJCb3gtPmNvbnRhaW5lckZvclJlcGFp
bnQoKSk7CiAgICAgICAgIHVwZGF0ZVJlY3QubW92ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsK
ICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKICAgICAgICAgaWYg
KCF1cGRhdGVSZWN0LmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMWMw
ZTgzNy4uZGU5ZDc3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMTk1LDcgKzExOTUs
NiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbgogICAgIC8vIFdlIGFyZSBub3cgaW4gb3VyIHBh
cmVudCBjb250YWluZXIncyBjb29yZGluYXRlIHNwYWNlLiAgQXBwbHkgb3VyIHRyYW5zZm9ybSB0
byBvYnRhaW4gYSBib3VuZGluZyBib3gKICAgICAvLyBpbiB0aGUgcGFyZW50J3MgY29vcmRpbmF0
ZSBzcGFjZSB0aGF0IGVuY2xvc2VzIHVzLgogICAgIGlmIChsYXllcigpICYmIGxheWVyKCktPnRy
YW5zZm9ybSgpKSB7Ci0gICAgICAgIGZpeGVkID0gZmFsc2U7CiAgICAgICAgIHJlY3QgPSBsYXll
cigpLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKICAgICAgICAgLy8gRklYTUU6IHRoaXMg
Y2xvYmJlcnMgdG9wTGVmdCBhZGp1c3RtZW50IGRvbmUgZm9yIG11bHRpY29sIGFib3ZlCiAgICAg
ICAgIHRvcExlZnQgPSByZWN0LmxvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCA4MjEyZGNhLi4zODkxMGQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTEzMDYsNiArMTMwNiwxNCBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6cmVjdFdpdGhPdXRs
aW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbgogICAgIHJldHVy
biByOwogfQogCitJbnRSZWN0IFJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEluY2x1
ZGluZ0Rlc2NlbmRhbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQor
eworICAgIEludFJlY3QgcmVwYWludFJlY3QgPSBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChyZXBhaW50Q29udGFpbmVyKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBy
ZXBhaW50UmVjdC51bml0ZShjaGlsZC0+Y2xpcHBlZE92ZXJmbG93UmVjdEluY2x1ZGluZ0Rlc2Nl
bmRhbnRzKHJlcGFpbnRDb250YWluZXIpKTsKKyAgICByZXR1cm4gcmVwYWludFJlY3Q7Cit9CisK
IEludFJlY3QgUmVuZGVyT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCopCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCmluZGV4IDVlNzhiYmQuLmY0YjU1MTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC02MzYsNyArNjM2LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KDApOwogICAgIH0KLSAgICB2aXJ0dWFs
IEludFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpOyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIHJlY3QgdGhhdCBz
aG91bGQgYmUgcmVwYWludGVkIGlmIHRoaXMgb2JqZWN0IG9mIGFueSBvZiBpdHMgZGVzY2VuZGFu
dHMgY2hhbmdlcworICAgIEludFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEluY2x1ZGluZ0Rlc2Nl
bmRhbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpOwogICAgIHZpcnR1YWwgSW50UmVjdCByZWN0V2l0aE91
dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBp
bnQgb3V0bGluZVdpZHRoKTsKIAogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3Mg
Y29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcK
LS0gCjEuNi41LjEKCg==
</data>
<flag name="review"
          id="35092"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="35093"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51913</attachid>
            <date>2010-03-29 08:33:15 -0700</date>
            <delta_ts>2010-07-23 22:13:14 -0700</delta_ts>
            <desc>First half of the patch, fix FrameView</desc>
            <filename>36652_descendants.patch</filename>
            <type>text/plain</type>
            <size>3389</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzhmNGU1MS4uMTM4MjUyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0yOSAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkLCB0cmFuc2Zvcm1lZCBlbGVtZW50cyBh
cmUgbm90IHJlcGFpbnRlZCB3aGlsZSBzY3JvbGxpbmcgb3IgdXBkYXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjY1MgorCisgICAgICAgIEFkZCBS
ZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RJbmNsdWRpbmdEZXNjZW5kYW50cygpIGlu
IG9yZGVyCisgICAgICAgIHRvIGZpbmQgdGhlIGdlb21ldHJ5IG9mIGFuIG9iamVjdCB3aXRoIGFs
bCBpdHMgZGVzY2VuZGF0bnMuIFVzZSB0aGlzCisgICAgICAgIGZ1bmN0aW9uIGluIEZyYW1lVmll
dzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCgpIHRvIGdldCB0aGUgY29ycmVjdAorICAgICAgICB1
cGRhdGUgcmVjdC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmNsaXBwZWRPdmVyZmxvd1JlY3RJbmNsdWRpbmdEZXNjZW5kYW50cyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorCiAyMDEwLTAzLTI2ICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggMTAyNmQ4ZC4uZGVjYjdlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTg4
MSw4ICs4ODEsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdAogICAgICAgICBSZW5kZXJCb3gq
IHJlbmRlckJveCA9ICppdDsKICAgICAgICAgaWYgKHJlbmRlckJveC0+c3R5bGUoKS0+cG9zaXRp
b24oKSAhPSBGaXhlZFBvc2l0aW9uKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIElu
dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSByZW5kZXJC
b3gtPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICAgICAgSW50UmVjdCB1cGRh
dGVSZWN0ID0gcmVuZGVyQm94LT5jbGlwcGVkT3ZlcmZsb3dSZWN0SW5jbHVkaW5nRGVzY2VuZGFu
dHMocmVuZGVyQm94LT5jb250YWluZXJGb3JSZXBhaW50KCkpOwogICAgICAgICB1cGRhdGVSZWN0
Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CiAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJz
ZWN0KHJlY3RUb1Njcm9sbCk7CiAgICAgICAgIGlmICghdXBkYXRlUmVjdC5pc0VtcHR5KCkpIHsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDgyMTJkY2EuLjM4OTEwZDIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTMwNiw2ICsxMzA2LDE0IEBAIEludFJlY3Qg
UmVuZGVyT2JqZWN0OjpyZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29uCiAgICAgcmV0dXJuIHI7CiB9CiAKK0ludFJlY3QgUmVuZGVyT2JqZWN0
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpCit7CisgICAgSW50UmVjdCByZXBhaW50UmVjdCA9IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOworICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpCisgICAgICAgIHJlcGFpbnRSZWN0LnVuaXRlKGNoaWxkLT5jbGlwcGVk
T3ZlcmZsb3dSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMocmVwYWludENvbnRhaW5lcikpOworICAg
IHJldHVybiByZXBhaW50UmVjdDsKK30KKwogSW50UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KikKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNmUyMGMxZS4u
NGU1MDhmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTYzOSw3ICs2MzksOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoMCk7CiAgICAgfQotICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7ICAgIAorICAg
IC8vIFJldHVybiB0aGUgcmVjdCB0aGF0IHNob3VsZCBiZSByZXBhaW50ZWQgaWYgdGhpcyBvYmpl
Y3Qgb2YgYW55IG9mIGl0cyBkZXNjZW5kYW50cyBjaGFuZ2VzCisgICAgSW50UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpOworICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CiAgICAg
dmlydHVhbCBJbnRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGludCBvdXRsaW5lV2lkdGgpOwogCiAgICAgLy8gR2l2
ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIGEgcmVj
dCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwo=
</data>
<flag name="review"
          id="35285"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>