<?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>58088</bug_id>
          
          <creation_ts>2011-04-07 15:03:32 -0700</creation_ts>
          <short_desc>[CG] Use vImage (un)premultiplyImageData functions for get/putImageData with IOSurfaces</short_desc>
          <delta_ts>2011-04-18 12:58:29 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>58084</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Delaney">mdelaney7</reporter>
          <assigned_to name="Matthew Delaney">mdelaney7</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381758</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-07 15:03:32 -0700</bug_when>
    <thetext>Use the Accelerate framework&apos;s vImage (un)premultiplyImageData functions for get/putImageData when using IOSurfaces in ImageBufferCG/ImageBufferData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385919</commentid>
    <comment_count>1</comment_count>
      <attachid>89615</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-14 11:46:45 -0700</bug_when>
    <thetext>Created attachment 89615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385946</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-14 12:16:17 -0700</bug_when>
    <thetext>Attachment 89615 did not build on mac:
Build output: http://queues.webkit.org/results/8397703</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385986</commentid>
    <comment_count>3</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-14 13:12:33 -0700</bug_when>
    <thetext>Last patch failed to build on mac due to the new scanline conversion functions not being used when iosurface backing store isn&apos;t used. Updating the patch now to define out those function if not using iosurface backing store.

Also, I took a stab at measuring the performance increase of this new method on my iMac and saw about a 30%-50% performance improvement. I created a test that gets and puts image data to and from the same canvas thousands, tens/hundreds of thousands of times and consistently saw at least at 33% increase and at times up to 50%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385988</commentid>
    <comment_count>4</comment_count>
      <attachid>89636</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-14 13:13:31 -0700</bug_when>
    <thetext>Created attachment 89636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386188</commentid>
    <comment_count>5</comment_count>
      <attachid>89636</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-04-14 16:56:41 -0700</bug_when>
    <thetext>Comment on attachment 89636
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:44
&gt; +typedef struct vImageBufferPair {
&gt; +    vImage_Buffer src;
&gt; +    vImage_Buffer dest;
&gt; +} vImageBufferPair;

This is c++, so the typedef is not necessary.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:66
&gt; +#if USE(IOSURFACE_CANVAS_BACKING_STORE)

Is this optimization only worth while for IOSurface backed canvas, or would anyone with vImage want it? Maybe it should be in the USE(ACCELLERATE).

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:69
&gt; +    vImageBufferPair* bufferPair = (vImageBufferPair*) data;

Please use c++ style casts and don&apos;t put a space after the cast.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:72
&gt; +    src.data = (char*) bufferPair-&gt;src.data + tileNumber * bufferPair-&gt;src.rowBytes;

Cast again.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:78
&gt; +    dest.data = (char*) bufferPair-&gt;dest.data + tileNumber * bufferPair-&gt;dest.rowBytes;

And again.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:216
&gt; +            dispatch_apply_f(height, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), &amp;buffPair, unpremultitplyScanline);

Why is that queue the right queue to use?  Will it be a concurrent queue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386199</commentid>
    <comment_count>6</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-14 17:10:00 -0700</bug_when>
    <thetext>
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:66
&gt; &gt; +#if USE(IOSURFACE_CANVAS_BACKING_STORE)
&gt; 
&gt; Is this optimization only worth while for IOSurface backed canvas, or would anyone with vImage want it? Maybe it should be in the USE(ACCELLERATE).

vImage is already being used by those others not using IOSurfaces. This is adding support for using vImage for those using IOSurface since it was a little less straightforward due to the difference in pixel type in IOSurface (BGRA) from what ImageBufferData clients need (i.e. RGBA)


&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:216
&gt; &gt; +            dispatch_apply_f(height, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), &amp;buffPair, unpremultitplyScanline);
&gt; 
&gt; Why is that queue the right queue to use?  Will it be a concurrent queue?

It will be a concurrent queue; dispatch_get_global_queue says that it returns a concurrent queue. The choice of a default priority was simply due to the fact that I saw no reason for this process to have higher of lower priority than &quot;normal&quot;. We are using it for speed/efficiency and thus want it to be fast, but I see no reason to have it run at a higher priority than other tasks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386203</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-14 17:14:20 -0700</bug_when>
    <thetext>Attachment 89636 did not build on chromium:
Build output: http://queues.webkit.org/results/8399808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386227</commentid>
    <comment_count>8</comment_count>
      <attachid>89703</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-14 17:44:17 -0700</bug_when>
    <thetext>Created attachment 89703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387293</commentid>
    <comment_count>9</comment_count>
      <attachid>89703</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-16 14:42:32 -0700</bug_when>
    <thetext>Comment on attachment 89703
Patch

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

Since this looks wrong, it calls into question your testing.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:43
&gt; +    vImage_Buffer src;
&gt; +    vImage_Buffer dest;

Can these be const vImage_Buffer&amp; to avoid copying?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:75
&gt; +    vImage_Buffer src;
&gt; +    src.data = static_cast&lt;char*&gt;(bufferPair-&gt;src.data) + tileNumber * bufferPair-&gt;src.rowBytes;
&gt; +    src.height = 1;
&gt; +    src.width = bufferPair-&gt;src.width;
&gt; +    src.rowBytes = bufferPair-&gt;src.rowBytes;

So you only use data, width and rowBytes from the bufferPair; it might be clearer to pass these, rather than the whole vImage_Buffer.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:87
&gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);

&amp;dest, &amp;dest, really? Why isn&apos;t src used?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:110
&gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);

Ditto.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:213
&gt; +        buffPair.src = src;
&gt; +        buffPair.dest = dst;

This copies those structs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387758</commentid>
    <comment_count>10</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-18 09:03:31 -0700</bug_when>
    <thetext>
&gt; Since this looks wrong, it calls into question your testing.
Since what&apos;s wrong?


&gt; 
&gt; So you only use data, width and rowBytes from the bufferPair; it might be clearer to pass these, rather than the whole vImage_Buffer.
Good call. I&apos;ll reduce the struct.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:87
&gt; &gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);
&gt; 
&gt; &amp;dest, &amp;dest, really? Why isn&apos;t src used?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:110
&gt; &gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);
&gt; 
&gt; Ditto.
Because we&apos;re just permuting the channels BGRA&lt;-&gt;RGBA here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387776</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-18 09:15:27 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Since this looks wrong, it calls into question your testing.
&gt; Since what&apos;s wrong?

I was referring to the dest,dest.

&gt; &gt; So you only use data, width and rowBytes from the bufferPair; it might be clearer to pass these, rather than the whole vImage_Buffer.
&gt; Good call. I&apos;ll reduce the struct.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:87
&gt; &gt; &gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);
&gt; &gt; 
&gt; &gt; &amp;dest, &amp;dest, really? Why isn&apos;t src used?
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:110
&gt; &gt; &gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);
&gt; &gt; 
&gt; &gt; Ditto.
&gt; Because we&apos;re just permuting the channels BGRA&lt;-&gt;RGBA here.

Then you should add a comment, since at a glance this looks like a programming error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387871</commentid>
    <comment_count>12</comment_count>
      <attachid>90054</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-18 11:08:45 -0700</bug_when>
    <thetext>Created attachment 90054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387879</commentid>
    <comment_count>13</comment_count>
      <attachid>90054</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-18 11:16:26 -0700</bug_when>
    <thetext>Comment on attachment 90054
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:41
&gt; +struct vImageBufferPair {

This is no longer a vImageBufferPair.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:96
&gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);

Is vImagePermuteChannels_ARGB8888 documented to work when source and destination are the same?

Two spaces before kVImageDoNotTile.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:217
&gt; +            const uint8_t map[4] = { 2, 1, 0, 3 };

&apos;map&apos; is a little obscure here. You need a comment to say what this permute is doing.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:354
&gt; +            const uint8_t map[4] = { 2, 1, 0, 3 };
&gt; +            vImagePermuteChannels_ARGB8888(&amp;src, &amp;dest, map, kvImageNoFlags);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387924</commentid>
    <comment_count>14</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-18 12:19:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 90054 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90054&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:41
&gt; &gt; +struct vImageBufferPair {
&gt; 
&gt; This is no longer a vImageBufferPair.
Changed to ScanlineData

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:96
&gt; &gt; +    vImagePermuteChannels_ARGB8888(&amp;dest, &amp;dest, map,  kvImageDoNotTile);
&gt; 
&gt; Is vImagePermuteChannels_ARGB8888 documented to work when source and destination are the same?
yep.

&gt; 
&gt; Two spaces before kVImageDoNotTile.
Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:217
&gt; &gt; +            const uint8_t map[4] = { 2, 1, 0, 3 };
&gt; 
&gt; &apos;map&apos; is a little obscure here. You need a comment to say what this permute is doing.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:354
&gt; &gt; +            const uint8_t map[4] = { 2, 1, 0, 3 };
&gt; &gt; +            vImagePermuteChannels_ARGB8888(&amp;src, &amp;dest, map, kvImageNoFlags);
&gt; 
&gt; Ditto

Added comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387937</commentid>
    <comment_count>15</comment_count>
      <attachid>90067</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-18 12:25:19 -0700</bug_when>
    <thetext>Created attachment 90067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387963</commentid>
    <comment_count>16</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-04-18 12:58:29 -0700</bug_when>
    <thetext>Committed r84172: &lt;http://trac.webkit.org/changeset/84172&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89615</attachid>
            <date>2011-04-14 11:46:45 -0700</date>
            <delta_ts>2011-04-14 13:13:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58088-20110414114644.patch</filename>
            <type>text/plain</type>
            <size>6569</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMTQgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFVzZSB2SW1hZ2UgKHVuKXByZW11bHRpcGx5SW1h
Z2VEYXRhIGZ1bmN0aW9ucyBmb3IgZ2V0L3B1dEltYWdlRGF0YSB3aXRoIElPU3VyZmFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDg4CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1bnByZW11bHRpdHBseVNjYW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OnByZW11bHRpdHBseVNjYW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEp
OgorCiAyMDExLTA0LTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
CShyZXZpc2lvbiA4Mzc4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDIwIEBA
CiAKICNpZiBVU0UoQUNDRUxFUkFURSkKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUu
aD4KKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAKICNpZiBVU0UoSU9T
VVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogI2luY2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZh
Y2UuaD4KICNlbmRpZgogCisjaWYgVVNFKEFDQ0VMRVJBVEUpCit0eXBlZGVmIHN0cnVjdCB2SW1h
Z2VCdWZmZXJQYWlyIHsKKyAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Cit9IHZJbWFnZUJ1ZmZlclBhaXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJikKQEAg
LTU0LDYgKzYyLDUyIEBAIHN0YXRpYyBib29sIGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KCkK
ICAgICBzdGF0aWMgYm9vbCByZXN1bHQgPSAoR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lvbiwg
JnZlcnNpb24pID09IG5vRXJyICYmIHZlcnNpb24gPiAweDEwNjYpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CisKK3N0YXRpYyB2b2lkIHVucHJlbXVsdGl0cGx5U2NhbmxpbmUodm9pZCogZGF0YSwg
c2l6ZV90IHRpbGVOdW1iZXIpCit7CisgICAgdkltYWdlQnVmZmVyUGFpciogYnVmZmVyUGFpciA9
ICh2SW1hZ2VCdWZmZXJQYWlyKikgZGF0YTsKKworICAgIHZJbWFnZV9CdWZmZXIgc3JjOworICAg
IHNyYy5kYXRhID0gKGNoYXIqKSBidWZmZXJQYWlyLT5zcmMuZGF0YSArIHRpbGVOdW1iZXIgKiBi
dWZmZXJQYWlyLT5zcmMucm93Qnl0ZXM7CisgICAgc3JjLmhlaWdodCA9IDE7CisgICAgc3JjLndp
ZHRoID0gYnVmZmVyUGFpci0+c3JjLndpZHRoOworICAgIHNyYy5yb3dCeXRlcyA9IGJ1ZmZlclBh
aXItPnNyYy5yb3dCeXRlczsKKworICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKKyAgICBkZXN0LmRh
dGEgPSAoY2hhciopIGJ1ZmZlclBhaXItPmRlc3QuZGF0YSArIHRpbGVOdW1iZXIgKiBidWZmZXJQ
YWlyLT5kZXN0LnJvd0J5dGVzOworICAgIGRlc3QuaGVpZ2h0ID0gMTsKKyAgICBkZXN0LndpZHRo
ID0gYnVmZmVyUGFpci0+ZGVzdC53aWR0aDsKKyAgICBkZXN0LnJvd0J5dGVzID0gYnVmZmVyUGFp
ci0+ZGVzdC5yb3dCeXRlczsKKworICAgIGlmIChrdkltYWdlTm9FcnJvciAhPSB2SW1hZ2VVbnBy
ZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZURvTm90VGlsZSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAz
IH07CisgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVzdCwgbWFw
LCAga3ZJbWFnZURvTm90VGlsZSk7Cit9CisKK3N0YXRpYyB2b2lkIHByZW11bHRpdHBseVNjYW5s
aW5lKHZvaWQqIGRhdGEsIHNpemVfdCB0aWxlTnVtYmVyKQoreworICAgIHZJbWFnZUJ1ZmZlclBh
aXIqIGJ1ZmZlclBhaXIgPSAodkltYWdlQnVmZmVyUGFpciopIGRhdGE7CisKKyAgICB2SW1hZ2Vf
QnVmZmVyIHNyYzsKKyAgICBzcmMuZGF0YSA9IChjaGFyKikgYnVmZmVyUGFpci0+c3JjLmRhdGEg
KyB0aWxlTnVtYmVyICogYnVmZmVyUGFpci0+c3JjLnJvd0J5dGVzOworICAgIHNyYy5oZWlnaHQg
PSAxOworICAgIHNyYy53aWR0aCA9IGJ1ZmZlclBhaXItPnNyYy53aWR0aDsKKyAgICBzcmMucm93
Qnl0ZXMgPSBidWZmZXJQYWlyLT5zcmMucm93Qnl0ZXM7CisKKyAgICB2SW1hZ2VfQnVmZmVyIGRl
c3Q7CisgICAgZGVzdC5kYXRhID0gKGNoYXIqKSBidWZmZXJQYWlyLT5kZXN0LmRhdGEgKyB0aWxl
TnVtYmVyICogYnVmZmVyUGFpci0+ZGVzdC5yb3dCeXRlczsKKyAgICBkZXN0LmhlaWdodCA9IDE7
CisgICAgZGVzdC53aWR0aCA9IGJ1ZmZlclBhaXItPmRlc3Qud2lkdGg7CisgICAgZGVzdC5yb3dC
eXRlcyA9IGJ1ZmZlclBhaXItPmRlc3Qucm93Qnl0ZXM7CisKKyAgICBpZiAoa3ZJbWFnZU5vRXJy
b3IgIT0gdkltYWdlUHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdl
RG9Ob3RUaWxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgdWludDhfdCBtYXBbNF0g
PSB7IDIsIDEsIDAsIDMgfTsKKyAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJmRl
c3QsICZkZXN0LCBtYXAsICBrdkltYWdlRG9Ob3RUaWxlKTsKK30KICNlbmRpZgogCiBQYXNzUmVm
UHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1
bm11bHRpcGxpZWQpIGNvbnN0CkBAIC0xMzgsNyArMTkyLDMxIEBAIFBhc3NSZWZQdHI8Qnl0ZUFy
cmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmcKICAgICAgICAgSU9TdXJmYWNlTG9jayhzdXJmYWNlLCBr
SU9TdXJmYWNlTG9ja1JlYWRPbmx5LCAwKTsKICAgICAgICAgc3JjQnl0ZXNQZXJSb3cgPSBJT1N1
cmZhY2VHZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKICAgICAgICAgc3JjUm93cyA9ICh1bnNpZ25l
ZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsgb3JpZ2lueSAqIHNy
Y0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0gICAgICAgIAorCisjaWYgVVNFKEFDQ0VMRVJB
VEUpCisgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOworICAgICAgICBzcmMuaGVpZ2h0ID0gaGVp
Z2h0OworICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKKyAgICAgICAgc3JjLnJvd0J5dGVzID0g
c3JjQnl0ZXNQZXJSb3c7CisgICAgICAgIHNyYy5kYXRhID0gc3JjUm93czsKKworICAgICAgICB2
SW1hZ2VfQnVmZmVyIGRzdDsKKyAgICAgICAgZHN0LmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAg
ZHN0LndpZHRoID0gd2lkdGg7CisgICAgICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJv
dzsKKyAgICAgICAgZHN0LmRhdGEgPSBkZXN0Um93czsKKworICAgICAgICB2SW1hZ2VCdWZmZXJQ
YWlyIGJ1ZmZQYWlyOworICAgICAgICBidWZmUGFpci5zcmMgPSBzcmM7CisgICAgICAgIGJ1ZmZQ
YWlyLmRlc3QgPSBkc3Q7CisKKyAgICAgICAgaWYgKHVubXVsdGlwbGllZCkKKyAgICAgICAgICAg
IGRpc3BhdGNoX2FwcGx5X2YoaGVpZ2h0LCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BB
VENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCAmYnVmZlBhaXIsIHVucHJlbXVsdGl0cGx5
U2NhbmxpbmUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgbWFw
WzRdID0geyAyLCAxLCAwLCAzIH07CisgICAgICAgICAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNf
QVJHQjg4ODgoJmJ1ZmZQYWlyLnNyYywgJmJ1ZmZQYWlyLmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxh
Z3MpOworICAgICAgICB9CisjZWxzZQogICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdo
dDsgKyt5KSB7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsK
ICAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKQEAgLTE1OCwxMCArMjM2LDExIEBA
IFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmcKICAgICAgICAgICAgIHNy
Y1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0
ZXNQZXJSb3c7CiAgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURSkKICAgICAgICAg
SU9TdXJmYWNlVW5sb2NrKHN1cmZhY2UsIGtJT1N1cmZhY2VMb2NrUmVhZE9ubHksIDApOwogI2Vs
c2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBVU0Uo
SU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIH0KICAgICAKICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2UoKTsKQEAgLTI0Niw3ICszMjUsMzEgQEAgdm9pZCBJbWFnZUJ1ZmZlckRh
dGE6OnB1dERhdGEoQnl0ZUFycmF5KgogICAgICAgICBJT1N1cmZhY2VMb2NrKHN1cmZhY2UsIDAs
IDApOwogICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRlc1BlclJvdyhz
dXJmYWNlKTsKICAgICAgICAgZGVzdFJvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdl
dEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHgg
KiA0OworCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwor
ICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsK
KyAgICAgICAgc3JjLnJvd0J5dGVzID0gc3JjQnl0ZXNQZXJSb3c7CisgICAgICAgIHNyYy5kYXRh
ID0gc3JjUm93czsKKyAgICAgICAgCisgICAgICAgIHZJbWFnZV9CdWZmZXIgZHN0OworICAgICAg
ICBkc3QuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBkc3Qud2lkdGggPSB3aWR0aDsKKyAgICAg
ICAgZHN0LnJvd0J5dGVzID0gZGVzdEJ5dGVzUGVyUm93OworICAgICAgICBkc3QuZGF0YSA9IGRl
c3RSb3dzOworICAgICAgICAKKyAgICAgICAgdkltYWdlQnVmZmVyUGFpciBidWZmUGFpcjsKKyAg
ICAgICAgYnVmZlBhaXIuc3JjID0gc3JjOworICAgICAgICBidWZmUGFpci5kZXN0ID0gZHN0Owog
ICAgICAgICAKKyAgICAgICAgaWYgKHVubXVsdGlwbGllZCkKKyAgICAgICAgICAgIGRpc3BhdGNo
X2FwcGx5X2YoaGVpZ2h0LCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApLCAmYnVmZlBhaXIsIHByZW11bHRpdHBseVNjYW5saW5lKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwg
MSwgMCwgMyB9OworICAgICAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZi
dWZmUGFpci5zcmMsICZidWZmUGFpci5kZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKKyAgICAg
ICAgfQorI2Vsc2UKICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewog
ICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CiAgICAgICAgICAg
ICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CkBAIC0yNjYsMTAgKzM2OSwxMiBAQCB2b2lkIEltYWdl
QnVmZmVyRGF0YTo6cHV0RGF0YShCeXRlQXJyYXkqCiAgICAgICAgICAgICBkZXN0Um93cyArPSBk
ZXN0Qnl0ZXNQZXJSb3c7CiAgICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93Owog
ICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEUpCisKICAgICAgICAgSU9TdXJmYWNl
VW5sb2NrKHN1cmZhY2UsIDAsIDApOwogI2Vsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
KQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89636</attachid>
            <date>2011-04-14 13:13:31 -0700</date>
            <delta_ts>2011-04-14 17:44:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58088-20110414131330.patch</filename>
            <type>text/plain</type>
            <size>6687</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMTQgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFVzZSB2SW1hZ2UgKHVuKXByZW11bHRpcGx5SW1h
Z2VEYXRhIGZ1bmN0aW9ucyBmb3IgZ2V0L3B1dEltYWdlRGF0YSB3aXRoIElPU3VyZmFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDg4CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1bnByZW11bHRpdHBseVNjYW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OnByZW11bHRpdHBseVNjYW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEp
OgorCiAyMDExLTA0LTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
CShyZXZpc2lvbiA4Mzc4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDIwIEBA
CiAKICNpZiBVU0UoQUNDRUxFUkFURSkKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUu
aD4KKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAKICNpZiBVU0UoSU9T
VVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogI2luY2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZh
Y2UuaD4KICNlbmRpZgogCisjaWYgVVNFKEFDQ0VMRVJBVEUpCit0eXBlZGVmIHN0cnVjdCB2SW1h
Z2VCdWZmZXJQYWlyIHsKKyAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Cit9IHZJbWFnZUJ1ZmZlclBhaXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJikKQEAg
LTU0LDcgKzYyLDU1IEBAIHN0YXRpYyBib29sIGhhdmVWSW1hZ2VSb3VuZGluZ0Vycm9yRml4KCkK
ICAgICBzdGF0aWMgYm9vbCByZXN1bHQgPSAoR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lvbiwg
JnZlcnNpb24pID09IG5vRXJyICYmIHZlcnNpb24gPiAweDEwNjYpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9Ci0jZW5kaWYKKworI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUp
CitzdGF0aWMgdm9pZCB1bnByZW11bHRpdHBseVNjYW5saW5lKHZvaWQqIGRhdGEsIHNpemVfdCB0
aWxlTnVtYmVyKQoreworICAgIHZJbWFnZUJ1ZmZlclBhaXIqIGJ1ZmZlclBhaXIgPSAodkltYWdl
QnVmZmVyUGFpciopIGRhdGE7CisKKyAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICBzcmMuZGF0
YSA9IChjaGFyKikgYnVmZmVyUGFpci0+c3JjLmRhdGEgKyB0aWxlTnVtYmVyICogYnVmZmVyUGFp
ci0+c3JjLnJvd0J5dGVzOworICAgIHNyYy5oZWlnaHQgPSAxOworICAgIHNyYy53aWR0aCA9IGJ1
ZmZlclBhaXItPnNyYy53aWR0aDsKKyAgICBzcmMucm93Qnl0ZXMgPSBidWZmZXJQYWlyLT5zcmMu
cm93Qnl0ZXM7CisKKyAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7CisgICAgZGVzdC5kYXRhID0gKGNo
YXIqKSBidWZmZXJQYWlyLT5kZXN0LmRhdGEgKyB0aWxlTnVtYmVyICogYnVmZmVyUGFpci0+ZGVz
dC5yb3dCeXRlczsKKyAgICBkZXN0LmhlaWdodCA9IDE7CisgICAgZGVzdC53aWR0aCA9IGJ1ZmZl
clBhaXItPmRlc3Qud2lkdGg7CisgICAgZGVzdC5yb3dCeXRlcyA9IGJ1ZmZlclBhaXItPmRlc3Qu
cm93Qnl0ZXM7CisKKyAgICBpZiAoa3ZJbWFnZU5vRXJyb3IgIT0gdkltYWdlVW5wcmVtdWx0aXBs
eURhdGFfUkdCQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VEb05vdFRpbGUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OworICAg
IHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmZGVzdCwgJmRlc3QsIG1hcCwgIGt2SW1h
Z2VEb05vdFRpbGUpOworfQorCitzdGF0aWMgdm9pZCBwcmVtdWx0aXRwbHlTY2FubGluZSh2b2lk
KiBkYXRhLCBzaXplX3QgdGlsZU51bWJlcikKK3sKKyAgICB2SW1hZ2VCdWZmZXJQYWlyKiBidWZm
ZXJQYWlyID0gKHZJbWFnZUJ1ZmZlclBhaXIqKSBkYXRhOworCisgICAgdkltYWdlX0J1ZmZlciBz
cmM7CisgICAgc3JjLmRhdGEgPSAoY2hhciopIGJ1ZmZlclBhaXItPnNyYy5kYXRhICsgdGlsZU51
bWJlciAqIGJ1ZmZlclBhaXItPnNyYy5yb3dCeXRlczsKKyAgICBzcmMuaGVpZ2h0ID0gMTsKKyAg
ICBzcmMud2lkdGggPSBidWZmZXJQYWlyLT5zcmMud2lkdGg7CisgICAgc3JjLnJvd0J5dGVzID0g
YnVmZmVyUGFpci0+c3JjLnJvd0J5dGVzOworCisgICAgdkltYWdlX0J1ZmZlciBkZXN0OworICAg
IGRlc3QuZGF0YSA9IChjaGFyKikgYnVmZmVyUGFpci0+ZGVzdC5kYXRhICsgdGlsZU51bWJlciAq
IGJ1ZmZlclBhaXItPmRlc3Qucm93Qnl0ZXM7CisgICAgZGVzdC5oZWlnaHQgPSAxOworICAgIGRl
c3Qud2lkdGggPSBidWZmZXJQYWlyLT5kZXN0LndpZHRoOworICAgIGRlc3Qucm93Qnl0ZXMgPSBi
dWZmZXJQYWlyLT5kZXN0LnJvd0J5dGVzOworCisgICAgaWYgKGt2SW1hZ2VOb0Vycm9yICE9IHZJ
bWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZURvTm90VGls
ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAx
LCAwLCAzIH07CisgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVz
dCwgbWFwLCAga3ZJbWFnZURvTm90VGlsZSk7Cit9CisjZW5kaWYgLy8gVVNFKElPU1VSRkFDRV9D
QU5WQVNfQkFDS0lOR19TVE9SRSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURSkKIAogUGFzc1Jl
ZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wg
dW5tdWx0aXBsaWVkKSBjb25zdAogewpAQCAtMTM4LDcgKzE5NCwzMSBAQCBQYXNzUmVmUHRyPEJ5
dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnCiAgICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFj
ZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7CiAgICAgICAgIHNyY0J5dGVzUGVyUm93ID0g
SU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFjZSk7CiAgICAgICAgIHNyY1Jvd3MgPSAodW5z
aWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdpbnkg
KiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwotICAgICAgICAKKworI2lmIFVTRShBQ0NF
TEVSQVRFKQorICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICAgICAgc3JjLmhlaWdodCA9
IGhlaWdodDsKKyAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7CisgICAgICAgIHNyYy5yb3dCeXRl
cyA9IHNyY0J5dGVzUGVyUm93OworICAgICAgICBzcmMuZGF0YSA9IHNyY1Jvd3M7CisKKyAgICAg
ICAgdkltYWdlX0J1ZmZlciBkc3Q7CisgICAgICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7CisgICAg
ICAgIGRzdC53aWR0aCA9IHdpZHRoOworICAgICAgICBkc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQ
ZXJSb3c7CisgICAgICAgIGRzdC5kYXRhID0gZGVzdFJvd3M7CisKKyAgICAgICAgdkltYWdlQnVm
ZmVyUGFpciBidWZmUGFpcjsKKyAgICAgICAgYnVmZlBhaXIuc3JjID0gc3JjOworICAgICAgICBi
dWZmUGFpci5kZXN0ID0gZHN0OworCisgICAgICAgIGlmICh1bm11bHRpcGxpZWQpCisgICAgICAg
ICAgICBkaXNwYXRjaF9hcHBseV9mKGhlaWdodCwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShE
SVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgJmJ1ZmZQYWlyLCB1bnByZW11bHRp
dHBseVNjYW5saW5lKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCB1aW50OF90
IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OworICAgICAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5u
ZWxzX0FSR0I4ODg4KCZidWZmUGFpci5zcmMsICZidWZmUGFpci5kZXN0LCBtYXAsIGt2SW1hZ2VO
b0ZsYWdzKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBo
ZWlnaHQ7ICsreSkgewogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsr
KSB7CiAgICAgICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CkBAIC0xNTgsMTAgKzIzOCwx
MSBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnCiAgICAgICAgICAg
ICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwogICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVz
dEJ5dGVzUGVyUm93OwogICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEUpCiAgICAg
ICAgIElPU3VyZmFjZVVubG9jayhzdXJmYWNlLCBrSU9TdXJmYWNlTG9ja1JlYWRPbmx5LCAwKTsK
ICNlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCisjZW5kaWYgLy8g
VVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CkBAIC0yNDYsNyArMzI3LDMxIEBAIHZvaWQgSW1hZ2VCdWZm
ZXJEYXRhOjpwdXREYXRhKEJ5dGVBcnJheSoKICAgICAgICAgSU9TdXJmYWNlTG9jayhzdXJmYWNl
LCAwLCAwKTsKICAgICAgICAgZGVzdEJ5dGVzUGVyUm93ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJS
b3coc3VyZmFjZSk7CiAgICAgICAgIGRlc3RSb3dzID0gKHVuc2lnbmVkIGNoYXIqKShJT1N1cmZh
Y2VHZXRCYXNlQWRkcmVzcyhzdXJmYWNlKSkgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRl
c3R4ICogNDsKKworI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICB2SW1hZ2VfQnVmZmVyIHNy
YzsKKyAgICAgICAgc3JjLmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgc3JjLndpZHRoID0gd2lk
dGg7CisgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OworICAgICAgICBzcmMu
ZGF0YSA9IHNyY1Jvd3M7CisgICAgICAgIAorICAgICAgICB2SW1hZ2VfQnVmZmVyIGRzdDsKKyAg
ICAgICAgZHN0LmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgZHN0LndpZHRoID0gd2lkdGg7Cisg
ICAgICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAgICAgZHN0LmRhdGEg
PSBkZXN0Um93czsKKyAgICAgICAgCisgICAgICAgIHZJbWFnZUJ1ZmZlclBhaXIgYnVmZlBhaXI7
CisgICAgICAgIGJ1ZmZQYWlyLnNyYyA9IHNyYzsKKyAgICAgICAgYnVmZlBhaXIuZGVzdCA9IGRz
dDsKICAgICAgICAgCisgICAgICAgIGlmICh1bm11bHRpcGxpZWQpCisgICAgICAgICAgICBkaXNw
YXRjaF9hcHBseV9mKGhlaWdodCwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9R
VUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgJmJ1ZmZQYWlyLCBwcmVtdWx0aXRwbHlTY2FubGlu
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7
IDIsIDEsIDAsIDMgfTsKKyAgICAgICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4
OCgmYnVmZlBhaXIuc3JjLCAmYnVmZlBhaXIuZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Cisg
ICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kp
IHsKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewogICAgICAg
ICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwpAQCAtMjY2LDEwICszNzEsMTIgQEAgdm9pZCBJ
bWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoQnl0ZUFycmF5KgogICAgICAgICAgICAgZGVzdFJvd3Mg
Kz0gZGVzdEJ5dGVzUGVyUm93OwogICAgICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJv
dzsKICAgICAgICAgfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFKQorCiAgICAgICAgIElPU3Vy
ZmFjZVVubG9jayhzdXJmYWNlLCAwLCAwKTsKICNlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotI2VuZGlmCisjZW5kaWYgLy8gVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19T
VE9SRSkKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89703</attachid>
            <date>2011-04-14 17:44:17 -0700</date>
            <delta_ts>2011-04-18 11:08:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58088-20110414174416.patch</filename>
            <type>text/plain</type>
            <size>6614</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMTQgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFVzZSB2SW1hZ2UgKHVuKXByZW11bHRpcGx5SW1h
Z2VEYXRhIGZ1bmN0aW9ucyBmb3IgZ2V0L3B1dEltYWdlRGF0YSB3aXRoIElPU3VyZmFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDg4CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1bnByZW11bHRpdHBseVNjYW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OnByZW11bHRpdHBseVNjYW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEp
OgorCiAyMDExLTA0LTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
CShyZXZpc2lvbiA4Mzc4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTQgQEAK
IAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiAjaW5jbHVkZSA8SU9T
dXJmYWNlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjZW5k
aWYKKworI2lmIFVTRShBQ0NFTEVSQVRFKQorc3RydWN0IHZJbWFnZUJ1ZmZlclBhaXIgeworICAg
IHZJbWFnZV9CdWZmZXIgc3JjOworICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKK307CiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNyArNjIsNTUgQEAgc3RhdGljIGJvb2wgaGF2
ZVZJbWFnZVJvdW5kaW5nRXJyb3JGaXgoKQogICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0
YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+
IDB4MTA2Nik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbmRpZgorCisjaWYgVVNFKElPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKK3N0YXRpYyB2b2lkIHVucHJlbXVsdGl0cGx5U2Nh
bmxpbmUodm9pZCogZGF0YSwgc2l6ZV90IHRpbGVOdW1iZXIpCit7CisgICAgdkltYWdlQnVmZmVy
UGFpciogYnVmZmVyUGFpciA9IHN0YXRpY19jYXN0PHZJbWFnZUJ1ZmZlclBhaXIqPihkYXRhKTsK
KworICAgIHZJbWFnZV9CdWZmZXIgc3JjOworICAgIHNyYy5kYXRhID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGJ1ZmZlclBhaXItPnNyYy5kYXRhKSArIHRpbGVOdW1iZXIgKiBidWZmZXJQYWlyLT5zcmMu
cm93Qnl0ZXM7CisgICAgc3JjLmhlaWdodCA9IDE7CisgICAgc3JjLndpZHRoID0gYnVmZmVyUGFp
ci0+c3JjLndpZHRoOworICAgIHNyYy5yb3dCeXRlcyA9IGJ1ZmZlclBhaXItPnNyYy5yb3dCeXRl
czsKKworICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKKyAgICBkZXN0LmRhdGEgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4oYnVmZmVyUGFpci0+ZGVzdC5kYXRhKSArIHRpbGVOdW1iZXIgKiBidWZmZXJQYWly
LT5kZXN0LnJvd0J5dGVzOworICAgIGRlc3QuaGVpZ2h0ID0gMTsKKyAgICBkZXN0LndpZHRoID0g
YnVmZmVyUGFpci0+ZGVzdC53aWR0aDsKKyAgICBkZXN0LnJvd0J5dGVzID0gYnVmZmVyUGFpci0+
ZGVzdC5yb3dCeXRlczsKKworICAgIGlmIChrdkltYWdlTm9FcnJvciAhPSB2SW1hZ2VVbnByZW11
bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZURvTm90VGlsZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07
CisgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZkZXN0LCAmZGVzdCwgbWFwLCAg
a3ZJbWFnZURvTm90VGlsZSk7Cit9CisKK3N0YXRpYyB2b2lkIHByZW11bHRpdHBseVNjYW5saW5l
KHZvaWQqIGRhdGEsIHNpemVfdCB0aWxlTnVtYmVyKQoreworICAgIHZJbWFnZUJ1ZmZlclBhaXIq
IGJ1ZmZlclBhaXIgPSBzdGF0aWNfY2FzdDx2SW1hZ2VCdWZmZXJQYWlyKj4oZGF0YSk7CisKKyAg
ICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICBzcmMuZGF0YSA9IHN0YXRpY19jYXN0PGNoYXIqPihi
dWZmZXJQYWlyLT5zcmMuZGF0YSkgKyB0aWxlTnVtYmVyICogYnVmZmVyUGFpci0+c3JjLnJvd0J5
dGVzOworICAgIHNyYy5oZWlnaHQgPSAxOworICAgIHNyYy53aWR0aCA9IGJ1ZmZlclBhaXItPnNy
Yy53aWR0aDsKKyAgICBzcmMucm93Qnl0ZXMgPSBidWZmZXJQYWlyLT5zcmMucm93Qnl0ZXM7CisK
KyAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7CisgICAgZGVzdC5kYXRhID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGJ1ZmZlclBhaXItPmRlc3QuZGF0YSkgKyB0aWxlTnVtYmVyICogYnVmZmVyUGFpci0+ZGVz
dC5yb3dCeXRlczsKKyAgICBkZXN0LmhlaWdodCA9IDE7CisgICAgZGVzdC53aWR0aCA9IGJ1ZmZl
clBhaXItPmRlc3Qud2lkdGg7CisgICAgZGVzdC5yb3dCeXRlcyA9IGJ1ZmZlclBhaXItPmRlc3Qu
cm93Qnl0ZXM7CisKKyAgICBpZiAoa3ZJbWFnZU5vRXJyb3IgIT0gdkltYWdlUHJlbXVsdGlwbHlE
YXRhX1JHQkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlRG9Ob3RUaWxlKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsKKyAgICB2
SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJmRlc3QsICZkZXN0LCBtYXAsICBrdkltYWdl
RG9Ob3RUaWxlKTsKK30KKyNlbmRpZiAvLyBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NU
T1JFKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFKQogCiBQYXNzUmVmUHRyPEJ5dGVBcnJheT4g
SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQpIGNv
bnN0CiB7CkBAIC0xMzgsNyArMTk0LDMxIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1
ZmZlckRhdGE6OmcKICAgICAgICAgSU9TdXJmYWNlTG9jayhzdXJmYWNlLCBrSU9TdXJmYWNlTG9j
a1JlYWRPbmx5LCAwKTsKICAgICAgICAgc3JjQnl0ZXNQZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRl
c1BlclJvdyhzdXJmYWNlKTsKICAgICAgICAgc3JjUm93cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9T
dXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93
ICsgb3JpZ2lueCAqIDQ7Ci0gICAgICAgIAorCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgICAg
IHZJbWFnZV9CdWZmZXIgc3JjOworICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAg
ICBzcmMud2lkdGggPSB3aWR0aDsKKyAgICAgICAgc3JjLnJvd0J5dGVzID0gc3JjQnl0ZXNQZXJS
b3c7CisgICAgICAgIHNyYy5kYXRhID0gc3JjUm93czsKKworICAgICAgICB2SW1hZ2VfQnVmZmVy
IGRzdDsKKyAgICAgICAgZHN0LmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgZHN0LndpZHRoID0g
d2lkdGg7CisgICAgICAgIGRzdC5yb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAgICAg
ZHN0LmRhdGEgPSBkZXN0Um93czsKKworICAgICAgICB2SW1hZ2VCdWZmZXJQYWlyIGJ1ZmZQYWly
OworICAgICAgICBidWZmUGFpci5zcmMgPSBzcmM7CisgICAgICAgIGJ1ZmZQYWlyLmRlc3QgPSBk
c3Q7CisKKyAgICAgICAgaWYgKHVubXVsdGlwbGllZCkKKyAgICAgICAgICAgIGRpc3BhdGNoX2Fw
cGx5X2YoaGVpZ2h0LCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BS
SU9SSVRZX0RFRkFVTFQsIDApLCAmYnVmZlBhaXIsIHVucHJlbXVsdGl0cGx5U2NhbmxpbmUpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAx
LCAwLCAzIH07CisgICAgICAgICAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJmJ1
ZmZQYWlyLnNyYywgJmJ1ZmZQYWlyLmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3MpOworICAgICAg
ICB9CisjZWxzZQogICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CiAg
ICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKICAgICAgICAgICAg
ICAgICBpbnQgYmFzZXggPSB4ICogNDsKQEAgLTE1OCwxMCArMjM4LDExIEBAIFBhc3NSZWZQdHI8
Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmcKICAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3Jj
Qnl0ZXNQZXJSb3c7CiAgICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7CiAg
ICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURSkKICAgICAgICAgSU9TdXJmYWNlVW5s
b2NrKHN1cmZhY2UsIGtJT1N1cmZhY2VMb2NrUmVhZE9ubHksIDApOwogI2Vsc2UKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBVU0UoSU9TVVJGQUNFX0NB
TlZBU19CQUNLSU5HX1NUT1JFKQogICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2UoKTsKQEAgLTI0Niw3ICszMjcsMzEgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEo
Qnl0ZUFycmF5KgogICAgICAgICBJT1N1cmZhY2VMb2NrKHN1cmZhY2UsIDAsIDApOwogICAgICAg
ICBkZXN0Qnl0ZXNQZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKICAg
ICAgICAgZGVzdFJvd3MgPSAodW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNz
KHN1cmZhY2UpKSArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0OworCisjaWYg
VVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOworICAgICAgICBzcmMu
aGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKKyAgICAgICAgc3Jj
LnJvd0J5dGVzID0gc3JjQnl0ZXNQZXJSb3c7CisgICAgICAgIHNyYy5kYXRhID0gc3JjUm93czsK
KyAgICAgICAgCisgICAgICAgIHZJbWFnZV9CdWZmZXIgZHN0OworICAgICAgICBkc3QuaGVpZ2h0
ID0gaGVpZ2h0OworICAgICAgICBkc3Qud2lkdGggPSB3aWR0aDsKKyAgICAgICAgZHN0LnJvd0J5
dGVzID0gZGVzdEJ5dGVzUGVyUm93OworICAgICAgICBkc3QuZGF0YSA9IGRlc3RSb3dzOworICAg
ICAgICAKKyAgICAgICAgdkltYWdlQnVmZmVyUGFpciBidWZmUGFpcjsKKyAgICAgICAgYnVmZlBh
aXIuc3JjID0gc3JjOworICAgICAgICBidWZmUGFpci5kZXN0ID0gZHN0OwogICAgICAgICAKKyAg
ICAgICAgaWYgKHVubXVsdGlwbGllZCkKKyAgICAgICAgICAgIGRpc3BhdGNoX2FwcGx5X2YoaGVp
Z2h0LCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCAmYnVmZlBhaXIsIHByZW11bHRpdHBseVNjYW5saW5lKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9Owor
ICAgICAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZidWZmUGFpci5zcmMs
ICZidWZmUGFpci5kZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKKyAgICAgICAgfQorI2Vsc2UK
ICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewogICAgICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CiAgICAgICAgICAgICAgICAgaW50IGJh
c2V4ID0geCAqIDQ7CkBAIC0yNjYsMTAgKzM3MSwxMiBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6
cHV0RGF0YShCeXRlQXJyYXkqCiAgICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJS
b3c7CiAgICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwogICAgICAgICB9Cisj
ZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEUpCisKICAgICAgICAgSU9TdXJmYWNlVW5sb2NrKHN1cmZh
Y2UsIDAsIDApOwogI2Vsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYK
KyNlbmRpZiAvLyBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIH0KIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90054</attachid>
            <date>2011-04-18 11:08:45 -0700</date>
            <delta_ts>2011-04-18 12:25:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58088-20110418110844.patch</filename>
            <type>text/plain</type>
            <size>6870</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMTQgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFVzZSB2SW1hZ2UgKHVuKXByZW11bHRpcGx5SW1h
Z2VEYXRhIGZ1bmN0aW9ucyBmb3IgZ2V0L3B1dEltYWdlRGF0YSB3aXRoIElPU3VyZmFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDg4CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0U2NhbmxpbmUpOiB1bi9wcmVtdWx0aXBsaWVzIGFuZCBjb252
ZXJ0cyBhIHNjYW5saW5lIG9mIGltYWdlIGRhdGEgZnJvbS90byBCR1JBIHRvL2Zyb20gUkdCQQor
ICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXRwbHlTY2FubGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpwcmVtdWx0aXRwbHlTY2FubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckRhdGE6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXRE
YXRhKToKKwogMjAxMS0wNC0xNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAkocmV2aXNpb24gODM3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDE3
IEBACiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogI2luY2x1ZGUg
PElPU3VyZmFjZS9JT1N1cmZhY2UuaD4KKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgor
I2VuZGlmCisKKyNpZiBVU0UoQUNDRUxFUkFURSkKK3N0cnVjdCB2SW1hZ2VCdWZmZXJQYWlyIHsK
KyAgICB2SW1hZ2VQaXhlbENvdW50IHNjYW5saW5lV2lkdGg7CisgICAgdW5zaWduZWQgY2hhciog
c3JjRGF0YTsKKyAgICBzaXplX3Qgc3JjUm93Qnl0ZXM7CisgICAgdW5zaWduZWQgY2hhciogZGVz
dERhdGE7CisgICAgc2l6ZV90IGRlc3RSb3dCeXRlczsKK307CiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTQsNyArNjUsNDggQEAgc3RhdGljIGJvb2wgaGF2ZVZJbWFnZVJvdW5k
aW5nRXJyb3JGaXgoKQogICAgIHN0YXRpYyBib29sIHJlc3VsdCA9IChHZXN0YWx0KGdlc3RhbHRT
eXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgPT0gbm9FcnIgJiYgdmVyc2lvbiA+IDB4MTA2Nik7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbmRpZgorCisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNf
QkFDS0lOR19TVE9SRSkKK3N0YXRpYyB2b2lkIGNvbnZlcnRTY2FubGluZSh2b2lkKiBkYXRhLCBz
aXplX3QgdGlsZU51bWJlciwgYm9vbCBwcmVtdWx0aXBseSkKK3sKKyAgICB2SW1hZ2VCdWZmZXJQ
YWlyKiBidWZmZXJQYWlyID0gc3RhdGljX2Nhc3Q8dkltYWdlQnVmZmVyUGFpcio+KGRhdGEpOwor
CisgICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAgc3JjLmRhdGEgPSBidWZmZXJQYWlyLT5zcmNE
YXRhICsgdGlsZU51bWJlciAqIGJ1ZmZlclBhaXItPnNyY1Jvd0J5dGVzOworICAgIHNyYy5oZWln
aHQgPSAxOworICAgIHNyYy53aWR0aCA9IGJ1ZmZlclBhaXItPnNjYW5saW5lV2lkdGg7CisgICAg
c3JjLnJvd0J5dGVzID0gYnVmZmVyUGFpci0+c3JjUm93Qnl0ZXM7CisKKyAgICB2SW1hZ2VfQnVm
ZmVyIGRlc3Q7CisgICAgZGVzdC5kYXRhID0gYnVmZmVyUGFpci0+ZGVzdERhdGEgKyB0aWxlTnVt
YmVyICogYnVmZmVyUGFpci0+ZGVzdFJvd0J5dGVzOworICAgIGRlc3QuaGVpZ2h0ID0gMTsKKyAg
ICBkZXN0LndpZHRoID0gYnVmZmVyUGFpci0+c2NhbmxpbmVXaWR0aDsKKyAgICBkZXN0LnJvd0J5
dGVzID0gYnVmZmVyUGFpci0+ZGVzdFJvd0J5dGVzOworCisgICAgaWYgKHByZW11bHRpcGx5KSB7
CisgICAgICAgIGlmIChrdkltYWdlTm9FcnJvciAhPSB2SW1hZ2VQcmVtdWx0aXBseURhdGFfUkdC
QTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VEb05vdFRpbGUpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChrdkltYWdlTm9FcnJvciAhPSB2SW1hZ2VVbnBy
ZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZURvTm90VGlsZSkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU3dhcCBjaGFubmVscyAxIGFuZCAz
LCB0byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZhY2VzIGlzIEJHUkEsIEltYWdlRGF0YSBl
eHBlY3RzIFJHQkEuCisgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsK
KyAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJmRlc3QsICZkZXN0LCBtYXAsICBr
dkltYWdlRG9Ob3RUaWxlKTsKK30KKworc3RhdGljIHZvaWQgdW5wcmVtdWx0aXRwbHlTY2FubGlu
ZSh2b2lkKiBkYXRhLCBzaXplX3QgdGlsZU51bWJlcikKK3sKKyAgICBjb252ZXJ0U2NhbmxpbmUo
ZGF0YSwgdGlsZU51bWJlciwgZmFsc2UpOworfQorCitzdGF0aWMgdm9pZCBwcmVtdWx0aXRwbHlT
Y2FubGluZSh2b2lkKiBkYXRhLCBzaXplX3QgdGlsZU51bWJlcikKK3sKKyAgICBjb252ZXJ0U2Nh
bmxpbmUoZGF0YSwgdGlsZU51bWJlciwgdHJ1ZSk7Cit9CisjZW5kaWYgLy8gVVNFKElPU1VSRkFD
RV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURSkKIAogUGFz
c1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJv
b2wgdW5tdWx0aXBsaWVkKSBjb25zdAogewpAQCAtMTM4LDcgKzE5MCwzNCBAQCBQYXNzUmVmUHRy
PEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnCiAgICAgICAgIElPU3VyZmFjZUxvY2soc3Vy
ZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7CiAgICAgICAgIHNyY0J5dGVzUGVyUm93
ID0gSU9TdXJmYWNlR2V0Qnl0ZXNQZXJSb3coc3VyZmFjZSk7CiAgICAgICAgIHNyY1Jvd3MgPSAo
dW5zaWduZWQgY2hhciopKElPU3VyZmFjZUdldEJhc2VBZGRyZXNzKHN1cmZhY2UpKSArIG9yaWdp
bnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwotICAgICAgICAKKworI2lmIFVTRShB
Q0NFTEVSQVRFKQorICAgICAgICBpZiAodW5tdWx0aXBsaWVkKSB7CisgICAgICAgICAgICB2SW1h
Z2VCdWZmZXJQYWlyIGJ1ZmZQYWlyOworICAgICAgICAgICAgYnVmZlBhaXIuc2NhbmxpbmVXaWR0
aCA9IHdpZHRoOworICAgICAgICAgICAgYnVmZlBhaXIuc3JjRGF0YSA9IHNyY1Jvd3M7CisgICAg
ICAgICAgICBidWZmUGFpci5zcmNSb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OworICAgICAgICAg
ICAgYnVmZlBhaXIuZGVzdERhdGEgPSBkZXN0Um93czsKKyAgICAgICAgICAgIGJ1ZmZQYWlyLmRl
c3RSb3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKKworICAgICAgICAgICAgZGlzcGF0Y2hfYXBw
bHlfZihoZWlnaHQsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJ
T1JJVFlfREVGQVVMVCwgMCksICZidWZmUGFpciwgdW5wcmVtdWx0aXRwbHlTY2FubGluZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICAgICAg
ICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsK
KyAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OworICAgICAgICAgICAg
c3JjLmRhdGEgPSBzcmNSb3dzOworCisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Cisg
ICAgICAgICAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgICAgIGRlc3Qud2lkdGgg
PSB3aWR0aDsKKyAgICAgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Cisg
ICAgICAgICAgICBkZXN0LmRhdGEgPSBkZXN0Um93czsKKworICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsKKyAgICAgICAgICAgIHZJbWFnZVBlcm11dGVD
aGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7CisgICAg
ICAgIH0KKyNlbHNlCiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsK
ICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewogICAgICAgICAg
ICAgICAgIGludCBiYXNleCA9IHggKiA0OwpAQCAtMTU4LDEwICsyMzcsMTEgQEAgUGFzc1JlZlB0
cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6ZwogICAgICAgICAgICAgc3JjUm93cyArPSBz
cmNCeXRlc1BlclJvdzsKICAgICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsK
ICAgICAgICAgfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFKQogICAgICAgICBJT1N1cmZhY2VV
bmxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgMCk7CiAjZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgorI2VuZGlmIC8vIFVTRShJT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiAgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwpAQCAtMjQ2LDcgKzMyNiwzNCBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0
YShCeXRlQXJyYXkqCiAgICAgICAgIElPU3VyZmFjZUxvY2soc3VyZmFjZSwgMCwgMCk7CiAgICAg
ICAgIGRlc3RCeXRlc1BlclJvdyA9IElPU3VyZmFjZUdldEJ5dGVzUGVyUm93KHN1cmZhY2UpOwog
ICAgICAgICBkZXN0Um93cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFzZUFkZHJl
c3Moc3VyZmFjZSkpICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7Ci0gICAg
ICAgIAorCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIGlmICh1bm11bHRpcGxpZWQpIHsK
KyAgICAgICAgICAgIHZJbWFnZUJ1ZmZlclBhaXIgYnVmZlBhaXI7CisgICAgICAgICAgICBidWZm
UGFpci5zY2FubGluZVdpZHRoID0gd2lkdGg7CisgICAgICAgICAgICBidWZmUGFpci5zcmNEYXRh
ID0gc3JjUm93czsKKyAgICAgICAgICAgIGJ1ZmZQYWlyLnNyY1Jvd0J5dGVzID0gc3JjQnl0ZXNQ
ZXJSb3c7CisgICAgICAgICAgICBidWZmUGFpci5kZXN0RGF0YSA9IGRlc3RSb3dzOworICAgICAg
ICAgICAgYnVmZlBhaXIuZGVzdFJvd0J5dGVzID0gZGVzdEJ5dGVzUGVyUm93OworCisgICAgICAg
ICAgICBkaXNwYXRjaF9hcHBseV9mKGhlaWdodCwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShE
SVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgJmJ1ZmZQYWlyLCBwcmVtdWx0aXRw
bHlTY2FubGluZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVy
IHNyYzsKKyAgICAgICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBzcmMu
d2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93
OworICAgICAgICAgICAgc3JjLmRhdGEgPSBzcmNSb3dzOworCisgICAgICAgICAgICB2SW1hZ2Vf
QnVmZmVyIGRlc3Q7CisgICAgICAgICAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAg
ICAgIGRlc3Qud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBkZXN0
Qnl0ZXNQZXJSb3c7CisgICAgICAgICAgICBkZXN0LmRhdGEgPSBkZXN0Um93czsKKworICAgICAg
ICAgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsKKyAgICAgICAgICAg
IHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdl
Tm9GbGFncyk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
aGVpZ2h0OyArK3kpIHsKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykgewogICAgICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwpAQCAtMjY2LDEwICszNzMs
MTIgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoQnl0ZUFycmF5KgogICAgICAgICAg
ICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwogICAgICAgICAgICAgc3JjUm93cyArPSBz
cmNCeXRlc1BlclJvdzsKICAgICAgICAgfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFKQorCiAg
ICAgICAgIElPU3VyZmFjZVVubG9jayhzdXJmYWNlLCAwLCAwKTsKICNlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCisjZW5kaWYgLy8gVVNFKElPU1VSRkFDRV9DQU5W
QVNfQkFDS0lOR19TVE9SRSkKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90067</attachid>
            <date>2011-04-18 12:25:19 -0700</date>
            <delta_ts>2011-04-18 12:38:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58088-20110418122518.patch</filename>
            <type>text/plain</type>
            <size>7033</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMTQgIE1hdHRoZXcg
RGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ0ddIFVzZSB2SW1hZ2UgKHVuKXByZW11bHRpcGx5SW1h
Z2VEYXRhIGZ1bmN0aW9ucyBmb3IgZ2V0L3B1dEltYWdlRGF0YSB3aXRoIElPU3VyZmFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDg4CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0U2NhbmxpbmUpOiB1bi9wcmVtdWx0aXBsaWVzIGFuZCBjb252
ZXJ0cyBhIHNjYW5saW5lIG9mIGltYWdlIGRhdGEgZnJvbS90byBCR1JBIHRvL2Zyb20gUkdCQQor
ICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXRwbHlTY2FubGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpwcmVtdWx0aXRwbHlTY2FubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckRhdGE6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXRE
YXRhKToKKwogMjAxMS0wNC0xNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAkocmV2aXNpb24gODM3ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDE3
IEBACiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogI2luY2x1ZGUg
PElPU3VyZmFjZS9JT1N1cmZhY2UuaD4KKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgor
I2VuZGlmCisKKyNpZiBVU0UoQUNDRUxFUkFURSkKK3N0cnVjdCBTY2FubGluZURhdGEgeworICAg
IHZJbWFnZVBpeGVsQ291bnQgc2NhbmxpbmVXaWR0aDsKKyAgICB1bnNpZ25lZCBjaGFyKiBzcmNE
YXRhOworICAgIHNpemVfdCBzcmNSb3dCeXRlczsKKyAgICB1bnNpZ25lZCBjaGFyKiBkZXN0RGF0
YTsKKyAgICBzaXplX3QgZGVzdFJvd0J5dGVzOworfTsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01NCw3ICs2NSw0OCBAQCBzdGF0aWMgYm9vbCBoYXZlVkltYWdlUm91bmRpbmdF
cnJvckZpeCgpCiAgICAgc3RhdGljIGJvb2wgcmVzdWx0ID0gKEdlc3RhbHQoZ2VzdGFsdFN5c3Rl
bVZlcnNpb24sICZ2ZXJzaW9uKSA9PSBub0VyciAmJiB2ZXJzaW9uID4gMHgxMDY2KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCisKKyNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNL
SU5HX1NUT1JFKQorc3RhdGljIHZvaWQgY29udmVydFNjYW5saW5lKHZvaWQqIGRhdGEsIHNpemVf
dCB0aWxlTnVtYmVyLCBib29sIHByZW11bHRpcGx5KQoreworICAgIFNjYW5saW5lRGF0YSogc2Nh
bmxpbmVEYXRhID0gc3RhdGljX2Nhc3Q8U2NhbmxpbmVEYXRhKj4oZGF0YSk7CisKKyAgICB2SW1h
Z2VfQnVmZmVyIHNyYzsKKyAgICBzcmMuZGF0YSA9IHNjYW5saW5lRGF0YS0+c3JjRGF0YSArIHRp
bGVOdW1iZXIgKiBzY2FubGluZURhdGEtPnNyY1Jvd0J5dGVzOworICAgIHNyYy5oZWlnaHQgPSAx
OworICAgIHNyYy53aWR0aCA9IHNjYW5saW5lRGF0YS0+c2NhbmxpbmVXaWR0aDsKKyAgICBzcmMu
cm93Qnl0ZXMgPSBzY2FubGluZURhdGEtPnNyY1Jvd0J5dGVzOworCisgICAgdkltYWdlX0J1ZmZl
ciBkZXN0OworICAgIGRlc3QuZGF0YSA9IHNjYW5saW5lRGF0YS0+ZGVzdERhdGEgKyB0aWxlTnVt
YmVyICogc2NhbmxpbmVEYXRhLT5kZXN0Um93Qnl0ZXM7CisgICAgZGVzdC5oZWlnaHQgPSAxOwor
ICAgIGRlc3Qud2lkdGggPSBzY2FubGluZURhdGEtPnNjYW5saW5lV2lkdGg7CisgICAgZGVzdC5y
b3dCeXRlcyA9IHNjYW5saW5lRGF0YS0+ZGVzdFJvd0J5dGVzOworCisgICAgaWYgKHByZW11bHRp
cGx5KSB7CisgICAgICAgIGlmIChrdkltYWdlTm9FcnJvciAhPSB2SW1hZ2VQcmVtdWx0aXBseURh
dGFfUkdCQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VEb05vdFRpbGUpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChrdkltYWdlTm9FcnJvciAhPSB2SW1h
Z2VVbnByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZURvTm90VGls
ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU3dhcCBjaGFubmVscyAx
IGFuZCAzLCB0byBjb252ZXJ0IEJHUkE8LT5SR0JBLiBJT1N1cmZhY2VzIGlzIEJHUkEsIEltYWdl
RGF0YSBleHBlY3RzIFJHQkEuCisgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAs
IDMgfTsKKyAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJmRlc3QsICZkZXN0LCBt
YXAsIGt2SW1hZ2VEb05vdFRpbGUpOworfQorCitzdGF0aWMgdm9pZCB1bnByZW11bHRpdHBseVNj
YW5saW5lKHZvaWQqIGRhdGEsIHNpemVfdCB0aWxlTnVtYmVyKQoreworICAgIGNvbnZlcnRTY2Fu
bGluZShkYXRhLCB0aWxlTnVtYmVyLCBmYWxzZSk7Cit9CisKK3N0YXRpYyB2b2lkIHByZW11bHRp
dHBseVNjYW5saW5lKHZvaWQqIGRhdGEsIHNpemVfdCB0aWxlTnVtYmVyKQoreworICAgIGNvbnZl
cnRTY2FubGluZShkYXRhLCB0aWxlTnVtYmVyLCB0cnVlKTsKK30KKyNlbmRpZiAvLyBVU0UoSU9T
VVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFKQog
CiBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmlu
ZywgYm9vbCB1bm11bHRpcGxpZWQpIGNvbnN0CiB7CkBAIC0xMzgsNyArMTkwLDM1IEBAIFBhc3NS
ZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmcKICAgICAgICAgSU9TdXJmYWNlTG9j
ayhzdXJmYWNlLCBrSU9TdXJmYWNlTG9ja1JlYWRPbmx5LCAwKTsKICAgICAgICAgc3JjQnl0ZXNQ
ZXJSb3cgPSBJT1N1cmZhY2VHZXRCeXRlc1BlclJvdyhzdXJmYWNlKTsKICAgICAgICAgc3JjUm93
cyA9ICh1bnNpZ25lZCBjaGFyKikoSU9TdXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsg
b3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7Ci0gICAgICAgIAorCisjaWYg
VVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIGlmICh1bm11bHRpcGxpZWQpIHsKKyAgICAgICAgICAg
IFNjYW5saW5lRGF0YSBzY2FubGluZURhdGE7CisgICAgICAgICAgICBzY2FubGluZURhdGEuc2Nh
bmxpbmVXaWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc2NhbmxpbmVEYXRhLnNyY0RhdGEgPSBz
cmNSb3dzOworICAgICAgICAgICAgc2NhbmxpbmVEYXRhLnNyY1Jvd0J5dGVzID0gc3JjQnl0ZXNQ
ZXJSb3c7CisgICAgICAgICAgICBzY2FubGluZURhdGEuZGVzdERhdGEgPSBkZXN0Um93czsKKyAg
ICAgICAgICAgIHNjYW5saW5lRGF0YS5kZXN0Um93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7CisK
KyAgICAgICAgICAgIGRpc3BhdGNoX2FwcGx5X2YoaGVpZ2h0LCBkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCAmc2NhbmxpbmVEYXRh
LCB1bnByZW11bHRpdHBseVNjYW5saW5lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHZJbWFnZV9CdWZmZXIgc3JjOworICAgICAgICAgICAgc3JjLmhlaWdodCA9IGhlaWdodDsKKyAg
ICAgICAgICAgIHNyYy53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc3JjLnJvd0J5dGVzID0g
c3JjQnl0ZXNQZXJSb3c7CisgICAgICAgICAgICBzcmMuZGF0YSA9IHNyY1Jvd3M7CisKKyAgICAg
ICAgICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKKyAgICAgICAgICAgIGRlc3QuaGVpZ2h0ID0gaGVp
Z2h0OworICAgICAgICAgICAgZGVzdC53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgZGVzdC5y
b3dCeXRlcyA9IGRlc3RCeXRlc1BlclJvdzsKKyAgICAgICAgICAgIGRlc3QuZGF0YSA9IGRlc3RS
b3dzOworCisgICAgICAgICAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIGZyb20gQkdSQSB0byBS
R0JBLgorICAgICAgICAgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsK
KyAgICAgICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwg
bWFwLCBrdkltYWdlTm9GbGFncyk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGZvciAoaW50
IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykgewogICAgICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwpAQCAt
MTU4LDEwICsyMzgsMTEgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6
ZwogICAgICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAgICAgICAgICAgIGRl
c3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICAgICAgfQorI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFKQogICAgICAgICBJT1N1cmZhY2VVbmxvY2soc3VyZmFjZSwga0lPU3VyZmFjZUxvY2tS
ZWFkT25seSwgMCk7CiAjZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRp
ZgorI2VuZGlmIC8vIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiAgICAgfQog
ICAgIAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwpAQCAtMjQ2LDcgKzMyNywzNSBAQCB2
b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShCeXRlQXJyYXkqCiAgICAgICAgIElPU3VyZmFj
ZUxvY2soc3VyZmFjZSwgMCwgMCk7CiAgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IElPU3VyZmFj
ZUdldEJ5dGVzUGVyUm93KHN1cmZhY2UpOwogICAgICAgICBkZXN0Um93cyA9ICh1bnNpZ25lZCBj
aGFyKikoSU9TdXJmYWNlR2V0QmFzZUFkZHJlc3Moc3VyZmFjZSkpICsgZGVzdHkgKiBkZXN0Qnl0
ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7Ci0gICAgICAgIAorCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisg
ICAgICAgIGlmICh1bm11bHRpcGxpZWQpIHsKKyAgICAgICAgICAgIFNjYW5saW5lRGF0YSBzY2Fu
bGluZURhdGE7CisgICAgICAgICAgICBzY2FubGluZURhdGEuc2NhbmxpbmVXaWR0aCA9IHdpZHRo
OworICAgICAgICAgICAgc2NhbmxpbmVEYXRhLnNyY0RhdGEgPSBzcmNSb3dzOworICAgICAgICAg
ICAgc2NhbmxpbmVEYXRhLnNyY1Jvd0J5dGVzID0gc3JjQnl0ZXNQZXJSb3c7CisgICAgICAgICAg
ICBzY2FubGluZURhdGEuZGVzdERhdGEgPSBkZXN0Um93czsKKyAgICAgICAgICAgIHNjYW5saW5l
RGF0YS5kZXN0Um93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7CisKKyAgICAgICAgICAgIGRpc3Bh
dGNoX2FwcGx5X2YoaGVpZ2h0LCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FV
RVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCAmc2NhbmxpbmVEYXRhLCBwcmVtdWx0aXRwbHlTY2Fu
bGluZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsK
KyAgICAgICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICBzcmMud2lkdGgg
PSB3aWR0aDsKKyAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OworICAg
ICAgICAgICAgc3JjLmRhdGEgPSBzcmNSb3dzOworCisgICAgICAgICAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7CisgICAgICAgICAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgICAgIGRl
c3Qud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQ
ZXJSb3c7CisgICAgICAgICAgICBkZXN0LmRhdGEgPSBkZXN0Um93czsKKworICAgICAgICAgICAg
Ly8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KKyAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07CisgICAgICAgICAgICB2SW1hZ2VQ
ZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJnNyYywgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3Mp
OworICAgICAgICB9CisjZWxzZQogICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsg
Kyt5KSB7CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKICAg
ICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKQEAgLTI2NiwxMCArMzc1LDEyIEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKEJ5dGVBcnJheSoKICAgICAgICAgICAgIGRlc3RS
b3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQ
ZXJSb3c7CiAgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURSkKKwogICAgICAgICBJ
T1N1cmZhY2VVbmxvY2soc3VyZmFjZSwgMCwgMCk7CiAjZWxzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSNlbmRpZgorI2VuZGlmIC8vIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJ
TkdfU1RPUkUpCiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="82783"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>