<?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>83973</bug_id>
          
          <creation_ts>2012-04-14 00:55:24 -0700</creation_ts>
          <short_desc>[GTK] Should pass canvas/philip/tests/toDataURL.jpeg.alpha.html</short_desc>
          <delta_ts>2012-04-24 15:34:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://w3c-test.org/html/tests/approved/canvas/toDataURL.jpeg.alpha.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40147</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="noel gordon">noel.gordon</reporter>
          <assigned_to name="noel gordon">noel.gordon</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602635</commentid>
    <comment_count>0</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-14 00:55:24 -0700</bug_when>
    <thetext>To pass this test, pass premultiplied color to the JPEG encoder. Modify the cairoImageSurfaceToGdkPixbuf() function added in

  https://bugs.webkit.org/attachment.cgi?id=62763&amp;action=prettypatch

to have an default second argument (default false) that requests premultiplied color output when creating the GdkPixbuf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602638</commentid>
    <comment_count>1</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-14 01:25:56 -0700</bug_when>
    <thetext>... or else create a specific function, cairoImageSurfaceToGdkPixbufPremultiplied() say, for the purpose.  Martin, let me know which you&apos;d prefer and I&apos;ll prepare a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603174</commentid>
    <comment_count>2</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-16 08:32:03 -0700</bug_when>
    <thetext>Given bug 49532, seems cairoImageSurfaceToGdkPixbufPremultiplied() is the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603176</commentid>
    <comment_count>3</comment_count>
      <attachid>137350</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-16 08:35:44 -0700</bug_when>
    <thetext>Created attachment 137350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603874</commentid>
    <comment_count>4</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-17 02:12:43 -0700</bug_when>
    <thetext>Update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603877</commentid>
    <comment_count>5</comment_count>
      <attachid>137494</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-17 02:13:43 -0700</bug_when>
    <thetext>Created attachment 137494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603879</commentid>
    <comment_count>6</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-17 02:17:54 -0700</bug_when>
    <thetext>I have no means to run GTK tests in my setup.  So maybe we submit and check the webkit GTK bots, or you could patch it locally and see if the toDataURL.jpeg.alpha test passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603891</commentid>
    <comment_count>7</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-17 02:28:48 -0700</bug_when>
    <thetext>https://www.w3.org/Bugs/Public/show_bug.cgi?id=11431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603910</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-17 03:05:11 -0700</bug_when>
    <thetext>I guess this should be handled by GdkPixbuf jpeg encoder, no? gdk_pixbuf_get_from_surface() returns a valid GdkPixbuf (using an alpha channel or not depending on the cairo surface image format). So gdk_pixbuf_save should work with that pixbuf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605280</commentid>
    <comment_count>9</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-18 18:28:59 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I guess this should be handled by GdkPixbuf jpeg encoder, no? 

Nope.  JPEG encoders ignore alpha channel and encode the RGB channels only.  The encoder used by GTK looks right to me; see real_save_jpeg() here:

  http://gdk-pixbuf.sourcearchive.com/documentation/2.22.0-1/io-jpeg_8c-source.html

I believe the JPEG encoder should remain dumb and encode whatever RGB it&apos;s given.  That RGB can be in one of two states: premultiplied or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605284</commentid>
    <comment_count>10</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-18 18:34:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; gdk_pixbuf_get_from_surface() returns a valid GdkPixbuf (using an alpha channel or not depending on the cairo surface image format). So gdk_pixbuf_save should work with that pixbuf.

The cairo surface of an ImageBuffer is CAIRO_FORMAT_ARGB32 premultiplied.  gdk_pixbuf_get_from_surface() converts the cairo surface pixels to un-premultiplied color.  Thus, gdk_pixbuf_save() would send un-premultiplied color to the JPEG encoder if gdk_pixbuf_get_from_surface() was used to create the GdkPixbuf.

The &lt;canvas&gt; spec states that toDataURL() must encode a Porter-Duff composite source-over black for image types that do not support alpha, JPEG for example.  The toDataURL.jpeg.alpha.html checks for that. The test has been vetted for accuracy (bug 40147) and approved by the W3C

   http://w3c-test.org/html/tests/approved/canvas/toDataURL.jpeg.alpha.html

The pass this test, you must send premultiplied color to the JPEG encoder.  The reasons are documented in ChangeLog https://bugs.webkit.org/attachment.cgi?id=76964&amp;action=prettypatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605415</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-19 00:08:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; gdk_pixbuf_get_from_surface() returns a valid GdkPixbuf (using an alpha channel or not depending on the cairo surface image format). So gdk_pixbuf_save should work with that pixbuf.
&gt; 
&gt; The cairo surface of an ImageBuffer is CAIRO_FORMAT_ARGB32 premultiplied.  gdk_pixbuf_get_from_surface() converts the cairo surface pixels to un-premultiplied color.  Thus, gdk_pixbuf_save() would send un-premultiplied color to the JPEG encoder if gdk_pixbuf_get_from_surface() was used to create the GdkPixbuf.
&gt; 
&gt; The &lt;canvas&gt; spec states that toDataURL() must encode a Porter-Duff composite source-over black for image types that do not support alpha, JPEG for example.  The toDataURL.jpeg.alpha.html checks for that. The test has been vetted for accuracy (bug 40147) and approved by the W3C
&gt; 
&gt;    http://w3c-test.org/html/tests/approved/canvas/toDataURL.jpeg.alpha.html
&gt; 
&gt; The pass this test, you must send premultiplied color to the JPEG encoder.  The reasons are documented in ChangeLog https://bugs.webkit.org/attachment.cgi?id=76964&amp;action=prettypatch

In that case I think we should do exactly that, something like this should work:


    GRefPtr&lt;GdkPixbuf&gt; pixbuf;
    if (type == &quot;jpeg&quot; &amp;&amp; cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32) {
        // JPEG doesn&apos;t support alpha channel. The &lt;canvas&gt; spec states that toDataURL() must encode a Porter-Duff                                                                           
        // composite source-over black for image types that do not support alpha.                                                                                                            
        RefPtr&lt;cairo_surface_t&gt; newSurface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_RGB24,
                                                                                 cairo_image_surface_get_width(surface),
                                                                                 cairo_image_surface_get_height(surface)));
        RefPtr&lt;cairo_t&gt; cr = adoptRef(cairo_create(newSurface.get()));
        cairo_set_source_surface(cr.get(), surface, 0, 0);
        cairo_set_operator(cr.get(), CAIRO_OPERATOR_SOURCE);
        cairo_paint(cr.get());
        pixbuf = adoptGRef(cairoImageSurfaceToGdkPixbuf(newSurface.get()));
    } else
        pixbuf = adoptGRef(cairoImageSurfaceToGdkPixbuf(surface));
    if (!pixbuf)
        return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605430</commentid>
    <comment_count>12</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-19 00:28:21 -0700</bug_when>
    <thetext>&gt;     RefPtr&lt;cairo_t&gt; cr = adoptRef(cairo_create(newSurface.get()));
&gt;     cairo_set_source_surface(cr.get(), surface, 0, 0);
&gt;     cairo_set_operator(cr.get(), CAIRO_OPERATOR_SOURCE);
&gt;     cairo_paint(cr.get());
&gt;      pixbuf = adoptGRef(cairoImageSurfaceToGdkPixbuf(newSurface.get()));

Does cairoImageSurfaceToGdkPixbuf produce un-premultiplied colors here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605436</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-19 00:47:50 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt;     RefPtr&lt;cairo_t&gt; cr = adoptRef(cairo_create(newSurface.get()));
&gt; &gt;     cairo_set_source_surface(cr.get(), surface, 0, 0);
&gt; &gt;     cairo_set_operator(cr.get(), CAIRO_OPERATOR_SOURCE);
&gt; &gt;     cairo_paint(cr.get());
&gt; &gt;      pixbuf = adoptGRef(cairoImageSurfaceToGdkPixbuf(newSurface.get()));
&gt; 
&gt; Does cairoImageSurfaceToGdkPixbuf produce un-premultiplied colors here?

It doesn&apos;t un-premultiply because there&apos;s no alpha in the source image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605442</commentid>
    <comment_count>14</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-19 00:57:49 -0700</bug_when>
    <thetext>Ok and when cairo paints a CAIRO_FORMAT_ARGB32 source into a CAIRO_FORMAT_RGB24 surface,  the alpha channel is just ignored?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607148</commentid>
    <comment_count>15</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-20 22:27:09 -0700</bug_when>
    <thetext>Because maybe it&apos;s not ignored given that the another plausible answer to my question is that since CAIRO_FORMAT_ARGB32 is premultipled data, it gets un-premultipled on write to a CAIRO_FORMAT_RGB24 target.

I done a bunch of web searching trying to work out the correct answer, but so far I&apos;ve found no canonical reference to the fact, nor in  the cairo docs, or by reading through the cairo code trying to understand what it does.  I guess I&apos;m stuck here.  What&apos;s a reasonable way for us to proceed here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607166</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-21 01:27:01 -0700</bug_when>
    <thetext>Data is not un-premultiplied, you can test the code I pasted and check that test toDataURL.jpeg.alpha.html passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607175</commentid>
    <comment_count>17</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-21 01:52:53 -0700</bug_when>
    <thetext>Was comment #6 unclear?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607177</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-21 02:05:16 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Was comment #6 unclear?

You an test it with GtkLauncher and loading http://w3c-test.org/html/tests/approved/canvas/toDataURL.jpeg.alpha.html you don&apos;t need to run the tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607178</commentid>
    <comment_count>19</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-21 02:05:42 -0700</bug_when>
    <thetext>Was is the GtkLauncher ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607179</commentid>
    <comment_count>20</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-21 02:07:06 -0700</bug_when>
    <thetext>And whatever is is, I doubt I can build on on windows box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607181</commentid>
    <comment_count>21</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-21 02:12:35 -0700</bug_when>
    <thetext>Sorry, whatever GtkLauncher is, I doubt I can build it on a windows box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607185</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-21 02:20:13 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Sorry, whatever GtkLauncher is, I doubt I can build it on a windows box.

Ok, I thought you could build webkit but not run the tests. GtkLauncher is a small web browser for testing that is built with the GTK+ port. I can simply submit a patch with the code I pasted if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607188</commentid>
    <comment_count>23</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-21 02:27:24 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; Sorry, whatever GtkLauncher is, I doubt I can build it on a windows box.
&gt; 
&gt; Ok, I thought you could build webkit but not run the tests. GtkLauncher is a small web browser for testing that is built with the GTK+ port.

Appreciate the explanation.  And no I can&apos;t build webkit gtk and run tests with my current setup (win32). 

&gt; I can simply submit a patch with the code I pasted if you want.

Yes please, that sounds good to me, if you like to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607433</commentid>
    <comment_count>24</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-22 21:03:05 -0700</bug_when>
    <thetext>One more thought was that Martin&apos;s original code, now modified, is much like a single memcpy.  The code in comment #11 seems to cost two memcpy operations (one for the paint and one for cairoImageSurfaceToGdkPixbuf step).  Should I worry about performance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607436</commentid>
    <comment_count>25</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-22 21:22:36 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; One more thought was that Martin&apos;s original code, now modified, is much like a single memcpy.  The code in comment #11 seems to cost two memcpy operations (one for the paint and one for cairoImageSurfaceToGdkPixbuf step).  Should I worry about performance?

Indeed it might be nice to do this in a single pass instead of two. How can you be sure your original patch fixes the test without testing it though? If necessary, I can do that locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607499</commentid>
    <comment_count>26</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-22 23:52:27 -0700</bug_when>
    <thetext>
Indeed.  Testing that the test works means we either 1) submit and watch the GTK+ build bot, or

&gt; If necessary, I can do that locally.

do as you suggest.  If you have time, that&apos;d sure help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607560</commentid>
    <comment_count>27</comment_count>
      <attachid>138311</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-23 02:27:52 -0700</bug_when>
    <thetext>Created attachment 138311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607561</commentid>
    <comment_count>28</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-23 02:28:48 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; One more thought was that Martin&apos;s original code, now modified, is much like a single memcpy.  The code in comment #11 seems to cost two memcpy operations (one for the paint and one for cairoImageSurfaceToGdkPixbuf step).  Should I worry about performance?

We can actually use the same data to avoid the memory allocation since cairo use the same 32 bits also for RGB24.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608314</commentid>
    <comment_count>29</comment_count>
      <attachid>138311</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-23 19:37:51 -0700</bug_when>
    <thetext>Comment on attachment 138311
Patch

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

&gt; Source/WebCore/platform/graphics/gtk/ImageBufferGtk.cpp:45
&gt; +        // JPEG doesn&apos;t support alpha channel. The &lt;canvas&gt; spec states that toDataURL() must encode a Porter-Duff

Patch looks fine to me.

nit: CAIRO_FORMAT_ARGB32 is a given, right?  We could just assert if we&apos;re concerned about it.

if (type == &quot;jpeg&quot;) {
  ASSERT(cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32);
     ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608619</commentid>
    <comment_count>30</comment_count>
      <attachid>138311</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-24 06:59:20 -0700</bug_when>
    <thetext>Comment on attachment 138311
Patch

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

r=me but please consider this question before landing:

&gt;&gt; Source/WebCore/platform/graphics/gtk/ImageBufferGtk.cpp:45
&gt;&gt; +        // JPEG doesn&apos;t support alpha channel. The &lt;canvas&gt; spec states that toDataURL() must encode a Porter-Duff
&gt; 
&gt; Patch looks fine to me.
&gt; 
&gt; nit: CAIRO_FORMAT_ARGB32 is a given, right?  We could just assert if we&apos;re concerned about it.
&gt; 
&gt; if (type == &quot;jpeg&quot;) {
&gt;   ASSERT(cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32);
&gt;      ...

Yes I think it&apos;d be ok to proceed as Noel advises. Carlos?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608673</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-24 08:08:19 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 138311 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138311&amp;action=review
&gt; 
&gt; r=me but please consider this question before landing:
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/gtk/ImageBufferGtk.cpp:45
&gt; &gt;&gt; +        // JPEG doesn&apos;t support alpha channel. The &lt;canvas&gt; spec states that toDataURL() must encode a Porter-Duff
&gt; &gt; 
&gt; &gt; Patch looks fine to me.
&gt; &gt; 
&gt; &gt; nit: CAIRO_FORMAT_ARGB32 is a given, right?  We could just assert if we&apos;re concerned about it.
&gt; &gt; 
&gt; &gt; if (type == &quot;jpeg&quot;) {
&gt; &gt;   ASSERT(cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32);
&gt; &gt;      ...
&gt; 
&gt; Yes I think it&apos;d be ok to proceed as Noel advises. Carlos?

es, or even remove the check since surface is created unconditionally as ARGB32 in ImageBuffer constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608688</commentid>
    <comment_count>32</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-24 08:25:34 -0700</bug_when>
    <thetext>Committed r115058: &lt;http://trac.webkit.org/changeset/115058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609014</commentid>
    <comment_count>33</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-24 13:56:42 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; or even remove the check since surface is created unconditionally as ARGB32 in ImageBuffer constructor

Exactly. Thanks for helping everybody, test passes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137350</attachid>
            <date>2012-04-16 08:35:44 -0700</date>
            <delta_ts>2012-04-17 02:13:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83973-20120417013541.patch</filename>
            <type>text/plain</type>
            <size>7732</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM3MjE3NWFmZGEyMzkx
ZDIwMTcyMGI5ZGEzMDU4NDllMjMwNjQyOC4uOGE2NjhkNzM5YjBjNDZiZDgzZDNmYzdjOTI2MzA3
ZTc4YWNlNzZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA0LTE2ICBOb2Vs
IEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXSBTaG91bGQg
cGFzcyBjYW52YXMvcGhpbGlwL3Rlc3RzL3RvRGF0YVVSTC5qcGVnLmFscGhhLmh0bWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzOTczCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBD
b3ZlcmVkIGJ5IGNhbnZhcy9waGlsaXAvdGVzdHMvdG9EYXRhdFVSTC5qcGVnLmFscGhhLmh0bWwu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoZ2V0Q2Fpcm9TdXJmYWNlUGl4ZWwpOiBSZXR1cm4gYSBwb2ludGVyIHRvIENh
aXJvIHN1cmZhY2UgcGl4ZWwoeCx5KS4KKyAgICAgICAgKGdldEdka1BpeGJ1ZlBpeGVsKTogUmV0
dXJuIGEgcG9pbnRlciB0byBHZGtQaXhidWYgcGl4ZWwoeCx5KS4KKyAgICAgICAgKGNhaXJvSW1h
Z2VTdXJmYWNlVG9HZGtQaXhidWZQcmVtdWx0aXBsaWVkKTogRXh0cmFjdCB0aGUgcHJlbXVsdGlw
bGllZCBjb2xvcnMgZnJvbQorICAgICAgICBhbiBSR0JBIENhaXJvIHN1cmZhY2UgYW5kIHN0b3Jl
IHRoZW0gcHJlbXVsdGlwbGllZCBpbiBhIEdka1BpeGJ1Zi4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1h
Z2UpOiBGb3IganBlZyBlbmNvZGluZywgZm9ybSBhIFBvcnRlci1EdWZmIGNvbXBvc2l0ZSBzb3Vy
Y2Utb3ZlcgorICAgICAgICBibGFjayBpbWFnZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHBhc3Np
bmcgdGhlIHByZW11bHRpcGxpZWQgY29sb3JzIG9mIHRoZSBpbWFnZSB0bworICAgICAgICB0aGUg
SlBFRyBlbmNvZGVyLiBTZWUgcjc1NDg4IGZvciBkZXRhaWxzLgorCiAyMDEyLTA0LTE2ICBKYXNv
biBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBNaXNzaW5nIHJlYWR5U3RhdGUgMiB3aGVuIGEgWE1MSHR0cFJlcXVlc3QgY2FsbHMgeG1s
aHR0cC5vcGVuKCJIRUFEIiwibm90RXhpc3QuaHRtbCIsdHJ1ZSkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRpbGl0aWVzLmNw
cAppbmRleCBkODAxOGEzMGYwYzQxZTBlNGNlNWRjYzM4NGE5NTE5ZjU0NzA0NWQ5Li5jZjc2YjRl
MWY3NmQwY2U2YWU2ZWUxNmU3YTk0ZjEyMDAyNjhhYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5jcHAK
QEAgLTM3LDMgKzM3LDY5IEBAIEdka1BpeGJ1ZiogY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1
ZihjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwogfQog
CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIqIGdldENhaXJvU3VyZmFjZVBpeGVsKHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHJvd1N0cmlk
ZSkKK3sKKyAgICByZXR1cm4gZGF0YSArICh5ICogcm93U3RyaWRlKSArIHggKiA0OworfQorCitz
dGF0aWMgaW5saW5lIGd1Y2hhciogZ2V0R2RrUGl4YnVmUGl4ZWwoZ3VjaGFyKiBkYXRhLCB1bnNp
Z25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCByb3dTdHJpZGUpCit7CisgICAgcmV0dXJuIGRh
dGEgKyAoeSAqIHJvd1N0cmlkZSkgKyB4ICogNDsKK30KKworR2RrUGl4YnVmKiBjYWlyb0ltYWdl
U3VyZmFjZVRvR2RrUGl4YnVmUHJlbXVsdGlwbGllZChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Up
Cit7CisgICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzdXJmYWNlKSA9
PSBDQUlST19GT1JNQVRfQVJHQjMyKTsKKworICAgIGlmIChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9mb3JtYXQoc3VyZmFjZSkgIT0gQ0FJUk9fRk9STUFUX0FSR0IzMikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJm
YWNlKTsKKyAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UpOworCisgICAgR2RrUGl4YnVmKiBwaXhidWYgPSBnZGtfcGl4YnVmX25ldyhHREtfQ09M
T1JTUEFDRV9SR0IsIFRSVUUsIDgsIHdpZHRoLCBoZWlnaHQpOworICAgIGlmICghcGl4YnVmKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIGNoYXIqIHN1cmZhY2VEYXRhID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKTsKKyAgICBpbnQgc3VyZmFjZVJvd1N0
cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKKworICAgIGd1
Y2hhciogcGl4YnVmRGF0YSA9IGdka19waXhidWZfZ2V0X3BpeGVscyhwaXhidWYpOworICAgIGlu
dCBwaXhidWZSb3dTdHJpZGUgPSBnZGtfcGl4YnVmX2dldF9yb3dzdHJpZGUocGl4YnVmKTsKKwor
ICAgIC8qIFJlYWRpbmcgZnJvbTogaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL21hbnVhbC9jYWly
by1pbWFnZS1zdXJmYWNlLmh0bWwjY2Fpcm8tZm9ybWF0LXQKKyAgICAgKiBDQUlST19GT1JNQVRf
QVJHQjMyOiBlYWNoIHBpeGVsIGlzIGEgMzItYml0IHF1YW50aXR5LCB3aXRoIGFscGhhIGluIHRo
ZQorICAgICAqIHVwcGVyIDggYml0cywgdGhlbiByZWQsIHRoZW4gZ3JlZW4sIHRoZW4gYmx1ZS4g
VGhlIDMyLWJpdCBxdWFudGl0aWVzIGFyZQorICAgICAqIHN0b3JlZCBuYXRpdmUtZW5kaWFuLiBQ
cmUtbXVsdGlwbGllZCBhbHBoYSBpcyB1c2VkOiA1MCUgdHJhbnNwYXJlbnQgcmVkCisgICAgICog
aXMgMHg4MDgwMDAwMCwgbm90IDB4ODBmZjAwMDAuCisgICAgICoKKyAgICAgKiBTZWUgaHR0cDov
L2RldmVsb3Blci5naW1wLm9yZy9hcGkvMi4wL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi1nZGstcGl4
YnVmLmh0bWwjR2RrUGl4YnVmCisgICAgICogZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBzdHJ1Y3R1
cmUgb2YgR2RrUGl4YnVmcyBzdG9yZWQgd2l0aCBHREtfQ09MT1JTUEFDRV9SR0IuCisgICAgICoK
KyAgICAgKiBUbyB0cmFuc2ZlciB0aGUgcHJlLW11bHRpcGxpZWQgY29sb3IgY2hhbm5lbHMgZnJv
bSBhIENBSVJPX0ZPUk1BVF9BUkdCMzIKKyAgICAgKiBDYWlybyBzdXJmYWNlLCByZWFkIHRoZSBj
b2xvciBjaGFubmVscyB2YWx1ZXMgYmFzZWQgb24gbWFjaGluZSBlbmRpYW5uZXNzCisgICAgICog
YW5kIHdyaXRlIHRoZW0gUkdCQSBsaXR0bGUtZW5kaWFuIHRvIHRoZSBHZGtQaXhidWYgcGl4ZWxz
LgorICAgICAqLworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyKiBzb3VyY2UgPSBnZXRDYWlyb1N1cmZhY2VQaXhlbChzdXJmYWNlRGF0YSwgeCwgeSwg
c3VyZmFjZVJvd1N0cmlkZSk7CisgICAgICAgICAgICBndWNoYXIqIHBpeGVsID0gZ2V0R2RrUGl4
YnVmUGl4ZWwocGl4YnVmRGF0YSwgeCwgeSwgcGl4YnVmUm93U3RyaWRlKTsKKworI2lmIEdfQllU
RV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KKyAgICAgICAgICAgIGd1Y2hhciBhbHBoYSA9IHNv
dXJjZVszXTsKKyAgICAgICAgICAgIHBpeGVsWzBdID0gYWxwaGEgPyBzb3VyY2VbMl0gOiAwOwor
ICAgICAgICAgICAgcGl4ZWxbMV0gPSBhbHBoYSA/IHNvdXJjZVsxXSA6IDA7CisgICAgICAgICAg
ICBwaXhlbFsyXSA9IGFscGhhID8gc291cmNlWzBdIDogMDsKKyAgICAgICAgICAgIHBpeGVsWzNd
ID0gYWxwaGE7CisjZWxzZQorICAgICAgICAgICAgZ3VjaGFyIGFscGhhID0gc291cmNlWzBdOwor
ICAgICAgICAgICAgcGl4ZWxbMF0gPSBhbHBoYSA/IHNvdXJjZVsxXSA6IDA7CisgICAgICAgICAg
ICBwaXhlbFsxXSA9IGFscGhhID8gc291cmNlWzJdIDogMDsKKyAgICAgICAgICAgIHBpeGVsWzJd
ID0gYWxwaGEgPyBzb3VyY2VbM10gOiAwOworICAgICAgICAgICAgcGl4ZWxbM10gPSBhbHBoYTsK
KyNlbmRpZgorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHBpeGJ1ZjsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRp
bGl0aWVzLmgKaW5kZXggZmY1YjNlZGVmYzExMWRiOTQ2ZTMyYWM4MWQwZmMyYTA1MGNlMDI2Zi4u
MmFjODc3ZWQ3M2JiZTk0YzYxNDZlOWIyMjk3M2RhNzRmZWE0OWMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRpbGl0aWVz
LmgKQEAgLTI3LDUgKzI3LDYgQEAKICNkZWZpbmUgR2RrQ2Fpcm9VdGlsaXRpZXNfaAogCiBHZGtQ
aXhidWYqIGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQaXhidWYoY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlKTsKK0dka1BpeGJ1ZiogY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZlByZW11bHRpcGxp
ZWQoY2Fpcm9fc3VyZmFjZV90Kik7CiAKICNlbmRpZiAvLyBHZGtDYWlyb1V0aWxpdGllc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZm
ZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVm
ZmVyR3RrLmNwcAppbmRleCBkOGE3NzgzZGJlMzU2ZDJjZTVlYzliZTI1YjJiNDQ5YjU0ZDIwMjdm
Li4xYWM5YWFmY2VlZGM0MWViZTdhMWQzYTBkNjYxYjVlMjNlNjFlMDJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5j
cHAKQEAgLTM5LDggKzM5LDE0IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QKICAgICBTdHJpbmcg
dHlwZSA9IG1pbWVUeXBlLnN1YnN0cmluZyhzaXplb2YgImltYWdlIik7CiAgICAgaWYgKHR5cGUg
IT0gImpwZWciICYmIHR5cGUgIT0gInBuZyIgJiYgdHlwZSAhPSAidGlmZiIgJiYgdHlwZSAhPSAi
aWNvIiAmJiB0eXBlICE9ICJibXAiKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFz
dXJmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHUmVmUHRyPEdka1BpeGJ1Zj4g
cGl4YnVmID0gY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZihzdXJmYWNlKTsKKyAgICBHUmVm
UHRyPEdka1BpeGJ1Zj4gcGl4YnVmOworICAgIGlmICh0eXBlID09ICJqcGVnIikgLy8gPGNhbnZh
cz4gc3BlYzogZm9ybSBhIFBvcnRlci1EdWZmIGNvbXBvc2l0ZSBzcmMtb3ZlciBibGFjay4KKyAg
ICAgICAgcGl4YnVmID0gY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZlByZW11bHRpcGxpZWQo
c3VyZmFjZSk7CisgICAgZWxzZQorICAgICAgICBwaXhidWYgPSBjYWlyb0ltYWdlU3VyZmFjZVRv
R2RrUGl4YnVmKHN1cmZhY2UpOwogICAgIGlmICghcGl4YnVmKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA1ZGViYmQwYjVjODYyOTk5OTI5ZTQ0ZmNiYzVhNGFjODJiM2I2MDE2Li4x
ZmM4Y2RkZDZjNzU3YTA3ZTFkZTcxMmI1MGUzYTY3MTA5NGMxY2ZiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTItMDQtMTYgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgor
CisgICAgICAgIFtHVEtdIFNob3VsZCBwYXNzIGNhbnZhcy9waGlsaXAvdGVzdHMvdG9EYXRhVVJM
LmpwZWcuYWxwaGEuaHRtbCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgzOTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0OiBSZW1vdmUgZmFp
bGluZyBleHBlY3RhdGlvbiBmb3IgdGhpcyB0ZXN0LgorCiAyMDEyLTA0LTE2ICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdh
cmRlbmluZywgc2tpcCBmYWlsaW5nIHRlc3RzLCBiZWNhdXNlIGxlc3MgdGVzdHMgbWVhbnMgbGVz
cyBwcm9ibGVtcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4
cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlv
bnMudHh0CmluZGV4IDVhOWM2MjA3NGMzZTU2OGFlOGQ3YTlmZjI1NjIzZjYyNTMzMzhkYWIuLmE2
NDM1ODhkOWVkZGVmZDhlNzcyMzg0ZGNkOTEzNTBmZDIyZDFjNmIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtOTgyLDcgKzk4Miw2IEBA
IEJVR1dLR1RLIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5w
ZXJjZW50YWdlLmh0bWwgPSBGQUlMCiBCVUdXS0dUSyA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
dGV4dC5mb250LnBhcnNlLnNpemUucGVyY2VudGFnZS5kZWZhdWx0Lmh0bWwgPSBGQUlMCiBCVUdX
S0dUSyA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnN5c3RlbS5odG1s
ID0gRkFJTAogQlVHV0tHVEsgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53
aWR0aC5zcGFjZS5odG1sID0gRkFJTAotQlVHV0tHVEsgOiBjYW52YXMvcGhpbGlwL3Rlc3RzL3Rv
RGF0YVVSTC5qcGVnLmFscGhhLmh0bWwgPSBGQUlMCiBCVUdXS0dUSyA6IGNhbnZhcy9waGlsaXAv
dGVzdHMvdHlwZS5wcm90b3R5cGUuaHRtbCA9IEZBSUwKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137494</attachid>
            <date>2012-04-17 02:13:43 -0700</date>
            <delta_ts>2012-04-24 08:26:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83973-20120417191341.patch</filename>
            <type>text/plain</type>
            <size>7686</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZlMzk2ZmFiYTQ0ODc4
ZTE0NDdmYWVjNTMxMGRiOWZiMGM1ZGJmNy4uYTU3ODMyZmFmNDVlNTQzZGViOTIxYTVhN2E5OTE3
MzdlODBhNDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTE3ICBOb2Vs
IEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXSBTaG91bGQg
cGFzcyBjYW52YXMvcGhpbGlwL3Rlc3RzL3RvRGF0YVVSTC5qcGVnLmFscGhhLmh0bWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzOTczCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBSZWNvdmVyIHNvbWUgY29k
ZSAoZHVlIHRvIE1hcnRpbiBSb2JpbnNvbikgcmVtb3ZlZCBvbiByNzIxMDYuIE1vZGlmeSBpdCB0
byBzdXBwb3J0CisgICAgICAgIHJldHVybmluZyBhIHByZW11bHRpcGxpZWQgYWxwaGEgY29sb3Ig
R2RrUGl4YnVmLiBVc2UgcHJlbXVsdGlwbGllZCBjb2xvciB3aGVuIEpQRUcKKyAgICAgICAgZW5j
b2RpbmcgPGNhbnZhcz4udG9EYXRhVVJMKCkgcGVyIHI3NTQ4OC4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIENvdmVyZWQgYnkgY2FudmFzL3BoaWxpcC90ZXN0cy90b0RhdGF0VVJMLmpwZWcuYWxw
aGEuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxp
dGllcy5jcHA6CisgICAgICAgIChnZXRDYWlyb1N1cmZhY2VQaXhlbCk6IFJldHVybiBhIHBvaW50
ZXIgdG8gQ2Fpcm8gc3VyZmFjZSBwaXhlbCh4LHkpLgorICAgICAgICAoZ2V0R2RrUGl4YnVmUGl4
ZWwpOiBSZXR1cm4gYSBwb2ludGVyIHRvIEdka1BpeGJ1ZiBwaXhlbCh4LHkpLgorICAgICAgICAo
Y2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZlByZW11bHRpcGxpZWQpOiBFeHRyYWN0IHRoZSBw
cmVtdWx0aXBsaWVkIGNvbG9ycyBmcm9tCisgICAgICAgIGFuIEFSR0IzMiBDYWlybyBzdXJmYWNl
IGFuZCBzdG9yZSB0aGVtIHByZW11bHRpcGxpZWQgaW4gYSBHZGtQaXhidWYuIEFkZCBhbiBBU1NF
UlQKKyAgICAgICAgdGhhdCB0aGUgc3VwcGxpZWQgQ2Fpcm8gc3VyZmFjZSBoYXMgdGhlIGV4cGVj
dGVkIHBpeGVsIGZvcm1hdCAoQVJHQjMyKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
dGsvR2RrQ2Fpcm9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOiBJZiBK
UEVHIGVuY29kaW5nLCBmb3JtIGEgUG9ydGVyLUR1ZmYgY29tcG9zaXRlIHNvdXJjZS1vdmVyCisg
ICAgICAgIGJsYWNrIGltYWdlLiByNzU0ODggZm9yIGRldGFpbHMuCisKIDIwMTItMDQtMTcgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJvZHVjZSBhbiBp
bnRlcm5hbCBmZWF0dXJlIGZvciBhIGZpeGVkIHBsYWNlaG9sZGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRpbGl0aWVzLmNw
cAppbmRleCBkODAxOGEzMGYwYzQxZTBlNGNlNWRjYzM4NGE5NTE5ZjU0NzA0NWQ5Li5kOGJjNmQ4
NjNmYWQwMjAxODMxZjY1ZDFjOWZkMzRkMTM2ODE2YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5jcHAK
QEAgLTM3LDMgKzM3LDY3IEBAIEdka1BpeGJ1ZiogY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1
ZihjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwogfQog
CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIqIGdldENhaXJvU3VyZmFjZVBpeGVsKHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHJvd1N0cmlk
ZSkKK3sKKyAgICByZXR1cm4gZGF0YSArICh5ICogcm93U3RyaWRlKSArIHggKiA0OworfQorCitz
dGF0aWMgaW5saW5lIGd1Y2hhciogZ2V0R2RrUGl4YnVmUGl4ZWwoZ3VjaGFyKiBkYXRhLCB1bnNp
Z25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCByb3dTdHJpZGUpCit7CisgICAgcmV0dXJuIGRh
dGEgKyAoeSAqIHJvd1N0cmlkZSkgKyB4ICogNDsKK30KKworR2RrUGl4YnVmKiBjYWlyb0ltYWdl
U3VyZmFjZVRvR2RrUGl4YnVmUHJlbXVsdGlwbGllZChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Up
Cit7CisgICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzdXJmYWNlKSA9
PSBDQUlST19GT1JNQVRfQVJHQjMyKTsKKworICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOworICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7CisKKyAgICBHZGtQaXhidWYqIHBpeGJ1ZiA9IGdk
a19waXhidWZfbmV3KEdES19DT0xPUlNQQUNFX1JHQiwgVFJVRSwgOCwgd2lkdGgsIGhlaWdodCk7
CisgICAgaWYgKCFwaXhidWYpCisgICAgICAgIHJldHVybiAwOworCisgICAgdW5zaWduZWQgY2hh
ciogc3VyZmFjZURhdGEgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpOwor
ICAgIGludCBzdXJmYWNlUm93U3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KHN1cmZhY2UpOworCisgICAgZ3VjaGFyKiBwaXhidWZEYXRhID0gZ2RrX3BpeGJ1Zl9nZXRfcGl4
ZWxzKHBpeGJ1Zik7CisgICAgaW50IHBpeGJ1ZlJvd1N0cmlkZSA9IGdka19waXhidWZfZ2V0X3Jv
d3N0cmlkZShwaXhidWYpOworCisgICAgLyogUmVhZGluZyBmcm9tOiBodHRwOi8vY2Fpcm9ncmFw
aGljcy5vcmcvbWFudWFsL2NhaXJvLWltYWdlLXN1cmZhY2UuaHRtbCNjYWlyby1mb3JtYXQtdAor
ICAgICAqIENBSVJPX0ZPUk1BVF9BUkdCMzI6IGVhY2ggcGl4ZWwgaXMgYSAzMi1iaXQgcXVhbnRp
dHksIHdpdGggYWxwaGEgaW4gdGhlCisgICAgICogdXBwZXIgOCBiaXRzLCB0aGVuIHJlZCwgdGhl
biBncmVlbiwgdGhlbiBibHVlLiBUaGUgMzItYml0IHF1YW50aXRpZXMgYXJlCisgICAgICogc3Rv
cmVkIG5hdGl2ZS1lbmRpYW4uIFByZS1tdWx0aXBsaWVkIGFscGhhIGlzIHVzZWQ6IDUwJSB0cmFu
c3BhcmVudCByZWQKKyAgICAgKiBpcyAweDgwODAwMDAwLCBub3QgMHg4MGZmMDAwMC4KKyAgICAg
KgorICAgICAqIFNlZSBodHRwOi8vZGV2ZWxvcGVyLmdpbXAub3JnL2FwaS8yLjAvZ2RrLXBpeGJ1
Zi9nZGstcGl4YnVmLWdkay1waXhidWYuaHRtbCNHZGtQaXhidWYKKyAgICAgKiBmb3IgaW5mb3Jt
YXRpb24gb24gdGhlIHN0cnVjdHVyZSBvZiBHZGtQaXhidWZzIHN0b3JlZCB3aXRoIEdES19DT0xP
UlNQQUNFX1JHQi4KKyAgICAgKgorICAgICAqIFRvIHRyYW5zZmVyIHRoZSBwcmUtbXVsdGlwbGll
ZCBjb2xvciBjaGFubmVscyBmcm9tIGEgQ0FJUk9fRk9STUFUX0FSR0IzMgorICAgICAqIENhaXJv
IHN1cmZhY2UsIHJlYWQgdGhlIGNvbG9yIGNoYW5uZWxzIHZhbHVlcyBiYXNlZCBvbiBtYWNoaW5l
IGVuZGlhbm5lc3MKKyAgICAgKiBhbmQgd3JpdGUgdGhlbSB0byB0aGUgR2RrUGl4YnVmIHBpeGVs
cy4KKyAgICAgKi8KKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyKiBzb3VyY2UgPSBnZXRDYWlyb1N1cmZhY2VQaXhlbChzdXJmYWNlRGF0YSwgeCwg
eSwgc3VyZmFjZVJvd1N0cmlkZSk7CisgICAgICAgICAgICBndWNoYXIqIHBpeGVsID0gZ2V0R2Rr
UGl4YnVmUGl4ZWwocGl4YnVmRGF0YSwgeCwgeSwgcGl4YnVmUm93U3RyaWRlKTsKKworI2lmIEdf
QllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KKyAgICAgICAgICAgIGd1Y2hhciBhbHBoYSA9
IHNvdXJjZVszXTsKKyAgICAgICAgICAgIHBpeGVsWzBdID0gYWxwaGEgPyBzb3VyY2VbMl0gOiAw
OworICAgICAgICAgICAgcGl4ZWxbMV0gPSBhbHBoYSA/IHNvdXJjZVsxXSA6IDA7CisgICAgICAg
ICAgICBwaXhlbFsyXSA9IGFscGhhID8gc291cmNlWzBdIDogMDsKKyAgICAgICAgICAgIHBpeGVs
WzNdID0gYWxwaGE7CisjZWxzZQorICAgICAgICAgICAgZ3VjaGFyIGFscGhhID0gc291cmNlWzBd
OworICAgICAgICAgICAgcGl4ZWxbMF0gPSBhbHBoYSA/IHNvdXJjZVsxXSA6IDA7CisgICAgICAg
ICAgICBwaXhlbFsxXSA9IGFscGhhID8gc291cmNlWzJdIDogMDsKKyAgICAgICAgICAgIHBpeGVs
WzJdID0gYWxwaGEgPyBzb3VyY2VbM10gOiAwOworICAgICAgICAgICAgcGl4ZWxbM10gPSBhbHBo
YTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHBpeGJ1ZjsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJv
VXRpbGl0aWVzLmgKaW5kZXggZmY1YjNlZGVmYzExMWRiOTQ2ZTMyYWM4MWQwZmMyYTA1MGNlMDI2
Zi4uMmFjODc3ZWQ3M2JiZTk0YzYxNDZlOWIyMjk3M2RhNzRmZWE0OWMwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRpbGl0
aWVzLmgKQEAgLTI3LDUgKzI3LDYgQEAKICNkZWZpbmUgR2RrQ2Fpcm9VdGlsaXRpZXNfaAogCiBH
ZGtQaXhidWYqIGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQaXhidWYoY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlKTsKK0dka1BpeGJ1ZiogY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZlByZW11bHRp
cGxpZWQoY2Fpcm9fc3VyZmFjZV90Kik7CiAKICNlbmRpZiAvLyBHZGtDYWlyb1V0aWxpdGllc19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VC
dWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
QnVmZmVyR3RrLmNwcAppbmRleCBkOGE3NzgzZGJlMzU2ZDJjZTVlYzliZTI1YjJiNDQ5YjU0ZDIw
MjdmLi41OWExNGMyNDYzYzA2YWUwOTI3Y2ZkZWQwZTMzNzYyZWU0NmQ4ZDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0
ay5jcHAKQEAgLTQwLDcgKzQwLDExIEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QKICAgICBpZiAo
dHlwZSAhPSAianBlZyIgJiYgdHlwZSAhPSAicG5nIiAmJiB0eXBlICE9ICJ0aWZmIiAmJiB0eXBl
ICE9ICJpY28iICYmIHR5cGUgIT0gImJtcCIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IEdSZWZQdHI8R2RrUGl4YnVmPiBwaXhidWYgPSBjYWlyb0ltYWdlU3VyZmFjZVRvR2RrUGl4YnVm
KHN1cmZhY2UpOworICAgIEdSZWZQdHI8R2RrUGl4YnVmPiBwaXhidWY7CisgICAgaWYgKHR5cGUg
PT0gImpwZWciKSAvLyA8Y2FudmFzPiBzcGVjOiBmb3JtIGEgUG9ydGVyLUR1ZmYgY29tcG9zaXRl
IHNyYy1vdmVyIGJsYWNrLgorICAgICAgICBwaXhidWYgPSBjYWlyb0ltYWdlU3VyZmFjZVRvR2Rr
UGl4YnVmUHJlbXVsdGlwbGllZChzdXJmYWNlKTsKKyAgICBlbHNlCisgICAgICAgIHBpeGJ1ZiA9
IGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZSk7CiAgICAgaWYgKCFwaXhidWYp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1OTQwMjVmMTg0MjhiNTMyOTAzMmQw
YTFkMTA5NTdlY2U2OWEzM2IuLjhjMmUyN2U2NWJkMzE1YTQ0YTNjNGNiNDc2ZDA1ZjkxOTZhNWU4
OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNC0xNyAgTm9lbCBHb3Jkb24gIDxub2Vs
LmdvcmRvbkBnbWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gU2hvdWxkIHBhc3MgY2FudmFzL3Bo
aWxpcC90ZXN0cy90b0RhdGFVUkwuanBlZy5hbHBoYS5odG1sIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM5NzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0
aW9ucy50eHQ6IFJlbW92ZSBmYWlsaW5nIGV4cGVjdGF0aW9uIGZvciB0aGlzIHRlc3QuCisKIDIw
MTItMDQtMTcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIHRlc3RzIGJlY2F1c2UgRU5BQkxFKFNI
QURPV19ET00pIGlzIGRpc2FibGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggYWZlNDI0Y2U1OTM2MzU5NWNjMmIzOTJiZTQ0YWZkYzRj
OGRkOTBmNC4uNjRkY2Y4YjNlOTA4ZDc3ZWVkZTQ3NWUzZjVkN2IyZjE5ZmRkNDYxOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC05ODQs
NyArOTg0LDYgQEAgQlVHV0tHVEsgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5w
YXJzZS5zaXplLnBlcmNlbnRhZ2UuaHRtbCA9IEZBSUwKIEJVR1dLR1RLIDogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmRlZmF1bHQuaHRtbCA9
IEZBSUwKIEJVR1dLR1RLIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uu
c3lzdGVtLmh0bWwgPSBGQUlMCiBCVUdXS0dUSyA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5tZWFzdXJlLndpZHRoLnNwYWNlLmh0bWwgPSBGQUlMCi1CVUdXS0dUSyA6IGNhbnZhcy9waGls
aXAvdGVzdHMvdG9EYXRhVVJMLmpwZWcuYWxwaGEuaHRtbCA9IEZBSUwKIEJVR1dLR1RLIDogY2Fu
dmFzL3BoaWxpcC90ZXN0cy90eXBlLnByb3RvdHlwZS5odG1sID0gRkFJTAogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138311</attachid>
            <date>2012-04-23 02:27:52 -0700</date>
            <delta_ts>2012-04-24 15:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-to-data-utl-jpeg-alpha.diff</filename>
            <type>text/plain</type>
            <size>3905</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MGY1OTQ0Li5kZDIwNzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDQt
MjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIFNob3VsZCBwYXNzIGNhbnZhcy9waGlsaXAvdGVzdHMvdG9EYXRhVVJMLmpwZWcuYWxw
aGEuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODM5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IFVuc2tpcAorICAgICAgICBjYW52
YXMvcGhpbGlwL3Rlc3RzL3RvRGF0YVVSTC5qcGVnLmFscGhhLmh0bWwKKwogMjAxMi0wNC0yMiAg
WXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBtYWtlIHBvcHVsYXRlQ2hpbGRyZW4gbWV0aG9kcyBwcml2YXRlIGluIGhlYXAgcHJv
ZmlsZXIgZnJvbnQtZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVz
dF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAppbmRleCBhYmNkNGNlLi5kZDg2YTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTk0OCw3ICs5NDgsNiBAQCBCVUdX
S0dUSyA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnNpemUucGVyY2Vu
dGFnZS5odG1sID0gRkFJTAogQlVHV0tHVEsgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQu
Zm9udC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuZGVmYXVsdC5odG1sID0gRkFJTAogQlVHV0tHVEsg
OiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zeXN0ZW0uaHRtbCA9IEZB
SUwKIEJVR1dLR1RLIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0Lm1lYXN1cmUud2lkdGgu
c3BhY2UuaHRtbCA9IEZBSUwKLUJVR1dLR1RLIDogY2FudmFzL3BoaWxpcC90ZXN0cy90b0RhdGFV
UkwuanBlZy5hbHBoYS5odG1sID0gRkFJTAogQlVHV0tHVEsgOiBjYW52YXMvcGhpbGlwL3Rlc3Rz
L3R5cGUucHJvdG90eXBlLmh0bWwgPSBGQUlMCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA5NjAwYjYuLjc0
ZjFmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0yMyAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2hvdWxk
IHBhc3MgY2FudmFzL3BoaWxpcC90ZXN0cy90b0RhdGFVUkwuanBlZy5hbHBoYS5odG1sCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGNhbnZhcy9w
aGlsaXAvdGVzdHMvdG9EYXRhVVJMLmpwZWcuYWxwaGEuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVu
Y29kZUltYWdlKTogQ29udmVydCBBUkdCMzIgY2Fpcm8gc3VyZmFjZSBpbnRvIFJHQjI0CisgICAg
ICAgIHdoZW4gZW5jb2RpbmcgSlBFRyBpbWFnZXMgc2luY2UgSlBFRyBlbmNvZGVyIGRvZXNuJ3Qg
c3VwcG9ydCBhbHBoYQorICAgICAgICBjaGFubmVsLgorCiAyMDEyLTA0LTIyICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1h
a2UgcG9wdWxhdGVDaGlsZHJlbiBtZXRob2RzIHByaXZhdGUgaW4gaGVhcCBwcm9maWxlciBmcm9u
dC1lbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUJ1ZmZlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwCmluZGV4IGQ4YTc3ODMuLjRmNzA2YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNw
cApAQCAtNDAsNyArNDAsMTggQEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdAogICAgIGlmICh0eXBl
ICE9ICJqcGVnIiAmJiB0eXBlICE9ICJwbmciICYmIHR5cGUgIT0gInRpZmYiICYmIHR5cGUgIT0g
ImljbyIgJiYgdHlwZSAhPSAiYm1wIikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR1Jl
ZlB0cjxHZGtQaXhidWY+IHBpeGJ1ZiA9IGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQaXhidWYoc3Vy
ZmFjZSk7CisgICAgR1JlZlB0cjxHZGtQaXhidWY+IHBpeGJ1ZjsKKyAgICBpZiAodHlwZSA9PSAi
anBlZyIgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0KHN1cmZhY2UpID09IENBSVJP
X0ZPUk1BVF9BUkdCMzIpIHsKKyAgICAgICAgLy8gSlBFRyBkb2Vzbid0IHN1cHBvcnQgYWxwaGEg
Y2hhbm5lbC4gVGhlIDxjYW52YXM+IHNwZWMgc3RhdGVzIHRoYXQgdG9EYXRhVVJMKCkgbXVzdCBl
bmNvZGUgYSBQb3J0ZXItRHVmZgorICAgICAgICAvLyBjb21wb3NpdGUgc291cmNlLW92ZXIgYmxh
Y2sgZm9yIGltYWdlIHR5cGVzIHRoYXQgZG8gbm90IHN1cHBvcnQgYWxwaGEuCisgICAgICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9z
dXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZh
Y2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FJUk9fRk9STUFUX1JHQjI0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoc3VyZmFjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpKTsK
KyAgICAgICAgcGl4YnVmID0gYWRvcHRHUmVmKGNhaXJvSW1hZ2VTdXJmYWNlVG9HZGtQaXhidWYo
bmV3U3VyZmFjZS5nZXQoKSkpOworICAgIH0gZWxzZQorICAgICAgICBwaXhidWYgPSBhZG9wdEdS
ZWYoY2Fpcm9JbWFnZVN1cmZhY2VUb0dka1BpeGJ1ZihzdXJmYWNlKSk7CiAgICAgaWYgKCFwaXhi
dWYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>