<?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>111701</bug_id>
          
          <creation_ts>2013-03-07 02:10:27 -0800</creation_ts>
          <short_desc>Basic child obscuration test for backgrounds</short_desc>
          <delta_ts>2013-05-08 18:28:45 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>849894</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-07 02:10:27 -0800</bug_when>
    <thetext>We can easily detect some simple cases where a background image is fully obscured by an opaque child.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849920</commentid>
    <comment_count>1</comment_count>
      <attachid>191961</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-07 02:53:50 -0800</bug_when>
    <thetext>Created attachment 191961
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850002</commentid>
    <comment_count>2</comment_count>
      <attachid>191961</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 05:46:31 -0800</bug_when>
    <thetext>Comment on attachment 191961
patch

Attachment 191961 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17050452

New failing tests:
fast/table/invisible-cell-background.html
compositing/reflections/backface-hidden-reflection.html
platform/chromium/virtual/softwarecompositing/backface-visibility/backface-visibility-non3d.html
platform/chromium/virtual/softwarecompositing/reflections/backface-hidden-reflection.html
fast/clip/015.html
fast/repaint/overflow-hide.html
compositing/backface-visibility/backface-visibility-non3d.html
fast/block/positioning/022.html
ietestcenter/css3/bordersbackgrounds/background_color_padding_box.htm
fast/block/positioning/019.html
compositing/backface-visibility/backface-visibility-simple.html
fast/repaint/overflow-show.html
transforms/3d/general/background-visibility-layers.html
platform/chromium/virtual/softwarecompositing/backface-visibility/backface-visibility-simple.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850139</commentid>
    <comment_count>3</comment_count>
      <attachid>191961</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-07 09:09:51 -0800</bug_when>
    <thetext>Comment on attachment 191961
patch

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

You should add a repaint test for this.

&gt; Source/WebCore/rendering/RenderBox.cpp:1145
&gt; +        if (childBox-&gt;style()-&gt;visibility() != VISIBLE)
&gt; +            continue;
&gt; +        if (childBox-&gt;style()-&gt;position() != StaticPosition &amp;&amp; childBox-&gt;containingBlock() != this)
&gt; +            continue;

What about transforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850234</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-07 10:20:09 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; What about transforms?

Don&apos;t transforms always get a layer? RenderLayer::contentsOpaqueInRect returns false if there is a transform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850243</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-07 10:28:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; What about transforms?
&gt; 
&gt; Don&apos;t transforms always get a layer? RenderLayer::contentsOpaqueInRect returns false if there is a transform.

OK, but childBox-&gt;style()-&gt;position() != StaticPosition also means that the child will have a layer.

Also, bailing on childBox-&gt;layer()-&gt;contentsOpaqueInRect() is wrong if the child&apos;s layer is composited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851331</commentid>
    <comment_count>6</comment_count>
      <attachid>192250</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-08 10:56:11 -0800</bug_when>
    <thetext>Created attachment 192250
patch2

No repaint test yet, I couldn&apos;t figure out how to make one. Usually this doesn&apos;t really avoid repaints just reduces overpaint. In gif case it kills repaints too but the case is asynchronous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851334</commentid>
    <comment_count>7</comment_count>
      <attachid>192250</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-08 11:01:02 -0800</bug_when>
    <thetext>Comment on attachment 192250
patch2

I can haz repaint test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851349</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-08 11:19:35 -0800</bug_when>
    <thetext>You should be able to change the background color of the obscured element and see that it doesn&apos;t cause a repaint. Some variations can test your new logic.

Did we forget about opacity on the children?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851358</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-08 11:28:14 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; You should be able to change the background color of the obscured element and see that it doesn&apos;t cause a repaint. Some variations can test your new logic.

That will trigger a repaint anyway (this patch only affects paint time). Is there some way to test overpaint?
 
&gt; Did we forget about opacity on the children?

Do those always get a layer? If they do then no. If they don&apos;t then yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851389</commentid>
    <comment_count>10</comment_count>
      <attachid>192250</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 11:56:01 -0800</bug_when>
    <thetext>Comment on attachment 192250
patch2

Attachment 192250 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17047350

New failing tests:
fast/block/positioning/022.html
ietestcenter/css3/bordersbackgrounds/background_color_padding_box.htm
fast/exclusions/shape-outside-floats/shape-outside-floats-positioning.html
fast/block/positioning/019.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851403</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-08 12:05:32 -0800</bug_when>
    <thetext>Yes, opacity creates layers, so should bail from the childBox-&gt;layer()-&gt;contentsOpaqueInRect() test, as should transforms, so you can remove the transform check (sorry).

Note that RenderLayer::contentsOpaqueInRect() returns false if the z-order lists are dirty, which we would have to be careful about if this were run at layout time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851689</commentid>
    <comment_count>12</comment_count>
      <attachid>192250</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-08 20:08:19 -0800</bug_when>
    <thetext>Comment on attachment 192250
patch2

Attachment 192250 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17036462

New failing tests:
fast/exclusions/shape-outside-floats/shape-outside-floats-positioning.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851740</commentid>
    <comment_count>13</comment_count>
      <attachid>192250</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-09 00:29:10 -0800</bug_when>
    <thetext>Comment on attachment 192250
patch2

Attachment 192250 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17006093

New failing tests:
fast/exclusions/shape-outside-floats/shape-outside-floats-positioning.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852672</commentid>
    <comment_count>14</comment_count>
      <attachid>192545</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-11 13:42:19 -0700</bug_when>
    <thetext>Created attachment 192545
patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852689</commentid>
    <comment_count>15</comment_count>
      <attachid>192545</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-11 13:58:01 -0700</bug_when>
    <thetext>Comment on attachment 192545
patch 3

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

&gt; Source/WebCore/ChangeLog:26
&gt; +            In case of multiple background layers the last one should determine background color clip.
&gt; +            Tested by ietestcenter/css3/bordersbackgrounds/background_color_padding_box.htm

So why not testcase?

&gt; Source/WebCore/rendering/RenderBox.cpp:1161
&gt; +            if (!childBox-&gt;layer()-&gt;contentsOpaqueInRect(childLocalBackgroundRect))

You should sync up with Alok, who is working on reverting the change that added contentsOpaqueInRect() in bug 70634. It had issues with paint phases in its original use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852752</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-11 14:48:09 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 192545 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192545&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:26
&gt; &gt; +            In case of multiple background layers the last one should determine background color clip.
&gt; &gt; +            Tested by ietestcenter/css3/bordersbackgrounds/background_color_padding_box.htm
&gt; 
&gt; So why not testcase?

This is a workaround for an existing bug with background-clip property when there are multiple background layers that specify different clips. The rest of the patch makes the bug observable. I didn&apos;t add a new test since it is already covered. 

As far as I see all places that use RenderStyle::backgroundClip() are wrong though it doesn&apos;t really matter in practice as the case is extremely obscure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852917</commentid>
    <comment_count>17</comment_count>
      <attachid>192607</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-11 17:36:51 -0700</bug_when>
    <thetext>Created attachment 192607
patch 4

now with test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853737</commentid>
    <comment_count>18</comment_count>
      <attachid>192795</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-12 13:26:47 -0700</bug_when>
    <thetext>Created attachment 192795
patch 5

The opaqueness test functions were rolled out, add one sufficient for this patch back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853873</commentid>
    <comment_count>19</comment_count>
      <attachid>192795</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-12 15:51:41 -0700</bug_when>
    <thetext>Comment on attachment 192795
patch 5

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

&gt; Source/WebCore/rendering/RenderBox.cpp:1135
&gt; +bool RenderBox::isOpaqueInRect(const LayoutRect&amp; localRect) const

I think this should be backgroundIsOpaqueInRect() since it only checks the background.

&gt; Source/WebCore/rendering/RenderBox.cpp:1174
&gt; +    // Table background painting is special.
&gt; +    if (isTable())
&gt; +        return false;

The body/document elements are also special, because of root background propagation.

&gt; Source/WebCore/rendering/RenderBox.cpp:1176
&gt; +    LayoutRect backgroundRect = borderBoxRect();

Why doesn&apos;t this needs to get the right background rect by checking style()-&gt;backgroundClip() like the function above?

&gt; Source/WebCore/rendering/RenderBox.cpp:1189
&gt; +        if (childStyle-&gt;visibility() != VISIBLE || childStyle-&gt;zIndex() &lt; zIndex || childStyle-&gt;shapeOutside())
&gt; +            continue;

I don&apos;t think the z-index check makes sense if we&apos;re not a stacking context, or we&apos;re not positioned. It would be better to deal with this if the child is a layer, and it should be explicit about us being a stacking context. It&apos;s very hard for me to think about whether this check is correct.

&gt; LayoutTests/fast/repaint/obscured-background-no-repaint.html:26
&gt; +        setTimeout(logRepaints, 200);

Do we really have to wait 200ms? This will be a very slow test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853886</commentid>
    <comment_count>20</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-12 16:08:56 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; I think this should be backgroundIsOpaqueInRect() since it only checks the background.

Ok, though caller doesn&apos;t really care and jumping through isOpaqueInRect() that just calls backgroundIsOpaqueInRect() seemed bit pointless.

&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:1176
&gt; &gt; +    LayoutRect backgroundRect = borderBoxRect();
&gt; 
&gt; Why doesn&apos;t this needs to get the right background rect by checking style()-&gt;backgroundClip() like the function above?

The cases are not equivalent, opaqueInRect() needs smallest fully opaque rect for correctness while here we need maximum rect with any background pixels. borderBoxRect() is the maximum and the common case. No need to over-optimize this.

&gt; I don&apos;t think the z-index check makes sense if we&apos;re not a stacking context, or we&apos;re not positioned. It would be better to deal with this if the child is a layer, and it should be explicit about us being a stacking context. It&apos;s very hard for me to think about whether this check is correct.

I&apos;ll move the test to the layer branch.

&gt; Do we really have to wait 200ms? This will be a very slow test.

Probably not. 0 should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853931</commentid>
    <comment_count>21</comment_count>
      <attachid>192839</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-12 17:22:28 -0700</bug_when>
    <thetext>Created attachment 192839
patch 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853934</commentid>
    <comment_count>22</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-12 17:26:48 -0700</bug_when>
    <thetext>&gt; The body/document elements are also special, because of root background propagation.

This is not invoked for root and the logic should be fine for body.

&gt; Do we really have to wait 200ms? This will be a very slow test.

Actually it needs to run an animation frame which is somewhere between 50-100ms. 200ms seems like a safe non-flaky number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853948</commentid>
    <comment_count>23</comment_count>
      <attachid>192839</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-12 17:58:49 -0700</bug_when>
    <thetext>Comment on attachment 192839
patch 6

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

&gt; Source/WebCore/rendering/RenderBox.cpp:1202
&gt; +            if (layer() &amp;&amp; layer()-&gt;isStackingContext() &amp;&amp; childLayer-&gt;zIndex() &lt; layer()-&gt;zIndex())

This should be childLayer-&gt;zIndex() &lt; 0.

&gt; Source/WebCore/rendering/RenderBox.cpp:1204
&gt; +            if (childLayer-&gt;hasTransform() || childLayer-&gt;isTransparent() || childLayer-&gt;isSelfPaintingLayer())

I don&apos;t think you need to bail on childLayer-&gt;isSelfPaintingLayer()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854014</commentid>
    <comment_count>24</comment_count>
      <attachid>192858</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-12 19:35:37 -0700</bug_when>
    <thetext>Created attachment 192858
for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854018</commentid>
    <comment_count>25</comment_count>
      <attachid>192860</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-12 19:43:18 -0700</bug_when>
    <thetext>Created attachment 192860
for bots 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854055</commentid>
    <comment_count>26</comment_count>
      <attachid>192860</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 21:57:26 -0700</bug_when>
    <thetext>Comment on attachment 192860
for bots 2

Clearing flags on attachment: 192860

Committed r145680: &lt;http://trac.webkit.org/changeset/145680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854056</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 21:57:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854361</commentid>
    <comment_count>28</comment_count>
      <attachid>192860</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-13 09:34:28 -0700</bug_when>
    <thetext>Comment on attachment 192860
for bots 2

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

&gt; Source/WebCore/rendering/RenderBox.h:595
&gt; +    bool backgroundIsOpaqueInRect(const LayoutRect&amp; localRect) const;
&gt; +    virtual bool backgroundIsObscured() const;

For functions like these, the question I always ask is what they return when the answer is “I don’t know” or “it’s too complicated to compute”. I think in both cases, the function returns true when it’s sure the answer is true, and false when it’s either false or unsure.

I wish we could come up with names are still short but that make that more explicit and clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854362</commentid>
    <comment_count>29</comment_count>
      <attachid>192860</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-13 09:35:33 -0700</bug_when>
    <thetext>Comment on attachment 192860
for bots 2

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

&gt;&gt; Source/WebCore/rendering/RenderBox.h:595
&gt;&gt; +    virtual bool backgroundIsObscured() const;
&gt; 
&gt; For functions like these, the question I always ask is what they return when the answer is “I don’t know” or “it’s too complicated to compute”. I think in both cases, the function returns true when it’s sure the answer is true, and false when it’s either false or unsure.
&gt; 
&gt; I wish we could come up with names are still short but that make that more explicit and clear.

I can’t think of good ones, but here are some bad ones:

    backgroundKnownToBeObscured
    backgroundDefinitelyObscured</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854363</commentid>
    <comment_count>30</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-13 09:36:12 -0700</bug_when>
    <thetext>knownToBe is what popped into my head.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854595</commentid>
    <comment_count>31</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-13 13:51:40 -0700</bug_when>
    <thetext>Or perhaps do it other way round:

backgroundMaybeNotOpaque()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854607</commentid>
    <comment_count>32</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-13 14:04:55 -0700</bug_when>
    <thetext>I find that one harder to think about. Using possiblyTransarent() may be more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886563</commentid>
    <comment_count>33</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-05-08 18:28:45 -0700</bug_when>
    <thetext>This caused bug 115840.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191961</attachid>
            <date>2013-03-07 02:53:50 -0800</date>
            <delta_ts>2013-03-08 10:56:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>paint-obscured-background-3.patch</filename>
            <type>text/plain</type>
            <size>6605</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTA1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAzLTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuIGVhc2lseSBkZXRlY3Qgc29tZSBzaW1wbGUgY2FzZXMg
d2hlcmUgYSBiYWNrZ3JvdW5kIGltYWdlIGlzIGZ1bGx5IG9ic2N1cmVkIGJ5IGFuIG9wYXF1ZSBj
aGlsZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYXZvaWRzIHVubmNlc3NhcnkgcGFpbnRpbmcg
YW5kIGltYWdlIGRlY29kaW5nLiBJdCBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgZm9yIGNhc2VzIGxp
a2UgYWJvdXQuY29tIGhvbWUKKyAgICAgICAgcGFnZSB3aGVyZSBhIGZ1bGx5IG9ic2N1cmVkICds
b2FkaW5nJyBzcGlubmVyIGtlZXBzIHRyaWdnZXJpbmcgZnJlcXVlbnQgY29tcGxleCByZXBhaW50
cyAoZ2lmIGFuaW1hdGlvbnMKKyAgICAgICAgcHJvZ3Jlc3MgYnkgZ2V0dGluZyBwYWludGVkIGFu
ZCBzdG9wIGlmIHRoZXkgYXJlIG5vdCkuCisgICAgICAgIAorICAgICAgICBUaGlzIGNvdWxkIGJl
IG1hZGUgd2F5IG1vcmUgc29waGlzdGljYXRlZC4gVGhlIGNoZWNraW5nIGNvdWxkIGFsc28gYmUg
ZG9uZSBhdCBsYXlvdXQgcmF0aGVyIHRoYW4gcGFpbnQgdGltZS4KKyAgICAgICAgRXZlbiB0aGlz
IHNpbXBsZSBhcHByb2FjaCBnZXRzIGhpdCBzdXJwcmlzaW5nbHkgb2Z0ZW4gaW4gcmVhbCB3b3Js
ZCBzaXRlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgIAorICAg
ICAgICAgICAgQmVmb3JlIHBhaW50aW5nIGJhY2tncm91bmQgaWYgYW55IHNpbmdsZSBjaGlsZCBy
ZW5kZXJlciBmdWxseSBvYnNjdXJlcyBpdC4KKworICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRDbGlwUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRJc09wYXF1ZUluUmVjdCk6CisgICAgICAgIAorICAg
ICAgICAgICAgRmFjdG9yZWQgb3V0IGNvbXB1dGluZyB0aGUgcmVjdCBmcm9tIHRoZSBiYWNrZ3Jv
dW5kLWNsaXAgcHJvcGVydHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgIChSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgor
ICAgICAgICAoUmVuZGVySW1hZ2UpOgorCiAyMDEzLTAzLTA3ICBLZWlzaGkgSGF0dG9yaSAgPGtl
aXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBjbGVhciBidXR0b24gdG8gZGF0ZS90aW1l
IGlucHV0IHR5cGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAko
cmV2aXNpb24gMTQ1MDA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjIsNiArMTEyMiw0MCBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWluCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5lbmRU
cmFuc3BhcmVuY3lMYXllcigpOwogfQogCitib29sIFJlbmRlckJveDo6YmFja2dyb3VuZElzT2Jz
Y3VyZWQoKSBjb25zdAoreworICAgIC8vIFRlc3QgdG8gc2VlIGlmIHRoZSBjaGlsZHJlbiB0cml2
aWFsbHkgb2JzY3VyZSB0aGUgYmFja2dyb3VuZC4KKyAgICAvLyBGSVhNRTogVGhpcyB0ZXN0IGNh
biBiZSBkb25lIGF0IGxheW91dCB0aW1lIGFuZCBpdCBjYW4gYmUgbXVjaCBtb3JlIGNvbXByZWhl
bnNpdmUuCisgICAgaWYgKCFoYXNCYWNrZ3JvdW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KCk7Cisg
ICAgLy8gSWYgd2UgZG9uJ3QgZmluZCBhIGNvdmVyaW5nIGNoaWxkIGZhc3QgdGhlcmUgcHJvYmFi
bHkgaXNuJ3Qgb25lLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtQ2hpbGRyZW5D
b3VudFRvVGVzdCA9IDQ7CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCsrY291bnQgPiBtYXhpbXVtQ2hpbGRyZW5Db3VudFRv
VGVzdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIWNoaWxkLT5pc0JveCgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJlbmRlckJveCogY2hpbGRCb3ggPSB0b1Jl
bmRlckJveChjaGlsZCk7CisgICAgICAgIExheW91dFBvaW50IGNoaWxkTG9jYXRpb24gPSBjaGls
ZEJveC0+bG9jYXRpb24oKTsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5zdHlsZSgpLT52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoY2hp
bGRCb3gtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24gJiYgY2hpbGRCb3gt
PmNvbnRhaW5pbmdCbG9jaygpICE9IHRoaXMpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgTGF5b3V0UmVjdCBjaGlsZExvY2FsQmFja2dyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kUmVjdDsK
KyAgICAgICAgY2hpbGRMb2NhbEJhY2tncm91bmRSZWN0Lm1vdmVCeSgtY2hpbGRMb2NhdGlvbik7
CisgICAgICAgIGlmIChjaGlsZEJveC0+bGF5ZXIoKSkgeworICAgICAgICAgICAgaWYgKGNoaWxk
Qm94LT5sYXllcigpLT5jb250ZW50c09wYXF1ZUluUmVjdChjaGlsZExvY2FsQmFja2dyb3VuZFJl
Y3QpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoaWxkQm94LT5pc09wYXF1ZUluUmVjdChjaGlsZExv
Y2FsQmFja2dyb3VuZFJlY3QpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UpCiB7CiAgICAgaWYgKGlzUm9vdCgp
KQpAQCAtMTEzNiw2ICsxMTcwLDIxIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJhY2tncm91bmQo
Y29uc3QgUGEKICAgICB9CiB9CiAKK0xheW91dFJlY3QgUmVuZGVyQm94OjpiYWNrZ3JvdW5kQ2xp
cFJlY3QoKSBjb25zdAoreworICAgIHN3aXRjaCAoc3R5bGUoKS0+YmFja2dyb3VuZENsaXAoKSkg
eworICAgIGNhc2UgQm9yZGVyRmlsbEJveDoKKyAgICAgICAgcmV0dXJuIGJvcmRlckJveFJlY3Qo
KTsKKyAgICBjYXNlIFBhZGRpbmdGaWxsQm94OgorICAgICAgICByZXR1cm4gcGFkZGluZ0JveFJl
Y3QoKTsKKyAgICBjYXNlIENvbnRlbnRGaWxsQm94OgorICAgIGNhc2UgVGV4dEZpbGxCb3g6Cisg
ICAgICAgIHJldHVybiBjb250ZW50Qm94UmVjdCgpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworfQorCiBib29sIFJlbmRlckJveDo6
YmFja2dyb3VuZElzT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCkgY29u
c3QKIHsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwpAQCAtMTE0NywyMiArMTE5Niw5
IEBAIGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QKICAgICAvLyBGSVhN
RTogVXNlIHJvdW5kZWQgcmVjdCBpZiBib3JkZXIgcmFkaXVzIGlzIHByZXNlbnQuCiAgICAgaWYg
KHN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBMYXlvdXRSZWN0IGJhY2tncm91bmRSZWN0OwotICAgIHN3aXRjaCAoc3R5bGUoKS0+YmFja2dy
b3VuZENsaXAoKSkgewotICAgIGNhc2UgQm9yZGVyRmlsbEJveDoKLSAgICAgICAgYmFja2dyb3Vu
ZFJlY3QgPSBib3JkZXJCb3hSZWN0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFkZGlu
Z0ZpbGxCb3g6Ci0gICAgICAgIGJhY2tncm91bmRSZWN0ID0gcGFkZGluZ0JveFJlY3QoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb250ZW50RmlsbEJveDoKLSAgICAgICAgYmFja2dyb3Vu
ZFJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGJhY2tncm91bmRSZWN0LmNvbnRhaW5z
KGxvY2FsUmVjdCk7CisgICAgaWYgKHN0eWxlKCktPmJhY2tncm91bmRDbGlwKCkgPT0gVGV4dEZp
bGxCb3gpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYmFja2dyb3VuZENsaXBS
ZWN0KCkuY29udGFpbnMobG9jYWxSZWN0KTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91
bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCShyZXZpc2lvbiAxNDUwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5NCw3ICs1OTQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBib29sIGJhY2tncm91bmRJc09wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29u
c3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGJhY2tncm91bmRJc09ic2N1cmVkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3Vy
ZWQoKSBjb25zdDsKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBj
b25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJs
ZWVkTm9uZSk7CiAgICAgCiAgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8m
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5kZXJPYmplY3QqIGJh
Y2tncm91bmRPYmplY3QpOwpAQCAtNjA0LDYgKzYwNCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Uo
R3JhcGhpY3NDb250ZXh0KikgY29uc3Q7CiAgICAgYm9vbCBiYWNrZ3JvdW5kSGFzT3BhcXVlVG9w
TGF5ZXIoKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRDbGlwUmVjdCgpIGNvbnN0
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgcGFpbnRDdXN0b21IaWdobGlnaHQoY29u
c3QgTGF5b3V0UG9pbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYmVoaW5kVGV4
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkocmV2aXNpb24g
MTQ1MDA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
YmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKIAo=
</data>
<flag name="review"
          id="213053"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="213072"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192250</attachid>
            <date>2013-03-08 10:56:11 -0800</date>
            <delta_ts>2013-03-11 13:42:19 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>paint-obscured-background-4.patch</filename>
            <type>text/plain</type>
            <size>7045</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAzLTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuIGVhc2lseSBkZXRlY3Qgc29tZSBzaW1wbGUgY2FzZXMg
d2hlcmUgYSBiYWNrZ3JvdW5kIGltYWdlIGlzIGZ1bGx5IG9ic2N1cmVkIGJ5IGFuIG9wYXF1ZSBj
aGlsZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYXZvaWRzIHVubmNlc3NhcnkgcGFpbnRpbmcg
YW5kIGltYWdlIGRlY29kaW5nLiBJdCBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgZm9yIGNhc2VzIGxp
a2UgYWJvdXQuY29tIGhvbWUKKyAgICAgICAgcGFnZSB3aGVyZSBhIGZ1bGx5IG9ic2N1cmVkICds
b2FkaW5nJyBzcGlubmVyIGtlZXBzIHRyaWdnZXJpbmcgZnJlcXVlbnQgY29tcGxleCByZXBhaW50
cyAoZ2lmIGFuaW1hdGlvbnMKKyAgICAgICAgcHJvZ3Jlc3MgYnkgZ2V0dGluZyBwYWludGVkIGFu
ZCBzdG9wIGlmIHRoZXkgYXJlIG5vdCkuCisgICAgICAgIAorICAgICAgICBUaGlzIGNvdWxkIGJl
IG1hZGUgd2F5IG1vcmUgc29waGlzdGljYXRlZC4gVGhlIGNoZWNraW5nIGNvdWxkIGFsc28gYmUg
ZG9uZSBhdCBsYXlvdXQgcmF0aGVyIHRoYW4gcGFpbnQgdGltZS4KKyAgICAgICAgRXZlbiB0aGlz
IHNpbXBsZSBhcHByb2FjaCBnZXRzIGhpdCBzdXJwcmlzaW5nbHkgb2Z0ZW4gaW4gcmVhbCB3b3Js
ZCBzaXRlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgIAorICAg
ICAgICAgICAgQmVmb3JlIHBhaW50aW5nIGJhY2tncm91bmQgaWYgYW55IHNpbmdsZSBjaGlsZCBy
ZW5kZXJlciBmdWxseSBvYnNjdXJlcyBpdC4KKworICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRDbGlwUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRJc09wYXF1ZUluUmVjdCk6CisgICAgICAgIAorICAg
ICAgICAgICAgRmFjdG9yZWQgb3V0IGNvbXB1dGluZyB0aGUgcmVjdCBmcm9tIHRoZSBiYWNrZ3Jv
dW5kLWNsaXAgcHJvcGVydHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgIChSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgor
ICAgICAgICAoUmVuZGVySW1hZ2UpOgorCiAyMDEzLTAzLTA3ICBWc2V2b2xvZCBWbGFzb3YgIDx2
c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0eWxlcyBzaWRl
YmFyIHBhbmUgdG9vbGJhciBkaXNhcHBlYXJzIGluIGhvcml6b250YWwgc3BsaXQgbW9kZS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxNDUwODYp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEyMiw2ICsxMTIyLDUxIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRp
b25zKFBhaW4KICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7CiB9CiAKK2Jvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0Cit7
CisgICAgLy8gVGVzdCB0byBzZWUgaWYgdGhlIGNoaWxkcmVuIHRyaXZpYWxseSBvYnNjdXJlIHRo
ZSBiYWNrZ3JvdW5kLgorICAgIC8vIEZJWE1FOiBUaGlzIHRlc3QgY2FuIGJlIGRvbmUgb25jZSBw
ZXIgbGF5b3V0IGFuZCBpdCBjYW4gYmUgbXVjaCBtb3JlIGNvbXByZWhlbnNpdmUuCisgICAgaWYg
KCFoYXNCYWNrZ3JvdW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBUYWJsZSBi
YWNrZ3JvdW5kIHBhaW50aW5nIGlzIHNwZWNpYWwuCisgICAgaWYgKGlzVGFibGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJlY3QgPSBiYWNrZ3Jv
dW5kQ2xpcFJlY3QoKTsKKyAgICAvLyBJZiB3ZSBkb24ndCBmaW5kIGEgY292ZXJpbmcgY2hpbGQg
ZmFzdCB0aGVyZSBwcm9iYWJseSBpc24ndCBvbmUuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heGltdW1DaGlsZHJlbkNvdW50VG9UZXN0ID0gNDsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7
CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoKytjb3VudCA+IG1heGlt
dW1DaGlsZHJlbkNvdW50VG9UZXN0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgh
Y2hpbGQtPmlzQm94KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVuZGVyQm94
KiBjaGlsZEJveCA9IHRvUmVuZGVyQm94KGNoaWxkKTsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5z
dHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoY2hpbGRCb3gtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRp
b24gJiYgY2hpbGRCb3gtPmNvbnRhaW5pbmdCbG9jaygpICE9IHRoaXMpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgTGF5b3V0UG9pbnQgY2hpbGRMb2NhdGlvbiA9IGNoaWxkQm94LT5s
b2NhdGlvbigpOworICAgICAgICBpZiAoY2hpbGRCb3gtPmlzUmVsUG9zaXRpb25lZCgpKQorICAg
ICAgICAgICAgY2hpbGRMb2NhdGlvbi5tb3ZlKGNoaWxkQm94LT5yZWxhdGl2ZVBvc2l0aW9uT2Zm
c2V0KCkpOworICAgICAgICBMYXlvdXRSZWN0IGNoaWxkTG9jYWxCYWNrZ3JvdW5kUmVjdCA9IGJh
Y2tncm91bmRSZWN0OworICAgICAgICBjaGlsZExvY2FsQmFja2dyb3VuZFJlY3QubW92ZUJ5KC1j
aGlsZExvY2F0aW9uKTsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5sYXllcigpKSB7CisgICAgICAg
ICAgICBpZiAoY2hpbGRCb3gtPmxheWVyKCktPnRyYW5zZm9ybSgpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgICAg
IGlmIChjaGlsZEJveC0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2hpbGRCb3gtPmxheWVyKCktPmNv
bnRlbnRzT3BhcXVlSW5SZWN0KGNoaWxkTG9jYWxCYWNrZ3JvdW5kUmVjdCkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoY2hpbGRCb3gtPmlzT3BhcXVlSW5SZWN0KGNoaWxkTG9jYWxCYWNrZ3JvdW5kUmVj
dCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSBibGVlZEF2b2lkYW5jZSkKIHsKICAgICBpZiAoaXNSb290KCkpCkBAIC0xMTM2LDYgKzEx
ODEsMjEgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQYQogICAgIH0K
IH0KIAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmJhY2tncm91bmRDbGlwUmVjdCgpIGNvbnN0Cit7
CisgICAgc3dpdGNoIChzdHlsZSgpLT5iYWNrZ3JvdW5kQ2xpcCgpKSB7CisgICAgY2FzZSBCb3Jk
ZXJGaWxsQm94OgorICAgICAgICByZXR1cm4gYm9yZGVyQm94UmVjdCgpOworICAgIGNhc2UgUGFk
ZGluZ0ZpbGxCb3g6CisgICAgICAgIHJldHVybiBwYWRkaW5nQm94UmVjdCgpOworICAgIGNhc2Ug
Q29udGVudEZpbGxCb3g6CisgICAgY2FzZSBUZXh0RmlsbEJveDoKKyAgICAgICAgcmV0dXJuIGNv
bnRlbnRCb3hSZWN0KCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBMYXlvdXRSZWN0KCk7Cit9CisKIGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPcGFx
dWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxSZWN0KSBjb25zdAogewogICAgIENvbG9y
IGJhY2tncm91bmRDb2xvciA9IHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcik7CkBAIC0xMTQ3LDIyICsxMjA3LDkgQEAgYm9vbCBSZW5kZXJC
b3g6OmJhY2tncm91bmRJc09wYXF1ZUluUmVjdAogICAgIC8vIEZJWE1FOiBVc2Ugcm91bmRlZCBy
ZWN0IGlmIGJvcmRlciByYWRpdXMgaXMgcHJlc2VudC4KICAgICBpZiAoc3R5bGUoKS0+aGFzQm9y
ZGVyUmFkaXVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIExheW91dFJlY3QgYmFj
a2dyb3VuZFJlY3Q7Ci0gICAgc3dpdGNoIChzdHlsZSgpLT5iYWNrZ3JvdW5kQ2xpcCgpKSB7Ci0g
ICAgY2FzZSBCb3JkZXJGaWxsQm94OgotICAgICAgICBiYWNrZ3JvdW5kUmVjdCA9IGJvcmRlckJv
eFJlY3QoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYWRkaW5nRmlsbEJveDoKLSAgICAg
ICAgYmFja2dyb3VuZFJlY3QgPSBwYWRkaW5nQm94UmVjdCgpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENvbnRlbnRGaWxsQm94OgotICAgICAgICBiYWNrZ3JvdW5kUmVjdCA9IGNvbnRlbnRC
b3hSZWN0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICByZXR1cm4gYmFja2dyb3VuZFJlY3QuY29udGFpbnMobG9jYWxSZWN0KTsKKyAg
ICBpZiAoc3R5bGUoKS0+YmFja2dyb3VuZENsaXAoKSA9PSBUZXh0RmlsbEJveCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBiYWNrZ3JvdW5kQ2xpcFJlY3QoKS5jb250YWlucyhs
b2NhbFJlY3QpOwogfQogCiBib29sIFJlbmRlckJveDo6YmFja2dyb3VuZEhhc09wYXF1ZVRvcExh
eWVyKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlz
aW9uIDE0NTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgYmFja2dy
b3VuZElzT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0OwogICAg
IHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3Qm
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lKTsKICAgICAK
ICAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCk7
CkBAIC02MDQsNiArNjA0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlIGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQq
KSBjb25zdDsKICAgICBib29sIGJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0Owor
ICAgIExheW91dFJlY3QgYmFja2dyb3VuZENsaXBSZWN0KCkgY29uc3Q7CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBiZWhpbmRUZXh0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCShyZXZpc2lvbiAxNDUwODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODYs
NyArODYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3Jv
dW5kSXNPYnNjdXJlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNj
dXJlZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbmltdW1S
ZXBsYWNlZEhlaWdodCgpIGNvbnN0IE9WRVJSSURFOwogCg==
</data>
<flag name="commit-queue"
          id="213461"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192545</attachid>
            <date>2013-03-11 13:42:19 -0700</date>
            <delta_ts>2013-03-11 17:36:51 -0700</delta_ts>
            <desc>patch 3</desc>
            <filename>paint-obscured-background-6.patch</filename>
            <type>text/plain</type>
            <size>5947</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAzLTEwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuIGVhc2lseSBkZXRlY3Qgc29tZSBzaW1wbGUgY2FzZXMg
d2hlcmUgYSBiYWNrZ3JvdW5kIGltYWdlIGlzIGZ1bGx5IG9ic2N1cmVkIGJ5IGFuIG9wYXF1ZSBj
aGlsZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYXZvaWRzIHVubmNlc3NhcnkgcGFpbnRpbmcg
YW5kIGltYWdlIGRlY29kaW5nLiBJdCBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgZm9yIGNhc2VzIGxp
a2UgYWJvdXQuY29tIGhvbWUKKyAgICAgICAgcGFnZSB3aGVyZSBhIGZ1bGx5IG9ic2N1cmVkICds
b2FkaW5nJyBzcGlubmVyIGtlZXBzIHRyaWdnZXJpbmcgZnJlcXVlbnQgY29tcGxleCByZXBhaW50
cyAoZ2lmIGFuaW1hdGlvbnMKKyAgICAgICAgcHJvZ3Jlc3MgYnkgZ2V0dGluZyBwYWludGVkIGFu
ZCBzdG9wIGlmIHRoZXkgYXJlIG5vdCkuCisgICAgICAgIAorICAgICAgICBUaGlzIGNvdWxkIGJl
IG1hZGUgd2F5IG1vcmUgc29waGlzdGljYXRlZC4gVGhlIGNoZWNraW5nIGNvdWxkIGFsc28gYmUg
ZG9uZSBwZXItbGF5b3V0IHJhdGhlciBwZXItcGFpbnQuCisgICAgICAgIEV2ZW4gdGhpcyBzaW1w
bGUgYXBwcm9hY2ggZ2V0cyBoaXQgc3VycHJpc2luZ2x5IG9mdGVuIGluIHJlYWwgd29ybGQgc2l0
ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6YmFja2dyb3VuZElzT2JzY3VyZWQpOgorICAgICAgICAKKyAgICAgICAg
ICAgIEJlZm9yZSBwYWludGluZyBiYWNrZ3JvdW5kIHRlc3QgaWYgYW55IHNpbmdsZSBjaGlsZCBy
ZW5kZXJlciBmdWxseSBvYnNjdXJlcyBpdC4KKworICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRJc09wYXF1ZUluUmVjdCk6CisgICAgICAg
IAorICAgICAgICAgICAgSW4gY2FzZSBvZiBtdWx0aXBsZSBiYWNrZ3JvdW5kIGxheWVycyB0aGUg
bGFzdCBvbmUgc2hvdWxkIGRldGVybWluZSBiYWNrZ3JvdW5kIGNvbG9yIGNsaXAuCisgICAgICAg
ICAgICBUZXN0ZWQgYnkgaWV0ZXN0Y2VudGVyL2NzczMvYm9yZGVyc2JhY2tncm91bmRzL2JhY2tn
cm91bmRfY29sb3JfcGFkZGluZ19ib3guaHRtCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlLmg6CisgICAgICAgIChSZW5kZXJJbWFnZSk6CisKIDIwMTMtMDMtMDcgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3R5bGVzIHNpZGViYXIgcGFuZSB0b29sYmFyIGRpc2FwcGVhcnMgaW4gaG9yaXpvbnRh
bCBzcGxpdCBtb2RlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJ
KHJldmlzaW9uIDE0NTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIyLDYgKzExMjIsNTIgQEAgdm9pZCBSZW5kZXJCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbgogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAorYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91bmRJc09i
c2N1cmVkKCkgY29uc3QKK3sKKyAgICAvLyBUZXN0IHRvIHNlZSBpZiB0aGUgY2hpbGRyZW4gdHJp
dmlhbGx5IG9ic2N1cmUgdGhlIGJhY2tncm91bmQuCisgICAgLy8gRklYTUU6IFRoaXMgdGVzdCBj
YW4gYmUgZG9uZSBvbmNlIHBlciBsYXlvdXQgYW5kIGl0IGNhbiBiZSBtdWNoIG1vcmUgY29tcHJl
aGVuc2l2ZS4KKyAgICBpZiAoIWhhc0JhY2tncm91bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIC8vIFRhYmxlIGJhY2tncm91bmQgcGFpbnRpbmcgaXMgc3BlY2lhbC4KKyAgICBpZiAo
aXNUYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gVGhpcyBjb3VsZCB0YWtl
IGJhY2tncm91bmQgcG9zaXRpb24sIGNsaXAsIGV0Yy4gaW50byBhY2NvdW50LgorICAgIExheW91
dFJlY3QgYmFja2dyb3VuZFJlY3QgPSBib3JkZXJCb3hSZWN0KCk7CisgICAgaW50IHpJbmRleCA9
IHN0eWxlKCktPnpJbmRleCgpOworICAgIC8vIElmIHdlIGRvbid0IGZpbmQgYSBjb3ZlcmluZyBj
aGlsZCBmYXN0IHRoZXJlIHByb2JhYmx5IGlzbid0IG9uZS4KKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF4aW11bUNoaWxkcmVuQ291bnRUb1Rlc3QgPSA0OworICAgIHVuc2lnbmVkIGNvdW50
ID0gMDsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICgrK2NvdW50ID4g
bWF4aW11bUNoaWxkcmVuQ291bnRUb1Rlc3QpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
aWYgKCFjaGlsZC0+aXNCb3goKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZW5k
ZXJCb3gqIGNoaWxkQm94ID0gdG9SZW5kZXJCb3goY2hpbGQpOworICAgICAgICBSZW5kZXJTdHls
ZSogY2hpbGRTdHlsZSA9IGNoaWxkLT5zdHlsZSgpOworICAgICAgICBpZiAoY2hpbGRTdHlsZS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgY2hpbGRTdHlsZS0+ekluZGV4KCkgPCB6SW5kZXgg
fHwgY2hpbGRTdHlsZS0+c2hhcGVPdXRzaWRlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKGNoaWxkU3R5bGUtPnBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24gJiYgY2hp
bGRCb3gtPmNvbnRhaW5pbmdCbG9jaygpICE9IHRoaXMpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgTGF5b3V0UG9pbnQgY2hpbGRMb2NhdGlvbiA9IGNoaWxkQm94LT5sb2NhdGlvbigp
OworICAgICAgICBpZiAoY2hpbGRCb3gtPmlzUmVsUG9zaXRpb25lZCgpKQorICAgICAgICAgICAg
Y2hpbGRMb2NhdGlvbi5tb3ZlKGNoaWxkQm94LT5yZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkpOwor
ICAgICAgICBMYXlvdXRSZWN0IGNoaWxkTG9jYWxCYWNrZ3JvdW5kUmVjdCA9IGJhY2tncm91bmRS
ZWN0OworICAgICAgICBjaGlsZExvY2FsQmFja2dyb3VuZFJlY3QubW92ZUJ5KC1jaGlsZExvY2F0
aW9uKTsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5sYXllcigpKSB7CisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgICAgICAgICAgaWYgKGNoaWxkQm94LT5sYXllcigpLT5pc0Nv
bXBvc2l0ZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgorICAgICAgICAg
ICAgaWYgKCFjaGlsZEJveC0+bGF5ZXIoKS0+Y29udGVudHNPcGFxdWVJblJlY3QoY2hpbGRMb2Nh
bEJhY2tncm91bmRSZWN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChjaGlsZEJveC0+aXNPcGFxdWVJ
blJlY3QoY2hpbGRMb2NhbEJhY2tncm91bmRSZWN0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgUmVuZGVyQm94OjpwYWludEJh
Y2tncm91bmQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBh
aW50UmVjdCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlKQogewogICAg
IGlmIChpc1Jvb3QoKSkKQEAgLTExNDcsNyArMTE5Myw5IEBAIGJvb2wgUmVuZGVyQm94OjpiYWNr
Z3JvdW5kSXNPcGFxdWVJblJlY3QKICAgICAvLyBGSVhNRTogVXNlIHJvdW5kZWQgcmVjdCBpZiBi
b3JkZXIgcmFkaXVzIGlzIHByZXNlbnQuCiAgICAgaWYgKHN0eWxlKCktPmhhc0JvcmRlclJhZGl1
cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAvLyBGSVhNRTogVGhlIGJhY2tncm91
bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5IHRoZSBsYXN0IGxheWVyLgorICAgIGlmIChzdHls
ZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCktPm5leHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJlY3Q7CiAgICAgc3dpdGNoIChzdHlsZSgpLT5iYWNr
Z3JvdW5kQ2xpcCgpKSB7CiAgICAgY2FzZSBCb3JkZXJGaWxsQm94OgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gMTQ1MDg2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyArNTk0LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tU3R5bGUoKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QoY29uc3QgTGF5
b3V0UmVjdCYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNP
YnNjdXJlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGJhY2tn
cm91bmRJc09ic2N1cmVkKCkgY29uc3Q7CiAgICAgdm9pZCBwYWludEJhY2tncm91bmQoY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9
IEJhY2tncm91bmRCbGVlZE5vbmUpOwogICAgIAogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlv
dXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVu
ZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCShyZXZpc2lvbiAxNDUwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgp
IGNvbnN0IE9WRVJSSURFOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192607</attachid>
            <date>2013-03-11 17:36:51 -0700</date>
            <delta_ts>2013-03-12 13:26:47 -0700</delta_ts>
            <desc>patch 4</desc>
            <filename>paint-obscured-background-7.patch</filename>
            <type>text/plain</type>
            <size>10645</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAzLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFj
a2dyb3VuZC1uby1yZXBhaW50Lmh0bWwKKworICAgICAgICBXZSBjYW4gZWFzaWx5IGRldGVjdCBz
b21lIHNpbXBsZSBjYXNlcyB3aGVyZSBhIGJhY2tncm91bmQgaW1hZ2UgaXMgZnVsbHkgb2JzY3Vy
ZWQgYnkgYW4gb3BhcXVlIGNoaWxkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhdm9pZHMgdW5u
Y2Vzc2FyeSBwYWludGluZyBhbmQgaW1hZ2UgZGVjb2RpbmcuIEl0IGlzIGVzcGVjaWFsbHkgaGVs
cGZ1bCBmb3IgY2FzZXMgbGlrZSBhYm91dC5jb20gaG9tZQorICAgICAgICBwYWdlIHdoZXJlIGEg
ZnVsbHkgb2JzY3VyZWQgJ2xvYWRpbmcnIHNwaW5uZXIga2VlcHMgdHJpZ2dlcmluZyBmcmVxdWVu
dCBjb21wbGV4IHJlcGFpbnRzIChnaWYgYW5pbWF0aW9ucworICAgICAgICBwcm9ncmVzcyBieSBn
ZXR0aW5nIHBhaW50ZWQgYW5kIHN0b3AgaWYgdGhleSBhcmUgbm90KS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgY291bGQgYmUgbWFkZSB3YXkgbW9yZSBzb3BoaXN0aWNhdGVkLiBUaGUgY2hlY2tp
bmcgY291bGQgYWxzbyBiZSBkb25lIHBlci1sYXlvdXQgcmF0aGVyIHBlci1wYWludC4KKyAgICAg
ICAgRXZlbiB0aGlzIHNpbXBsZSBhcHByb2FjaCBnZXRzIGhpdCBzdXJwcmlzaW5nbHkgb2Z0ZW4g
aW4gcmVhbCB3b3JsZCBzaXRlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6Cisg
ICAgICAgIAorICAgICAgICAgICAgQmVmb3JlIHBhaW50aW5nIGJhY2tncm91bmQgdGVzdCBpZiBh
bnkgc2luZ2xlIGNoaWxkIHJlbmRlcmVyIGZ1bGx5IG9ic2N1cmVzIGl0LgorCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YmFja2dyb3VuZElzT3BhcXVl
SW5SZWN0KToKKyAgICAgICAgCisgICAgICAgICAgICBJbiBjYXNlIG9mIG11bHRpcGxlIGJhY2tn
cm91bmQgbGF5ZXJzIHRoZSBsYXN0IG9uZSBzaG91bGQgZGV0ZXJtaW5lIGJhY2tncm91bmQgY29s
b3IgY2xpcC4KKyAgICAgICAgICAgIFRlc3RlZCBieSBpZXRlc3RjZW50ZXIvY3NzMy9ib3JkZXJz
YmFja2dyb3VuZHMvYmFja2dyb3VuZF9jb2xvcl9wYWRkaW5nX2JveC5odG0KKyAgICAgICAgCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVuZGVyQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFJlbmRlckltYWdlKToK
KwogMjAxMy0wMy0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NTQzNS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxNDUzMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEx
OCw2ICsxMTE4LDUyIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW4K
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAK
K2Jvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0Cit7CisgICAgLy8g
VGVzdCB0byBzZWUgaWYgdGhlIGNoaWxkcmVuIHRyaXZpYWxseSBvYnNjdXJlIHRoZSBiYWNrZ3Jv
dW5kLgorICAgIC8vIEZJWE1FOiBUaGlzIHRlc3QgY2FuIGJlIGRvbmUgb25jZSBwZXIgbGF5b3V0
IGFuZCBpdCBjYW4gYmUgbXVjaCBtb3JlIGNvbXByZWhlbnNpdmUuCisgICAgaWYgKCFoYXNCYWNr
Z3JvdW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBUYWJsZSBiYWNrZ3JvdW5k
IHBhaW50aW5nIGlzIHNwZWNpYWwuCisgICAgaWYgKGlzVGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIC8vIFRoaXMgY291bGQgdGFrZSBiYWNrZ3JvdW5kIHBvc2l0aW9uLCBjbGlw
LCBldGMuIGludG8gYWNjb3VudC4KKyAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRSZWN0ID0gYm9y
ZGVyQm94UmVjdCgpOworICAgIGludCB6SW5kZXggPSBzdHlsZSgpLT56SW5kZXgoKTsKKyAgICAv
LyBJZiB3ZSBkb24ndCBmaW5kIGEgY292ZXJpbmcgY2hpbGQgZmFzdCB0aGVyZSBwcm9iYWJseSBp
c24ndCBvbmUuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1DaGlsZHJlbkNvdW50
VG9UZXN0ID0gNDsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICBpZiAoKytjb3VudCA+IG1heGltdW1DaGlsZHJlbkNvdW50VG9UZXN0
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghY2hpbGQtPmlzQm94KCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVuZGVyQm94KiBjaGlsZEJveCA9IHRvUmVuZGVy
Qm94KGNoaWxkKTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjaGlsZC0+c3R5
bGUoKTsKKyAgICAgICAgaWYgKGNoaWxkU3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8
IGNoaWxkU3R5bGUtPnpJbmRleCgpIDwgekluZGV4IHx8IGNoaWxkU3R5bGUtPnNoYXBlT3V0c2lk
ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChjaGlsZFN0eWxlLT5wb3Np
dGlvbigpICE9IFN0YXRpY1Bvc2l0aW9uICYmIGNoaWxkQm94LT5jb250YWluaW5nQmxvY2soKSAh
PSB0aGlzKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIExheW91dFBvaW50IGNoaWxk
TG9jYXRpb24gPSBjaGlsZEJveC0+bG9jYXRpb24oKTsKKyAgICAgICAgaWYgKGNoaWxkQm94LT5p
c1JlbFBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGNoaWxkTG9jYXRpb24ubW92ZShjaGlsZEJv
eC0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCBjaGlsZExv
Y2FsQmFja2dyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kUmVjdDsKKyAgICAgICAgY2hpbGRMb2NhbEJh
Y2tncm91bmRSZWN0Lm1vdmVCeSgtY2hpbGRMb2NhdGlvbik7CisgICAgICAgIGlmIChjaGlsZEJv
eC0+bGF5ZXIoKSkgeworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAg
ICAgIGlmIChjaGlsZEJveC0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2hpbGRCb3gtPmxheWVyKCkt
PmNvbnRlbnRzT3BhcXVlSW5SZWN0KGNoaWxkTG9jYWxCYWNrZ3JvdW5kUmVjdCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoY2hpbGRCb3gtPmlzT3BhcXVlSW5SZWN0KGNoaWxkTG9jYWxCYWNrZ3JvdW5k
UmVjdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSBibGVlZEF2b2lkYW5jZSkKIHsKICAgICBpZiAoaXNSb290KCkpCkBAIC0xMTQzLDcg
KzExODksOSBAQCBib29sIFJlbmRlckJveDo6YmFja2dyb3VuZElzT3BhcXVlSW5SZWN0CiAgICAg
Ly8gRklYTUU6IFVzZSByb3VuZGVkIHJlY3QgaWYgYm9yZGVyIHJhZGl1cyBpcyBwcmVzZW50Lgog
ICAgIGlmIChzdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCisgICAgLy8gRklYTUU6IFRoZSBiYWNrZ3JvdW5kIGNvbG9yIGNsaXAgaXMgZGVmaW5lZCBi
eSB0aGUgbGFzdCBsYXllci4KKyAgICBpZiAoc3R5bGUoKS0+YmFja2dyb3VuZExheWVycygpLT5u
ZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBMYXlvdXRSZWN0IGJhY2tncm91bmRS
ZWN0OwogICAgIHN3aXRjaCAoc3R5bGUoKS0+YmFja2dyb3VuZENsaXAoKSkgewogICAgIGNhc2Ug
Qm9yZGVyRmlsbEJveDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJl
dmlzaW9uIDE0NTMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAko
d29ya2luZyBjb3B5KQpAQCAtNTkyLDcgKzU5Miw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgYmFj
a2dyb3VuZElzT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdCBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0Owog
ICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJl
Y3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lKTsKICAg
ICAKICAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkocmV2aXNpb24g
MTQ1MzM4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
YmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTQ1NDQxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDMtMTEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgorCisgICAgICAgIEJhc2ljIGNoaWxkIG9ic2N1cmF0aW9uIHRlc3QgZm9yIGJh
Y2tncm91bmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTE3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvcmVwYWludC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1u
by1yZXBhaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwYWludC9yZXNvdXJjZXMv
YW5pbWF0ZWQuZ2lmOiBBZGRlZC4KKwogMjAxMy0wMy0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpcnN0IChvZiBwcm9iYWJseSBtYW55KSBsYXll
ciB0cmVlIHJlYmFzZWxpbmVzIGZvciByMTQ1NDIyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1y
ZXBhaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVw
YWludC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0IHRoYXQgb2JzY3VyZWQgYW5pbWF0ZWQgZ2lmIGRv
ZXMgbm90IHRyaWdnZXIgcmVwYWludHMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJlcGFpbnRSZWN0cyBpcyAiIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcmVwYWludC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3Vu
ZC1uby1yZXBhaW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFp
bnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PmpzVGVzdElzQXN5bmMgPSB0cnVl
Ozwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGRpdiB7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICAucGFyZW50
IHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKHJlc291cmNlcy9hbmltYXRlZC5naWYp
CisgICAgfQorCisgICAgLmNoaWxkIHsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwor
ICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgb2Jz
Y3VyZWQgYW5pbWF0ZWQgZ2lmIGRvZXMgbm90IHRyaWdnZXIgcmVwYWludHMuIFRoaXMgdGVzdCBy
ZXF1aXJlcyBEUlQuIik7CisgICAgZnVuY3Rpb24gc3RhcnRUcmFja2luZ1JlcGFpbnRzKCkKKyAg
ICB7CisgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRUcmFja2lu
Z1JlcGFpbnRzKGRvY3VtZW50KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwor
ICAgICAgICAgICAgc2V0VGltZW91dChsb2dSZXBhaW50cywgMjAwKTsKKyAgICAgICAgfSwgMTAw
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2dSZXBhaW50cygpCisgICAgeworICAgICAgICBy
ZXBhaW50UmVjdHMgPSB3aW5kb3cuaW50ZXJuYWxzLnJlcGFpbnRSZWN0c0FzVGV4dChkb2N1bWVu
dCk7CisKKyAgICAgICAgd2luZG93LmludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cyhkb2N1
bWVudCk7CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZXBhaW50UmVjdHMiLCAi
Iik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rh
cnQoKSB7CisgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgp
OworICAgICAgICBpbWcub25sb2FkID0gc3RhcnRUcmFja2luZ1JlcGFpbnRzOworICAgICAgICBp
bWcuc3JjID0gInJlc291cmNlcy9hbmltYXRlZC5naWYiOworICAgIH0KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICA8ZGl2IGNsYXNzPSJwYXJlbnQiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
PC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3Jlc291cmNl
cy9hbmltYXRlZC5naWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3Jlc291cmNlcy9h
bmltYXRlZC5naWYKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQoKClIwbEdPRGxoRUFBUUFQY0FBQUJtWnN3QW1RQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSC9DMDVGVkZO
RFFWQkZNaTR3QXdFQQpBQUFoK1FRRUFBQUFBQ3dBQUFBQUVBQVFBQUFJSFFBRENCeElzS0RCZ3dn
VEtseklzS0hEaHhBalNweElzYUxGZ1FFQkFDSDVCQVFBCkFBQUFMQUFBQUFBUUFCQUFBQWdkQUFF
SUhFaXdvTUdEQ0JNcVhNaXdvY09IRUNOS25FaXhvc1dCQVFFQU93PT0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192795</attachid>
            <date>2013-03-12 13:26:47 -0700</date>
            <delta_ts>2013-03-12 17:22:28 -0700</delta_ts>
            <desc>patch 5</desc>
            <filename>paint-obscured-background-8.patch</filename>
            <type>text/plain</type>
            <size>10848</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFj
a2dyb3VuZC1uby1yZXBhaW50Lmh0bWwKKworICAgICAgICBXZSBjYW4gZWFzaWx5IGRldGVjdCBz
b21lIHNpbXBsZSBjYXNlcyB3aGVyZSBhIGJhY2tncm91bmQgaW1hZ2UgaXMgZnVsbHkgb2JzY3Vy
ZWQgYnkgYW4gb3BhcXVlIGNoaWxkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhdm9pZHMgdW5u
Y2Vzc2FyeSBwYWludGluZyBhbmQgaW1hZ2UgZGVjb2RpbmcuIEl0IGlzIGVzcGVjaWFsbHkgaGVs
cGZ1bCBmb3IgY2FzZXMgbGlrZSBhYm91dC5jb20gaG9tZQorICAgICAgICBwYWdlIHdoZXJlIGEg
ZnVsbHkgb2JzY3VyZWQgJ2xvYWRpbmcnIHNwaW5uZXIga2VlcHMgdHJpZ2dlcmluZyBmcmVxdWVu
dCBjb21wbGV4IHJlcGFpbnRzIChnaWYgYW5pbWF0aW9ucworICAgICAgICBwcm9ncmVzcyBieSBn
ZXR0aW5nIHBhaW50ZWQgYW5kIHN0b3AgaWYgdGhleSBhcmUgbm90KS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgY291bGQgYmUgbWFkZSB3YXkgbW9yZSBzb3BoaXN0aWNhdGVkLiBUaGUgY2hlY2tp
bmcgY291bGQgYWxzbyBiZSBkb25lIHBlci1sYXlvdXQgcmF0aGVyIHBlci1wYWludC4KKyAgICAg
ICAgRXZlbiB0aGlzIHNpbXBsZSBhcHByb2FjaCBnZXRzIGhpdCBzdXJwcmlzaW5nbHkgb2Z0ZW4g
aW4gcmVhbCB3b3JsZCBzaXRlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6Cisg
ICAgICAgIAorICAgICAgICAgICAgQmVmb3JlIHBhaW50aW5nIGJhY2tncm91bmQgdGVzdCBpZiBh
bnkgc2luZ2xlIGNoaWxkIHJlbmRlcmVyIGZ1bGx5IG9ic2N1cmVzIGl0LgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmlzT3BhcXVlSW5SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94Lmg6CisKIDIwMTMtMDMtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVzZSBTa01hdHJpeDQ0IGluc3RlYWQgb2Yg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaW4gYW5pbWF0aW9uIEFQSXMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxNDU0NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzMiw2
ICsxMTMyLDgyIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJhY2tncm91bmQoY29uc3QgUGEKICAg
ICB9CiB9CiAKK2Jvb2wgUmVuZGVyQm94Ojppc09wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0
JiBsb2NhbFJlY3QpIGNvbnN0Cit7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gc3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAg
ICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgfHwgYmFja2dyb3VuZENvbG9yLmhhc0Fs
cGhhKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBDaGVjayB0aGUg
b3BhcXVlbmVzcyBvZiBiYWNrZ3JvdW5kIGltYWdlcy4KKworICAgIC8vIEZJWE1FOiBVc2Ugcm91
bmRlZCByZWN0IGlmIGJvcmRlciByYWRpdXMgaXMgcHJlc2VudC4KKyAgICBpZiAoc3R5bGUoKS0+
aGFzQm9yZGVyUmFkaXVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTog
VGhlIGJhY2tncm91bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5IHRoZSBsYXN0IGxheWVyLgor
ICAgIGlmIChzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCktPm5leHQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJlY3Q7CisgICAgc3dpdGNoIChz
dHlsZSgpLT5iYWNrZ3JvdW5kQ2xpcCgpKSB7CisgICAgY2FzZSBCb3JkZXJGaWxsQm94OgorICAg
ICAgICBiYWNrZ3JvdW5kUmVjdCA9IGJvcmRlckJveFJlY3QoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQYWRkaW5nRmlsbEJveDoKKyAgICAgICAgYmFja2dyb3VuZFJlY3QgPSBwYWRkaW5n
Qm94UmVjdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnRlbnRGaWxsQm94OgorICAg
ICAgICBiYWNrZ3JvdW5kUmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gYmFja2dyb3Vu
ZFJlY3QuY29udGFpbnMobG9jYWxSZWN0KTsKK30KKworYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91
bmRJc09ic2N1cmVkKCkgY29uc3QKK3sKKyAgICAvLyBUZXN0IHRvIHNlZSBpZiB0aGUgY2hpbGRy
ZW4gdHJpdmlhbGx5IG9ic2N1cmUgdGhlIGJhY2tncm91bmQuCisgICAgLy8gRklYTUU6IFRoaXMg
dGVzdCBjYW4gYmUgZG9uZSBvbmNlIHBlciBsYXlvdXQgYW5kIGl0IGNhbiBiZSBtdWNoIG1vcmUg
Y29tcHJlaGVuc2l2ZS4KKyAgICBpZiAoIWhhc0JhY2tncm91bmQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIC8vIFRhYmxlIGJhY2tncm91bmQgcGFpbnRpbmcgaXMgc3BlY2lhbC4KKyAg
ICBpZiAoaXNUYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gVGhpcyBjb3Vs
ZCB0YWtlIGJhY2tncm91bmQgcG9zaXRpb24sIGNsaXAsIGV0Yy4gaW50byBhY2NvdW50LgorICAg
IExheW91dFJlY3QgYmFja2dyb3VuZFJlY3QgPSBib3JkZXJCb3hSZWN0KCk7CisgICAgaW50IHpJ
bmRleCA9IHN0eWxlKCktPnpJbmRleCgpOworICAgIC8vIElmIHdlIGRvbid0IGZpbmQgYSBjb3Zl
cmluZyBjaGlsZCBmYXN0IHRoZXJlIHByb2JhYmx5IGlzbid0IG9uZS4KKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4aW11bUNoaWxkcmVuQ291bnRUb1Rlc3QgPSA0OworICAgIHVuc2lnbmVk
IGNvdW50ID0gMDsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICgrK2Nv
dW50ID4gbWF4aW11bUNoaWxkcmVuQ291bnRUb1Rlc3QpCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgaWYgKCFjaGlsZC0+aXNCb3goKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBSZW5kZXJCb3gqIGNoaWxkQm94ID0gdG9SZW5kZXJCb3goY2hpbGQpOworICAgICAgICBSZW5k
ZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNoaWxkLT5zdHlsZSgpOworICAgICAgICBpZiAoY2hpbGRT
dHlsZS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgY2hpbGRTdHlsZS0+ekluZGV4KCkgPCB6
SW5kZXggfHwgY2hpbGRTdHlsZS0+c2hhcGVPdXRzaWRlKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKGNoaWxkU3R5bGUtPnBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24g
JiYgY2hpbGRCb3gtPmNvbnRhaW5pbmdCbG9jaygpICE9IHRoaXMpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgTGF5b3V0UG9pbnQgY2hpbGRMb2NhdGlvbiA9IGNoaWxkQm94LT5sb2Nh
dGlvbigpOworICAgICAgICBpZiAoY2hpbGRCb3gtPmlzUmVsUG9zaXRpb25lZCgpKQorICAgICAg
ICAgICAgY2hpbGRMb2NhdGlvbi5tb3ZlKGNoaWxkQm94LT5yZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0
KCkpOworICAgICAgICBMYXlvdXRSZWN0IGNoaWxkTG9jYWxCYWNrZ3JvdW5kUmVjdCA9IGJhY2tn
cm91bmRSZWN0OworICAgICAgICBjaGlsZExvY2FsQmFja2dyb3VuZFJlY3QubW92ZUJ5KC1jaGls
ZExvY2F0aW9uKTsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IGNoaWxkQm94LT5s
YXllcigpKSB7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICAgICAg
aWYgKGxheWVyLT5pc0NvbXBvc2l0ZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNl
bmRpZgorICAgICAgICAgICAgaWYgKGxheWVyLT5oYXNUcmFuc2Zvcm0oKSB8fCBsYXllci0+aXNU
cmFuc3BhcmVudCgpIHx8IGxheWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoaWxkQm94LT5pc09wYXF1
ZUluUmVjdChjaGlsZExvY2FsQmFja2dyb3VuZFJlY3QpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBSZW5kZXJCb3g6OmJhY2tn
cm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0CiB7CiAgICAgY29uc3QgRmlsbExheWVyKiBm
aWxsTGF5ZXIgPSBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiAxNDU0NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5MSw3ICs1OTEsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElz
T2JzY3VyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc09w
YXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0OwogICAgIHZvaWQgcGFpbnRCYWNr
Z3JvdW5kKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lKTsKICAgICAKICAgICB2b2lkIHBhaW50
RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVy
KiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkocmV2aXNpb24gMTQ1NDQyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcg
Kzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3Vu
ZElzT2JzY3VyZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3Vy
ZWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtaW5pbXVtUmVw
bGFjZWRIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1NDQy
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTMtMDMtMTEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAg
ICAgIEJhc2ljIGNoaWxkIG9ic2N1cmF0aW9uIHRlc3QgZm9yIGJhY2tncm91bmRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE3MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcmVwYWludC9v
YnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVwYWludC9yZXNvdXJjZXMvYW5pbWF0ZWQuZ2lmOiBBZGRl
ZC4KKwogMjAxMy0wMy0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEZpcnN0IChvZiBwcm9iYWJseSBtYW55KSBsYXllciB0cmVlIHJlYmFzZWxpbmVz
IGZvciByMTQ1NDIyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFj
a2dyb3VuZC1uby1yZXBhaW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9vYnNjdXJlZC1iYWNr
Z3JvdW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEw
IEBACitUZXN0IHRoYXQgb2JzY3VyZWQgYW5pbWF0ZWQgZ2lmIGRvZXMgbm90IHRyaWdnZXIgcmVw
YWludHMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHJlcGFpbnRSZWN0cyBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwYWlu
dC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dy
b3VuZC1uby1yZXBhaW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PmpzVGVzdElzQXN5bmMgPSB0cnVlOzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorICAgIGRpdiB7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICAucGFyZW50IHsKKyAgICAgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKHJlc291cmNlcy9hbmltYXRlZC5naWYpCisgICAgfQorCisgICAgLmNo
aWxkIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4K
KzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBvYnNjdXJlZCBhbmltYXRlZCBn
aWYgZG9lcyBub3QgdHJpZ2dlciByZXBhaW50cy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4iKTsK
KyAgICBmdW5jdGlvbiBzdGFydFRyYWNraW5nUmVwYWludHMoKQorICAgIHsKKyAgICAgICAgZG9j
dW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRUcmFj
a2luZ1JlcGFpbnRzKGRvY3VtZW50KTsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7Cisg
ICAgICAgIHNldFRpbWVvdXQobG9nUmVwYWludHMsIDIwMCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gbG9nUmVwYWludHMoKQorICAgIHsKKyAgICAgICAgcmVwYWludFJlY3RzID0gd2luZG93Lmlu
dGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoZG9jdW1lbnQpOworICAgICAgICB3aW5kb3cuaW50
ZXJuYWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKGRvY3VtZW50KTsKKworICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInJlcGFpbnRSZWN0cyIsICIiKTsKKworICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgaWYgKCF3aW5k
b3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7CisgICAgICAgIGltZy5vbmxvYWQgPSBz
dGFydFRyYWNraW5nUmVwYWludHM7CisgICAgICAgIGltZy5zcmMgPSAicmVzb3VyY2VzL2FuaW1h
dGVkLmdpZiI7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0
KCkiPgorICAgIDxkaXYgY2xhc3M9InBhcmVudCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoaWxk
Ij4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL2FuaW1hdGVkLmdpZgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10
eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL2FuaW1hdGVkLmdpZgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKUjBsR09E
bGhFQUFRQVBjQUFBQm1ac3dBbVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBCkFBQWgrUVFFQUFB
QUFDd0FBQUFBRUFBUUFBQUlIUUFEQ0J4SXNLREJnd2dUS2x6SXNLSERoeEFqU3B4SXNhTEZnUUVC
QUNINUJBUUEKQUFBQUxBQUFBQUFRQUJBQUFBZ2RBQUVJSEVpd29NR0RDQk1xWE1pd29jT0hFQ05L
bkVpeG9zV0JBUUVBT3c9PQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192839</attachid>
            <date>2013-03-12 17:22:28 -0700</date>
            <delta_ts>2013-03-12 19:35:37 -0700</delta_ts>
            <desc>patch 6</desc>
            <filename>paint-obscured-background-9.patch</filename>
            <type>text/plain</type>
            <size>10988</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFj
a2dyb3VuZC1uby1yZXBhaW50Lmh0bWwKKworICAgICAgICBXZSBjYW4gZWFzaWx5IGRldGVjdCBz
b21lIHNpbXBsZSBjYXNlcyB3aGVyZSBhIGJhY2tncm91bmQgaW1hZ2UgaXMgZnVsbHkgb2JzY3Vy
ZWQgYnkgYW4gb3BhcXVlIGNoaWxkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhdm9pZHMgdW5u
Y2Vzc2FyeSBwYWludGluZyBhbmQgaW1hZ2UgZGVjb2RpbmcuIEl0IGlzIGVzcGVjaWFsbHkgaGVs
cGZ1bCBmb3IgY2FzZXMgbGlrZSBhYm91dC5jb20gaG9tZQorICAgICAgICBwYWdlIHdoZXJlIGEg
ZnVsbHkgb2JzY3VyZWQgJ2xvYWRpbmcnIHNwaW5uZXIga2VlcHMgdHJpZ2dlcmluZyBmcmVxdWVu
dCBjb21wbGV4IHJlcGFpbnRzIChnaWYgYW5pbWF0aW9ucworICAgICAgICBwcm9ncmVzcyBieSBn
ZXR0aW5nIHBhaW50ZWQgYW5kIHN0b3AgaWYgdGhleSBhcmUgbm90KS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgY291bGQgYmUgbWFkZSB3YXkgbW9yZSBzb3BoaXN0aWNhdGVkLiBUaGUgY2hlY2tp
bmcgY291bGQgYWxzbyBiZSBkb25lIHBlci1sYXlvdXQgcmF0aGVyIHBlci1wYWludC4KKyAgICAg
ICAgRXZlbiB0aGlzIHNpbXBsZSBhcHByb2FjaCBnZXRzIGhpdCBzdXJwcmlzaW5nbHkgb2Z0ZW4g
aW4gcmVhbCB3b3JsZCBzaXRlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6Cisg
ICAgICAgIAorICAgICAgICAgICAgQmVmb3JlIHBhaW50aW5nIGJhY2tncm91bmQgdGVzdCBpZiBh
bnkgc2luZ2xlIGNoaWxkIHJlbmRlcmVyIGZ1bGx5IG9ic2N1cmVzIGl0LgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRJc09wYXF1ZUluUmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5oOgorCiAyMDEzLTAzLTExICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVc2UgU2tNYXRyaXg0NCBp
bnN0ZWFkIG9mIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGluIGFuaW1hdGlvbiBBUElzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTQ1NDQyKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMzIsNiArMTEzMiw4NCBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNv
bnN0IFBhCiAgICAgfQogfQogCitib29sIFJlbmRlckJveDo6YmFja2dyb3VuZElzT3BhcXVlSW5S
ZWN0KGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCkgY29uc3QKK3sKKyAgICBDb2xvciBiYWNr
Z3JvdW5kQ29sb3IgPSBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpOworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSB8fCBi
YWNrZ3JvdW5kQ29sb3IuaGFzQWxwaGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gRklYTUU6IENoZWNrIHRoZSBvcGFxdWVuZXNzIG9mIGJhY2tncm91bmQgaW1hZ2VzLgorCisg
ICAgLy8gRklYTUU6IFVzZSByb3VuZGVkIHJlY3QgaWYgYm9yZGVyIHJhZGl1cyBpcyBwcmVzZW50
LgorICAgIGlmIChzdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIEZJWE1FOiBUaGUgYmFja2dyb3VuZCBjb2xvciBjbGlwIGlzIGRlZmluZWQg
YnkgdGhlIGxhc3QgbGF5ZXIuCisgICAgaWYgKHN0eWxlKCktPmJhY2tncm91bmRMYXllcnMoKS0+
bmV4dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTGF5b3V0UmVjdCBiYWNrZ3JvdW5k
UmVjdDsKKyAgICBzd2l0Y2ggKHN0eWxlKCktPmJhY2tncm91bmRDbGlwKCkpIHsKKyAgICBjYXNl
IEJvcmRlckZpbGxCb3g6CisgICAgICAgIGJhY2tncm91bmRSZWN0ID0gYm9yZGVyQm94UmVjdCgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhZGRpbmdGaWxsQm94OgorICAgICAgICBiYWNr
Z3JvdW5kUmVjdCA9IHBhZGRpbmdCb3hSZWN0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q29udGVudEZpbGxCb3g6CisgICAgICAgIGJhY2tncm91bmRSZWN0ID0gY29udGVudEJveFJlY3Qo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBiYWNrZ3JvdW5kUmVjdC5jb250YWlucyhsb2NhbFJlY3QpOworfQorCitib29s
IFJlbmRlckJveDo6YmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdAoreworICAgIEFTU0VSVCgh
aXNSb290KCkpOworICAgIC8vIFRlc3QgdG8gc2VlIGlmIHRoZSBjaGlsZHJlbiB0cml2aWFsbHkg
b2JzY3VyZSB0aGUgYmFja2dyb3VuZC4KKyAgICAvLyBGSVhNRTogVGhpcyB0ZXN0IGNhbiBiZSBk
b25lIG9uY2UgcGVyIGxheW91dCBhbmQgaXQgY2FuIGJlIG11Y2ggbW9yZSBjb21wcmVoZW5zaXZl
LgorICAgIGlmICghaGFzQmFja2dyb3VuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gVGFibGUgYmFja2dyb3VuZCBwYWludGluZyBpcyBzcGVjaWFsLgorICAgIGlmIChpc1RhYmxl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBUaGlzIGNvdWxkIHRha2UgYmFja2dy
b3VuZCBwb3NpdGlvbiwgY2xpcCwgZXRjLiBpbnRvIGFjY291bnQuCisgICAgTGF5b3V0UmVjdCBi
YWNrZ3JvdW5kUmVjdCA9IGJvcmRlckJveFJlY3QoKTsKKyAgICAvLyBJZiB3ZSBkb24ndCBmaW5k
IGEgY292ZXJpbmcgY2hpbGQgZmFzdCB0aGVyZSBwcm9iYWJseSBpc24ndCBvbmUuCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1DaGlsZHJlbkNvdW50VG9UZXN0ID0gNDsKKyAgICB1
bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBp
ZiAoKytjb3VudCA+IG1heGltdW1DaGlsZHJlbkNvdW50VG9UZXN0KQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmICghY2hpbGQtPmlzQm94KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgUmVuZGVyQm94KiBjaGlsZEJveCA9IHRvUmVuZGVyQm94KGNoaWxkKTsKKyAgICAg
ICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjaGlsZC0+c3R5bGUoKTsKKyAgICAgICAgaWYg
KGNoaWxkU3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IGNoaWxkU3R5bGUtPnNoYXBl
T3V0c2lkZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChjaGlsZFN0eWxl
LT5wb3NpdGlvbigpICE9IFN0YXRpY1Bvc2l0aW9uICYmIGNoaWxkQm94LT5jb250YWluaW5nQmxv
Y2soKSAhPSB0aGlzKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIExheW91dFBvaW50
IGNoaWxkTG9jYXRpb24gPSBjaGlsZEJveC0+bG9jYXRpb24oKTsKKyAgICAgICAgaWYgKGNoaWxk
Qm94LT5pc1JlbFBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGNoaWxkTG9jYXRpb24ubW92ZShj
aGlsZEJveC0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCBj
aGlsZExvY2FsQmFja2dyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kUmVjdDsKKyAgICAgICAgY2hpbGRM
b2NhbEJhY2tncm91bmRSZWN0Lm1vdmVCeSgtY2hpbGRMb2NhdGlvbik7CisgICAgICAgIGlmIChS
ZW5kZXJMYXllciogY2hpbGRMYXllciA9IGNoaWxkQm94LT5sYXllcigpKSB7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzQ29t
cG9zaXRlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCisgICAgICAgICAg
ICBpZiAobGF5ZXIoKSAmJiBsYXllcigpLT5pc1N0YWNraW5nQ29udGV4dCgpICYmIGNoaWxkTGF5
ZXItPnpJbmRleCgpIDwgbGF5ZXIoKS0+ekluZGV4KCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBpZiAoY2hpbGRMYXllci0+aGFzVHJhbnNmb3JtKCkgfHwgY2hpbGRM
YXllci0+aXNUcmFuc3BhcmVudCgpIHx8IGNoaWxkTGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2hp
bGRCb3gtPmJhY2tncm91bmRJc09wYXF1ZUluUmVjdChjaGlsZExvY2FsQmFja2dyb3VuZFJlY3Qp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KwogYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0CiB7
CiAgICAgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIgPSBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5
ZXJzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiAx
NDU0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5MSw3ICs1OTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgYmFja2dyb3VuZElzT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIGxv
Y2FsUmVjdCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGJhY2tncm91bmRJc09ic2N1cmVkKCkg
Y29uc3Q7CiAgICAgdm9pZCBwYWludEJhY2tncm91bmQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5v
bmUpOwogICAgIAogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3Jv
dW5kT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCShy
ZXZpc2lvbiAxNDU0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0IE9WRVJSSURFOwog
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNDU0NDIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMy0xMSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQmFzaWMgY2hpbGQgb2JzY3VyYXRpb24gdGVz
dCBmb3IgYmFja2dyb3VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMTcwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9yZXBhaW50L29ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWludC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwYWludC9vYnNjdXJlZC1iYWNr
Z3JvdW5kLW5vLXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZXBhaW50L3Jl
c291cmNlcy9hbmltYXRlZC5naWY6IEFkZGVkLgorCiAyMDEzLTAzLTExICBKYW1lcyBSb2JpbnNv
biAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmlyc3QgKG9mIHByb2JhYmx5IG1h
bnkpIGxheWVyIHRyZWUgcmViYXNlbGluZXMgZm9yIHIxNDU0MjIKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvcmVwYWludC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9vYnNjdXJlZC1iYWNrZ3Jv
dW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9yZXBhaW50L29ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWludC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgdGhhdCBvYnNjdXJlZCBhbmltYXRl
ZCBnaWYgZG9lcyBub3QgdHJpZ2dlciByZXBhaW50cy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVwYWludFJlY3RzIGlzICIi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L29ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWlu
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9vYnNjdXJlZC1i
YWNrZ3JvdW5kLW5vLXJlcGFpbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvcmVwYWludC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+anNUZXN0SXNBc3lu
YyA9IHRydWU7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgZGl2IHsKKyAg
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIH0KKworICAg
IC5wYXJlbnQgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwocmVzb3VyY2VzL2FuaW1h
dGVkLmdpZikKKyAgICB9CisKKyAgICAuY2hpbGQgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVz
dCB0aGF0IG9ic2N1cmVkIGFuaW1hdGVkIGdpZiBkb2VzIG5vdCB0cmlnZ2VyIHJlcGFpbnRzLiBU
aGlzIHRlc3QgcmVxdWlyZXMgRFJULiIpOworICAgIGZ1bmN0aW9uIHN0YXJ0VHJhY2tpbmdSZXBh
aW50cygpCisgICAgeworICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAg
d2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWludHMoZG9jdW1lbnQpOworICAgICAg
ICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKKyAgICAgICAgc2V0VGltZW91dChsb2dSZXBhaW50cywg
MjAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2dSZXBhaW50cygpCisgICAgeworICAgICAg
ICByZXBhaW50UmVjdHMgPSB3aW5kb3cuaW50ZXJuYWxzLnJlcGFpbnRSZWN0c0FzVGV4dChkb2N1
bWVudCk7CisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RvcFRyYWNraW5nUmVwYWludHMoZG9j
dW1lbnQpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVwYWludFJlY3RzIiwg
IiIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgeworICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2Uo
KTsKKyAgICAgICAgaW1nLm9ubG9hZCA9IHN0YXJ0VHJhY2tpbmdSZXBhaW50czsKKyAgICAgICAg
aW1nLnNyYyA9ICJyZXNvdXJjZXMvYW5pbWF0ZWQuZ2lmIjsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgPGRpdiBjbGFzcz0icGFyZW50Ij4K
KyAgICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4K
KzwvYm9keT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9yZXNvdXJj
ZXMvYW5pbWF0ZWQuZ2lmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9yZXNvdXJjZXMv
YW5pbWF0ZWQuZ2lmCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0KCgpSMGxHT0RsaEVBQVFBUGNBQUFCbVpzd0FtUUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0gvQzA1RlZG
TkRRVkJGTWk0d0F3RUEKQUFBaCtRUUVBQUFBQUN3QUFBQUFFQUFRQUFBSUhRQURDQnhJc0tEQmd3
Z1RLbHpJc0tIRGh4QWpTcHhJc2FMRmdRRUJBQ0g1QkFRQQpBQUFBTEFBQUFBQVFBQkFBQUFnZEFB
RUlIRWl3b01HRENCTXFYTWl3b2NPSEVDTktuRWl4b3NXQkFRRUFPdz09Cgo=
</data>
<flag name="review"
          id="214197"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192858</attachid>
            <date>2013-03-12 19:35:37 -0700</date>
            <delta_ts>2013-03-12 19:43:18 -0700</delta_ts>
            <desc>for bots</desc>
            <filename>paint-obscured-background-10.patch</filename>
            <type>text/plain</type>
            <size>10974</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorICAgICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9yZXBhaW50L29ic2N1cmVkLWJhY2tn
cm91bmQtbm8tcmVwYWludC5odG1sCisKKyAgICAgICAgV2UgY2FuIGVhc2lseSBkZXRlY3Qgc29t
ZSBzaW1wbGUgY2FzZXMgd2hlcmUgYSBiYWNrZ3JvdW5kIGltYWdlIGlzIGZ1bGx5IG9ic2N1cmVk
IGJ5IGFuIG9wYXF1ZSBjaGlsZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYXZvaWRzIHVubmNl
c3NhcnkgcGFpbnRpbmcgYW5kIGltYWdlIGRlY29kaW5nLiBJdCBpcyBlc3BlY2lhbGx5IGhlbHBm
dWwgZm9yIGNhc2VzIGxpa2UgYWJvdXQuY29tIGhvbWUKKyAgICAgICAgcGFnZSB3aGVyZSBhIGZ1
bGx5IG9ic2N1cmVkICdsb2FkaW5nJyBzcGlubmVyIGtlZXBzIHRyaWdnZXJpbmcgZnJlcXVlbnQg
Y29tcGxleCByZXBhaW50cyAoZ2lmIGFuaW1hdGlvbnMKKyAgICAgICAgcHJvZ3Jlc3MgYnkgZ2V0
dGluZyBwYWludGVkIGFuZCBzdG9wIGlmIHRoZXkgYXJlIG5vdCkuCisgICAgICAgIAorICAgICAg
ICBUaGlzIGNvdWxkIGJlIG1hZGUgd2F5IG1vcmUgc29waGlzdGljYXRlZC4gVGhlIGNoZWNraW5n
IGNvdWxkIGFsc28gYmUgZG9uZSBwZXItbGF5b3V0IHJhdGhlciBwZXItcGFpbnQuCisgICAgICAg
IEV2ZW4gdGhpcyBzaW1wbGUgYXBwcm9hY2ggZ2V0cyBoaXQgc3VycHJpc2luZ2x5IG9mdGVuIGlu
IHJlYWwgd29ybGQgc2l0ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YmFja2dyb3VuZElzT2JzY3VyZWQpOgorICAg
ICAgICAKKyAgICAgICAgICAgIEJlZm9yZSBwYWludGluZyBiYWNrZ3JvdW5kIHRlc3QgaWYgYW55
IHNpbmdsZSBjaGlsZCByZW5kZXJlciBmdWxseSBvYnNjdXJlcyBpdC4KKworICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDoKKwogMjAxMy0wMy0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIFNrTWF0cml4NDQgaW5z
dGVhZCBvZiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbiBhbmltYXRpb24gQVBJcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDE0NTQ0MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMyLDYgKzExMzIsODUgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25z
dCBQYQogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91bmRJc09wYXF1ZUluUmVj
dChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0Cit7CisgICAgQ29sb3IgYmFja2dy
b3VuZENvbG9yID0gc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgfHwgYmFj
a2dyb3VuZENvbG9yLmhhc0FscGhhKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IEZJWE1FOiBDaGVjayB0aGUgb3BhcXVlbmVzcyBvZiBiYWNrZ3JvdW5kIGltYWdlcy4KKworICAg
IC8vIEZJWE1FOiBVc2Ugcm91bmRlZCByZWN0IGlmIGJvcmRlciByYWRpdXMgaXMgcHJlc2VudC4K
KyAgICBpZiAoc3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAvLyBGSVhNRTogVGhlIGJhY2tncm91bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5
IHRoZSBsYXN0IGxheWVyLgorICAgIGlmIChzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCktPm5l
eHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJl
Y3Q7CisgICAgc3dpdGNoIChzdHlsZSgpLT5iYWNrZ3JvdW5kQ2xpcCgpKSB7CisgICAgY2FzZSBC
b3JkZXJGaWxsQm94OgorICAgICAgICBiYWNrZ3JvdW5kUmVjdCA9IGJvcmRlckJveFJlY3QoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYWRkaW5nRmlsbEJveDoKKyAgICAgICAgYmFja2dy
b3VuZFJlY3QgPSBwYWRkaW5nQm94UmVjdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENv
bnRlbnRGaWxsQm94OgorICAgICAgICBiYWNrZ3JvdW5kUmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gYmFja2dyb3VuZFJlY3QuY29udGFpbnMobG9jYWxSZWN0KTsKK30KKworYm9vbCBS
ZW5kZXJCb3g6OmJhY2tncm91bmRJc09ic2N1cmVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlz
Um9vdCgpKTsKKyAgICAvLyBUZXN0IHRvIHNlZSBpZiB0aGUgY2hpbGRyZW4gdHJpdmlhbGx5IG9i
c2N1cmUgdGhlIGJhY2tncm91bmQuCisgICAgLy8gRklYTUU6IFRoaXMgdGVzdCBjYW4gYmUgZG9u
ZSBvbmNlIHBlciBsYXlvdXQgYW5kIGl0IGNhbiBiZSBtdWNoIG1vcmUgY29tcHJlaGVuc2l2ZS4K
KyAgICBpZiAoIWhhc0JhY2tncm91bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8v
IFRhYmxlIGJhY2tncm91bmQgcGFpbnRpbmcgaXMgc3BlY2lhbC4KKyAgICBpZiAoaXNUYWJsZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gVGhpcyBjb3VsZCB0YWtlIGJhY2tncm91
bmQgcG9zaXRpb24sIGNsaXAsIGV0Yy4gaW50byBhY2NvdW50LgorICAgIExheW91dFJlY3QgYmFj
a2dyb3VuZFJlY3QgPSBib3JkZXJCb3hSZWN0KCk7CisgICAgLy8gSWYgd2UgZG9uJ3QgZmluZCBh
IGNvdmVyaW5nIGNoaWxkIGZhc3QgdGhlcmUgcHJvYmFibHkgaXNuJ3Qgb25lLgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtQ2hpbGRyZW5Db3VudFRvVGVzdCA9IDQ7CisgICAgdW5z
aWduZWQgY291bnQgPSAwOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYg
KCsrY291bnQgPiBtYXhpbXVtQ2hpbGRyZW5Db3VudFRvVGVzdCkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBpZiAoIWNoaWxkLT5pc0JveCgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIFJlbmRlckJveCogY2hpbGRCb3ggPSB0b1JlbmRlckJveChjaGlsZCk7CisgICAgICAg
IFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY2hpbGQtPnN0eWxlKCk7CisgICAgICAgIGlmIChj
aGlsZFN0eWxlLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBjaGlsZFN0eWxlLT5zaGFwZU91
dHNpZGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoY2hpbGRTdHlsZS0+
cG9zaXRpb24oKSAhPSBTdGF0aWNQb3NpdGlvbiAmJiBjaGlsZEJveC0+Y29udGFpbmluZ0Jsb2Nr
KCkgIT0gdGhpcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBMYXlvdXRQb2ludCBj
aGlsZExvY2F0aW9uID0gY2hpbGRCb3gtPmxvY2F0aW9uKCk7CisgICAgICAgIGlmIChjaGlsZEJv
eC0+aXNSZWxQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBjaGlsZExvY2F0aW9uLm1vdmUoY2hp
bGRCb3gtPnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSk7CisgICAgICAgIExheW91dFJlY3QgY2hp
bGRMb2NhbEJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZFJlY3Q7CisgICAgICAgIGNoaWxkTG9j
YWxCYWNrZ3JvdW5kUmVjdC5tb3ZlQnkoLWNoaWxkTG9jYXRpb24pOworICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBjaGlsZEJveC0+bGF5ZXIoKSkgeworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgICAgIGlmIChjaGlsZExheWVyLT5pc0NvbXBv
c2l0ZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgorICAgICAgICAgICAg
Ly8gVGhpcyBqdXN0IGlnbm9yZXMgYW55dGhpbmcgbW9yZSBjb21wbGljYXRlZCB0aGFuIHotaW5k
ZXg6YXV0by4KKyAgICAgICAgICAgIGlmIChjaGlsZExheWVyLT5pc1N0YWNraW5nQ29udGV4dCgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGNoaWxkTGF5ZXIt
Pmhhc1RyYW5zZm9ybSgpIHx8IGNoaWxkTGF5ZXItPmlzVHJhbnNwYXJlbnQoKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2hpbGRCb3gtPmJhY2tn
cm91bmRJc09wYXF1ZUluUmVjdChjaGlsZExvY2FsQmFja2dyb3VuZFJlY3QpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBSZW5k
ZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0CiB7CiAgICAgY29uc3Qg
RmlsbExheWVyKiBmaWxsTGF5ZXIgPSBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiAxNDU0NDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
MSw3ICs1OTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
YmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
YmFja2dyb3VuZElzT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGJhY2tncm91bmRJc09ic2N1cmVkKCkgY29uc3Q7CiAgICAg
dm9pZCBwYWludEJhY2tncm91bmQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYs
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUpOwogICAgIAog
ICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBj
b25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCShyZXZpc2lvbiAxNDU0
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBiYWNr
Z3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0IE9WRVJSSURFOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNDU0NDIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMy0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQmFzaWMgY2hpbGQgb2JzY3VyYXRpb24gdGVzdCBmb3IgYmFja2dy
b3VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MTcwMQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGZh
c3QvcmVwYWludC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBh
aW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwYWludC9yZXNvdXJjZXMvYW5pbWF0
ZWQuZ2lmOiBBZGRlZC4KKwogMjAxMy0wMy0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEZpcnN0IChvZiBwcm9iYWJseSBtYW55KSBsYXllciB0cmVl
IHJlYmFzZWxpbmVzIGZvciByMTQ1NDIyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
b2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9v
YnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwIEBACitUZXN0IHRoYXQgb2JzY3VyZWQgYW5pbWF0ZWQgZ2lmIGRvZXMgbm90
IHRyaWdnZXIgcmVwYWludHMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJlcGFpbnRSZWN0cyBpcyAiIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvcmVwYWludC9vYnNjdXJlZC1iYWNrZ3JvdW5kLW5vLXJlcGFpbnQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1y
ZXBhaW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2Jz
Y3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PmpzVGVzdElzQXN5bmMgPSB0cnVlOzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGRpdiB7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICAucGFyZW50IHsKKyAg
ICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKHJlc291cmNlcy9hbmltYXRlZC5naWYpCisgICAg
fQorCisgICAgLmNoaWxkIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
fQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBvYnNjdXJl
ZCBhbmltYXRlZCBnaWYgZG9lcyBub3QgdHJpZ2dlciByZXBhaW50cy4gVGhpcyB0ZXN0IHJlcXVp
cmVzIERSVC4iKTsKKyAgICBmdW5jdGlvbiBzdGFydFRyYWNraW5nUmVwYWludHMoKQorICAgIHsK
KyAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc3RhcnRUcmFja2luZ1JlcGFpbnRzKGRvY3VtZW50KTsKKyAgICAgICAgdGVzdFJ1bm5lci5k
aXNwbGF5KCk7CisgICAgICAgIHNldFRpbWVvdXQobG9nUmVwYWludHMsIDIwMCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gbG9nUmVwYWludHMoKQorICAgIHsKKyAgICAgICAgcmVwYWludFJlY3Rz
ID0gd2luZG93LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoZG9jdW1lbnQpOworICAgICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKGRvY3VtZW50KTsKKworICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlcGFpbnRSZWN0cyIsICIiKTsKKworICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAg
ICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7CisgICAgICAgIGlt
Zy5vbmxvYWQgPSBzdGFydFRyYWNraW5nUmVwYWludHM7CisgICAgICAgIGltZy5zcmMgPSAicmVz
b3VyY2VzL2FuaW1hdGVkLmdpZiI7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InN0YXJ0KCkiPgorICAgIDxkaXYgY2xhc3M9InBhcmVudCI+CisgICAgICAgIDxkaXYg
Y2xhc3M9ImNoaWxkIj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL2FuaW1hdGVkLmdp
Zgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBl
Lgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL2FuaW1hdGVkLmdpZgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtCgoKUjBsR09EbGhFQUFRQVBjQUFBQm1ac3dBbVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VB
CkFBQWgrUVFFQUFBQUFDd0FBQUFBRUFBUUFBQUlIUUFEQ0J4SXNLREJnd2dUS2x6SXNLSERoeEFq
U3B4SXNhTEZnUUVCQUNINUJBUUEKQUFBQUxBQUFBQUFRQUJBQUFBZ2RBQUVJSEVpd29NR0RDQk1x
WE1pd29jT0hFQ05LbkVpeG9zV0JBUUVBT3c9PQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192860</attachid>
            <date>2013-03-12 19:43:18 -0700</date>
            <delta_ts>2013-03-13 09:35:33 -0700</delta_ts>
            <desc>for bots 2</desc>
            <filename>paint-obscured-background-11.patch</filename>
            <type>text/plain</type>
            <size>10888</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNpYyBjaGlsZCBvYnNjdXJh
dGlvbiB0ZXN0IGZvciBiYWNrZ3JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorICAgICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9yZXBhaW50L29ic2N1cmVkLWJhY2tn
cm91bmQtbm8tcmVwYWludC5odG1sCisKKyAgICAgICAgV2UgY2FuIGVhc2lseSBkZXRlY3Qgc29t
ZSBzaW1wbGUgY2FzZXMgd2hlcmUgYSBiYWNrZ3JvdW5kIGltYWdlIGlzIGZ1bGx5IG9ic2N1cmVk
IGJ5IGFuIG9wYXF1ZSBjaGlsZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYXZvaWRzIHVubmNl
c3NhcnkgcGFpbnRpbmcgYW5kIGltYWdlIGRlY29kaW5nLiBJdCBpcyBlc3BlY2lhbGx5IGhlbHBm
dWwgZm9yIGNhc2VzIGxpa2UgYWJvdXQuY29tIGhvbWUKKyAgICAgICAgcGFnZSB3aGVyZSBhIGZ1
bGx5IG9ic2N1cmVkICdsb2FkaW5nJyBzcGlubmVyIGtlZXBzIHRyaWdnZXJpbmcgZnJlcXVlbnQg
Y29tcGxleCByZXBhaW50cyAoZ2lmIGFuaW1hdGlvbnMKKyAgICAgICAgcHJvZ3Jlc3MgYnkgZ2V0
dGluZyBwYWludGVkIGFuZCBzdG9wIGlmIHRoZXkgYXJlIG5vdCkuCisgICAgICAgIAorICAgICAg
ICBUaGlzIGNvdWxkIGJlIG1hZGUgd2F5IG1vcmUgc29waGlzdGljYXRlZC4gVGhlIGNoZWNraW5n
IGNvdWxkIGFsc28gYmUgZG9uZSBwZXItbGF5b3V0IHJhdGhlciBwZXItcGFpbnQuCisgICAgICAg
IEV2ZW4gdGhpcyBzaW1wbGUgYXBwcm9hY2ggZ2V0cyBoaXQgc3VycHJpc2luZ2x5IG9mdGVuIGlu
IHJlYWwgd29ybGQgc2l0ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YmFja2dyb3VuZElzT2JzY3VyZWQpOgorICAg
ICAgICAKKyAgICAgICAgICAgIEJlZm9yZSBwYWludGluZyBiYWNrZ3JvdW5kIHRlc3QgaWYgYW55
IHNpbmdsZSBjaGlsZCByZW5kZXJlciBmdWxseSBvYnNjdXJlcyBpdC4KKworICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDoKKwogMjAxMy0wMy0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIFNrTWF0cml4NDQgaW5z
dGVhZCBvZiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbiBhbmltYXRpb24gQVBJcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDE0NTQ0MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMyLDYgKzExMzIsODQgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25z
dCBQYQogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91bmRJc09wYXF1ZUluUmVj
dChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0Cit7CisgICAgQ29sb3IgYmFja2dy
b3VuZENvbG9yID0gc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgfHwgYmFj
a2dyb3VuZENvbG9yLmhhc0FscGhhKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IEZJWE1FOiBDaGVjayB0aGUgb3BhcXVlbmVzcyBvZiBiYWNrZ3JvdW5kIGltYWdlcy4KKworICAg
IC8vIEZJWE1FOiBVc2Ugcm91bmRlZCByZWN0IGlmIGJvcmRlciByYWRpdXMgaXMgcHJlc2VudC4K
KyAgICBpZiAoc3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAvLyBGSVhNRTogVGhlIGJhY2tncm91bmQgY29sb3IgY2xpcCBpcyBkZWZpbmVkIGJ5
IHRoZSBsYXN0IGxheWVyLgorICAgIGlmIChzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCktPm5l
eHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIExheW91dFJlY3QgYmFja2dyb3VuZFJl
Y3Q7CisgICAgc3dpdGNoIChzdHlsZSgpLT5iYWNrZ3JvdW5kQ2xpcCgpKSB7CisgICAgY2FzZSBC
b3JkZXJGaWxsQm94OgorICAgICAgICBiYWNrZ3JvdW5kUmVjdCA9IGJvcmRlckJveFJlY3QoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYWRkaW5nRmlsbEJveDoKKyAgICAgICAgYmFja2dy
b3VuZFJlY3QgPSBwYWRkaW5nQm94UmVjdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENv
bnRlbnRGaWxsQm94OgorICAgICAgICBiYWNrZ3JvdW5kUmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gYmFja2dyb3VuZFJlY3QuY29udGFpbnMobG9jYWxSZWN0KTsKK30KKworYm9vbCBS
ZW5kZXJCb3g6OmJhY2tncm91bmRJc09ic2N1cmVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlz
Um9vdCgpKTsKKyAgICAvLyBUZXN0IHRvIHNlZSBpZiB0aGUgY2hpbGRyZW4gdHJpdmlhbGx5IG9i
c2N1cmUgdGhlIGJhY2tncm91bmQuCisgICAgLy8gRklYTUU6IFRoaXMgdGVzdCBjYW4gYmUgZG9u
ZSBvbmNlIHBlciBsYXlvdXQgYW5kIGl0IGNhbiBiZSBtdWNoIG1vcmUgY29tcHJlaGVuc2l2ZS4K
KyAgICBpZiAoIWhhc0JhY2tncm91bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8v
IFRhYmxlIGJhY2tncm91bmQgcGFpbnRpbmcgaXMgc3BlY2lhbC4KKyAgICBpZiAoaXNUYWJsZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gVGhpcyBjb3VsZCB0YWtlIGJhY2tncm91
bmQgcG9zaXRpb24sIGNsaXAsIGV0Yy4gaW50byBhY2NvdW50LgorICAgIExheW91dFJlY3QgYmFj
a2dyb3VuZFJlY3QgPSBib3JkZXJCb3hSZWN0KCk7CisgICAgLy8gSWYgd2UgZG9uJ3QgZmluZCBh
IGNvdmVyaW5nIGNoaWxkIGZhc3QgdGhlcmUgcHJvYmFibHkgaXNuJ3Qgb25lLgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtQ2hpbGRyZW5Db3VudFRvVGVzdCA9IDQ7CisgICAgdW5z
aWduZWQgY291bnQgPSAwOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYg
KCsrY291bnQgPiBtYXhpbXVtQ2hpbGRyZW5Db3VudFRvVGVzdCkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBpZiAoIWNoaWxkLT5pc0JveCgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIFJlbmRlckJveCogY2hpbGRCb3ggPSB0b1JlbmRlckJveChjaGlsZCk7CisgICAgICAg
IFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY2hpbGQtPnN0eWxlKCk7CisgICAgICAgIGlmIChj
aGlsZFN0eWxlLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBjaGlsZFN0eWxlLT5zaGFwZU91
dHNpZGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoY2hpbGRTdHlsZS0+
cG9zaXRpb24oKSAhPSBTdGF0aWNQb3NpdGlvbiAmJiBjaGlsZEJveC0+Y29udGFpbmluZ0Jsb2Nr
KCkgIT0gdGhpcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBMYXlvdXRQb2ludCBj
aGlsZExvY2F0aW9uID0gY2hpbGRCb3gtPmxvY2F0aW9uKCk7CisgICAgICAgIGlmIChjaGlsZEJv
eC0+aXNSZWxQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBjaGlsZExvY2F0aW9uLm1vdmUoY2hp
bGRCb3gtPnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSk7CisgICAgICAgIExheW91dFJlY3QgY2hp
bGRMb2NhbEJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZFJlY3Q7CisgICAgICAgIGNoaWxkTG9j
YWxCYWNrZ3JvdW5kUmVjdC5tb3ZlQnkoLWNoaWxkTG9jYXRpb24pOworICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBjaGlsZEJveC0+bGF5ZXIoKSkgeworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgICAgIGlmIChjaGlsZExheWVyLT5pc0NvbXBv
c2l0ZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgorICAgICAgICAgICAg
aWYgKGNoaWxkTGF5ZXItPnpJbmRleCgpIDwgMCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmIChjaGlsZExheWVyLT5oYXNUcmFuc2Zvcm0oKSB8fCBjaGlsZExheWVy
LT5pc1RyYW5zcGFyZW50KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNoaWxkQm94LT5iYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QoY2hpbGRMb2Nh
bEJhY2tncm91bmRSZWN0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9w
TGF5ZXIoKSBjb25zdAogewogICAgIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyID0gc3R5bGUo
KS0+YmFja2dyb3VuZExheWVycygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaAkocmV2aXNpb24gMTQ1NDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTEsNyArNTkxLDggQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGJhY2tncm91bmRJc09ic2N1cmVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGJhY2tncm91bmRJc09wYXF1ZUluUmVjdChjb25z
dCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBiYWNrZ3Jv
dW5kSXNPYnNjdXJlZCgpIGNvbnN0OwogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBC
YWNrZ3JvdW5kQmxlZWROb25lKTsKICAgICAKICAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0
UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRl
ck9iamVjdCogYmFja2dyb3VuZE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaAkocmV2aXNpb24gMTQ1NDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdCBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBj
b25zdCBPVkVSUklERTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1NDQyKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDMtMTEg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEJhc2ljIGNoaWxk
IG9ic2N1cmF0aW9uIHRlc3QgZm9yIGJhY2tncm91bmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3Vu
ZC1uby1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZXBhaW50
L29ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3JlcGFpbnQvcmVzb3VyY2VzL2FuaW1hdGVkLmdpZjogQWRkZWQuCisKIDIwMTMtMDMtMTEg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXJzdCAo
b2YgcHJvYmFibHkgbWFueSkgbGF5ZXIgdHJlZSByZWJhc2VsaW5lcyBmb3IgcjE0NTQyMgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L29ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWlu
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L29i
c2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWludC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dyb3VuZC1uby1yZXBhaW50
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IG9i
c2N1cmVkIGFuaW1hdGVkIGdpZiBkb2VzIG5vdCB0cmlnZ2VyIHJlcGFpbnRzLiBUaGlzIHRlc3Qg
cmVxdWlyZXMgRFJULgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZXBh
aW50UmVjdHMgaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvb2JzY3VyZWQtYmFja2dy
b3VuZC1uby1yZXBhaW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBh
aW50L29ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWludC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L29ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWludC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyAgICBkaXYgeworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgfQorCisgICAgLnBhcmVudCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChy
ZXNvdXJjZXMvYW5pbWF0ZWQuZ2lmKQorICAgIH0KKworICAgIC5jaGlsZCB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIGRl
c2NyaXB0aW9uKCJUZXN0IHRoYXQgb2JzY3VyZWQgYW5pbWF0ZWQgZ2lmIGRvZXMgbm90IHRyaWdn
ZXIgcmVwYWludHMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuIik7CisgICAgZnVuY3Rpb24gc3Rh
cnRUcmFja2luZ1JlcGFpbnRzKCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
VG9wOworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cyhkb2N1
bWVudCk7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOworICAgICAgICBzZXRUaW1lb3V0
KGxvZ1JlcGFpbnRzLCAyMDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZ1JlcGFpbnRzKCkK
KyAgICB7CisgICAgICAgIHJlcGFpbnRSZWN0cyA9IHdpbmRvdy5pbnRlcm5hbHMucmVwYWludFJl
Y3RzQXNUZXh0KGRvY3VtZW50KTsKKyAgICAgICAgd2luZG93LmludGVybmFscy5zdG9wVHJhY2tp
bmdSZXBhaW50cyhkb2N1bWVudCk7CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJy
ZXBhaW50UmVjdHMiLCAiIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwg
IXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGlt
ZyA9IG5ldyBJbWFnZSgpOworICAgICAgICBpbWcub25sb2FkID0gc3RhcnRUcmFja2luZ1JlcGFp
bnRzOworICAgICAgICBpbWcuc3JjID0gInJlc291cmNlcy9hbmltYXRlZC5naWYiOworICAgIH0K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICA8ZGl2IGNs
YXNzPSJwYXJlbnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+CisgICAgICAgIDwvZGl2
PgorICAgIDwvZGl2PgorPC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9y
ZXBhaW50L3Jlc291cmNlcy9hbmltYXRlZC5naWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9yZXBh
aW50L3Jlc291cmNlcy9hbmltYXRlZC5naWYKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlw
ZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKClIwbEdPRGxoRUFBUUFQY0FBQUJtWnN3
QW1RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFDSC9DMDVGVkZORFFWQkZNaTR3QXdFQQpBQUFoK1FRRUFBQUFBQ3dBQUFBQUVBQVFBQUFJ
SFFBRENCeElzS0RCZ3dnVEtseklzS0hEaHhBalNweElzYUxGZ1FFQkFDSDVCQVFBCkFBQUFMQUFB
QUFBUUFCQUFBQWdkQUFFSUhFaXdvTUdEQ0JNcVhNaXdvY09IRUNOS25FaXhvc1dCQVFFQU93PT0K
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>