<?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>118621</bug_id>
          
          <creation_ts>2013-07-12 16:12:38 -0700</creation_ts>
          <short_desc>[cairo] memory corruption with putImageData and accelerated canvas.</short_desc>
          <delta_ts>2013-08-12 15:04:04 -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://renevier.net/tmp/canvas_malloc_assert.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="arno.">a.renevier</reporter>
          <assigned_to name="arno.">a.renevier</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>908088</commentid>
    <comment_count>0</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-12 16:12:38 -0700</bug_when>
    <thetext>Hi,
when calling putImageData with non 0 dx/dy parameters, I observe a memory corruption if accelerated canvas is enabled for the underlying canvas.
Launch http://renevier.net/tmp/canvas_malloc_assert.html with MiniBrowser to reproduce (make sure accelerated canvas is enabled; --enable-accelerated-2d-canvas).
I get following error on stdout:

*** glibc detected *** /home/arno/webkit/WebKit/WebKitBuild/Release/Programs/.libs/lt-WebKitWebProcess: malloc(): memory corruption: 0x08e42f00 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908550</commentid>
    <comment_count>1</comment_count>
      <attachid>206697</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-15 15:51:00 -0700</bug_when>
    <thetext>Created attachment 206697
patch proposal

in this patch, we use access data directly if we have an image surface. Otherwise, we create image surface and copy data from (or to) it. This is already the current underlying mechanism, but it&apos;s made more explicit. Also, we create the temporary image surface with the minimal needed size. This reduces data transfer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908606</commentid>
    <comment_count>2</comment_count>
      <attachid>206697</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-07-15 18:02:05 -0700</bug_when>
    <thetext>Comment on attachment 206697
patch proposal

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

I don&apos;t think the bug or the patch explains what the original problem was.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:245
&gt; +
&gt; +    // If we already have an image, we read directly the underlying data;
&gt; +    // otherwise we create a temporary image surface, and copy data surface
&gt; +    // into it first
&gt; +    if (surfaceType == CAIRO_SURFACE_TYPE_IMAGE) {
&gt; +        imageSurface = data.m_surface.get();
&gt; +        dx = originx;
&gt; +        dy = originy;
&gt; +    } else {
&gt; +        IntRect area = intersection(rect, IntRect(0, 0, size.width(), size.height()));
&gt; +        imageSurface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_ARGB32, area.width(), area.height()));
&gt; +        copySurface(data.m_surface.get(), imageSurface.get(), area.size(), area.location(), IntPoint(0, 0));
&gt; +        dx = 0;
&gt; +        dy = 0;
&gt; +    }
&gt; +
&gt; +    unsigned char* dataSrc = cairo_image_surface_get_data(imageSurface.get());
&gt; +    unsigned char* dataDst = result-&gt;data();
&gt; +

If we are reading the entire image, then map_to_image can be faster since it can optimize the operation via PBOs. It doesn&apos;t do that yet, but it should in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909488</commentid>
    <comment_count>3</comment_count>
      <attachid>206924</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-17 15:32:42 -0700</bug_when>
    <thetext>Created attachment 206924
new patch proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909491</commentid>
    <comment_count>4</comment_count>
      <attachid>206924</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-07-17 15:49:17 -0700</bug_when>
    <thetext>Comment on attachment 206924
new patch proposal

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

Thanks for fixing this. I&apos;ve just a couple nitpicky things.

&gt; Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp:248
&gt; +void paintSurfaceToAnother(cairo_surface_t* from, cairo_surface_t* to, const IntSize&amp; sourceOffset, const IntSize&amp; destOffset, const IntRect&amp; rect)
&gt; +{
&gt; +    RefPtr&lt;cairo_t&gt; context = adoptRef(cairo_create(to));
&gt; +    cairo_translate(context.get(), destOffset.width(), destOffset.height());
&gt; +    cairo_set_operator(context.get(), CAIRO_OPERATOR_SOURCE);
&gt; +    copyRectFromCairoSurfaceToContext(from, context.get(), sourceOffset, rect);
&gt; +}
&gt; +

It seems you could write this in terms of copyRectFromOneSurfaceToAnother by adding a few more parameters with default values.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:183
&gt; +PassRefPtr&lt;cairo_surface_t&gt; imageSurfaceFrom(cairo_surface_t* surface, const IntRect&amp; rect, IntPoint* outOffset)

outOffset can be a reference and then you don&apos;t have to worry about getting null. I think I&apos;d prefer a name like mapSurfaceToImageAndAdjustRect. You could pass in a non-const rect and just adjust it.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:197
&gt; +    // If we already have an image, we return directly the surface; otherwise
&gt; +    // we create new surface image
&gt; +    cairo_surface_type_t surfaceType = cairo_surface_get_type(surface);
&gt; +
&gt; +    RefPtr&lt;cairo_surface_t&gt; imageSurface;
&gt; +
&gt; +    // If we already have an image, we write directly to the underlying data;
&gt; +    // otherwise we create a temporary surface image
&gt; +    if (surfaceType == CAIRO_SURFACE_TYPE_IMAGE) {
&gt; +        imageSurface = surface;
&gt; +        outOffset-&gt;setX(rect.x());
&gt; +        outOffset-&gt;setY(rect.y());
&gt; +    } else {

Maybe just use an early return?

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:236
&gt; +    IntPoint delta;

delta -&gt; offsetInImage?

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:239
&gt; +    int dx = delta.x();
&gt; +    int dy = delta.y();

I don&apos;t think you need these temporaries. Why not just modify originX and originY?

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:327
&gt; +    IntPoint delta;
&gt; +    RefPtr&lt;cairo_surface_t&gt; imageSurface = imageSurfaceFrom(m_data.m_surface.get(), IntRect(destx, desty, numColumns, numRows), &amp;delta);
&gt; +    int dx = delta.x();
&gt; +    int dy = delta.y();
&gt; +

Ditto.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:328
&gt; +    unsigned char* dataDst = cairo_image_surface_get_data(imageSurface.get());

Let&apos;s use a better name since you are changing this line. How about pixelData?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909846</commentid>
    <comment_count>5</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-18 12:31:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 206924 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=206924&amp;action=review

&gt; &gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:239
&gt; &gt; +    int dx = delta.x();
&gt; &gt; +    int dy = delta.y();
&gt; 
&gt; I don&apos;t think you need these temporaries. Why not just modify originX and originY?

ok

&gt; &gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:327
&gt; &gt; +    IntPoint delta;
&gt; &gt; +    RefPtr&lt;cairo_surface_t&gt; imageSurface = imageSurfaceFrom(m_data.m_surface.get(), IntRect(destx, desty, numColumns, numRows), &amp;delta);
&gt; &gt; +    int dx = delta.x();
&gt; &gt; +    int dy = delta.y();
&gt; &gt; +
&gt; 
&gt; Ditto.

In this case, we need the original destx/desty to paint temporary image back into original surface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910267</commentid>
    <comment_count>6</comment_count>
      <attachid>207131</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-19 11:40:31 -0700</bug_when>
    <thetext>Created attachment 207131
new patch proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910782</commentid>
    <comment_count>7</comment_count>
      <attachid>207131</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-07-22 13:11:20 -0700</bug_when>
    <thetext>Comment on attachment 207131
new patch proposal

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

&gt; Source/WebCore/ChangeLog:26
&gt; +        No new tests. Covered by existing tests.

This isn&apos;t entirely accurate. You should probably say that accelerated canvas is not enabled for testing yet.

&gt; Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp:235
&gt; +void copyRectFromOneSurfaceToAnother(cairo_surface_t* from, cairo_surface_t* to, const IntSize&amp; sourceOffset, const IntRect&amp; rect, const IntSize&amp; destOffset, cairo_operator_t cairo_op)

cairo_op is not a WebKit style name. How about operator or cairoOperator?

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:183
&gt; +PassRefPtr&lt;cairo_surface_t&gt; mapSurfaceToImageAndAdjustRect(cairo_surface_t* surface, const IntRect&amp; rect, IntPoint&amp; outOffset)

As I said before, I still think it&apos;s a good idea to make rect and in/out parameter and dispense with outOffset altogether.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:197
&gt; +        imageSurface = surface;
&gt; +        outOffset.setX(rect.x());
&gt; +        outOffset.setY(rect.y());
&gt; +        return imageSurface.release();

I think you can dispense with the imageSurface variable entirely and just return the pointers. They should be properly converted into PassRefPtr.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:203
&gt; +    imageSurface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_ARGB32, rect.width(), rect.height()));
&gt; +    outOffset.setX(0);
&gt; +    outOffset.setY(0);
&gt; +    return imageSurface.release();

...except here where you should return adoptRef(...).

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:239
&gt; -    int stride = cairo_image_surface_get_stride(imageSurface);
&gt; +    IntPoint offsetInImage;
&gt; +    RefPtr&lt;cairo_surface_t&gt; imageSurface = mapSurfaceToImageAndAdjustRect(data.m_surface.get(), IntRect(originx, originy, numColumns, numRows), offsetInImage);
&gt; +    originx = offsetInImage.x();
&gt; +    originy = offsetInImage.y();

Instead of using originx and originy, please just use an IntRect to store all the properties of the sourceRect.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:247
&gt; +

Extra newline here.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:328
&gt; +    IntPoint offsetInImage;
&gt; +    RefPtr&lt;cairo_surface_t&gt; imageSurface = mapSurfaceToImageAndAdjustRect(m_data.m_surface.get(), IntRect(destx, desty, numColumns, numRows), offsetInImage);
&gt; +    int dx = offsetInImage.x();
&gt; +    int dy = offsetInImage.y();
&gt; +
&gt; +    unsigned char* pixelData = cairo_image_surface_get_data(imageSurface.get());

I don&apos;t see the need for temporaries here. Can&apos;t you just use a sourceRect and use sourceRect.x() and sourceRect.y() to paint back?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911158</commentid>
    <comment_count>8</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-23 16:06:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 207131 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=207131&amp;action=review

&gt; Instead of using originx and originy, please just use an IntRect to store all the properties of the sourceRect.

Do you mean accessing rect.x() / rect.y() in the hot loop ? If so, I fear there would be performance issues. We already avoid Color::colorFromPremultipliedARGB because this function call was deemed too expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911159</commentid>
    <comment_count>9</comment_count>
      <attachid>207356</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-23 16:11:49 -0700</bug_when>
    <thetext>Created attachment 207356
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915210</commentid>
    <comment_count>10</comment_count>
      <attachid>207356</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-08-07 10:45:16 -0700</bug_when>
    <thetext>Comment on attachment 207356
updated patch

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

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:190
&gt; +PassRefPtr&lt;cairo_surface_t&gt; mapSurfaceToImageAndAdjustRect(cairo_surface_t* surface, IntRect&amp; rect)

This should be renamed from map to copy since we are no longer trying to replicate the Cairo map/ummap API.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:240
&gt; +        copyRectFromOneSurfaceToAnother(data.m_surface.get(), imageSurface.get(), IntSize(-area.x(), -area.y()), IntRect(IntPoint::zero(), area.size()), IntSize(), CAIRO_OPERATOR_SOURCE);

You can just use IntPoint() here instead of IntPoint::zero()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916397</commentid>
    <comment_count>11</comment_count>
      <attachid>208560</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-08-12 14:13:35 -0700</bug_when>
    <thetext>Created attachment 208560
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916401</commentid>
    <comment_count>12</comment_count>
      <attachid>208561</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-08-12 14:18:30 -0700</bug_when>
    <thetext>Created attachment 208561
updated patch with Reviewed By field filled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916422</commentid>
    <comment_count>13</comment_count>
      <attachid>208561</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-12 15:04:00 -0700</bug_when>
    <thetext>Comment on attachment 208561
updated patch with Reviewed By field filled

Clearing flags on attachment: 208561

Committed r153961: &lt;http://trac.webkit.org/changeset/153961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916423</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-12 15:04:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206697</attachid>
            <date>2013-07-15 15:51:00 -0700</date>
            <delta_ts>2013-07-17 15:32:40 -0700</delta_ts>
            <desc>patch proposal</desc>
            <filename>bug-118621-20130715155016.patch</filename>
            <type>text/plain</type>
            <size>9632</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVjNGRhYzYwMzZjN2Uy
ZDFlOGUyYTkxZWJlMjEzODU3MTIzNzZiZS4uNDM5NWM4NWM4MGFhMTBhM2YwZDFjZjc2YzVmYjZj
Zjc2NWRhMmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTA3LTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtjYWlyb10g
bWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBwdXRJbWFnZURhdGEgYW5kIGFjY2VsZXJhdGVkIGNhbnZh
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODYy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBpbWFnZSBzdXJmYWNlIHdpdGggdGhlIG1pbmltYWwgbmVlZGVkIHNpemUgaW4gcHV0Qnl0ZUFy
cmF5IGFuZAorICAgICAgICBnZXRJbWFnZURhdGEuIFRoaXMgZGVjcmVhc2UgZGF0YSB0cmFuc2Zl
ciBiZXR3ZWVuIGNwdSBhbmQgZ3B1CisgICAgICAgIFdoZW4gd2UgcG9wdWxhdGUgKGluIHB1dEJ5
dGVBcnJheSkgb3IgcmVhZCAoaW4gZ2V0SW1hZ2VEYXRhKSB0aGUgZGF0YSwKKyAgICAgICAgd2Ug
dGhlIHVzZSBhIDAgb2Zmc2V0LgorCisgICAgICAgIEluc3RlYWQgb2YgdGhlIG1hcC91bm1hcCBt
ZWNoYW5pc20sIHBlcmZvcm0gYW4gZXhwbGljaXQgc3VyZmFjZSBjb3B5CisgICAgICAgIHdoZW4g
bmVlZGVkLiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgYW4gdW5uZWVkZWQgZ2xSZWFkUGl4ZWxz
IGF0IHRoZQorICAgICAgICBzdGFydCBvZiBwdXRCeXRlQXJyYXkKKworICAgICAgICBObyBuZXcg
dGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKwogMjAxMy0wNi0xMiAgQXJuYXVk
IFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIHJlbW92
ZSBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24vRE9NTmFtZWRGbG93Q29sbGVjdGlvbiBzcGVjaWFs
IGNhc2UgbmFtZUdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCBhZWZiYmQ1YTZjZDk5
YTZkNjhkNTQyYjg1YTFlNDNkNzJmMjhjZDVkLi5jY2EzNGI4NTUwN2Y1MDA1MjhlNTVjNTFhMTc3
NTQ3MGU4ODgyYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTgwLDQ3ICsxODAsMjAg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZl
Y3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVj
dGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCkpOwogfQogCi1zdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBtYXBTdXJmYWNlVG9J
bWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lk
IGNvcHlTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc291cmNlLCBjYWlyb19zdXJmYWNlX3QqIGRl
c3QsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGNv
bnN0IEludFBvaW50JiBkZXN0T2Zmc2V0KQogewotICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90
eXBlKHN1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJu
IHN1cmZhY2U7Ci0KLSAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFjZSA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7Ci0gICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3Jl
YXRlKGltYWdlU3VyZmFjZSkpOwotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQo
KSwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwotICAgIHJldHVy
biBpbWFnZVN1cmZhY2U7Ci19Ci0KLXN0YXRpYyB2b2lkIHVubWFwU3VyZmFjZUZyb21JbWFnZShj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3RhbmdsZSA9IEludFJlY3QoKSkKLXsKLSAgICBpZiAoc3Vy
ZmFjZSA9PSBpbWFnZVN1cmZhY2UgJiYgZGlydHlSZWN0YW5nbGUuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoZGlydHlSZWN0YW5nbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGNhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFnZVN1cmZhY2UpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKHN1cmZhY2UgPT0gaW1hZ2VTdXJmYWNlKSB7Ci0gICAgICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUoc3VyZmFjZSwgZGlydHlSZWN0YW5nbGUueCgp
LCBkaXJ0eVJlY3RhbmdsZS55KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksIGRpcnR5UmVjdGFu
Z2xlLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxjYWly
b190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0
X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBpbWFnZVN1cmZhY2UsIDAsIDApOwotICAgIGNhaXJv
X3JlY3RhbmdsZShjci5nZXQoKSwgZGlydHlSZWN0YW5nbGUueCgpLCBkaXJ0eVJlY3RhbmdsZS55
KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksIGRpcnR5UmVjdGFuZ2xlLmhlaWdodCgpKTsKKyAg
ICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoZGVzdCkpOworICAg
IGNhaXJvX3RyYW5zbGF0ZShjci5nZXQoKSwgZGVzdE9mZnNldC54KCksIGRlc3RPZmZzZXQueSgp
KTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIHNvdXJjZSwgLXNvdXJj
ZU9mZnNldC54KCksIC1zb3VyY2VPZmZzZXQueSgpKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3Io
Y3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNy
LmdldCgpLCAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGNhaXJvX2Zp
bGwoY3IuZ2V0KCkpOwotICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFnZVN1cmZhY2UpOwog
fQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KIFBhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1
ZmZlckRhdGEmIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFs
aXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7Ci0gICAgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZVN1cmZhY2UgPSBtYXBTdXJmYWNlVG9JbWFnZShkYXRhLm1fc3VyZmFjZS5nZXQo
KSwgc2l6ZSk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0g
cmVzdWx0LT5kYXRhKCk7CiAKICAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3QueSgpIDwgMCB8
fCAocmVjdC54KCkgKyByZWN0LndpZHRoKCkpID4gc2l6ZS53aWR0aCgpIHx8IChyZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpID4gc2l6ZS5oZWlnaHQoKSkKICAgICAgICAgcmVzdWx0LT56ZXJvRmls
bCgpOwpAQCAtMjQ3LDE1ICsyMjAsMzggQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICAg
ICAgZW5keSA9IHNpemUuaGVpZ2h0KCk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gb3JpZ2lu
eTsKIAotICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1h
Z2VTdXJmYWNlKTsKKyAgICBjYWlyb19zdXJmYWNlX3R5cGVfdCBzdXJmYWNlVHlwZSA9IGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUoZGF0YS5tX3N1cmZhY2UuZ2V0KCkpOworICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZTsKKyAgICBpbnQgZHg7CisgICAgaW50IGR5OworCisg
ICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIGltYWdlLCB3ZSByZWFkIGRpcmVjdGx5IHRoZSB1
bmRlcmx5aW5nIGRhdGE7CisgICAgLy8gb3RoZXJ3aXNlIHdlIGNyZWF0ZSBhIHRlbXBvcmFyeSBp
bWFnZSBzdXJmYWNlLCBhbmQgY29weSBkYXRhIHN1cmZhY2UKKyAgICAvLyBpbnRvIGl0IGZpcnN0
CisgICAgaWYgKHN1cmZhY2VUeXBlID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkgeworICAg
ICAgICBpbWFnZVN1cmZhY2UgPSBkYXRhLm1fc3VyZmFjZS5nZXQoKTsKKyAgICAgICAgZHggPSBv
cmlnaW54OworICAgICAgICBkeSA9IG9yaWdpbnk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSW50
UmVjdCBhcmVhID0gaW50ZXJzZWN0aW9uKHJlY3QsIEludFJlY3QoMCwgMCwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKSk7CisgICAgICAgIGltYWdlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIGFyZWEud2lkdGgoKSwg
YXJlYS5oZWlnaHQoKSkpOworICAgICAgICBjb3B5U3VyZmFjZShkYXRhLm1fc3VyZmFjZS5nZXQo
KSwgaW1hZ2VTdXJmYWNlLmdldCgpLCBhcmVhLnNpemUoKSwgYXJlYS5sb2NhdGlvbigpLCBJbnRQ
b2ludCgwLCAwKSk7CisgICAgICAgIGR4ID0gMDsKKyAgICAgICAgZHkgPSAwOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh
KGltYWdlU3VyZmFjZS5nZXQoKSk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IHJlc3Vs
dC0+ZGF0YSgpOworCisgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0
cmlkZShpbWFnZVN1cmZhY2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9
IDQgKiByZWN0LndpZHRoKCk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93cyA9IGRhdGFE
c3QgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihkYXRhU3JjICsgc3RyaWRlICogKHkgKyBvcmlnaW55
KSk7CisgICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25l
ZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiAoeSArIGR5KSk7CiAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgbnVtQ29sdW1uczsgeCsrKSB7CiAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsK
LSAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHggKyBvcmlnaW54OworICAgICAg
ICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeCArIGR4OwogCiAgICAgICAgICAgICAvLyBB
dm9pZCBjYWxsaW5nIENvbG9yOjpjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigpIGJlY2F1c2Ug
b25lCiAgICAgICAgICAgICAvLyBmdW5jdGlvbiBjYWxsIHBlciBwaXhlbCBpcyB0b28gZXhwZW5z
aXZlLgpAQCAtMjgwLDcgKzI3Niw2IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdl
dEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgICAg
IGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsKICAgICB9CiAKLSAgICB1bm1hcFN1cmZhY2VG
cm9tSW1hZ2UoZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdlU3VyZmFjZSk7CiAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTI5Niw4ICsyOTEsNiBAQCBQYXNzUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShj
b25zdCBJbnRSZQogCiB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVs
dGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgQ29vcmRpbmF0ZVN5c3RlbSkKIHsKLSAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFj
ZSA9IG1hcFN1cmZhY2VUb0ltYWdlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIHNvdXJjZVNpemUp
OwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9k
YXRhKGltYWdlU3VyZmFjZSk7CiAKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7
CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKQEAgLTMyNSwxNSArMzE4LDMz
IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBV
aW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgQVNTRVJUKGVuZHkgPD0gbV9zaXplLmhl
aWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0eTsKIAorICAgIGNhaXJvX3N1
cmZhY2VfdHlwZV90IHN1cmZhY2VUeXBlID0gY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEu
bV9zdXJmYWNlLmdldCgpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZh
Y2U7CisgICAgaW50IGR4OworICAgIGludCBkeTsKKworICAgIC8vIElmIHdlIGFscmVhZHkgaGF2
ZSBhbiBpbWFnZSwgd2Ugd3JpdGUgZGlyZWN0bHkgdG8gdGhlIHVuZGVybHlpbmcgZGF0YTsKKyAg
ICAvLyBvdGhlcndpc2Ugd2UgY3JlYXRlIGEgdGVtcG9yYXJ5IHN1cmZhY2UgaW1hZ2UKKyAgICBp
ZiAoc3VyZmFjZVR5cGUgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKSB7CisgICAgICAgIGlt
YWdlU3VyZmFjZSA9IG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCk7CisgICAgICAgIGR4ID0gZGVzdHg7
CisgICAgICAgIGR5ID0gZGVzdHk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW1hZ2VTdXJmYWNl
ID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0Iz
MiwgbnVtQ29sdW1ucywgbnVtUm93cykpOworICAgICAgICBkeCA9IDA7CisgICAgICAgIGR5ID0g
MDsKKyAgICB9CisgICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlLmdldCgpKTsKKwogICAgIHVuc2lnbmVkIHNyY0J5dGVz
UGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKLSAgICBpbnQgc3RyaWRlID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZSk7CisgICAgaW50IHN0cmlkZSA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZhY2UuZ2V0KCkpOwogCiAg
ICAgdW5zaWduZWQgY2hhciogc3JjUm93cyA9IHNvdXJjZS0+ZGF0YSgpICsgb3JpZ2lueSAqIHNy
Y0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1S
b3dzOyArK3kpIHsKLSAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVuc2lnbmVkKj4oZGF0YURzdCArIHN0cmlkZSAqICh5ICsgZGVzdHkpKTsKKyAgICAgICAgdW5z
aWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YURzdCArIHN0
cmlkZSAqICh5ICsgZHkpKTsKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBudW1Db2x1bW5z
OyB4KyspIHsKICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwotICAgICAgICAgICAgdW5z
aWduZWQqIHBpeGVsID0gcm93ICsgeCArIGRlc3R4OworICAgICAgICAgICAgdW5zaWduZWQqIHBp
eGVsID0gcm93ICsgeCArIGR4OwogCiAgICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIENvbG9y
OjpwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJlY2F1c2Ugb25lCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBjYWxsIHBlciBwaXhlbCBpcyB0b28gZXhwZW5zaXZlLgpAQCAtMzU1LDcgKzM2
NiwxNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGll
ZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgICAgICBzcmNSb3dzICs9IHNyY0J5
dGVzUGVyUm93OwogICAgIH0KIAotICAgIHVubWFwU3VyZmFjZUZyb21JbWFnZShtX2RhdGEubV9z
dXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UsIEludFJlY3QoZGVzdHgsIGRlc3R5LCBudW1Db2x1
bW5zLCBudW1Sb3dzKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShp
bWFnZVN1cmZhY2UuZ2V0KCksIGR4LCBkeSwgbnVtQ29sdW1ucywgbnVtUm93cyk7CisKKyAgICBp
ZiAoc3VyZmFjZVR5cGUgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKSB7CisgICAgICAgIGNv
cHlTdXJmYWNlKGltYWdlU3VyZmFjZS5nZXQoKSwgbV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgSW50
U2l6ZShudW1Db2x1bW5zLCBudW1Sb3dzKSwgSW50UG9pbnQoMCwgMCksIEludFBvaW50KGRlc3R4
LCBkZXN0eSkpOworICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOworICAgICAgICBjYWlyb190cmFuc2xhdGUo
Y3IuZ2V0KCksIGRlc3R4LCBkZXN0eSk7CisgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFj
ZShjci5nZXQoKSwgaW1hZ2VTdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICAgICAgY2Fpcm9fc2V0
X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgICAgICBjYWly
b19yZWN0YW5nbGUoY3IuZ2V0KCksIDAsIDAsIG51bUNvbHVtbnMsIG51bVJvd3MpOworICAgICAg
ICBjYWlyb19maWxsKGNyLmdldCgpKTsKKyAgICB9CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206924</attachid>
            <date>2013-07-17 15:32:42 -0700</date>
            <delta_ts>2013-07-19 11:40:27 -0700</delta_ts>
            <desc>new patch proposal</desc>
            <filename>bug-118621-20130717153242.patch</filename>
            <type>text/plain</type>
            <size>11432</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVjNGRhYzYwMzZjN2Uy
ZDFlOGUyYTkxZWJlMjEzODU3MTIzNzZiZS4uN2U3OGEzMjI0MjcyNWE3OTk5MjhlNTkzY2JjMTU2
Nzc5ZDY2ZDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA3LTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtjYWlyb10g
bWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBwdXRJbWFnZURhdGEgYW5kIGFjY2VsZXJhdGVkIGNhbnZh
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODYy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
d2UgaGF2ZSBhbiBhY2NlbGVyYXRlZCBpbWFnZUJ1ZmZlciwgYW5kIHdlIHB1dEJ5dGVBcnJheSB3
aXRoIGEKKyAgICAgICAgbm9uIHplcm8gZGVzdFBvaW50LCB3ZSBjcmVhdGUgdGVtcG9yYXJ5IHN1
cmZhY2Ugb2Ygc291cmNlU2l6ZS4gVGhlbiwKKyAgICAgICAgd2Ugd3JpdGUgdG8gaW1hZ2UgZGF0
YSB3aXRoIGFuIG9mZnNldC4gVGhpcyByZXN1bHRzIGluIGFuIG91dCBvZiBib3VuZAorICAgICAg
ICB3cml0ZS4KKworICAgICAgICBJbiBvcmRlciB0byBhdm9pZCB0aGF0LCB3ZSB1c2UgYSAwIG9m
ZnNldCB3aGVuIHdyaXRlIGRhdGEuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHdlIGFsc28gY3Jl
YXRlIGltYWdlIHdpdGggdGhlIG1pbmltYWwgbmVlZGVkIHNpemUgaW4KKyAgICAgICAgZ2V0SW1h
Z2VEYXRhLCBhbmQgYWxzbyB1c2UgYSAwIG9mZnNldC4gVGhpcyBkZWNyZWFzZSBkYXRhIHRyYW5z
ZmVyCisgICAgICAgIGJldHdlZW4gY3B1IGFuZCBncHUKKworICAgICAgICBJbnN0ZWFkIG9mIHRo
ZSBtYXAvdW5tYXAgbWVjaGFuaXNtLCBwZXJmb3JtIGFuIGV4cGxpY2l0IHN1cmZhY2UgY29weQor
ICAgICAgICB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbyByZW1vdmVzIGFuIHVubmVlZGVk
IGdsUmVhZFBpeGVscyBhdCB0aGUKKyAgICAgICAgc3RhcnQgb2YgcHV0Qnl0ZUFycmF5CisKKyAg
ICAgICAgQ3JlYXRlIGEgcGFpbnRTdXJmYWNlVG9Bbm90aGVyIGhlbHBlciBmdW5jdGlvbi4gSXQg
ZGlmZmVycyBmcm9tCisgICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIgZnJv
bSB0aGUgZmFjdCB0aGF0IGl0IHNldHMgdGhlCisgICAgICAgIG9wZXJhdG9yIHRvIENBSVJPX09Q
RVJBVE9SX1NPVVJDRSwgYW5kIHRoYXQgaXQgc3VwcG9ydHMgZGVzdGluYXRpb24KKyAgICAgICAg
b2Zmc2V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3VyZmFjZVRvQW5vdGhlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmltYWdlU3VyZmFjZUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkpOgorCiAyMDEzLTA2
LTEyICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgcmVtb3ZlIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi9ET01OYW1lZEZsb3dDb2xsZWN0
aW9uIHNwZWNpYWwgY2FzZSBuYW1lR2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggYTY3Mzcx
ZDYzODU1MDYwMGM5ODI5MmI2OTc0YjQ3NjNlZTI1OGU2Yy4uZTQyYjNmYTVlOTNiOWIzZWJkOWFk
OTFmNzU1NTdkZDIyYjQ0YTg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtMjM4LDQgKzIzOCwx
MiBAQCB2b2lkIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90
KiBmcm9tLCBjYWlyb19zdXJmYWNlX3QqIHRvLAogICAgIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFj
ZVRvQ29udGV4dChmcm9tLCBjb250ZXh0LmdldCgpLCBvZmZzZXQsIHJlY3QpOwogfQogCit2b2lk
IHBhaW50U3VyZmFjZVRvQW5vdGhlcihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3N1cmZh
Y2VfdCogdG8sIGNvbnN0IEludFNpemUmIHNvdXJjZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgZGVz
dE9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY29u
dGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZSh0bykpOworICAgIGNhaXJvX3RyYW5zbGF0ZShj
b250ZXh0LmdldCgpLCBkZXN0T2Zmc2V0LndpZHRoKCksIGRlc3RPZmZzZXQuaGVpZ2h0KCkpOwor
ICAgIGNhaXJvX3NldF9vcGVyYXRvcihjb250ZXh0LmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VS
Q0UpOworICAgIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChmcm9tLCBjb250ZXh0
LmdldCgpLCBzb3VyY2VPZmZzZXQsIHJlY3QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9VdGlsaXRpZXMuaAppbmRleCAwMTFmOTcyYTA1YjIwNWIwNTliZjk4OTlhNGYyMTVhYWQyYWIx
MDdiLi4zZjExOWQ5NTIwZTUzNTIxMmE0YzIxZmYxZTZiY2Y1MmRlZTgwNmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0
aWVzLmgKQEAgLTUzLDYgKzUzLDcgQEAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlD
YWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKIAogdm9pZCBjb3B5UmVjdEZyb21D
YWlyb1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb190KiB0bywg
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0Jik7CiB2b2lkIGNvcHlSZWN0RnJv
bU9uZVN1cmZhY2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb19zdXJmYWNl
X3QqIHRvLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IEludFJlY3QmKTsKK3ZvaWQgcGFp
bnRTdXJmYWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZhY2VfdCogZnJvbSwgY2Fpcm9fc3VyZmFjZV90
KiB0bywgY29uc3QgSW50U2l6ZSYgc291cmNlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zm
c2V0LCBjb25zdCBJbnRSZWN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcAppbmRleCBhZWZiYmQ1YTZjZDk5YTZkNjhkNTQyYjg1YTFlNDNkNzJmMjhj
ZDVkLi41OWM0NDNhNzljNDAxMDY0YzUyMmQxMmEyMWJjOGVhNjQ2ZjAyMWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcApAQCAtMTgwLDQ3ICsxODAsMzMgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxh
dGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkK
ICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwogfQogCi1zdGF0
aWMgY2Fpcm9fc3VyZmFjZV90KiBtYXBTdXJmYWNlVG9JbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
aW1hZ2VTdXJmYWNlRnJvbShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIEludFBvaW50KiBvdXRPZmZzZXQpCiB7Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0
X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAgICByZXR1
cm4gc3VyZmFjZTsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUoaW1hZ2VTdXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdl
dCgpLCBzdXJmYWNlLCAwLCAwKTsKLSAgICBjYWlyb19wYWludChjci5nZXQoKSk7Ci0gICAgcmV0
dXJuIGltYWdlU3VyZmFjZTsKLX0KLQotc3RhdGljIHZvaWQgdW5tYXBTdXJmYWNlRnJvbUltYWdl
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2Us
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdGFuZ2xlID0gSW50UmVjdCgpKQotewotICAgIGlmIChz
dXJmYWNlID09IGltYWdlU3VyZmFjZSAmJiBkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlU3VyZmFjZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSA9PSBpbWFnZVN1cmZhY2UpIHsKLSAgICAgICAgY2Fp
cm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShzdXJmYWNlLCBkaXJ0eVJlY3RhbmdsZS54
KCksIGRpcnR5UmVjdGFuZ2xlLnkoKSwgZGlydHlSZWN0YW5nbGUud2lkdGgoKSwgZGlydHlSZWN0
YW5nbGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm47CisgICAgLy8gSWYgd2UgYWxyZWFkeSBo
YXZlIGFuIGltYWdlLCB3ZSByZXR1cm4gZGlyZWN0bHkgdGhlIHN1cmZhY2U7IG90aGVyd2lzZQor
ICAgIC8vIHdlIGNyZWF0ZSBuZXcgc3VyZmFjZSBpbWFnZQorICAgIGNhaXJvX3N1cmZhY2VfdHlw
ZV90IHN1cmZhY2VUeXBlID0gY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlKTsKKworICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZTsKKworICAgIC8vIElmIHdlIGFs
cmVhZHkgaGF2ZSBhbiBpbWFnZSwgd2Ugd3JpdGUgZGlyZWN0bHkgdG8gdGhlIHVuZGVybHlpbmcg
ZGF0YTsKKyAgICAvLyBvdGhlcndpc2Ugd2UgY3JlYXRlIGEgdGVtcG9yYXJ5IHN1cmZhY2UgaW1h
Z2UKKyAgICBpZiAoc3VyZmFjZVR5cGUgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKSB7Cisg
ICAgICAgIGltYWdlU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgICAgIG91dE9mZnNldC0+c2V0WChy
ZWN0LngoKSk7CisgICAgICAgIG91dE9mZnNldC0+c2V0WShyZWN0LnkoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaW1hZ2VTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7
CisgICAgICAgIG91dE9mZnNldC0+c2V0WCgwKTsKKyAgICAgICAgb3V0T2Zmc2V0LT5zZXRZKDAp
OwogICAgIH0KIAotICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0
ZShzdXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBpbWFn
ZVN1cmZhY2UsIDAsIDApOwotICAgIGNhaXJvX3JlY3RhbmdsZShjci5nZXQoKSwgZGlydHlSZWN0
YW5nbGUueCgpLCBkaXJ0eVJlY3RhbmdsZS55KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksIGRp
cnR5UmVjdGFuZ2xlLmhlaWdodCgpKTsKLSAgICBjYWlyb19maWxsKGNyLmdldCgpKTsKLSAgICBj
YWlyb19zdXJmYWNlX2Rlc3Ryb3koaW1hZ2VTdXJmYWNlKTsKKyAgICByZXR1cm4gaW1hZ2VTdXJm
YWNlLnJlbGVhc2UoKTsKIH0KIAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+CiBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwot
ICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0gbWFwU3VyZmFjZVRvSW1hZ2UoZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIHNpemUpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZSk7Ci0gICAgdW5zaWduZWQg
Y2hhciogZGF0YURzdCA9IHJlc3VsdC0+ZGF0YSgpOwogCiAgICAgaWYgKHJlY3QueCgpIDwgMCB8
fCByZWN0LnkoKSA8IDAgfHwgKHJlY3QueCgpICsgcmVjdC53aWR0aCgpKSA+IHNpemUud2lkdGgo
KSB8fCAocmVjdC55KCkgKyByZWN0LmhlaWdodCgpKSA+IHNpemUuaGVpZ2h0KCkpCiAgICAgICAg
IHJlc3VsdC0+emVyb0ZpbGwoKTsKQEAgLTI0NywxNSArMjMzLDI3IEBAIFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bWFnZUJ1ZmZlCiAgICAgICAgIGVuZHkgPSBzaXplLmhlaWdodCgpOwogICAgIGludCBudW1Sb3dz
ID0gZW5keSAtIG9yaWdpbnk7CiAKLSAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZSk7CisgICAgSW50UG9pbnQgZGVsdGE7CisgICAgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlID0gaW1hZ2VTdXJmYWNlRnJvbShkYXRh
Lm1fc3VyZmFjZS5nZXQoKSwgSW50UmVjdChvcmlnaW54LCBvcmlnaW55LCBudW1Db2x1bW5zLCBu
dW1Sb3dzKSwgJmRlbHRhKTsKKyAgICBpbnQgZHggPSBkZWx0YS54KCk7CisgICAgaW50IGR5ID0g
ZGVsdGEueSgpOworICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gZGF0YS5tX3N1cmZhY2UuZ2V0KCkp
IHsKKyAgICAgICAgSW50UmVjdCBhcmVhID0gaW50ZXJzZWN0aW9uKHJlY3QsIEludFJlY3QoMCwg
MCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgICAgIHBhaW50U3VyZmFjZVRv
QW5vdGhlcihkYXRhLm1fc3VyZmFjZS5nZXQoKSwgaW1hZ2VTdXJmYWNlLmdldCgpLCBJbnRTaXpl
KC1hcmVhLngoKSwgLWFyZWEueSgpKSwgSW50U2l6ZSgpLCBJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIGFyZWEuc2l6ZSgpKSk7CisgICAgfQorCisgICAgdW5zaWduZWQgY2hhciogZGF0YVNyYyA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlLmdldCgpKTsKKyAgICB1
bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gcmVzdWx0LT5kYXRhKCk7CisKKyAgICBpbnQgc3RyaWRl
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZS5nZXQoKSk7CiAg
ICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKIAogICAgIHVu
c2lnbmVkIGNoYXIqIGRlc3RSb3dzID0gZGF0YURzdCArIGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93
ICsgZGVzdHggKiA0OwogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsgKyt5KSB7Ci0g
ICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRh
dGFTcmMgKyBzdHJpZGUgKiAoeSArIG9yaWdpbnkpKTsKKyAgICAgICAgdW5zaWduZWQqIHJvdyA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAqICh5ICsg
ZHkpKTsKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKICAg
ICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwotICAgICAgICAgICAgdW5zaWduZWQqIHBpeGVs
ID0gcm93ICsgeCArIG9yaWdpbng7CisgICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cg
KyB4ICsgZHg7CiAKICAgICAgICAgICAgIC8vIEF2b2lkIGNhbGxpbmcgQ29sb3I6OmNvbG9yRnJv
bVByZW11bHRpcGxpZWRBUkdCKCkgYmVjYXVzZSBvbmUKICAgICAgICAgICAgIC8vIGZ1bmN0aW9u
IGNhbGwgcGVyIHBpeGVsIGlzIHRvbyBleHBlbnNpdmUuCkBAIC0yODAsNyArMjc4LDYgQEAgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93
OwogICAgIH0KIAotICAgIHVubWFwU3VyZmFjZUZyb21JbWFnZShkYXRhLm1fc3VyZmFjZS5nZXQo
KSwgaW1hZ2VTdXJmYWNlKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIApAQCAt
Mjk2LDggKzI5Myw2IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVy
OjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlCiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQogewotICAg
IGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0gbWFwU3VyZmFjZVRvSW1hZ2UobV9kYXRh
Lm1fc3VyZmFjZS5nZXQoKSwgc291cmNlU2l6ZSk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YURz
dCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlKTsKIAogICAgIEFT
U0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWln
aHQoKSA+IDApOwpAQCAtMzI1LDE1ICszMjAsMjIgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0
ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMK
ICAgICBBU1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0KCkpOwogICAgIGludCBudW1Sb3dzID0g
ZW5keSAtIGRlc3R5OwogCisgICAgSW50UG9pbnQgZGVsdGE7CisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gaW1hZ2VTdXJmYWNlID0gaW1hZ2VTdXJmYWNlRnJvbShtX2RhdGEubV9zdXJmYWNl
LmdldCgpLCBJbnRSZWN0KGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1ucywgbnVtUm93cyksICZkZWx0
YSk7CisgICAgaW50IGR4ID0gZGVsdGEueCgpOworICAgIGludCBkeSA9IGRlbHRhLnkoKTsKKwor
ICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh
KGltYWdlU3VyZmFjZS5nZXQoKSk7CisKICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQg
KiBzb3VyY2VTaXplLndpZHRoKCk7Ci0gICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZhY2UpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlLmdldCgpKTsKIAogICAgIHVuc2lnbmVk
IGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEoKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJv
dyArIG9yaWdpbnggKiA0OwogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsgKyt5KSB7
Ci0gICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+
KGRhdGFEc3QgKyBzdHJpZGUgKiAoeSArIGRlc3R5KSk7CisgICAgICAgIHVuc2lnbmVkKiByb3cg
PSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFEc3QgKyBzdHJpZGUgKiAoeSAr
IGR5KSk7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbnVtQ29sdW1uczsgeCsrKSB7CiAg
ICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhl
bCA9IHJvdyArIHggKyBkZXN0eDsKKyAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyAr
IHggKyBkeDsKIAogICAgICAgICAgICAgLy8gQXZvaWQgY2FsbGluZyBDb2xvcjo6cHJlbXVsdGlw
bGllZEFSR0JGcm9tQ29sb3IoKSBiZWNhdXNlIG9uZQogICAgICAgICAgICAgLy8gZnVuY3Rpb24g
Y2FsbCBwZXIgcGl4ZWwgaXMgdG9vIGV4cGVuc2l2ZS4KQEAgLTM1NSw3ICszNTcsMTAgQEAgdm9p
ZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xh
bXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsK
ICAgICB9CiAKLSAgICB1bm1hcFN1cmZhY2VGcm9tSW1hZ2UobV9kYXRhLm1fc3VyZmFjZS5nZXQo
KSwgaW1hZ2VTdXJmYWNlLCBJbnRSZWN0KGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1ucywgbnVtUm93
cykpOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUoaW1hZ2VTdXJmYWNl
LmdldCgpLCBkeCwgZHksIG51bUNvbHVtbnMsIG51bVJvd3MpOworCisgICAgaWYgKGltYWdlU3Vy
ZmFjZSAhPSBtX2RhdGEubV9zdXJmYWNlLmdldCgpKQorICAgICAgICBwYWludFN1cmZhY2VUb0Fu
b3RoZXIoaW1hZ2VTdXJmYWNlLmdldCgpLCBtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBJbnRTaXpl
KCksIEludFNpemUoZGVzdHgsIGRlc3R5KSwgSW50UmVjdCgwLCAwLCBudW1Db2x1bW5zLCBudW1S
b3dzKSk7CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207131</attachid>
            <date>2013-07-19 11:40:31 -0700</date>
            <delta_ts>2013-07-23 16:11:45 -0700</delta_ts>
            <desc>new patch proposal</desc>
            <filename>bug-118621-20130719114031.patch</filename>
            <type>text/plain</type>
            <size>11444</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVjNGRhYzYwMzZjN2Uy
ZDFlOGUyYTkxZWJlMjEzODU3MTIzNzZiZS4uOTJhNjEzMDkxOWE3OGYzZGFlNDU4ZjNlNGQzOGZm
ZjZmMDAzYjg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA3LTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtjYWlyb10g
bWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBwdXRJbWFnZURhdGEgYW5kIGFjY2VsZXJhdGVkIGNhbnZh
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODYy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
d2UgaGF2ZSBhbiBhY2NlbGVyYXRlZCBpbWFnZUJ1ZmZlciwgYW5kIHdlIHB1dEJ5dGVBcnJheSB3
aXRoIGEKKyAgICAgICAgbm9uIHplcm8gZGVzdFBvaW50LCB3ZSBjcmVhdGUgdGVtcG9yYXJ5IHN1
cmZhY2Ugb2Ygc291cmNlU2l6ZS4gVGhlbiwKKyAgICAgICAgd2Ugd3JpdGUgdG8gaW1hZ2UgZGF0
YSB3aXRoIGFuIG9mZnNldC4gVGhpcyByZXN1bHRzIGluIGFuIG91dCBvZiBib3VuZAorICAgICAg
ICB3cml0ZS4KKworICAgICAgICBJbiBvcmRlciB0byBhdm9pZCB0aGF0LCB3ZSB1c2UgYSAwIG9m
ZnNldCB3aGVuIHdyaXRpbmcgZGF0YS4KKworICAgICAgICBJbiBhZGRpdGlvbiwgd2UgYWxzbyBj
cmVhdGUgaW1hZ2Ugd2l0aCB0aGUgbWluaW1hbCBuZWVkZWQgc2l6ZSBpbgorICAgICAgICBnZXRJ
bWFnZURhdGEsIGFuZCBhbHNvIHVzZSBhIDAgb2Zmc2V0LiBUaGlzIGRlY3JlYXNlIGRhdGEgdHJh
bnNmZXIKKyAgICAgICAgYmV0d2VlbiBjcHUgYW5kIGdwdQorCisgICAgICAgIEluc3RlYWQgb2Yg
dGhlIG1hcC91bm1hcCBtZWNoYW5pc20sIHBlcmZvcm0gYW4gZXhwbGljaXQgc3VyZmFjZSBjb3B5
CisgICAgICAgIHdoZW4gbmVlZGVkLiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgYW4gdW5uZWVk
ZWQgZ2xSZWFkUGl4ZWxzIGF0IHRoZQorICAgICAgICBzdGFydCBvZiBwdXRCeXRlQXJyYXkKKwor
ICAgICAgICBBZGQgdHdvIHBhcmFtZXRlcnMgdG8gY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5v
dGhlcjogZGVzdGluYXRpb24KKyAgICAgICAgb2Zmc2V0LCBhbmQgY2Fpcm8gZHJhd2luZyBvcGVy
YXRvci4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWFwU3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0
Qnl0ZUFycmF5KToKKwogMjAxMy0wNi0xMiAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBz
aXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIHJlbW92ZSBIVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24vRE9NTmFtZWRGbG93Q29sbGVjdGlvbiBzcGVjaWFsIGNhc2UgbmFtZUdldHRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuY3BwCmluZGV4IGE2NzM3MWQ2Mzg1NTA2MDBjOTgyOTJiNjk3NGI0NzYzZWUyNThlNmMu
LjViNDlmNTJjNzhlZDAyNmI4OTBlOWFhZDk3NGVkODA5YzBlOWE1MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHAKQEAgLTIzMiwxMCArMjMyLDEyIEBAIHZvaWQgY29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNl
VG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogZnJvbSwgY2Fpcm9fdCogdG8sIGNvbnN0CiAgICAg
Y2Fpcm9fZmlsbCh0byk7CiB9CiAKLXZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhl
cihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3N1cmZhY2VfdCogdG8sIGNvbnN0IEludFNp
emUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgY29weVJlY3RGcm9tT25lU3Vy
ZmFjZVRvQW5vdGhlcihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3N1cmZhY2VfdCogdG8s
IGNvbnN0IEludFNpemUmIHNvdXJjZU9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
SW50U2l6ZSYgZGVzdE9mZnNldCwgY2Fpcm9fb3BlcmF0b3JfdCBjYWlyb19vcCkKIHsKICAgICBS
ZWZQdHI8Y2Fpcm9fdD4gY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZSh0bykpOwotICAg
IGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChmcm9tLCBjb250ZXh0LmdldCgpLCBv
ZmZzZXQsIHJlY3QpOworICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LmdldCgpLCBkZXN0T2Zm
c2V0LndpZHRoKCksIGRlc3RPZmZzZXQuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NldF9vcGVyYXRv
cihjb250ZXh0LmdldCgpLCBjYWlyb19vcCk7CisgICAgY29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNl
VG9Db250ZXh0KGZyb20sIGNvbnRleHQuZ2V0KCksIHNvdXJjZU9mZnNldCwgcmVjdCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCmluZGV4IDAxMWY5NzJhMDViMjA1
YjA1OWJmOTg5OWE0ZjIxNWFhZDJhYjEwN2IuLmEyMjZlMzU0MzcyYTE5NDA1ODgzY2U2NjgyMDE3
YzY0N2U0ODdjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBD
YWlyb1V0aWxpdGllc19oCiAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUyLDcgKzUzLDcgQEAgdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNy
LCBjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBJbnRTaXoKIFBhc3NSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90Kik7CiAKIHZv
aWQgY29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogZnJv
bSwgY2Fpcm9fdCogdG8sIGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYpOwot
dm9pZCBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZhY2VfdCogZnJv
bSwgY2Fpcm9fc3VyZmFjZV90KiB0bywgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRS
ZWN0Jik7Cit2b2lkIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFj
ZV90KiBmcm9tLCBjYWlyb19zdXJmYWNlX3QqIHRvLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGNv
bnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSwgY2Fpcm9fb3BlcmF0b3Jf
dCA9IENBSVJPX09QRVJBVE9SX09WRVIpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKaW5kZXggYWVmYmJkNWE2Y2Q5OWE2ZDY4ZDU0MmI4NWExZTQzZDcy
ZjI4Y2Q1ZC4uZTQ3Y2U1NGMxOGVmZWFiYmM1NTM4MDFjMTdmMzIyMjAwMjg3ZmYxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKQEAgLTE4MCw0NyArMTgwLDMzIEBAIHZvaWQgSW1hZ2VCdWZmZXI6
OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFi
bGUpCiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX2RhdGEubV9zdXJm
YWNlLmdldCgpLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKIH0KIAot
c3RhdGljIGNhaXJvX3N1cmZhY2VfdCogbWFwU3VyZmFjZVRvSW1hZ2UoY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IG1hcFN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIGNvbnN0IEludFJlY3QmIHJlY3QsIEludFBvaW50JiBvdXRPZmZzZXQpCiB7Ci0gICAgaWYg
KGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lN
QUdFKQotICAgICAgICByZXR1cm4gc3VyZmFjZTsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1h
Z2VTdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0Iz
Miwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY3Ig
PSBhZG9wdFJlZihjYWlyb19jcmVhdGUoaW1hZ2VTdXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLCAwLCAwKTsKLSAgICBjYWlyb19wYWludChj
ci5nZXQoKSk7Ci0gICAgcmV0dXJuIGltYWdlU3VyZmFjZTsKLX0KLQotc3RhdGljIHZvaWQgdW5t
YXBTdXJmYWNlRnJvbUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZVN1cmZhY2UsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdGFuZ2xlID0gSW50UmVj
dCgpKQotewotICAgIGlmIChzdXJmYWNlID09IGltYWdlU3VyZmFjZSAmJiBkaXJ0eVJlY3Rhbmds
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChkaXJ0eVJlY3RhbmdsZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlU3VyZmFjZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSA9PSBpbWFnZVN1cmZh
Y2UpIHsKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShzdXJmYWNl
LCBkaXJ0eVJlY3RhbmdsZS54KCksIGRpcnR5UmVjdGFuZ2xlLnkoKSwgZGlydHlSZWN0YW5nbGUu
d2lkdGgoKSwgZGlydHlSZWN0YW5nbGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZh
Y2UpKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIGltYWdlU3VyZmFj
ZSwgMCwgMCk7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLmdldCgpLCBkaXJ0eVJlY3RhbmdsZS54
KCksIGRpcnR5UmVjdGFuZ2xlLnkoKSwgZGlydHlSZWN0YW5nbGUud2lkdGgoKSwgZGlydHlSZWN0
YW5nbGUuaGVpZ2h0KCkpOwotICAgIGNhaXJvX2ZpbGwoY3IuZ2V0KCkpOwotICAgIGNhaXJvX3N1
cmZhY2VfZGVzdHJveShpbWFnZVN1cmZhY2UpOworICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBh
biBpbWFnZSwgd2UgcmV0dXJuIGRpcmVjdGx5IHRoZSBzdXJmYWNlOyBvdGhlcndpc2UKKyAgICAv
LyB3ZSBjcmVhdGUgbmV3IHN1cmZhY2UgaW1hZ2UKKyAgICBjYWlyb19zdXJmYWNlX3R5cGVfdCBz
dXJmYWNlVHlwZSA9IGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSk7CisKKyAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2U7CisKKyAgICAvLyBJZiB3ZSBhbHJlYWR5
IGhhdmUgYW4gaW1hZ2UsIHdlIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSB1bmRlcmx5aW5nIGRhdGE7
CisgICAgLy8gb3RoZXJ3aXNlIHdlIGNyZWF0ZSBhIHRlbXBvcmFyeSBzdXJmYWNlIGltYWdlCisg
ICAgaWYgKHN1cmZhY2VUeXBlID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkgeworICAgICAg
ICBpbWFnZVN1cmZhY2UgPSBzdXJmYWNlOworICAgICAgICBvdXRPZmZzZXQuc2V0WChyZWN0Lngo
KSk7CisgICAgICAgIG91dE9mZnNldC5zZXRZKHJlY3QueSgpKTsKKyAgICAgICAgcmV0dXJuIGlt
YWdlU3VyZmFjZS5yZWxlYXNlKCk7CisgICAgfSAKKyAgICAKKyAgICBpbWFnZVN1cmZhY2UgPSBh
ZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKKyAgICBvdXRPZmZzZXQuc2V0WCgwKTsKKyAg
ICBvdXRPZmZzZXQuc2V0WSgwKTsKKyAgICByZXR1cm4gaW1hZ2VTdXJmYWNlLnJlbGVhc2UoKTsK
IH0KIAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+CiBQYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VC
dWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwotICAgIGNhaXJvX3N1cmZh
Y2VfdCogaW1hZ2VTdXJmYWNlID0gbWFwU3VyZmFjZVRvSW1hZ2UoZGF0YS5tX3N1cmZhY2UuZ2V0
KCksIHNpemUpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZSk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9
IHJlc3VsdC0+ZGF0YSgpOwogCiAgICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDAg
fHwgKHJlY3QueCgpICsgcmVjdC53aWR0aCgpKSA+IHNpemUud2lkdGgoKSB8fCAocmVjdC55KCkg
KyByZWN0LmhlaWdodCgpKSA+IHNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHJlc3VsdC0+emVyb0Zp
bGwoKTsKQEAgLTI0Nyw3ICsyMzMsMTkgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICAg
ICAgZW5keSA9IHNpemUuaGVpZ2h0KCk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gb3JpZ2lu
eTsKIAotICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1h
Z2VTdXJmYWNlKTsKKyAgICBJbnRQb2ludCBvZmZzZXRJbkltYWdlOworICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IG1hcFN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVj
dChkYXRhLm1fc3VyZmFjZS5nZXQoKSwgSW50UmVjdChvcmlnaW54LCBvcmlnaW55LCBudW1Db2x1
bW5zLCBudW1Sb3dzKSwgb2Zmc2V0SW5JbWFnZSk7CisgICAgb3JpZ2lueCA9IG9mZnNldEluSW1h
Z2UueCgpOworICAgIG9yaWdpbnkgPSBvZmZzZXRJbkltYWdlLnkoKTsKKyAgICBpZiAoaW1hZ2VT
dXJmYWNlICE9IGRhdGEubV9zdXJmYWNlLmdldCgpKSB7CisgICAgICAgIEludFJlY3QgYXJlYSA9
IGludGVyc2VjdGlvbihyZWN0LCBJbnRSZWN0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkpOworICAgICAgICBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGRhdGEubV9z
dXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UuZ2V0KCksIEludFNpemUoLWFyZWEueCgpLCAtYXJl
YS55KCkpLCBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGFyZWEuc2l6ZSgpKSwgSW50U2l6ZSgp
LCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIH0KKworICAgIHVuc2lnbmVkIGNoYXIqIGRh
dGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQoKSk7
CisgICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IHJlc3VsdC0+ZGF0YSgpOworCisgICAgaW50
IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZhY2UuZ2V0
KCkpOwogICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0LndpZHRoKCk7CiAK
ICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93cyA9IGRhdGFEc3QgKyBkZXN0eSAqIGRlc3RCeXRl
c1BlclJvdyArIGRlc3R4ICogNDsKQEAgLTI4MCw3ICsyNzgsNiBAQCBQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1h
Z2VCdWZmZQogICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7CiAgICAgfQogCi0g
ICAgdW5tYXBTdXJmYWNlRnJvbUltYWdlKGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVN1cmZh
Y2UpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCkBAIC0yOTYsOCArMjkzLDYg
QEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRp
cGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmUKIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7Ci0gICAgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZVN1cmZhY2UgPSBtYXBTdXJmYWNlVG9JbWFnZShtX2RhdGEubV9zdXJmYWNlLmdl
dCgpLCBzb3VyY2VTaXplKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UpOwogCiAgICAgQVNTRVJUKHNvdXJjZVJl
Y3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CkBA
IC0zMjUsMTUgKzMyMCwyMiBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlw
bHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIEFTU0VSVChl
bmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gZGVzdHk7
CiAKKyAgICBJbnRQb2ludCBvZmZzZXRJbkltYWdlOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGltYWdlU3VyZmFjZSA9IG1hcFN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChtX2RhdGEu
bV9zdXJmYWNlLmdldCgpLCBJbnRSZWN0KGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1ucywgbnVtUm93
cyksIG9mZnNldEluSW1hZ2UpOworICAgIGludCBkeCA9IG9mZnNldEluSW1hZ2UueCgpOworICAg
IGludCBkeSA9IG9mZnNldEluSW1hZ2UueSgpOworCisgICAgdW5zaWduZWQgY2hhciogcGl4ZWxE
YXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UuZ2V0KCkpOwor
CiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53aWR0aCgpOwot
ICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJm
YWNlKTsKKyAgICBpbnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGlt
YWdlU3VyZmFjZS5nZXQoKSk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNl
LT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKICAgICBm
b3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAgICAgICB1bnNpZ25lZCogcm93
ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihkYXRhRHN0ICsgc3RyaWRlICogKHkg
KyBkZXN0eSkpOworICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8
dW5zaWduZWQqPihwaXhlbERhdGEgKyBzdHJpZGUgKiAoeSArIGR5KSk7CiAgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgbnVtQ29sdW1uczsgeCsrKSB7CiAgICAgICAgICAgICBpbnQgYmFzZXgg
PSB4ICogNDsKLSAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHggKyBkZXN0eDsK
KyAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHggKyBkeDsKIAogICAgICAgICAg
ICAgLy8gQXZvaWQgY2FsbGluZyBDb2xvcjo6cHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoKSBi
ZWNhdXNlIG9uZQogICAgICAgICAgICAgLy8gZnVuY3Rpb24gY2FsbCBwZXIgcGl4ZWwgaXMgdG9v
IGV4cGVuc2l2ZS4KQEAgLTM1NSw3ICszNTcsMTAgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0
ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMK
ICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAgICB9CiAKLSAgICB1bm1hcFN1
cmZhY2VGcm9tSW1hZ2UobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgaW1hZ2VTdXJmYWNlLCBJbnRS
ZWN0KGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1ucywgbnVtUm93cykpOworICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eV9yZWN0YW5nbGUoaW1hZ2VTdXJmYWNlLmdldCgpLCBkeCwgZHksIG51bUNv
bHVtbnMsIG51bVJvd3MpOworCisgICAgaWYgKGltYWdlU3VyZmFjZSAhPSBtX2RhdGEubV9zdXJm
YWNlLmdldCgpKQorICAgICAgICBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGltYWdl
U3VyZmFjZS5nZXQoKSwgbV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgpLCBJbnRSZWN0
KDAsIDAsIG51bUNvbHVtbnMsIG51bVJvd3MpLCBJbnRTaXplKGRlc3R4LCBkZXN0eSksIENBSVJP
X09QRVJBVE9SX1NPVVJDRSk7CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207356</attachid>
            <date>2013-07-23 16:11:49 -0700</date>
            <delta_ts>2013-08-12 14:13:32 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-118621-20130723161147.patch</filename>
            <type>text/plain</type>
            <size>10962</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTcxOTkwNDA5NDY1M2U2
Y2VmOTZlZWRmMTcwMDE4Njg1ZWNkYzkyNi4uNjg4MTMwYjNiYWJiZGE2MWVlYmU5OTY4NzkxZjA4
ZTE1YzMzMGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA3LTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtjYWlyb10g
bWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBwdXRJbWFnZURhdGEgYW5kIGFjY2VsZXJhdGVkIGNhbnZh
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODYy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
d2UgaGF2ZSBhbiBhY2NlbGVyYXRlZCBpbWFnZUJ1ZmZlciwgYW5kIHdlIHB1dEJ5dGVBcnJheSB3
aXRoIGEKKyAgICAgICAgbm9uIHplcm8gZGVzdFBvaW50LCB3ZSBjcmVhdGUgdGVtcG9yYXJ5IHN1
cmZhY2Ugb2Ygc291cmNlU2l6ZS4gVGhlbiwKKyAgICAgICAgd2Ugd3JpdGUgdG8gaW1hZ2UgZGF0
YSB3aXRoIGFuIG9mZnNldC4gVGhpcyByZXN1bHRzIGluIGFuIG91dCBvZiBib3VuZAorICAgICAg
ICB3cml0ZS4KKworICAgICAgICBJbiBvcmRlciB0byBhdm9pZCB0aGF0LCB3ZSB1c2UgYSAwIG9m
ZnNldCB3aGVuIHdyaXRpbmcgZGF0YS4KKworICAgICAgICBJbiBhZGRpdGlvbiwgd2UgYWxzbyBj
cmVhdGUgaW1hZ2Ugd2l0aCB0aGUgbWluaW1hbCBuZWVkZWQgc2l6ZSBpbgorICAgICAgICBnZXRJ
bWFnZURhdGEsIGFuZCBhbHNvIHVzZSBhIDAgb2Zmc2V0LiBUaGlzIGRlY3JlYXNlIGRhdGEgdHJh
bnNmZXIKKyAgICAgICAgYmV0d2VlbiBjcHUgYW5kIGdwdQorCisgICAgICAgIEluc3RlYWQgb2Yg
dGhlIG1hcC91bm1hcCBtZWNoYW5pc20sIHBlcmZvcm0gYW4gZXhwbGljaXQgc3VyZmFjZSBjb3B5
CisgICAgICAgIHdoZW4gbmVlZGVkLiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgYW4gdW5uZWVk
ZWQgZ2xSZWFkUGl4ZWxzIGF0IHRoZQorICAgICAgICBzdGFydCBvZiBwdXRCeXRlQXJyYXkKKwor
ICAgICAgICBBZGQgdHdvIHBhcmFtZXRlcnMgdG8gY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5v
dGhlcjogZGVzdGluYXRpb24KKyAgICAgICAgb2Zmc2V0LCBhbmQgY2Fpcm8gZHJhd2luZyBvcGVy
YXRvci4KKworICAgICAgICBObyBuZXcgdGVzdHMuIEFjY2VsZXJhdGVkIGNhbnZhcyBpcyBub3Qg
ZW5hYmxlZCBmb3IgdGVzdGluZyB5ZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5UmVjdEZyb21P
bmVTdXJmYWNlVG9Bbm90aGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFwU3VyZmFjZVRvSW1hZ2VBbmRB
ZGp1c3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKwogMjAxMy0wNy0xNyAgQXJuYXVk
IFJlbmV2aWVyICA8YS5yZW5ldmllckBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbY2Fpcm9dIGNh
bnZhcyBkcmF3aW5nIG9uIGl0c2VsZiBkb2Vzbid0IHdvcmsgd2l0aCBhY2NlbGVyYXRlZCBjYW52
YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcAppbmRleCBlNzE1ZjdjNWRmNjQ2YmFlZDFiYmI0M2E5NjYyNmEw
MTllNzQwYWFmLi44OTMyOTY2ZGVkNzhkZmE2ZDcwYTU5NjFhYWU3MjliODg4YjZlMjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9VdGlsaXRpZXMuY3BwCkBAIC0yMzcsMTAgKzIzNywxMiBAQCB2b2lkIGNvcHlSZWN0RnJvbUNh
aXJvU3VyZmFjZVRvQ29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBj
b25zdAogICAgIGNhaXJvX2ZpbGwodG8pOwogfQogCi12b2lkIGNvcHlSZWN0RnJvbU9uZVN1cmZh
Y2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb19zdXJmYWNlX3QqIHRvLCBj
b25zdCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIGNvcHlSZWN0
RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb19zdXJm
YWNlX3QqIHRvLCBjb25zdCBJbnRTaXplJiBzb3VyY2VPZmZzZXQsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IEludFNpemUmIGRlc3RPZmZzZXQsIGNhaXJvX29wZXJhdG9yX3QgY2Fpcm9PcGVy
YXRvcikKIHsKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZSh0bykpOwotICAgIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChmcm9tLCBj
b250ZXh0LmdldCgpLCBvZmZzZXQsIHJlY3QpOworICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0
LmdldCgpLCBkZXN0T2Zmc2V0LndpZHRoKCksIGRlc3RPZmZzZXQuaGVpZ2h0KCkpOworICAgIGNh
aXJvX3NldF9vcGVyYXRvcihjb250ZXh0LmdldCgpLCBjYWlyb09wZXJhdG9yKTsKKyAgICBjb3B5
UmVjdEZyb21DYWlyb1N1cmZhY2VUb0NvbnRleHQoZnJvbSwgY29udGV4dC5nZXQoKSwgc291cmNl
T2Zmc2V0LCByZWN0KTsKIH0KIAogSW50U2l6ZSBjYWlyb1N1cmZhY2VTaXplKGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCmluZGV4IDQ2NWIyMzlmYTcxNTg3M2YzNmRkYjhj
NzBmNDgwNTU3NTJkYzcwZDEuLjEzNzJkZmI3ZmFmMjMxZjliMzIxNGQwOGZmNTA1Zjk4YWFjNDNk
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9VdGlsaXRpZXMuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBDYWlyb1V0aWxp
dGllc19oCiAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUz
LDcgQEAgdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19z
dXJmYWNlX3QqIGltYWdlLCBjb25zdCBJbnRTaXoKIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90Kik7CiAKIHZvaWQgY29weVJl
Y3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogZnJvbSwgY2Fpcm9f
dCogdG8sIGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYpOwotdm9pZCBjb3B5
UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZhY2VfdCogZnJvbSwgY2Fpcm9f
c3VyZmFjZV90KiB0bywgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0Jik7Cit2
b2lkIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90KiBmcm9t
LCBjYWlyb19zdXJmYWNlX3QqIHRvLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSwgY2Fpcm9fb3BlcmF0b3JfdCA9IENBSVJP
X09QRVJBVE9SX09WRVIpOwogCiBJbnRTaXplIGNhaXJvU3VyZmFjZVNpemUoY2Fpcm9fc3VyZmFj
ZV90Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggYTU4NTc2YTk5MmM4MjRmMjJhYTI4
Yjk5MDg5MzU0Yzk0MDUzODNjNS4uZGMwZWFkYmQzNGY0MGMxYzVkNmRjY2ViMDgzNmRhNDVlZGYy
ZDQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE4Nyw0NyArMTg3LDI0IEBAIHZvaWQg
SW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50
PiYgbG9va1VwVGFibGUpCiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSht
X2RhdGEubV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpKTsKIH0KIAotc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogbWFwU3VyZmFjZVRvSW1hZ2UoY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IG1hcFN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAgICBy
ZXR1cm4gc3VyZmFjZTsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWly
b19jcmVhdGUoaW1hZ2VTdXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNy
LmdldCgpLCBzdXJmYWNlLCAwLCAwKTsKLSAgICBjYWlyb19wYWludChjci5nZXQoKSk7Ci0gICAg
cmV0dXJuIGltYWdlU3VyZmFjZTsKLX0KLQotc3RhdGljIHZvaWQgdW5tYXBTdXJmYWNlRnJvbUlt
YWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZh
Y2UsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdGFuZ2xlID0gSW50UmVjdCgpKQotewotICAgIGlm
IChzdXJmYWNlID09IGltYWdlU3VyZmFjZSAmJiBkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlU3VyZmFjZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSA9PSBpbWFnZVN1cmZhY2UpIHsKLSAgICAgICAg
Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShzdXJmYWNlLCBkaXJ0eVJlY3Rhbmds
ZS54KCksIGRpcnR5UmVjdGFuZ2xlLnkoKSwgZGlydHlSZWN0YW5nbGUud2lkdGgoKSwgZGlydHlS
ZWN0YW5nbGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhaXJvX3N1
cmZhY2VfdHlwZV90IHN1cmZhY2VUeXBlID0gY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNl
KTsKIAotICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShzdXJm
YWNlKSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBpbWFnZVN1cmZh
Y2UsIDAsIDApOwotICAgIGNhaXJvX3JlY3RhbmdsZShjci5nZXQoKSwgZGlydHlSZWN0YW5nbGUu
eCgpLCBkaXJ0eVJlY3RhbmdsZS55KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksIGRpcnR5UmVj
dGFuZ2xlLmhlaWdodCgpKTsKLSAgICBjYWlyb19maWxsKGNyLmdldCgpKTsKLSAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koaW1hZ2VTdXJmYWNlKTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUg
YW4gaW1hZ2UsIHdlIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSB1bmRlcmx5aW5nIGRhdGE7CisgICAg
Ly8gb3RoZXJ3aXNlIHdlIGNyZWF0ZSBhIHRlbXBvcmFyeSBzdXJmYWNlIGltYWdlCisgICAgaWYg
KHN1cmZhY2VUeXBlID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJu
IHN1cmZhY2U7CisgICAgCisgICAgcmVjdC5zZXRYKDApOworICAgIHJlY3Quc2V0WSgwKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFU
X0FSR0IzMiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7CiB9CiAKIHRlbXBsYXRlIDxN
dWx0aXBseSBtdWx0aXBsaWVkPgogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgo
KSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3VyZmFj
ZSA9IG1hcFN1cmZhY2VUb0ltYWdlKGRhdGEubV9zdXJmYWNlLmdldCgpLCBzaXplKTsKLSAgICB1
bnNpZ25lZCBjaGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFn
ZVN1cmZhY2UpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSByZXN1bHQtPmRhdGEoKTsK
IAogICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IChyZWN0LngoKSArIHJl
Y3Qud2lkdGgoKSkgPiBzaXplLndpZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkg
PiBzaXplLmhlaWdodCgpKQogICAgICAgICByZXN1bHQtPnplcm9GaWxsKCk7CkBAIC0yNTQsNyAr
MjMxLDE4IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgICAgIGVuZHkgPSBzaXplLmhl
aWdodCgpOwogICAgIGludCBudW1Sb3dzID0gZW5keSAtIG9yaWdpbnk7CiAKLSAgICBpbnQgc3Ry
aWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZSk7CisgICAg
SW50UmVjdCBpbWFnZVJlY3Qob3JpZ2lueCwgb3JpZ2lueSwgbnVtQ29sdW1ucywgbnVtUm93cyk7
CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlID0gbWFwU3VyZmFjZVRv
SW1hZ2VBbmRBZGp1c3RSZWN0KGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVJlY3QpOworICAg
IG9yaWdpbnggPSBpbWFnZVJlY3QueCgpOworICAgIG9yaWdpbnkgPSBpbWFnZVJlY3QueSgpOwor
ICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gZGF0YS5tX3N1cmZhY2UuZ2V0KCkpIHsKKyAgICAgICAg
SW50UmVjdCBhcmVhID0gaW50ZXJzZWN0aW9uKHJlY3QsIEludFJlY3QoMCwgMCwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fu
b3RoZXIoZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdlU3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgt
YXJlYS54KCksIC1hcmVhLnkoKSksIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgYXJlYS5zaXpl
KCkpLCBJbnRTaXplKCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgfQorCisgICAgdW5z
aWduZWQgY2hhciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VT
dXJmYWNlLmdldCgpKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gcmVzdWx0LT5kYXRh
KCk7CisgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFn
ZVN1cmZhY2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0
LndpZHRoKCk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93cyA9IGRhdGFEc3QgKyBkZXN0
eSAqIGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKQEAgLTI4Nyw3ICsyNzUsNiBAQCBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW1hZ2VCdWZmZQogICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7
CiAgICAgfQogCi0gICAgdW5tYXBTdXJmYWNlRnJvbUltYWdlKGRhdGEubV9zdXJmYWNlLmdldCgp
LCBpbWFnZVN1cmZhY2UpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCkBAIC0z
MDMsOCArMjkwLDYgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6
OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmUKIAogdm9pZCBJbWFnZUJ1ZmZl
cjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBz
b3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7Ci0gICAg
Y2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UgPSBtYXBTdXJmYWNlVG9JbWFnZShtX2RhdGEu
bV9zdXJmYWNlLmdldCgpLCBzb3VyY2VTaXplKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UpOwogCiAgICAgQVNT
RVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdo
dCgpID4gMCk7CkBAIC0zMzIsMTIgKzMxNywxOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRl
QXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwog
ICAgIEFTU0VSVChlbmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51bVJvd3MgPSBl
bmR5IC0gZGVzdHk7CiAKKyAgICBJbnRSZWN0IGltYWdlUmVjdChkZXN0eCwgZGVzdHksIG51bUNv
bHVtbnMsIG51bVJvd3MpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlU3VyZmFj
ZSA9IG1hcFN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChtX2RhdGEubV9zdXJmYWNlLmdldCgp
LCBpbWFnZVJlY3QpOworICAgIGRlc3R4ID0gaW1hZ2VSZWN0LngoKTsKKyAgICBkZXN0eSA9IGlt
YWdlUmVjdC55KCk7CisKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbERhdGEgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQoKSk7CisKICAgICB1bnNpZ25lZCBz
cmNCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7Ci0gICAgaW50IHN0cmlkZSA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZhY2UpOworICAgIGludCBz
dHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlLmdldCgp
KTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEoKSArIG9yaWdp
bnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgbnVtUm93czsgKyt5KSB7Ci0gICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9j
YXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFEc3QgKyBzdHJpZGUgKiAoeSArIGRlc3R5KSk7CisgICAg
ICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KHBpeGVs
RGF0YSArIHN0cmlkZSAqICh5ICsgZGVzdHkpKTsKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCBudW1Db2x1bW5zOyB4KyspIHsKICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwogICAg
ICAgICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeCArIGRlc3R4OwpAQCAtMzYyLDcgKzM1
NCwxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGll
ZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgICAgICBzcmNSb3dzICs9IHNyY0J5
dGVzUGVyUm93OwogICAgIH0KIAotICAgIHVubWFwU3VyZmFjZUZyb21JbWFnZShtX2RhdGEubV9z
dXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UsIEludFJlY3QoZGVzdHgsIGRlc3R5LCBudW1Db2x1
bW5zLCBudW1Sb3dzKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShp
bWFnZVN1cmZhY2UuZ2V0KCksIGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1ucywgbnVtUm93cyk7CisK
KyAgICBpZiAoaW1hZ2VTdXJmYWNlICE9IG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpCisgICAgICAg
IGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoaW1hZ2VTdXJmYWNlLmdldCgpLCBtX2Rh
dGEubV9zdXJmYWNlLmdldCgpLCBJbnRTaXplKCksIEludFJlY3QoMCwgMCwgbnVtQ29sdW1ucywg
bnVtUm93cyksIEludFNpemUoZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCBkZXN0UG9p
bnQueSgpICsgc291cmNlUmVjdC55KCkpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwogfQogCiAj
aWYgIVBMQVRGT1JNKEdUSykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208560</attachid>
            <date>2013-08-12 14:13:35 -0700</date>
            <delta_ts>2013-08-12 14:19:03 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-118621-20130812141333.patch</filename>
            <type>text/plain</type>
            <size>10960</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FkMThjZjc1ODRmZTli
MDA0ZjJkOTE0ZWVlODI2MWI2NDdkYmFlZC4uYmU1Mjg1NmRiMTM0YjBiMzViYjZjZGUyZWZjODIw
YWEyYzE4ZmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA3LTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtjYWlyb10g
bWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBwdXRJbWFnZURhdGEgYW5kIGFjY2VsZXJhdGVkIGNhbnZh
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODYy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
d2UgaGF2ZSBhbiBhY2NlbGVyYXRlZCBpbWFnZUJ1ZmZlciwgYW5kIHdlIHB1dEJ5dGVBcnJheSB3
aXRoIGEKKyAgICAgICAgbm9uIHplcm8gZGVzdFBvaW50LCB3ZSBjcmVhdGUgdGVtcG9yYXJ5IHN1
cmZhY2Ugb2Ygc291cmNlU2l6ZS4gVGhlbiwKKyAgICAgICAgd2Ugd3JpdGUgdG8gaW1hZ2UgZGF0
YSB3aXRoIGFuIG9mZnNldC4gVGhpcyByZXN1bHRzIGluIGFuIG91dCBvZiBib3VuZAorICAgICAg
ICB3cml0ZS4KKworICAgICAgICBJbiBvcmRlciB0byBhdm9pZCB0aGF0LCB3ZSB1c2UgYSAwIG9m
ZnNldCB3aGVuIHdyaXRpbmcgZGF0YS4KKworICAgICAgICBJbiBhZGRpdGlvbiwgd2UgYWxzbyBj
cmVhdGUgaW1hZ2Ugd2l0aCB0aGUgbWluaW1hbCBuZWVkZWQgc2l6ZSBpbgorICAgICAgICBnZXRJ
bWFnZURhdGEsIGFuZCBhbHNvIHVzZSBhIDAgb2Zmc2V0LiBUaGlzIGRlY3JlYXNlIGRhdGEgdHJh
bnNmZXIKKyAgICAgICAgYmV0d2VlbiBjcHUgYW5kIGdwdQorCisgICAgICAgIEluc3RlYWQgb2Yg
dGhlIG1hcC91bm1hcCBtZWNoYW5pc20sIHBlcmZvcm0gYW4gZXhwbGljaXQgc3VyZmFjZSBjb3B5
CisgICAgICAgIHdoZW4gbmVlZGVkLiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgYW4gdW5uZWVk
ZWQgZ2xSZWFkUGl4ZWxzIGF0IHRoZQorICAgICAgICBzdGFydCBvZiBwdXRCeXRlQXJyYXkKKwor
ICAgICAgICBBZGQgdHdvIHBhcmFtZXRlcnMgdG8gY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5v
dGhlcjogZGVzdGluYXRpb24KKyAgICAgICAgb2Zmc2V0LCBhbmQgY2Fpcm8gZHJhd2luZyBvcGVy
YXRvci4KKworICAgICAgICBObyBuZXcgdGVzdHMuIEFjY2VsZXJhdGVkIGNhbnZhcyBpcyBub3Qg
ZW5hYmxlZCBmb3IgdGVzdGluZyB5ZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5UmVjdEZyb21P
bmVTdXJmYWNlVG9Bbm90aGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29weVN1cmZhY2VUb0ltYWdlQW5k
QWRqdXN0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisKIDIwMTMtMDctMTcgIEFybmF1
ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW2NhaXJvXSBj
YW52YXMgZHJhd2luZyBvbiBpdHNlbGYgZG9lc24ndCB3b3JrIHdpdGggYWNjZWxlcmF0ZWQgY2Fu
dmFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggNmRkM2NiMGE3OWVkNDZjYTU4ZGU5MmQ0MDQwMDli
ZTFkNTMyM2NiNC4uOGMwM2ZiODExYmY3NzVhMDg0MDlmNzFiMmU5NzZkMTI2N2IyYTMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmNwcApAQCAtMjM2LDEwICsyMzYsMTIgQEAgdm9pZCBjb3B5UmVjdEZyb21D
YWlyb1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb190KiB0bywg
Y29uc3QKICAgICBjYWlyb19maWxsKHRvKTsKIH0KIAotdm9pZCBjb3B5UmVjdEZyb21PbmVTdXJm
YWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZhY2VfdCogZnJvbSwgY2Fpcm9fc3VyZmFjZV90KiB0bywg
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBjb3B5UmVj
dEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZhY2VfdCogZnJvbSwgY2Fpcm9fc3Vy
ZmFjZV90KiB0bywgY29uc3QgSW50U2l6ZSYgc291cmNlT2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiBkZXN0T2Zmc2V0LCBjYWlyb19vcGVyYXRvcl90IGNhaXJvT3Bl
cmF0b3IpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUodG8pKTsKLSAgICBjb3B5UmVjdEZyb21DYWlyb1N1cmZhY2VUb0NvbnRleHQoZnJvbSwg
Y29udGV4dC5nZXQoKSwgb2Zmc2V0LCByZWN0KTsKKyAgICBjYWlyb190cmFuc2xhdGUoY29udGV4
dC5nZXQoKSwgZGVzdE9mZnNldC53aWR0aCgpLCBkZXN0T2Zmc2V0LmhlaWdodCgpKTsKKyAgICBj
YWlyb19zZXRfb3BlcmF0b3IoY29udGV4dC5nZXQoKSwgY2Fpcm9PcGVyYXRvcik7CisgICAgY29w
eVJlY3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KGZyb20sIGNvbnRleHQuZ2V0KCksIHNvdXJj
ZU9mZnNldCwgcmVjdCk7CiB9CiAKIEludFNpemUgY2Fpcm9TdXJmYWNlU2l6ZShjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaAppbmRleCA0NjViMjM5ZmE3MTU4NzNmMzZkZGI4
YzcwZjQ4MDU1NzUyZGM3MGQxLi4xMzcyZGZiN2ZhZjIzMWY5YjMyMTRkMDhmZjUwNWY5OGFhYzQz
ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgQ2Fpcm9VdGls
aXRpZXNfaAogCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIkludFNpemUu
aCIKICNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1
Myw3IEBAIHZvaWQgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjYWlyb190KiBjciwgY2Fpcm9f
c3VyZmFjZV90KiBpbWFnZSwgY29uc3QgSW50U2l6CiBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gY29weUNhaXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCopOwogCiB2b2lkIGNvcHlS
ZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJv
X3QqIHRvLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IEludFJlY3QmKTsKLXZvaWQgY29w
eVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJv
X3N1cmZhY2VfdCogdG8sIGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYpOwor
dm9pZCBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZhY2VfdCogZnJv
bSwgY2Fpcm9fc3VyZmFjZV90KiB0bywgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCksIGNhaXJvX29wZXJhdG9yX3QgPSBDQUlS
T19PUEVSQVRPUl9PVkVSKTsKIAogSW50U2l6ZSBjYWlyb1N1cmZhY2VTaXplKGNhaXJvX3N1cmZh
Y2VfdCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IGE1ODU3NmE5OTJjODI0ZjIyYWEy
OGI5OTA4OTM1NGM5NDA1MzgzYzUuLjNhYTliNWY2ODMxZjEzYmJmZWFiMjNhODZjNzdmYzllMjM0
ZDA2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xODcsNDcgKzE4NywyNCBAQCB2b2lk
IEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGlu
dD4mIGxvb2tVcFRhYmxlKQogICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUo
bV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWln
aHQoKSk7CiB9CiAKLXN0YXRpYyBjYWlyb19zdXJmYWNlX3QqIG1hcFN1cmZhY2VUb0ltYWdlKGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSwgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoY2Fpcm9fc3VyZmFj
ZV9nZXRfdHlwZShzdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCi0gICAgICAg
IHJldHVybiBzdXJmYWNlOwotCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpOwotICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNh
aXJvX2NyZWF0ZShpbWFnZVN1cmZhY2UpKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2Uo
Y3IuZ2V0KCksIHN1cmZhY2UsIDAsIDApOwotICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKLSAg
ICByZXR1cm4gaW1hZ2VTdXJmYWNlOwotfQotCi1zdGF0aWMgdm9pZCB1bm1hcFN1cmZhY2VGcm9t
SW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3Vy
ZmFjZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0YW5nbGUgPSBJbnRSZWN0KCkpCi17Ci0gICAg
aWYgKHN1cmZhY2UgPT0gaW1hZ2VTdXJmYWNlICYmIGRpcnR5UmVjdGFuZ2xlLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGRpcnR5UmVjdGFuZ2xlLmlzRW1wdHkoKSkgewot
ICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koaW1hZ2VTdXJmYWNlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChzdXJmYWNlID09IGltYWdlU3VyZmFjZSkgewotICAgICAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKHN1cmZhY2UsIGRpcnR5UmVjdGFu
Z2xlLngoKSwgZGlydHlSZWN0YW5nbGUueSgpLCBkaXJ0eVJlY3RhbmdsZS53aWR0aCgpLCBkaXJ0
eVJlY3RhbmdsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY2Fpcm9f
c3VyZmFjZV90eXBlX3Qgc3VyZmFjZVR5cGUgPSBjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZh
Y2UpOwogCi0gICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1
cmZhY2UpKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIGltYWdlU3Vy
ZmFjZSwgMCwgMCk7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLmdldCgpLCBkaXJ0eVJlY3Rhbmds
ZS54KCksIGRpcnR5UmVjdGFuZ2xlLnkoKSwgZGlydHlSZWN0YW5nbGUud2lkdGgoKSwgZGlydHlS
ZWN0YW5nbGUuaGVpZ2h0KCkpOwotICAgIGNhaXJvX2ZpbGwoY3IuZ2V0KCkpOwotICAgIGNhaXJv
X3N1cmZhY2VfZGVzdHJveShpbWFnZVN1cmZhY2UpOworICAgIC8vIElmIHdlIGFscmVhZHkgaGF2
ZSBhbiBpbWFnZSwgd2Ugd3JpdGUgZGlyZWN0bHkgdG8gdGhlIHVuZGVybHlpbmcgZGF0YTsKKyAg
ICAvLyBvdGhlcndpc2Ugd2UgY3JlYXRlIGEgdGVtcG9yYXJ5IHN1cmZhY2UgaW1hZ2UKKyAgICBp
ZiAoc3VyZmFjZVR5cGUgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQorICAgICAgICByZXR1
cm4gc3VyZmFjZTsKKyAgICAKKyAgICByZWN0LnNldFgoMCk7CisgICAgcmVjdC5zZXRZKDApOwor
ICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JN
QVRfQVJHQjMyLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKIH0KIAogdGVtcGxhdGUg
PE11bHRpcGx5IG11bHRpcGxpZWQ+CiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRh
LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJm
YWNlID0gbWFwU3VyZmFjZVRvSW1hZ2UoZGF0YS5tX3N1cmZhY2UuZ2V0KCksIHNpemUpOwotICAg
IHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGlt
YWdlU3VyZmFjZSk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IHJlc3VsdC0+ZGF0YSgp
OwogCiAgICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDAgfHwgKHJlY3QueCgpICsg
cmVjdC53aWR0aCgpKSA+IHNpemUud2lkdGgoKSB8fCAocmVjdC55KCkgKyByZWN0LmhlaWdodCgp
KSA+IHNpemUuaGVpZ2h0KCkpCiAgICAgICAgIHJlc3VsdC0+emVyb0ZpbGwoKTsKQEAgLTI1NCw3
ICsyMzEsMTggQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICAgICAgZW5keSA9IHNpemUu
aGVpZ2h0KCk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gb3JpZ2lueTsKIAotICAgIGludCBz
dHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlKTsKKyAg
ICBJbnRSZWN0IGltYWdlUmVjdChvcmlnaW54LCBvcmlnaW55LCBudW1Db2x1bW5zLCBudW1Sb3dz
KTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UgPSBjb3B5U3VyZmFj
ZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVJlY3QpOwor
ICAgIG9yaWdpbnggPSBpbWFnZVJlY3QueCgpOworICAgIG9yaWdpbnkgPSBpbWFnZVJlY3QueSgp
OworICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gZGF0YS5tX3N1cmZhY2UuZ2V0KCkpIHsKKyAgICAg
ICAgSW50UmVjdCBhcmVhID0gaW50ZXJzZWN0aW9uKHJlY3QsIEludFJlY3QoMCwgMCwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VU
b0Fub3RoZXIoZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdlU3VyZmFjZS5nZXQoKSwgSW50U2l6
ZSgtYXJlYS54KCksIC1hcmVhLnkoKSksIEludFJlY3QoSW50UG9pbnQoKSwgYXJlYS5zaXplKCkp
LCBJbnRTaXplKCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgY2hhciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJm
YWNlLmdldCgpKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0gcmVzdWx0LT5kYXRhKCk7
CisgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFnZVN1
cmZhY2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0Lndp
ZHRoKCk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93cyA9IGRhdGFEc3QgKyBkZXN0eSAq
IGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKQEAgLTI4Nyw3ICsyNzUsNiBAQCBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW1hZ2VCdWZmZQogICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7CiAg
ICAgfQogCi0gICAgdW5tYXBTdXJmYWNlRnJvbUltYWdlKGRhdGEubV9zdXJmYWNlLmdldCgpLCBp
bWFnZVN1cmZhY2UpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCkBAIC0zMDMs
OCArMjkwLDYgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6Omdl
dFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmUKIAogdm9pZCBJbWFnZUJ1ZmZlcjo6
cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3Vy
Y2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7Ci0gICAgY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UgPSBtYXBTdXJmYWNlVG9JbWFnZShtX2RhdGEubV9z
dXJmYWNlLmdldCgpLCBzb3VyY2VTaXplKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhRHN0ID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UpOwogCiAgICAgQVNTRVJU
KHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgp
ID4gMCk7CkBAIC0zMzIsMTIgKzMxNywxOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJy
YXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAg
IEFTU0VSVChlbmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5
IC0gZGVzdHk7CiAKKyAgICBJbnRSZWN0IGltYWdlUmVjdChkZXN0eCwgZGVzdHksIG51bUNvbHVt
bnMsIG51bVJvd3MpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9
IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwg
aW1hZ2VSZWN0KTsKKyAgICBkZXN0eCA9IGltYWdlUmVjdC54KCk7CisgICAgZGVzdHkgPSBpbWFn
ZVJlY3QueSgpOworCisgICAgdW5zaWduZWQgY2hhciogcGl4ZWxEYXRhID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UuZ2V0KCkpOworCiAgICAgdW5zaWduZWQgc3Jj
Qnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53aWR0aCgpOwotICAgIGludCBzdHJpZGUgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlKTsKKyAgICBpbnQgc3Ry
aWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZS5nZXQoKSk7
CiAKICAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNlLT5kYXRhKCkgKyBvcmlnaW55
ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IG51bVJvd3M7ICsreSkgewotICAgICAgICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8dW5zaWduZWQqPihkYXRhRHN0ICsgc3RyaWRlICogKHkgKyBkZXN0eSkpOworICAgICAg
ICB1bnNpZ25lZCogcm93ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihwaXhlbERh
dGEgKyBzdHJpZGUgKiAoeSArIGRlc3R5KSk7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
bnVtQ29sdW1uczsgeCsrKSB7CiAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKICAgICAg
ICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHggKyBkZXN0eDsKQEAgLTM2Miw3ICszNTQs
MTAgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQs
IFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRl
c1BlclJvdzsKICAgICB9CiAKLSAgICB1bm1hcFN1cmZhY2VGcm9tSW1hZ2UobV9kYXRhLm1fc3Vy
ZmFjZS5nZXQoKSwgaW1hZ2VTdXJmYWNlLCBJbnRSZWN0KGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1u
cywgbnVtUm93cykpOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUoaW1h
Z2VTdXJmYWNlLmdldCgpLCBkZXN0eCwgZGVzdHksIG51bUNvbHVtbnMsIG51bVJvd3MpOworCisg
ICAgaWYgKGltYWdlU3VyZmFjZSAhPSBtX2RhdGEubV9zdXJmYWNlLmdldCgpKQorICAgICAgICBj
b3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGltYWdlU3VyZmFjZS5nZXQoKSwgbV9kYXRh
Lm1fc3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgpLCBJbnRSZWN0KDAsIDAsIG51bUNvbHVtbnMsIG51
bVJvd3MpLCBJbnRTaXplKGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgZGVzdFBvaW50
LnkoKSArIHNvdXJjZVJlY3QueSgpKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKIH0KIAogI2lm
ICFQTEFURk9STShHVEspCg==
</data>
<flag name="commit-queue"
          id="230471"
          type_id="3"
          status="-"
          setter="a.renevier"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208561</attachid>
            <date>2013-08-12 14:18:30 -0700</date>
            <delta_ts>2013-08-12 15:04:00 -0700</delta_ts>
            <desc>updated patch with Reviewed By field filled</desc>
            <filename>bug-118621-20130812141827.patch</filename>
            <type>text/plain</type>
            <size>10961</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FkMThjZjc1ODRmZTli
MDA0ZjJkOTE0ZWVlODI2MWI2NDdkYmFlZC4uYzQxMzM4YWJlYjY2MThkYmE4MDcyZmY3NmVmNzUx
MmVlNzIzNGZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA3LTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtjYWlyb10g
bWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBwdXRJbWFnZURhdGEgYW5kIGFjY2VsZXJhdGVkIGNhbnZh
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODYy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KKworICAgICAgICBXaGVu
IHdlIGhhdmUgYW4gYWNjZWxlcmF0ZWQgaW1hZ2VCdWZmZXIsIGFuZCB3ZSBwdXRCeXRlQXJyYXkg
d2l0aCBhCisgICAgICAgIG5vbiB6ZXJvIGRlc3RQb2ludCwgd2UgY3JlYXRlIHRlbXBvcmFyeSBz
dXJmYWNlIG9mIHNvdXJjZVNpemUuIFRoZW4sCisgICAgICAgIHdlIHdyaXRlIHRvIGltYWdlIGRh
dGEgd2l0aCBhbiBvZmZzZXQuIFRoaXMgcmVzdWx0cyBpbiBhbiBvdXQgb2YgYm91bmQKKyAgICAg
ICAgd3JpdGUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgdGhhdCwgd2UgdXNlIGEgMCBv
ZmZzZXQgd2hlbiB3cml0aW5nIGRhdGEuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHdlIGFsc28g
Y3JlYXRlIGltYWdlIHdpdGggdGhlIG1pbmltYWwgbmVlZGVkIHNpemUgaW4KKyAgICAgICAgZ2V0
SW1hZ2VEYXRhLCBhbmQgYWxzbyB1c2UgYSAwIG9mZnNldC4gVGhpcyBkZWNyZWFzZSBkYXRhIHRy
YW5zZmVyCisgICAgICAgIGJldHdlZW4gY3B1IGFuZCBncHUKKworICAgICAgICBJbnN0ZWFkIG9m
IHRoZSBtYXAvdW5tYXAgbWVjaGFuaXNtLCBwZXJmb3JtIGFuIGV4cGxpY2l0IHN1cmZhY2UgY29w
eQorICAgICAgICB3aGVuIG5lZWRlZC4gVGhpcyBjaGFuZ2UgYWxzbyByZW1vdmVzIGFuIHVubmVl
ZGVkIGdsUmVhZFBpeGVscyBhdCB0aGUKKyAgICAgICAgc3RhcnQgb2YgcHV0Qnl0ZUFycmF5CisK
KyAgICAgICAgQWRkIHR3byBwYXJhbWV0ZXJzIHRvIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fu
b3RoZXI6IGRlc3RpbmF0aW9uCisgICAgICAgIG9mZnNldCwgYW5kIGNhaXJvIGRyYXdpbmcgb3Bl
cmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBBY2NlbGVyYXRlZCBjYW52YXMgaXMgbm90
IGVuYWJsZWQgZm9yIHRlc3RpbmcgeWV0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29weVJlY3RGcm9t
T25lU3VyZmFjZVRvQW5vdGhlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlTdXJmYWNlVG9JbWFnZUFu
ZEFkanVzdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkpOgorCiAyMDEzLTA3LTE3ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtjYWlyb10g
Y2FudmFzIGRyYXdpbmcgb24gaXRzZWxmIGRvZXNuJ3Qgd29yayB3aXRoIGFjY2VsZXJhdGVkIGNh
bnZhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IDZkZDNjYjBhNzllZDQ2Y2E1OGRlOTJkNDA0MDA5
YmUxZDUzMjNjYjQuLjhjMDNmYjgxMWJmNzc1YTA4NDA5ZjcxYjJlOTc2ZDEyNjdiMmEzMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1V0aWxpdGllcy5jcHAKQEAgLTIzNiwxMCArMjM2LDEyIEBAIHZvaWQgY29weVJlY3RGcm9t
Q2Fpcm9TdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogZnJvbSwgY2Fpcm9fdCogdG8s
IGNvbnN0CiAgICAgY2Fpcm9fZmlsbCh0byk7CiB9CiAKLXZvaWQgY29weVJlY3RGcm9tT25lU3Vy
ZmFjZVRvQW5vdGhlcihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3N1cmZhY2VfdCogdG8s
IGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgY29weVJl
Y3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3N1
cmZhY2VfdCogdG8sIGNvbnN0IEludFNpemUmIHNvdXJjZU9mZnNldCwgY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgSW50U2l6ZSYgZGVzdE9mZnNldCwgY2Fpcm9fb3BlcmF0b3JfdCBjYWlyb09w
ZXJhdG9yKQogewogICAgIFJlZlB0cjxjYWlyb190PiBjb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9f
Y3JlYXRlKHRvKSk7Ci0gICAgY29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KGZyb20s
IGNvbnRleHQuZ2V0KCksIG9mZnNldCwgcmVjdCk7CisgICAgY2Fpcm9fdHJhbnNsYXRlKGNvbnRl
eHQuZ2V0KCksIGRlc3RPZmZzZXQud2lkdGgoKSwgZGVzdE9mZnNldC5oZWlnaHQoKSk7CisgICAg
Y2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQuZ2V0KCksIGNhaXJvT3BlcmF0b3IpOworICAgIGNv
cHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChmcm9tLCBjb250ZXh0LmdldCgpLCBzb3Vy
Y2VPZmZzZXQsIHJlY3QpOwogfQogCiBJbnRTaXplIGNhaXJvU3VyZmFjZVNpemUoY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKaW5kZXggNDY1YjIzOWZhNzE1ODczZjM2ZGRi
OGM3MGY0ODA1NTc1MmRjNzBkMS4uMTM3MmRmYjdmYWYyMzFmOWIzMjE0ZDA4ZmY1MDVmOThhYWM0
M2RhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIENhaXJvVXRp
bGl0aWVzX2gKIAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNyAr
NTMsNyBAQCB2b2lkIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogY3IsIGNhaXJv
X3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IEludFNpegogUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKIAogdm9pZCBjb3B5
UmVjdEZyb21DYWlyb1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWly
b190KiB0bywgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0Jik7Ci12b2lkIGNv
cHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWly
b19zdXJmYWNlX3QqIHRvLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IEludFJlY3QmKTsK
K3ZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihjYWlyb19zdXJmYWNlX3QqIGZy
b20sIGNhaXJvX3N1cmZhY2VfdCogdG8sIGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpLCBjYWlyb19vcGVyYXRvcl90ID0gQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUik7CiAKIEludFNpemUgY2Fpcm9TdXJmYWNlU2l6ZShjYWlyb19zdXJm
YWNlX3QqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCBhNTg1NzZhOTkyYzgyNGYyMmFh
MjhiOTkwODkzNTRjOTQwNTM4M2M1Li4zYWE5YjVmNjgzMWYxM2JiZmVhYjIzYTg2Yzc3ZmM5ZTIz
NGQwNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTg3LDQ3ICsxODcsMjQgQEAgdm9p
ZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3Rvcjxp
bnQ+JiBsb29rVXBUYWJsZSkKICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xl
KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVp
Z2h0KCkpOwogfQogCi1zdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBtYXBTdXJmYWNlVG9JbWFnZShj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UsIEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGNhaXJvX3N1cmZh
Y2VfZ2V0X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAg
ICByZXR1cm4gc3VyZmFjZTsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihj
YWlyb19jcmVhdGUoaW1hZ2VTdXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNl
KGNyLmdldCgpLCBzdXJmYWNlLCAwLCAwKTsKLSAgICBjYWlyb19wYWludChjci5nZXQoKSk7Ci0g
ICAgcmV0dXJuIGltYWdlU3VyZmFjZTsKLX0KLQotc3RhdGljIHZvaWQgdW5tYXBTdXJmYWNlRnJv
bUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZVN1
cmZhY2UsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdGFuZ2xlID0gSW50UmVjdCgpKQotewotICAg
IGlmIChzdXJmYWNlID09IGltYWdlU3VyZmFjZSAmJiBkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChkaXJ0eVJlY3RhbmdsZS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlU3VyZmFjZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoc3VyZmFjZSA9PSBpbWFnZVN1cmZhY2UpIHsKLSAgICAg
ICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShzdXJmYWNlLCBkaXJ0eVJlY3Rh
bmdsZS54KCksIGRpcnR5UmVjdGFuZ2xlLnkoKSwgZGlydHlSZWN0YW5nbGUud2lkdGgoKSwgZGly
dHlSZWN0YW5nbGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhaXJv
X3N1cmZhY2VfdHlwZV90IHN1cmZhY2VUeXBlID0gY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJm
YWNlKTsKIAotICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShz
dXJmYWNlKSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBpbWFnZVN1
cmZhY2UsIDAsIDApOwotICAgIGNhaXJvX3JlY3RhbmdsZShjci5nZXQoKSwgZGlydHlSZWN0YW5n
bGUueCgpLCBkaXJ0eVJlY3RhbmdsZS55KCksIGRpcnR5UmVjdGFuZ2xlLndpZHRoKCksIGRpcnR5
UmVjdGFuZ2xlLmhlaWdodCgpKTsKLSAgICBjYWlyb19maWxsKGNyLmdldCgpKTsKLSAgICBjYWly
b19zdXJmYWNlX2Rlc3Ryb3koaW1hZ2VTdXJmYWNlKTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhh
dmUgYW4gaW1hZ2UsIHdlIHdyaXRlIGRpcmVjdGx5IHRvIHRoZSB1bmRlcmx5aW5nIGRhdGE7Cisg
ICAgLy8gb3RoZXJ3aXNlIHdlIGNyZWF0ZSBhIHRlbXBvcmFyeSBzdXJmYWNlIGltYWdlCisgICAg
aWYgKHN1cmZhY2VUeXBlID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0
dXJuIHN1cmZhY2U7CisgICAgCisgICAgcmVjdC5zZXRYKDApOworICAgIHJlY3Quc2V0WSgwKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9S
TUFUX0FSR0IzMiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7CiB9CiAKIHRlbXBsYXRl
IDxNdWx0aXBseSBtdWx0aXBsaWVkPgogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0
YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lk
dGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlU3Vy
ZmFjZSA9IG1hcFN1cmZhY2VUb0ltYWdlKGRhdGEubV9zdXJmYWNlLmdldCgpLCBzaXplKTsKLSAg
ICB1bnNpZ25lZCBjaGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShp
bWFnZVN1cmZhY2UpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSByZXN1bHQtPmRhdGEo
KTsKIAogICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IChyZWN0LngoKSAr
IHJlY3Qud2lkdGgoKSkgPiBzaXplLndpZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQo
KSkgPiBzaXplLmhlaWdodCgpKQogICAgICAgICByZXN1bHQtPnplcm9GaWxsKCk7CkBAIC0yNTQs
NyArMjMxLDE4IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgICAgIGVuZHkgPSBzaXpl
LmhlaWdodCgpOwogICAgIGludCBudW1Sb3dzID0gZW5keSAtIG9yaWdpbnk7CiAKLSAgICBpbnQg
c3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZSk7Cisg
ICAgSW50UmVjdCBpbWFnZVJlY3Qob3JpZ2lueCwgb3JpZ2lueSwgbnVtQ29sdW1ucywgbnVtUm93
cyk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlID0gY29weVN1cmZh
Y2VUb0ltYWdlQW5kQWRqdXN0UmVjdChkYXRhLm1fc3VyZmFjZS5nZXQoKSwgaW1hZ2VSZWN0KTsK
KyAgICBvcmlnaW54ID0gaW1hZ2VSZWN0LngoKTsKKyAgICBvcmlnaW55ID0gaW1hZ2VSZWN0Lnko
KTsKKyAgICBpZiAoaW1hZ2VTdXJmYWNlICE9IGRhdGEubV9zdXJmYWNlLmdldCgpKSB7CisgICAg
ICAgIEludFJlY3QgYXJlYSA9IGludGVyc2VjdGlvbihyZWN0LCBJbnRSZWN0KDAsIDAsIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBjb3B5UmVjdEZyb21PbmVTdXJmYWNl
VG9Bbm90aGVyKGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UuZ2V0KCksIEludFNp
emUoLWFyZWEueCgpLCAtYXJlYS55KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGFyZWEuc2l6ZSgp
KSwgSW50U2l6ZSgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIH0KKworICAgIHVuc2ln
bmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3Vy
ZmFjZS5nZXQoKSk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IHJlc3VsdC0+ZGF0YSgp
OworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VT
dXJmYWNlLmdldCgpKTsKICAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogcmVjdC53
aWR0aCgpOwogCiAgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3MgPSBkYXRhRHN0ICsgZGVzdHkg
KiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQ7CkBAIC0yODcsNyArMjc1LDYgQEAgUGFzc1Jl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEltYWdlQnVmZmUKICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93Owog
ICAgIH0KIAotICAgIHVubWFwU3VyZmFjZUZyb21JbWFnZShkYXRhLm1fc3VyZmFjZS5nZXQoKSwg
aW1hZ2VTdXJmYWNlKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIApAQCAtMzAz
LDggKzI5MCw2IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpn
ZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlCiAKIHZvaWQgSW1hZ2VCdWZmZXI6
OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQogewotICAgIGNh
aXJvX3N1cmZhY2VfdCogaW1hZ2VTdXJmYWNlID0gbWFwU3VyZmFjZVRvSW1hZ2UobV9kYXRhLm1f
c3VyZmFjZS5nZXQoKSwgc291cmNlU2l6ZSk7Ci0gICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlKTsKIAogICAgIEFTU0VS
VChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQo
KSA+IDApOwpAQCAtMzMyLDEyICszMTcsMTkgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAg
ICBBU1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0KCkpOwogICAgIGludCBudW1Sb3dzID0gZW5k
eSAtIGRlc3R5OwogCisgICAgSW50UmVjdCBpbWFnZVJlY3QoZGVzdHgsIGRlc3R5LCBudW1Db2x1
bW5zLCBudW1Sb3dzKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2Ug
PSBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCks
IGltYWdlUmVjdCk7CisgICAgZGVzdHggPSBpbWFnZVJlY3QueCgpOworICAgIGRlc3R5ID0gaW1h
Z2VSZWN0LnkoKTsKKworICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsRGF0YSA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlLmdldCgpKTsKKwogICAgIHVuc2lnbmVkIHNy
Y0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKLSAgICBpbnQgc3RyaWRlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZSk7CisgICAgaW50IHN0
cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZhY2UuZ2V0KCkp
OwogCiAgICAgdW5zaWduZWQgY2hhciogc3JjUm93cyA9IHNvdXJjZS0+ZGF0YSgpICsgb3JpZ2lu
eSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkg
PCBudW1Sb3dzOyArK3kpIHsKLSAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPHVuc2lnbmVkKj4oZGF0YURzdCArIHN0cmlkZSAqICh5ICsgZGVzdHkpKTsKKyAgICAg
ICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4ocGl4ZWxE
YXRhICsgc3RyaWRlICogKHkgKyBkZXN0eSkpOwogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IG51bUNvbHVtbnM7IHgrKykgewogICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7CiAgICAg
ICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4ICsgZGVzdHg7CkBAIC0zNjIsNyArMzU0
LDEwIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVk
LCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0
ZXNQZXJSb3c7CiAgICAgfQogCi0gICAgdW5tYXBTdXJmYWNlRnJvbUltYWdlKG1fZGF0YS5tX3N1
cmZhY2UuZ2V0KCksIGltYWdlU3VyZmFjZSwgSW50UmVjdChkZXN0eCwgZGVzdHksIG51bUNvbHVt
bnMsIG51bVJvd3MpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKGlt
YWdlU3VyZmFjZS5nZXQoKSwgZGVzdHgsIGRlc3R5LCBudW1Db2x1bW5zLCBudW1Sb3dzKTsKKwor
ICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gbV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkKKyAgICAgICAg
Y29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihpbWFnZVN1cmZhY2UuZ2V0KCksIG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIEludFNpemUoKSwgSW50UmVjdCgwLCAwLCBudW1Db2x1bW5zLCBu
dW1Sb3dzKSwgSW50U2l6ZShkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIGRlc3RQb2lu
dC55KCkgKyBzb3VyY2VSZWN0LnkoKSksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CiB9CiAKICNp
ZiAhUExBVEZPUk0oR1RLKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>