<?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>101804</bug_id>
          
          <creation_ts>2012-11-09 15:04:44 -0800</creation_ts>
          <short_desc>Extend JavaScript support for blending in canvas</short_desc>
          <delta_ts>2012-12-02 04:23:25 -0800</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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100069</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rik Cabanier">cabanier</reporter>
          <assigned_to name="Rik Cabanier">cabanier</assigned_to>
          <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763378</commentid>
    <comment_count>0</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-11-09 15:04:44 -0800</bug_when>
    <thetext>This patch will add JS support to the globalComposite operator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763416</commentid>
    <comment_count>1</comment_count>
      <attachid>173388</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-11-09 16:03:40 -0800</bug_when>
    <thetext>Created attachment 173388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763678</commentid>
    <comment_count>2</comment_count>
      <attachid>173458</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-11-10 10:30:49 -0800</bug_when>
    <thetext>Created attachment 173458
Fixed testfile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780506</commentid>
    <comment_count>3</comment_count>
      <attachid>173458</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-30 15:57:58 -0800</bug_when>
    <thetext>Comment on attachment 173458
Fixed testfile

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

A general question. Did we agree on the mailing list to just support one entry on &quot;globalCompositeOperator&quot; for now? I think so, but am not sure. The patch looks great in general. Just some snippets.

&gt; Source/WebCore/html/HTMLImageElement.cpp:180
&gt; +        if (!parseCompositeAndBlendOperator(attribute.value(), m_compositeOperator, blendOp))

why isn&apos;t blenOp a member variable as well? Do we may add this here in the future? If so, can you add a FIXME here?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1562
&gt; +    if (!parseCompositeAndBlendOperator(compositeOperation, op, blendOp) || (blendOp != BlendModeNormal))

I think you can omit the braces around blendOp != BlendModeNormal

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:46
&gt;      &quot;darker&quot;,

Add the copy right in this file.

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:73
&gt;      for (int i = 0; i &lt; numCompositeOperatorNames; i++)
&gt;          if (s == compositeOperatorNames[i]) {

braces around multi line loops and conditions.

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:77
&gt; +            blendOp = BlendModeNormal;
&gt; +            return true;
&gt; +        }

If the plans was to support both types together in the future, you should maybe add a comment that explains it. Otherwise there might be questions why not put it in the same array.

&gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:79
&gt; +    for (int i = 0; i &lt; numBlendOperatorNames; i++)
&gt; +        if (s == blendOperatorNames[i]) {

braces.

&gt; Source/WebCore/platform/graphics/GraphicsTypes.h:85
&gt; +    String compositeOperatorName(CompositeOperator, BlendMode);

Does it make sense to add two methods, one for compositor and one for the blend mode? I guess you want to optimize it for now, where we have all modes in one list.

&gt; LayoutTests/canvas/philip/tests/2d.composite.globalComposite.html:18
&gt; +_addTest(function(canvas, ctx) {
&gt; +var compModes = [ &quot;clear&quot;, &quot;copy&quot;, &quot;source-over&quot;, &quot;destination-over&quot;, &quot;source-in&quot;, &quot;destination-in&quot;, &quot;source-out&quot;, &quot;destination-out&quot;, &quot;source-atop&quot;, &quot;destination-atop&quot;, &quot;xor&quot;, &quot;lighter&quot;, &quot;multiply&quot;, &quot;screen&quot;, &quot;overlay&quot;, &quot;darken&quot;, &quot;lighten&quot;, &quot;color-dodge&quot;, &quot;color-burn&quot;, &quot;hard-light&quot;, &quot;soft-light&quot;, &quot;difference&quot;, &quot;exclusion&quot;, &quot;hue&quot;, &quot;saturation&quot;, &quot;color&quot;, &quot;luminosity&quot;];
&gt; +for (var i = 0; i &lt; compModes.length; i++) {
&gt; +    ctx.globalCompositeOperation = compModes[i];
&gt; +    _assertEqual(ctx.globalCompositeOperation, compModes[i], &quot;ctx.globalAlpha&quot;, &quot;compModes[i]&quot;);
&gt; +}

I like tests that state all tested modes in the expectation file. This makes it easier to debug failures and to see changes on blend modes and compositing modes (like name changes) faster. Can you add these kind of tests? Please use the scripts in fast/resources for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780563</commentid>
    <comment_count>4</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-11-30 17:10:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 173458 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173458&amp;action=review
&gt; 
&gt; A general question. Did we agree on the mailing list to just support one entry on &quot;globalCompositeOperator&quot; for now? I think so, but am not sure. The patch looks great in general. Just some snippets.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLImageElement.cpp:180
&gt; &gt; +        if (!parseCompositeAndBlendOperator(attribute.value(), m_compositeOperator, blendOp))
&gt; 
&gt; why isn&apos;t blenOp a member variable as well? Do we may add this here in the future? If so, can you add a FIXME here?

Added the fixme. I&apos;m not changing the logic of the webkit specific compositing keyword on images.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1562
&gt; &gt; +    if (!parseCompositeAndBlendOperator(compositeOperation, op, blendOp) || (blendOp != BlendModeNormal))
&gt; 
&gt; I think you can omit the braces around blendOp != BlendModeNormal

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:46
&gt; &gt;      &quot;darker&quot;,
&gt; 
&gt; Add the copy right in this file.

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:73
&gt; &gt;      for (int i = 0; i &lt; numCompositeOperatorNames; i++)
&gt; &gt;          if (s == compositeOperatorNames[i]) {
&gt; 
&gt; braces around multi line loops and conditions.

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:77
&gt; &gt; +            blendOp = BlendModeNormal;
&gt; &gt; +            return true;
&gt; &gt; +        }
&gt; 
&gt; If the plans was to support both types together in the future, you should maybe add a comment that explains it. Otherwise there might be questions why not put it in the same array.

Added comment

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsTypes.cpp:79
&gt; &gt; +    for (int i = 0; i &lt; numBlendOperatorNames; i++)
&gt; &gt; +        if (s == blendOperatorNames[i]) {
&gt; 
&gt; braces.

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsTypes.h:85
&gt; &gt; +    String compositeOperatorName(CompositeOperator, BlendMode);
&gt; 
&gt; Does it make sense to add two methods, one for compositor and one for the blend mode? I guess you want to optimize it for now, where we have all modes in one list.

I think it should always be one method, but it should be extended once we support more than source-over with blending

&gt; 
&gt; &gt; LayoutTests/canvas/philip/tests/2d.composite.globalComposite.html:18
&gt; &gt; +_addTest(function(canvas, ctx) {
&gt; &gt; +var compModes = [ &quot;clear&quot;, &quot;copy&quot;, &quot;source-over&quot;, &quot;destination-over&quot;, &quot;source-in&quot;, &quot;destination-in&quot;, &quot;source-out&quot;, &quot;destination-out&quot;, &quot;source-atop&quot;, &quot;destination-atop&quot;, &quot;xor&quot;, &quot;lighter&quot;, &quot;multiply&quot;, &quot;screen&quot;, &quot;overlay&quot;, &quot;darken&quot;, &quot;lighten&quot;, &quot;color-dodge&quot;, &quot;color-burn&quot;, &quot;hard-light&quot;, &quot;soft-light&quot;, &quot;difference&quot;, &quot;exclusion&quot;, &quot;hue&quot;, &quot;saturation&quot;, &quot;color&quot;, &quot;luminosity&quot;];
&gt; &gt; +for (var i = 0; i &lt; compModes.length; i++) {
&gt; &gt; +    ctx.globalCompositeOperation = compModes[i];
&gt; &gt; +    _assertEqual(ctx.globalCompositeOperation, compModes[i], &quot;ctx.globalAlpha&quot;, &quot;compModes[i]&quot;);
&gt; &gt; +}
&gt; 
&gt; I like tests that state all tested modes in the expectation file. This makes it easier to debug failures and to see changes on blend modes and compositing modes (like name changes) faster. Can you add these kind of tests? Please use the scripts in fast/resources for that.

none of the canvas tests do this. Almost all of them are just &apos;success&apos;
The ones that don&apos;t are testing for a faiure. (I think there&apos;s only 1 that has a positive test and is not &apos;success&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780636</commentid>
    <comment_count>5</comment_count>
      <attachid>177080</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-11-30 21:42:19 -0800</bug_when>
    <thetext>Created attachment 177080
Fixed test file and addressed krit&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780638</commentid>
    <comment_count>6</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-11-30 21:44:23 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 173458 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173458&amp;action=review
&gt; 
&gt; A general question. Did we agree on the mailing list to just support one entry on &quot;globalCompositeOperator&quot; for now? I think so, but am not sure. The patch looks great in general. 

Yes. 
globalCompositeOperator will match the definition of &apos;mix&apos; and will support both blending and composting for canvas.
see: https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#canvascompositingandblending</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780642</commentid>
    <comment_count>7</comment_count>
      <attachid>177080</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-30 22:02:04 -0800</bug_when>
    <thetext>Comment on attachment 177080
Fixed test file and addressed krit&apos;s comments

LGTM. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780920</commentid>
    <comment_count>8</comment_count>
      <attachid>177080</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 04:23:22 -0800</bug_when>
    <thetext>Comment on attachment 177080
Fixed test file and addressed krit&apos;s comments

Clearing flags on attachment: 177080

Committed r136337: &lt;http://trac.webkit.org/changeset/136337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780921</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 04:23:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173388</attachid>
            <date>2012-11-09 16:03:40 -0800</date>
            <delta_ts>2012-11-10 10:30:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101804-20121109160146.patch</filename>
            <type>text/plain</type>
            <size>10775</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTA5ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEphdmFTY3JpcHQg
c3VwcG9ydCBmb3IgYmxlbmRpbmcgaW4gY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzaW5nIGNvZGUgYW5kIHZhcmlhYmxlcyB0
byBzdXBwb3J0IGFkZGl0aW9uYWwgY2FudmFzIGJsZW5kIG1vZGVzCisgICAgICAgIHNlZSBzcGVj
OiBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3ZmlsZS90aXAvY29tcG9zaXRpbmcvaW5k
ZXguaHRtbCNjYW52YXNjb21wb3NpdGluZ2FuZGJsZW5kaW5nCisKKyAgICAgICAgVGVzdDogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQ29tcG9zaXRlLmh0bWwKKworICAg
ICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Omdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEdsb2JhbENvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdJbWFnZUZyb21SZWN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaDoKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBvc2l0ZU9wZXJhdG9yTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5oOgorCiAyMDEyLTExLTA5ICBUaWVuLVJlbiBDaGVuICA8dHJjaGVuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBDb3JyZWN0IHNjcm9sbCBhZGp1c3RtZW50IGZvciB0b3VjaEV2
ZW50LmNsaWVudFgvY2xpZW50WQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxMzQxMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDggQEAgdm9pZCBI
VE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjbwogICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwogICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1l
KCkgPT0gY29tcG9zaXRlQXR0cikgewotICAgICAgICBpZiAoIXBhcnNlQ29tcG9zaXRlT3BlcmF0
b3IoYXR0cmlidXRlLnZhbHVlKCksIG1fY29tcG9zaXRlT3BlcmF0b3IpKQorICAgICAgICBCbGVu
ZE1vZGUgYmxlbmRPcCA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICAgICAgaWYgKCFwYXJzZUNvbXBv
c2l0ZUFuZEJsZW5kT3BlcmF0b3IoYXR0cmlidXRlLnZhbHVlKCksIG1fY29tcG9zaXRlT3BlcmF0
b3IsIGJsZW5kT3ApKQogICAgICAgICAgICAgbV9jb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXI7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShhdHRyaWJ1dGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMzQxMTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpTdGF0ZTo6U3RhdGUoKQogICAgICwgbV9zaGFkb3dDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpCiAgICAgLCBtX2dsb2JhbEFscGhhKDEpCiAgICAgLCBtX2dsb2JhbENvbXBvc2l0ZShDb21w
b3NpdGVTb3VyY2VPdmVyKQorICAgICwgbV9nbG9iYWxCbGVuZChCbGVuZE1vZGVOb3JtYWwpCiAg
ICAgLCBtX2ludmVydGlibGVDVE0odHJ1ZSkKICAgICAsIG1fbGluZURhc2hPZmZzZXQoMCkKICAg
ICAsIG1faW1hZ2VTbW9vdGhpbmdFbmFibGVkKHRydWUpCkBAIC0yMDcsNiArMjA4LDcgQEAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUoYwogICAgICwgbV9zaGFkb3dDb2xv
cihvdGhlci5tX3NoYWRvd0NvbG9yKQogICAgICwgbV9nbG9iYWxBbHBoYShvdGhlci5tX2dsb2Jh
bEFscGhhKQogICAgICwgbV9nbG9iYWxDb21wb3NpdGUob3RoZXIubV9nbG9iYWxDb21wb3NpdGUp
CisgICAgLCBtX2dsb2JhbEJsZW5kKG90aGVyLm1fZ2xvYmFsQmxlbmQpCiAgICAgLCBtX3RyYW5z
Zm9ybShvdGhlci5tX3RyYW5zZm9ybSkKICAgICAsIG1faW52ZXJ0aWJsZUNUTShvdGhlci5tX2lu
dmVydGlibGVDVE0pCiAgICAgLCBtX2xpbmVEYXNoT2Zmc2V0KG90aGVyLm1fbGluZURhc2hPZmZz
ZXQpCkBAIC0yNDIsNiArMjQ0LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZSYg
Q2FudmFzUgogICAgIG1fc2hhZG93Q29sb3IgPSBvdGhlci5tX3NoYWRvd0NvbG9yOwogICAgIG1f
Z2xvYmFsQWxwaGEgPSBvdGhlci5tX2dsb2JhbEFscGhhOwogICAgIG1fZ2xvYmFsQ29tcG9zaXRl
ID0gb3RoZXIubV9nbG9iYWxDb21wb3NpdGU7CisgICAgbV9nbG9iYWxCbGVuZCA9IG90aGVyLm1f
Z2xvYmFsQmxlbmQ7CiAgICAgbV90cmFuc2Zvcm0gPSBvdGhlci5tX3RyYW5zZm9ybTsKICAgICBt
X2ludmVydGlibGVDVE0gPSBvdGhlci5tX2ludmVydGlibGVDVE07CiAgICAgbV9pbWFnZVNtb290
aGluZ0VuYWJsZWQgPSBvdGhlci5tX2ltYWdlU21vb3RoaW5nRW5hYmxlZDsKQEAgLTYwNSwxOCAr
NjA4LDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRHbG9iYWwKIAogU3Ry
aW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29tcG9zaXRlT3BlcmF0b3JOYW1lKHN0YXRlKCkubV9nbG9i
YWxDb21wb3NpdGUpOworICAgIHJldHVybiBjb21wb3NpdGVPcGVyYXRvck5hbWUoc3RhdGUoKS5t
X2dsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5tX2dsb2JhbEJsZW5kKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbihjb25zdCBT
dHJpbmcmIG9wZXJhdGlvbikKIHsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBvcDsKLSAgICBpZiAo
IXBhcnNlQ29tcG9zaXRlT3BlcmF0b3Iob3BlcmF0aW9uLCBvcCkpCisgICAgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AgPSBDb21wb3NpdGVTb3VyY2VPdmVyOworICAgIEJsZW5kTW9kZSBibGVuZE9wID0g
QmxlbmRNb2RlTm9ybWFsOworICAgIGlmICghcGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9y
KG9wZXJhdGlvbiwgb3AsIGJsZW5kT3ApKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHN0YXRl
KCkubV9nbG9iYWxDb21wb3NpdGUgPT0gb3ApCisgICAgaWYgKChzdGF0ZSgpLm1fZ2xvYmFsQ29t
cG9zaXRlID09IG9wKSAmJiAoc3RhdGUoKS5tX2dsb2JhbEJsZW5kID09IGJsZW5kT3ApKQogICAg
ICAgICByZXR1cm47CiAgICAgcmVhbGl6ZVNhdmVzKCk7CiAgICAgbW9kaWZpYWJsZVN0YXRlKCku
bV9nbG9iYWxDb21wb3NpdGUgPSBvcDsKKyAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2dsb2JhbEJs
ZW5kID0gYmxlbmRPcDsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgp
OwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwpAQCAtMTU1Myw3ICsxNTU4LDggQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZQogICAgIGNvbnN0IFN0cmluZyYg
Y29tcG9zaXRlT3BlcmF0aW9uKQogewogICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wOwotICAgIGlm
ICghcGFyc2VDb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24sIG9wKSkKKyAgICBC
bGVuZE1vZGUgYmxlbmRPcCA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICBpZiAoIXBhcnNlQ29tcG9z
aXRlQW5kQmxlbmRPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24sIG9wLCBibGVuZE9wKSB8fCAo
YmxlbmRPcCAhPSBCbGVuZE1vZGVOb3JtYWwpKQogICAgICAgICBvcCA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXI7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9u
IDEzNDExOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgUkdCQTMyIG1fc2hhZG93Q29sb3I7CiAgICAgICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7
CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fZ2xvYmFsQ29tcG9zaXRlOworICAgICAgICBC
bGVuZE1vZGUgbV9nbG9iYWxCbGVuZDsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNm
b3JtOwogICAgICAgICBib29sIG1faW52ZXJ0aWJsZUNUTTsKICAgICAgICAgVmVjdG9yPGZsb2F0
PiBtX2xpbmVEYXNoOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHJldmlzaW9uIDEzNDExOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NiwyMiArNDYsNTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9wZXJh
dAogICAgICJkYXJrZXIiLAogICAgICJsaWdodGVyIgogfTsKKworc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGJsZW5kT3BlcmF0b3JOYW1lc1tdID0geworICAgICJtdWx0aXBseSIsCisgICAgInNj
cmVlbiIsCisgICAgIm92ZXJsYXkiLAorICAgICJkYXJrZW4iLAorICAgICJsaWdodGVuIiwKKyAg
ICAiY29sb3ItZG9kZ2UiLAorICAgICJjb2xvci1idXJuIiwKKyAgICAiaGFyZC1saWdodCIsCisg
ICAgInNvZnQtbGlnaHQiLAorICAgICJkaWZmZXJlbmNlIiwKKyAgICAiZXhjbHVzaW9uIiwKKyAg
ICAiaHVlIiwKKyAgICAic2F0dXJhdGlvbiIsCisgICAgImNvbG9yIiwKKyAgICAibHVtaW5vc2l0
eSIKK307CiBjb25zdCBpbnQgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lcyA9IFdURl9BUlJBWV9M
RU5HVEgoY29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7Citjb25zdCBpbnQgbnVtQmxlbmRPcGVyYXRv
ck5hbWVzID0gV1RGX0FSUkFZX0xFTkdUSChibGVuZE9wZXJhdG9yTmFtZXMpOwogCi1ib29sIHBh
cnNlQ29tcG9zaXRlT3BlcmF0b3IoY29uc3QgU3RyaW5nJiBzLCBDb21wb3NpdGVPcGVyYXRvciYg
b3ApCitib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmIHMs
IENvbXBvc2l0ZU9wZXJhdG9yJiBvcCwgQmxlbmRNb2RlJiBibGVuZE9wKQogewogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lczsgaSsrKQogICAgICAgICBp
ZiAocyA9PSBjb21wb3NpdGVPcGVyYXRvck5hbWVzW2ldKSB7CiAgICAgICAgICAgICBvcCA9IHN0
YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihpKTsKKyAgICAgICAgICAgIGJsZW5kT3AgPSBC
bGVuZE1vZGVOb3JtYWw7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQmxlbmRPcGVyYXRvck5hbWVzOyBpKyspCisgICAgICAg
IGlmIChzID09IGJsZW5kT3BlcmF0b3JOYW1lc1tpXSkgeworICAgICAgICAgICAgYmxlbmRPcCA9
IHN0YXRpY19jYXN0PEJsZW5kTW9kZT4oaSsxKTsKKyAgICAgICAgICAgIG9wID0gQ29tcG9zaXRl
U291cmNlT3ZlcjsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKQorU3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kT3ApCiB7CiAgICAgQVNTRVJUKG9wID49IDApOwogICAgIEFT
U0VSVChvcCA8IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOworICAgIEFTU0VSVChibGVuZE9w
ID49IDApOworICAgIEFTU0VSVChibGVuZE9wIDw9IG51bUJsZW5kT3BlcmF0b3JOYW1lcyk7Cisg
ICAgaWYgKGJsZW5kT3AgIT0gQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICByZXR1cm4gYmxlbmRP
cGVyYXRvck5hbWVzW2JsZW5kT3AtMV07CiAgICAgcmV0dXJuIGNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZXNbb3BdOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlcy5oCShyZXZpc2lvbiAxMzQxMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDgg
KzgyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGVudW0gVGV4dEFsaWduIHsg
U3RhcnRUZXh0QWxpZ24sIEVuZFRleHRBbGlnbiwgTGVmdFRleHRBbGlnbiwgQ2VudGVyVGV4dEFs
aWduLCBSaWdodFRleHRBbGlnbiB9OwogCi0gICAgU3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZShDb21wb3NpdGVPcGVyYXRvcik7Ci0gICAgYm9vbCBwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNv
bnN0IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJhdG9yJik7CisgICAgU3RyaW5nIGNvbXBvc2l0ZU9w
ZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKKyAgICBib29sIHBhcnNl
Q29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBDb21wb3NpdGVPcGVyYXRv
ciYsIEJsZW5kTW9kZSYpOwogCiAgICAgU3RyaW5nIGxpbmVDYXBOYW1lKExpbmVDYXApOwogICAg
IGJvb2wgcGFyc2VMaW5lQ2FwKGNvbnN0IFN0cmluZyYsIExpbmVDYXAmKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNDEyOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTExLTA5ICBSaWsgQ2FiYW5pZXIgIDxjYWJhbmllckBhZG9i
ZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEphdmFTY3JpcHQgc3VwcG9ydCBmb3IgYmxlbmRpbmcg
aW4gY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDE4MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhbGwgYmxlbmRpbmdtb2RlcyBhcmUgc3Vw
cG9ydGVkCisKKyAgICAgICAgKiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS5nbG9i
YWxDb21wb3NpdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmNvbXBvc2l0ZS5nbG9iYWxDb21wb3NpdGUuaHRtbDogQWRkZWQuCisKIDIwMTIt
MTEtMDkgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENv
cnJlY3Qgc2Nyb2xsIGFkanVzdG1lbnQgZm9yIHRvdWNoRXZlbnQuY2xpZW50WC9jbGllbnRZCklu
ZGV4OiBMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS5nbG9iYWxD
b21wb3NpdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLmdsb2JhbENvbXBvc2l0ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0
ZS5nbG9iYWxDb21wb3NpdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQuY29tcG9z
aXRlLmdsb2JhbENvbXBvc2l0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NhbnZh
cy9waGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLmdsb2JhbENvbXBvc2l0ZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xv
YmFsQ29tcG9zaXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEucmFu
Z2U8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uL3Rlc3RzLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vdGVzdHMuY3NzIj4KKzxib2R5PgorPHAgaWQ9InBhc3N0
ZXh0Ij5QYXNzPC9wPgorPHAgaWQ9ImZhaWx0ZXh0Ij5GYWlsPC9wPgorPHAgY2xhc3M9Im91dHB1
dCI+VGhlc2UgaW1hZ2VzIHNob3VsZCBiZSBpZGVudGljYWw6PC9wPgorPGNhbnZhcyBpZD0iYyIg
Y2xhc3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHAgY2xhc3M9ImZhbGxiYWNr
Ij5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKworPHVsIGlkPSJkIj48L3Vs
PgorPHNjcmlwdD4KK19hZGRUZXN0KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7Cit2YXIgY29tcE1v
ZGVzID0gWyAiY2xlYXIiLCAiY29weSIsICJkZXN0aW5hdGlvbiIsICJzb3VyY2Utb3ZlciIsICJk
ZXN0aW5hdGlvbi1vdmVyIiwgInNvdXJjZS1pbiIsICJkZXN0aW5hdGlvbi1pbiIsICJzb3VyY2Ut
b3V0IiwgImRlc3RpbmF0aW9uLW91dCIsICJzb3VyY2UtYXRvcCIsICJkZXN0aW5hdGlvbi1hdG9w
IiwgInhvciIsICJsaWdodGVyIiwgIm11bHRpcGx5IiwgInNjcmVlbiIsICJvdmVybGF5IiwgImRh
cmtlbiIsICJsaWdodGVuIiwgImNvbG9yLWRvZGdlIiwgImNvbG9yLWJ1cm4iLCAiaGFyZC1saWdo
dCIsICJzb2Z0LWxpZ2h0IiwgImRpZmZlcmVuY2UiLCAiZXhjbHVzaW9uIiwgImh1ZSIsICJzYXR1
cmF0aW9uIiwgImNvbG9yIiwgImx1bWlub3NpdHkiXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgY29t
cE1vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZSA9IGNvbXBNb2Rl
c1tpXTsKKyAgICBfYXNzZXJ0RXF1YWwoY3R4Lmdsb2JhbENvbXBvc2l0ZSwgY29tcE1vZGVzW2ld
LCAiY3R4Lmdsb2JhbEFscGhhIiwgImNvbXBNb2Rlc1tpXSIpOworfQorfSk7Cis8L3NjcmlwdD4K
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173458</attachid>
            <date>2012-11-10 10:30:49 -0800</date>
            <delta_ts>2012-11-30 21:42:17 -0800</delta_ts>
            <desc>Fixed testfile</desc>
            <filename>bug-101804-20121110102856.patch</filename>
            <type>text/plain</type>
            <size>10778</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTA5ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEphdmFTY3JpcHQg
c3VwcG9ydCBmb3IgYmxlbmRpbmcgaW4gY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzaW5nIGNvZGUgYW5kIHZhcmlhYmxlcyB0
byBzdXBwb3J0IGFkZGl0aW9uYWwgY2FudmFzIGJsZW5kIG1vZGVzCisgICAgICAgIHNlZSBzcGVj
OiBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3ZmlsZS90aXAvY29tcG9zaXRpbmcvaW5k
ZXguaHRtbCNjYW52YXNjb21wb3NpdGluZ2FuZGJsZW5kaW5nCisKKyAgICAgICAgVGVzdDogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQ29tcG9zaXRlLmh0bWwKKworICAg
ICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Omdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEdsb2JhbENvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdJbWFnZUZyb21SZWN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaDoKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBvc2l0ZU9wZXJhdG9yTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5oOgorCiAyMDEyLTExLTA5ICBUaWVuLVJlbiBDaGVuICA8dHJjaGVuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBDb3JyZWN0IHNjcm9sbCBhZGp1c3RtZW50IGZvciB0b3VjaEV2
ZW50LmNsaWVudFgvY2xpZW50WQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxMzQxMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDggQEAgdm9pZCBI
VE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjbwogICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwogICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1l
KCkgPT0gY29tcG9zaXRlQXR0cikgewotICAgICAgICBpZiAoIXBhcnNlQ29tcG9zaXRlT3BlcmF0
b3IoYXR0cmlidXRlLnZhbHVlKCksIG1fY29tcG9zaXRlT3BlcmF0b3IpKQorICAgICAgICBCbGVu
ZE1vZGUgYmxlbmRPcCA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICAgICAgaWYgKCFwYXJzZUNvbXBv
c2l0ZUFuZEJsZW5kT3BlcmF0b3IoYXR0cmlidXRlLnZhbHVlKCksIG1fY29tcG9zaXRlT3BlcmF0
b3IsIGJsZW5kT3ApKQogICAgICAgICAgICAgbV9jb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXI7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShhdHRyaWJ1dGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMzQxMTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpTdGF0ZTo6U3RhdGUoKQogICAgICwgbV9zaGFkb3dDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpCiAgICAgLCBtX2dsb2JhbEFscGhhKDEpCiAgICAgLCBtX2dsb2JhbENvbXBvc2l0ZShDb21w
b3NpdGVTb3VyY2VPdmVyKQorICAgICwgbV9nbG9iYWxCbGVuZChCbGVuZE1vZGVOb3JtYWwpCiAg
ICAgLCBtX2ludmVydGlibGVDVE0odHJ1ZSkKICAgICAsIG1fbGluZURhc2hPZmZzZXQoMCkKICAg
ICAsIG1faW1hZ2VTbW9vdGhpbmdFbmFibGVkKHRydWUpCkBAIC0yMDcsNiArMjA4LDcgQEAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUoYwogICAgICwgbV9zaGFkb3dDb2xv
cihvdGhlci5tX3NoYWRvd0NvbG9yKQogICAgICwgbV9nbG9iYWxBbHBoYShvdGhlci5tX2dsb2Jh
bEFscGhhKQogICAgICwgbV9nbG9iYWxDb21wb3NpdGUob3RoZXIubV9nbG9iYWxDb21wb3NpdGUp
CisgICAgLCBtX2dsb2JhbEJsZW5kKG90aGVyLm1fZ2xvYmFsQmxlbmQpCiAgICAgLCBtX3RyYW5z
Zm9ybShvdGhlci5tX3RyYW5zZm9ybSkKICAgICAsIG1faW52ZXJ0aWJsZUNUTShvdGhlci5tX2lu
dmVydGlibGVDVE0pCiAgICAgLCBtX2xpbmVEYXNoT2Zmc2V0KG90aGVyLm1fbGluZURhc2hPZmZz
ZXQpCkBAIC0yNDIsNiArMjQ0LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZSYg
Q2FudmFzUgogICAgIG1fc2hhZG93Q29sb3IgPSBvdGhlci5tX3NoYWRvd0NvbG9yOwogICAgIG1f
Z2xvYmFsQWxwaGEgPSBvdGhlci5tX2dsb2JhbEFscGhhOwogICAgIG1fZ2xvYmFsQ29tcG9zaXRl
ID0gb3RoZXIubV9nbG9iYWxDb21wb3NpdGU7CisgICAgbV9nbG9iYWxCbGVuZCA9IG90aGVyLm1f
Z2xvYmFsQmxlbmQ7CiAgICAgbV90cmFuc2Zvcm0gPSBvdGhlci5tX3RyYW5zZm9ybTsKICAgICBt
X2ludmVydGlibGVDVE0gPSBvdGhlci5tX2ludmVydGlibGVDVE07CiAgICAgbV9pbWFnZVNtb290
aGluZ0VuYWJsZWQgPSBvdGhlci5tX2ltYWdlU21vb3RoaW5nRW5hYmxlZDsKQEAgLTYwNSwxOCAr
NjA4LDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRHbG9iYWwKIAogU3Ry
aW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29tcG9zaXRlT3BlcmF0b3JOYW1lKHN0YXRlKCkubV9nbG9i
YWxDb21wb3NpdGUpOworICAgIHJldHVybiBjb21wb3NpdGVPcGVyYXRvck5hbWUoc3RhdGUoKS5t
X2dsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5tX2dsb2JhbEJsZW5kKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbihjb25zdCBT
dHJpbmcmIG9wZXJhdGlvbikKIHsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBvcDsKLSAgICBpZiAo
IXBhcnNlQ29tcG9zaXRlT3BlcmF0b3Iob3BlcmF0aW9uLCBvcCkpCisgICAgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AgPSBDb21wb3NpdGVTb3VyY2VPdmVyOworICAgIEJsZW5kTW9kZSBibGVuZE9wID0g
QmxlbmRNb2RlTm9ybWFsOworICAgIGlmICghcGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9y
KG9wZXJhdGlvbiwgb3AsIGJsZW5kT3ApKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHN0YXRl
KCkubV9nbG9iYWxDb21wb3NpdGUgPT0gb3ApCisgICAgaWYgKChzdGF0ZSgpLm1fZ2xvYmFsQ29t
cG9zaXRlID09IG9wKSAmJiAoc3RhdGUoKS5tX2dsb2JhbEJsZW5kID09IGJsZW5kT3ApKQogICAg
ICAgICByZXR1cm47CiAgICAgcmVhbGl6ZVNhdmVzKCk7CiAgICAgbW9kaWZpYWJsZVN0YXRlKCku
bV9nbG9iYWxDb21wb3NpdGUgPSBvcDsKKyAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2dsb2JhbEJs
ZW5kID0gYmxlbmRPcDsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgp
OwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwpAQCAtMTU1Myw3ICsxNTU4LDggQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZQogICAgIGNvbnN0IFN0cmluZyYg
Y29tcG9zaXRlT3BlcmF0aW9uKQogewogICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wOwotICAgIGlm
ICghcGFyc2VDb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24sIG9wKSkKKyAgICBC
bGVuZE1vZGUgYmxlbmRPcCA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICBpZiAoIXBhcnNlQ29tcG9z
aXRlQW5kQmxlbmRPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24sIG9wLCBibGVuZE9wKSB8fCAo
YmxlbmRPcCAhPSBCbGVuZE1vZGVOb3JtYWwpKQogICAgICAgICBvcCA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXI7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9u
IDEzNDExOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgUkdCQTMyIG1fc2hhZG93Q29sb3I7CiAgICAgICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7
CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fZ2xvYmFsQ29tcG9zaXRlOworICAgICAgICBC
bGVuZE1vZGUgbV9nbG9iYWxCbGVuZDsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNm
b3JtOwogICAgICAgICBib29sIG1faW52ZXJ0aWJsZUNUTTsKICAgICAgICAgVmVjdG9yPGZsb2F0
PiBtX2xpbmVEYXNoOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHJldmlzaW9uIDEzNDExOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NiwyMiArNDYsNTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9wZXJh
dAogICAgICJkYXJrZXIiLAogICAgICJsaWdodGVyIgogfTsKKworc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGJsZW5kT3BlcmF0b3JOYW1lc1tdID0geworICAgICJtdWx0aXBseSIsCisgICAgInNj
cmVlbiIsCisgICAgIm92ZXJsYXkiLAorICAgICJkYXJrZW4iLAorICAgICJsaWdodGVuIiwKKyAg
ICAiY29sb3ItZG9kZ2UiLAorICAgICJjb2xvci1idXJuIiwKKyAgICAiaGFyZC1saWdodCIsCisg
ICAgInNvZnQtbGlnaHQiLAorICAgICJkaWZmZXJlbmNlIiwKKyAgICAiZXhjbHVzaW9uIiwKKyAg
ICAiaHVlIiwKKyAgICAic2F0dXJhdGlvbiIsCisgICAgImNvbG9yIiwKKyAgICAibHVtaW5vc2l0
eSIKK307CiBjb25zdCBpbnQgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lcyA9IFdURl9BUlJBWV9M
RU5HVEgoY29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7Citjb25zdCBpbnQgbnVtQmxlbmRPcGVyYXRv
ck5hbWVzID0gV1RGX0FSUkFZX0xFTkdUSChibGVuZE9wZXJhdG9yTmFtZXMpOwogCi1ib29sIHBh
cnNlQ29tcG9zaXRlT3BlcmF0b3IoY29uc3QgU3RyaW5nJiBzLCBDb21wb3NpdGVPcGVyYXRvciYg
b3ApCitib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmIHMs
IENvbXBvc2l0ZU9wZXJhdG9yJiBvcCwgQmxlbmRNb2RlJiBibGVuZE9wKQogewogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lczsgaSsrKQogICAgICAgICBp
ZiAocyA9PSBjb21wb3NpdGVPcGVyYXRvck5hbWVzW2ldKSB7CiAgICAgICAgICAgICBvcCA9IHN0
YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihpKTsKKyAgICAgICAgICAgIGJsZW5kT3AgPSBC
bGVuZE1vZGVOb3JtYWw7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQmxlbmRPcGVyYXRvck5hbWVzOyBpKyspCisgICAgICAg
IGlmIChzID09IGJsZW5kT3BlcmF0b3JOYW1lc1tpXSkgeworICAgICAgICAgICAgYmxlbmRPcCA9
IHN0YXRpY19jYXN0PEJsZW5kTW9kZT4oaSsxKTsKKyAgICAgICAgICAgIG9wID0gQ29tcG9zaXRl
U291cmNlT3ZlcjsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKQorU3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kT3ApCiB7CiAgICAgQVNTRVJUKG9wID49IDApOwogICAgIEFT
U0VSVChvcCA8IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOworICAgIEFTU0VSVChibGVuZE9w
ID49IDApOworICAgIEFTU0VSVChibGVuZE9wIDw9IG51bUJsZW5kT3BlcmF0b3JOYW1lcyk7Cisg
ICAgaWYgKGJsZW5kT3AgIT0gQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICByZXR1cm4gYmxlbmRP
cGVyYXRvck5hbWVzW2JsZW5kT3AtMV07CiAgICAgcmV0dXJuIGNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZXNbb3BdOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlcy5oCShyZXZpc2lvbiAxMzQxMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDgg
KzgyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGVudW0gVGV4dEFsaWduIHsg
U3RhcnRUZXh0QWxpZ24sIEVuZFRleHRBbGlnbiwgTGVmdFRleHRBbGlnbiwgQ2VudGVyVGV4dEFs
aWduLCBSaWdodFRleHRBbGlnbiB9OwogCi0gICAgU3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZShDb21wb3NpdGVPcGVyYXRvcik7Ci0gICAgYm9vbCBwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNv
bnN0IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJhdG9yJik7CisgICAgU3RyaW5nIGNvbXBvc2l0ZU9w
ZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKKyAgICBib29sIHBhcnNl
Q29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBDb21wb3NpdGVPcGVyYXRv
ciYsIEJsZW5kTW9kZSYpOwogCiAgICAgU3RyaW5nIGxpbmVDYXBOYW1lKExpbmVDYXApOwogICAg
IGJvb2wgcGFyc2VMaW5lQ2FwKGNvbnN0IFN0cmluZyYsIExpbmVDYXAmKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNDEyOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTExLTA5ICBSaWsgQ2FiYW5pZXIgIDxjYWJhbmllckBhZG9i
ZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEphdmFTY3JpcHQgc3VwcG9ydCBmb3IgYmxlbmRpbmcg
aW4gY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDE4MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhbGwgYmxlbmRpbmdtb2RlcyBhcmUgc3Vw
cG9ydGVkCisKKyAgICAgICAgKiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS5nbG9i
YWxDb21wb3NpdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmNvbXBvc2l0ZS5nbG9iYWxDb21wb3NpdGUuaHRtbDogQWRkZWQuCisKIDIwMTIt
MTEtMDkgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENv
cnJlY3Qgc2Nyb2xsIGFkanVzdG1lbnQgZm9yIHRvdWNoRXZlbnQuY2xpZW50WC9jbGllbnRZCklu
ZGV4OiBMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS5nbG9iYWxD
b21wb3NpdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLmdsb2JhbENvbXBvc2l0ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0
ZS5nbG9iYWxDb21wb3NpdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQuY29tcG9z
aXRlLmdsb2JhbENvbXBvc2l0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NhbnZh
cy9waGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLmdsb2JhbENvbXBvc2l0ZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xv
YmFsQ29tcG9zaXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEucmFu
Z2U8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uL3Rlc3RzLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vdGVzdHMuY3NzIj4KKzxib2R5PgorPHAgaWQ9InBhc3N0
ZXh0Ij5QYXNzPC9wPgorPHAgaWQ9ImZhaWx0ZXh0Ij5GYWlsPC9wPgorPHAgY2xhc3M9Im91dHB1
dCI+VGhlc2UgaW1hZ2VzIHNob3VsZCBiZSBpZGVudGljYWw6PC9wPgorPGNhbnZhcyBpZD0iYyIg
Y2xhc3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHAgY2xhc3M9ImZhbGxiYWNr
Ij5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKworPHVsIGlkPSJkIj48L3Vs
PgorPHNjcmlwdD4KK19hZGRUZXN0KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7Cit2YXIgY29tcE1v
ZGVzID0gWyAiY2xlYXIiLCAiY29weSIsICJzb3VyY2Utb3ZlciIsICJkZXN0aW5hdGlvbi1vdmVy
IiwgInNvdXJjZS1pbiIsICJkZXN0aW5hdGlvbi1pbiIsICJzb3VyY2Utb3V0IiwgImRlc3RpbmF0
aW9uLW91dCIsICJzb3VyY2UtYXRvcCIsICJkZXN0aW5hdGlvbi1hdG9wIiwgInhvciIsICJsaWdo
dGVyIiwgIm11bHRpcGx5IiwgInNjcmVlbiIsICJvdmVybGF5IiwgImRhcmtlbiIsICJsaWdodGVu
IiwgImNvbG9yLWRvZGdlIiwgImNvbG9yLWJ1cm4iLCAiaGFyZC1saWdodCIsICJzb2Z0LWxpZ2h0
IiwgImRpZmZlcmVuY2UiLCAiZXhjbHVzaW9uIiwgImh1ZSIsICJzYXR1cmF0aW9uIiwgImNvbG9y
IiwgImx1bWlub3NpdHkiXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgY29tcE1vZGVzLmxlbmd0aDsg
aSsrKSB7CisgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBNb2Rlc1tpXTsK
KyAgICBfYXNzZXJ0RXF1YWwoY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiwgY29tcE1vZGVz
W2ldLCAiY3R4Lmdsb2JhbEFscGhhIiwgImNvbXBNb2Rlc1tpXSIpOworfQorfSk7Cis8L3Njcmlw
dD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177080</attachid>
            <date>2012-11-30 21:42:19 -0800</date>
            <delta_ts>2012-12-02 04:23:22 -0800</delta_ts>
            <desc>Fixed test file and addressed krit&apos;s comments</desc>
            <filename>bug-101804-20121130213950.patch</filename>
            <type>text/plain</type>
            <size>13118</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTMwICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIEphdmFTY3JpcHQg
c3VwcG9ydCBmb3IgYmxlbmRpbmcgaW4gY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzaW5nIGNvZGUgYW5kIHZhcmlhYmxlcyB0
byBzdXBwb3J0IGFkZGl0aW9uYWwgY2FudmFzIGJsZW5kIG1vZGVzCisgICAgICAgIHNlZSBzcGVj
OiBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3ZmlsZS90aXAvY29tcG9zaXRpbmcvaW5k
ZXguaHRtbCNjYW52YXNjb21wb3NpdGluZ2FuZGJsZW5kaW5nCisKKyAgICAgICAgVGVzdDogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQ29tcG9zaXRlLmh0bWwKKworICAg
ICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Omdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEdsb2JhbENvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdJbWFnZUZyb21SZWN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaDoKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBvc2l0ZU9wZXJhdG9yTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5oOgorCiAyMDEyLTExLTMwICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEFsaWduIHRoZSBncmlk
IHRyYWNrIGNvZGUgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbidzIHByb2R1Y3Rpb24gcnVsZXMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTM2
Mjk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw5IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY28KICAgICBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAg
ICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOwogICAg
IGVsc2UgaWYgKG5hbWUgPT0gY29tcG9zaXRlQXR0cikgewotICAgICAgICBpZiAoIXBhcnNlQ29t
cG9zaXRlT3BlcmF0b3IodmFsdWUsIG1fY29tcG9zaXRlT3BlcmF0b3IpKQorICAgICAgICAvLyBG
SVhNRTogaW1hZ2VzIGRvbid0IHN1cHBvcnQgYmxlbmQgbW9kZXMgaW4gdGhlaXIgY29tcG9zaXRp
bmcgYXR0cmlidXRlLgorICAgICAgICBCbGVuZE1vZGUgYmxlbmRPcCA9IEJsZW5kTW9kZU5vcm1h
bDsKKyAgICAgICAgaWYgKCFwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0b3IodmFsdWUsIG1f
Y29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kT3ApKQogICAgICAgICAgICAgbV9jb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJl
dmlzaW9uIDEzNjI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIsNyBAQCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSgpCiAgICAgLCBtX3NoYWRvd0NvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCkKICAgICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1fZ2xv
YmFsQ29tcG9zaXRlKENvbXBvc2l0ZVNvdXJjZU92ZXIpCisgICAgLCBtX2dsb2JhbEJsZW5kKEJs
ZW5kTW9kZU5vcm1hbCkKICAgICAsIG1faW52ZXJ0aWJsZUNUTSh0cnVlKQogICAgICwgbV9saW5l
RGFzaE9mZnNldCgwKQogICAgICwgbV9pbWFnZVNtb290aGluZ0VuYWJsZWQodHJ1ZSkKQEAgLTIw
Nyw2ICsyMDgsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZShjCiAg
ICAgLCBtX3NoYWRvd0NvbG9yKG90aGVyLm1fc2hhZG93Q29sb3IpCiAgICAgLCBtX2dsb2JhbEFs
cGhhKG90aGVyLm1fZ2xvYmFsQWxwaGEpCiAgICAgLCBtX2dsb2JhbENvbXBvc2l0ZShvdGhlci5t
X2dsb2JhbENvbXBvc2l0ZSkKKyAgICAsIG1fZ2xvYmFsQmxlbmQob3RoZXIubV9nbG9iYWxCbGVu
ZCkKICAgICAsIG1fdHJhbnNmb3JtKG90aGVyLm1fdHJhbnNmb3JtKQogICAgICwgbV9pbnZlcnRp
YmxlQ1RNKG90aGVyLm1faW52ZXJ0aWJsZUNUTSkKICAgICAsIG1fbGluZURhc2hPZmZzZXQob3Ro
ZXIubV9saW5lRGFzaE9mZnNldCkKQEAgLTI0Miw2ICsyNDQsNyBAQCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OlN0YXRlJiBDYW52YXNSCiAgICAgbV9zaGFkb3dDb2xvciA9IG90aGVyLm1fc2hh
ZG93Q29sb3I7CiAgICAgbV9nbG9iYWxBbHBoYSA9IG90aGVyLm1fZ2xvYmFsQWxwaGE7CiAgICAg
bV9nbG9iYWxDb21wb3NpdGUgPSBvdGhlci5tX2dsb2JhbENvbXBvc2l0ZTsKKyAgICBtX2dsb2Jh
bEJsZW5kID0gb3RoZXIubV9nbG9iYWxCbGVuZDsKICAgICBtX3RyYW5zZm9ybSA9IG90aGVyLm1f
dHJhbnNmb3JtOwogICAgIG1faW52ZXJ0aWJsZUNUTSA9IG90aGVyLm1faW52ZXJ0aWJsZUNUTTsK
ICAgICBtX2ltYWdlU21vb3RoaW5nRW5hYmxlZCA9IG90aGVyLm1faW1hZ2VTbW9vdGhpbmdFbmFi
bGVkOwpAQCAtNjA1LDE4ICs2MDgsMjAgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldEdsb2JhbAogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnbG9iYWxDb21w
b3NpdGVPcGVyYXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBjb21wb3NpdGVPcGVyYXRvck5h
bWUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CisgICAgcmV0dXJuIGNvbXBvc2l0ZU9wZXJh
dG9yTmFtZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLm1fZ2xvYmFsQmxlbmQp
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0R2xvYmFsQ29tcG9zaXRl
T3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQogewotICAgIENvbXBvc2l0ZU9wZXJh
dG9yIG9wOwotICAgIGlmICghcGFyc2VDb21wb3NpdGVPcGVyYXRvcihvcGVyYXRpb24sIG9wKSkK
KyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CisgICAgQmxl
bmRNb2RlIGJsZW5kT3AgPSBCbGVuZE1vZGVOb3JtYWw7CisgICAgaWYgKCFwYXJzZUNvbXBvc2l0
ZUFuZEJsZW5kT3BlcmF0b3Iob3BlcmF0aW9uLCBvcCwgYmxlbmRPcCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBpZiAoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSA9PSBvcCkKKyAgICBpZiAoKHN0
YXRlKCkubV9nbG9iYWxDb21wb3NpdGUgPT0gb3ApICYmIChzdGF0ZSgpLm1fZ2xvYmFsQmxlbmQg
PT0gYmxlbmRPcCkpCiAgICAgICAgIHJldHVybjsKICAgICByZWFsaXplU2F2ZXMoKTsKICAgICBt
b2RpZmlhYmxlU3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSA9IG9wOworICAgIG1vZGlmaWFibGVT
dGF0ZSgpLm1fZ2xvYmFsQmxlbmQgPSBibGVuZE9wOwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9
IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CkBAIC0xNTUz
LDcgKzE1NTgsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlCiAg
ICAgY29uc3QgU3RyaW5nJiBjb21wb3NpdGVPcGVyYXRpb24pCiB7CiAgICAgQ29tcG9zaXRlT3Bl
cmF0b3Igb3A7Ci0gICAgaWYgKCFwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJh
dGlvbiwgb3ApKQorICAgIEJsZW5kTW9kZSBibGVuZE9wID0gQmxlbmRNb2RlTm9ybWFsOworICAg
IGlmICghcGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdGlvbiwg
b3AsIGJsZW5kT3ApIHx8IGJsZW5kT3AgIT0gQmxlbmRNb2RlTm9ybWFsKQogICAgICAgICBvcCA9
IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgJKHJldmlzaW9uIDEzNjI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgUkdCQTMyIG1fc2hhZG93Q29sb3I7CiAgICAgICAgIGZsb2F0
IG1fZ2xvYmFsQWxwaGE7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fZ2xvYmFsQ29tcG9z
aXRlOworICAgICAgICBCbGVuZE1vZGUgbV9nbG9iYWxCbGVuZDsKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIG1fdHJhbnNmb3JtOwogICAgICAgICBib29sIG1faW52ZXJ0aWJsZUNUTTsKICAgICAg
ICAgVmVjdG9yPGZsb2F0PiBtX2xpbmVEYXNoOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHJldmlzaW9uIDEzNjI5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBSaWsgQ2FiYW5pZXIgKGNhYmFuaWVyQGFkb2JlLmNvbSkKICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMjIgKzQ3LDU5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBjb21wb3NpdGVPcGVyYXQKICAgICAiZGFya2VyIiwKICAgICAibGlnaHRlciIKIH07CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBibGVuZE9wZXJhdG9yTmFtZXNbXSA9IHsKKyAgICAi
bXVsdGlwbHkiLAorICAgICJzY3JlZW4iLAorICAgICJvdmVybGF5IiwKKyAgICAiZGFya2VuIiwK
KyAgICAibGlnaHRlbiIsCisgICAgImNvbG9yLWRvZGdlIiwKKyAgICAiY29sb3ItYnVybiIsCisg
ICAgImhhcmQtbGlnaHQiLAorICAgICJzb2Z0LWxpZ2h0IiwKKyAgICAiZGlmZmVyZW5jZSIsCisg
ICAgImV4Y2x1c2lvbiIsCisgICAgImh1ZSIsCisgICAgInNhdHVyYXRpb24iLAorICAgICJjb2xv
ciIsCisgICAgImx1bWlub3NpdHkiCit9OwogY29uc3QgaW50IG51bUNvbXBvc2l0ZU9wZXJhdG9y
TmFtZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOworY29uc3Qg
aW50IG51bUJsZW5kT3BlcmF0b3JOYW1lcyA9IFdURl9BUlJBWV9MRU5HVEgoYmxlbmRPcGVyYXRv
ck5hbWVzKTsKIAotYm9vbCBwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNvbnN0IFN0cmluZyYgcywg
Q29tcG9zaXRlT3BlcmF0b3ImIG9wKQorYm9vbCBwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0
b3IoY29uc3QgU3RyaW5nJiBzLCBDb21wb3NpdGVPcGVyYXRvciYgb3AsIEJsZW5kTW9kZSYgYmxl
bmRPcCkKIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZXM7IGkrKykKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFt
ZXM7IGkrKykgewogICAgICAgICBpZiAocyA9PSBjb21wb3NpdGVPcGVyYXRvck5hbWVzW2ldKSB7
CiAgICAgICAgICAgICBvcCA9IHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdG9yPihpKTsKKyAg
ICAgICAgICAgIGJsZW5kT3AgPSBCbGVuZE1vZGVOb3JtYWw7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bUJsZW5kT3BlcmF0b3JOYW1lczsgaSsrKSB7CisgICAgICAgIGlmIChzID09IGJsZW5kT3BlcmF0
b3JOYW1lc1tpXSkgeworICAgICAgICAgICAgYmxlbmRPcCA9IHN0YXRpY19jYXN0PEJsZW5kTW9k
ZT4oaSsxKTsKKyAgICAgICAgICAgIC8vIEZvciBub3csIGJsZW5kaW5nIHdpbGwgYWx3YXlzIGFz
c3VtZSBzb3VyY2Utb3Zlci4gVGhpcyB3aWxsIGJlIGZpeGVkIGluIHRoZSBmdXR1cmUKKyAgICAg
ICAgICAgIG9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CisgICAgfQorICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5n
IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRvciBvcCkKKy8vIEZJWE1FOiB3
aGVuIHdlIHN1cHBvcnQgYmxlbmQgbW9kZXMgaW4gY29tYmluYXRpb24gd2l0aCBjb21wb3NpdGlu
ZyBvdGhlciB0aGFuIHNvdXJjZS1vdmVyCisvLyB0aGlzIHJvdXRpbmUgbmVlZHMgdG8gYmUgdXBk
YXRlZC4KK1N0cmluZyBjb21wb3NpdGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBibGVuZE9wKQogewogICAgIEFTU0VSVChvcCA+PSAwKTsKICAgICBBU1NFUlQo
b3AgPCBudW1Db21wb3NpdGVPcGVyYXRvck5hbWVzKTsKKyAgICBBU1NFUlQoYmxlbmRPcCA+PSAw
KTsKKyAgICBBU1NFUlQoYmxlbmRPcCA8PSBudW1CbGVuZE9wZXJhdG9yTmFtZXMpOworICAgIGlm
IChibGVuZE9wICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGJsZW5kT3BlcmF0
b3JOYW1lc1tibGVuZE9wLTFdOwogICAgIHJldHVybiBjb21wb3NpdGVPcGVyYXRvck5hbWVzW29w
XTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuaAkocmV2aXNpb24gMTM2Mjk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4Miw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBlbnVtIFRleHRBbGlnbiB7IFN0YXJ0
VGV4dEFsaWduLCBFbmRUZXh0QWxpZ24sIExlZnRUZXh0QWxpZ24sIENlbnRlclRleHRBbGlnbiwg
UmlnaHRUZXh0QWxpZ24gfTsKIAotICAgIFN0cmluZyBjb21wb3NpdGVPcGVyYXRvck5hbWUoQ29t
cG9zaXRlT3BlcmF0b3IpOwotICAgIGJvb2wgcGFyc2VDb21wb3NpdGVPcGVyYXRvcihjb25zdCBT
dHJpbmcmLCBDb21wb3NpdGVPcGVyYXRvciYpOworICAgIFN0cmluZyBjb21wb3NpdGVPcGVyYXRv
ck5hbWUoQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CisgICAgYm9vbCBwYXJzZUNvbXBv
c2l0ZUFuZEJsZW5kT3BlcmF0b3IoY29uc3QgU3RyaW5nJiwgQ29tcG9zaXRlT3BlcmF0b3ImLCBC
bGVuZE1vZGUmKTsKIAogICAgIFN0cmluZyBsaW5lQ2FwTmFtZShMaW5lQ2FwKTsKICAgICBib29s
IHBhcnNlTGluZUNhcChjb25zdCBTdHJpbmcmLCBMaW5lQ2FwJik7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMzYyOTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0xMS0zMCAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29t
PgorCisgICAgICAgIEV4dGVuZCBKYXZhU2NyaXB0IHN1cHBvcnQgZm9yIGJsZW5kaW5nIGluIGNh
bnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAx
ODA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYWxsIGJsZW5kaW5nbW9kZXMgYXJlIHN1cHBvcnRl
ZAorCisgICAgICAgICogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQ29t
cG9zaXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC5jb21wb3NpdGUuZ2xvYmFsQ29tcG9zaXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTMw
ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgd2Vi
a2l0IGdhcmRlbmluZywgZml4IHdlYmtpdCBsaW50LgpJbmRleDogTGF5b3V0VGVzdHMvY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQ29tcG9zaXRlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0
ZS5nbG9iYWxDb21wb3NpdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQ29tcG9zaXRlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorVGVzdCBjYW52YXMgZ2xvYmFs
Q29tcG9zaXRlT3BlcmF0b3IKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KK1BBU1MgY3R4Lmds
b2JhbENvbXBvc2l0ZU9wZXJhdGlvbiBpcyAiY2xlYXIiCitQQVNTIGN0eC5nbG9iYWxDb21wb3Np
dGVPcGVyYXRpb24gaXMgImNvcHkiCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24g
aXMgInNvdXJjZS1vdmVyIgorUEFTUyBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJk
ZXN0aW5hdGlvbi1vdmVyIgorUEFTUyBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJz
b3VyY2UtaW4iCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gaXMgImRlc3RpbmF0
aW9uLWluIgorUEFTUyBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJzb3VyY2Utb3V0
IgorUEFTUyBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJkZXN0aW5hdGlvbi1vdXQi
CitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gaXMgInNvdXJjZS1hdG9wIgorUEFT
UyBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJkZXN0aW5hdGlvbi1hdG9wIgorUEFT
UyBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJ4b3IiCitQQVNTIGN0eC5nbG9iYWxD
b21wb3NpdGVPcGVyYXRpb24gaXMgImxpZ2h0ZXIiCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVP
cGVyYXRpb24gaXMgIm11bHRpcGx5IgorUEFTUyBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9u
IGlzICJzY3JlZW4iCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gaXMgIm92ZXJs
YXkiCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gaXMgImRhcmtlbiIKK1BBU1Mg
Y3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiBpcyAibGlnaHRlbiIKK1BBU1MgY3R4Lmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdGlvbiBpcyAiY29sb3ItZG9kZ2UiCitQQVNTIGN0eC5nbG9iYWxDb21w
b3NpdGVPcGVyYXRpb24gaXMgImNvbG9yLWJ1cm4iCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVP
cGVyYXRpb24gaXMgImhhcmQtbGlnaHQiCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRp
b24gaXMgInNvZnQtbGlnaHQiCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gaXMg
ImRpZmZlcmVuY2UiCitQQVNTIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gaXMgImV4Y2x1
c2lvbiIKK1BBU1MgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiBpcyAiaHVlIgorUEFTUyBj
dHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJzYXR1cmF0aW9uIgorUEFTUyBjdHguZ2xv
YmFsQ29tcG9zaXRlT3BlcmF0aW9uIGlzICJjb2xvciIKK1BBU1MgY3R4Lmdsb2JhbENvbXBvc2l0
ZU9wZXJhdGlvbiBpcyAibHVtaW5vc2l0eSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmNvbXBvc2l0ZS5nbG9iYWxDb21wb3NpdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS5nbG9iYWxDb21wb3NpdGUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQu
Y29tcG9zaXRlLmdsb2JhbENvbXBvc2l0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5DYW52YXMgdGVzdDogMmQuY29tcG9zaXRlLmds
b2JhbEFscGhhLnJhbmdlPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uL3Rlc3RzLmNzcyI+Cis8Ym9keT4KKzxwIGlkPSJwYXNzdGV4dCI+UGFzczwvcD4K
KzxwIGlkPSJmYWlsdGV4dCI+RmFpbDwvcD4KKzxwIGNsYXNzPSJvdXRwdXQiPlRoZXNlIGltYWdl
cyBzaG91bGQgYmUgaWRlbnRpY2FsOjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQi
IHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJh
Y2sgY29udGVudCk8L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oJ1Rlc3QgY2FudmFzIGdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yJyk7Cisg
ICAgdmFyIGNvbXBNb2RlcyA9IFsgImNsZWFyIiwgImNvcHkiLCAic291cmNlLW92ZXIiLCAiZGVz
dGluYXRpb24tb3ZlciIsICJzb3VyY2UtaW4iLCAiZGVzdGluYXRpb24taW4iLCAic291cmNlLW91
dCIsICJkZXN0aW5hdGlvbi1vdXQiLCAic291cmNlLWF0b3AiLCAiZGVzdGluYXRpb24tYXRvcCIs
ICJ4b3IiLCAibGlnaHRlciIsICJtdWx0aXBseSIsICJzY3JlZW4iLCAib3ZlcmxheSIsICJkYXJr
ZW4iLCAibGlnaHRlbiIsICJjb2xvci1kb2RnZSIsICJjb2xvci1idXJuIiwgImhhcmQtbGlnaHQi
LCAic29mdC1saWdodCIsICJkaWZmZXJlbmNlIiwgImV4Y2x1c2lvbiIsICJodWUiLCAic2F0dXJh
dGlvbiIsICJjb2xvciIsICJsdW1pbm9zaXR5Il07CisgICAgY3R4ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImMiKS5nZXRDb250ZXh0KCIyZCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y29tcE1vZGVzLmxlbmd0aDsgaSsrKSB7CisJY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9
IGNvbXBNb2Rlc1tpXTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdHguZ2xvYmFs
Q29tcG9zaXRlT3BlcmF0aW9uIiwgY29tcE1vZGVzW2ldKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>