<?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>52982</bug_id>
          
          <creation_ts>2011-01-23 14:32:48 -0800</creation_ts>
          <short_desc>SVG is missing to-animation support for Path</short_desc>
          <delta_ts>2011-01-25 05:46:58 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
    
    <blocked>36729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>338759</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-23 14:32:48 -0800</bug_when>
    <thetext>SVG is missing to-animation support for Path. This also causes an ASSERT because of missing m_fromPath. Have a patch for it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338762</commentid>
    <comment_count>1</comment_count>
      <attachid>79875</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-23 14:48:56 -0800</bug_when>
    <thetext>Created attachment 79875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339134</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-24 11:35:05 -0800</bug_when>
    <thetext>The description in the test is wrong. I&apos;d like fix it on landing on a positive review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339211</commentid>
    <comment_count>3</comment_count>
      <attachid>79875</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-24 13:10:23 -0800</bug_when>
    <thetext>Comment on attachment 79875
Patch

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

&gt; Source/WebCore/svg/SVGAnimateElement.cpp:143
&gt; +            SVGPathParserFactory* factory = SVGPathParserFactory::self();

I&apos;m not familiar with this self() pattern.  Do we use this other places in WebCore?  I assume you&apos;re vending a shared instance here, but I thought we had other naming patterns for such.

&gt; Source/WebCore/svg/SVGPathParserFactory.cpp:129
&gt; +PassOwnPtr&lt;SVGPathByteStream&gt; SVGPathParserFactory::copySVGPathByteStream(SVGPathByteStream* source)

This doesn&apos;t seem to make sense on the factory. If anything the SVGPathByteStream shoudl have a copy() method which could take a factory pointer if necessary.

&gt; Source/WebCore/svg/SVGPathParserFactory.h:41
&gt; +    // SVGPathByteStream -&gt; SVGPathByteStream
&gt; +    PassOwnPtr&lt;SVGPathByteStream&gt; copySVGPathByteStream(SVGPathByteStream* source);

Why does this go on the factory and not on the bytestream object itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339223</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-24 13:21:54 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/svg/SVGPathParserFactory.h:41
&gt; &gt; +    // SVGPathByteStream -&gt; SVGPathByteStream
&gt; &gt; +    PassOwnPtr&lt;SVGPathByteStream&gt; copySVGPathByteStream(SVGPathByteStream* source);
&gt; 
&gt; Why does this go on the factory and not on the bytestream object itself?

Hm, sounds reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339262</commentid>
    <comment_count>5</comment_count>
      <attachid>79977</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-24 14:20:32 -0800</bug_when>
    <thetext>Created attachment 79977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339273</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-24 14:30:21 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 79875 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79875&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateElement.cpp:143
&gt; &gt; +            SVGPathParserFactory* factory = SVGPathParserFactory::self();
&gt; 
&gt; I&apos;m not familiar with this self() pattern.  Do we use this other places in WebCore?  I assume you&apos;re vending a shared instance here, but I thought we had other naming patterns for such.
Yes this was the intention, dodn&apos;t know about a naming schema in WebKit for factories. :-/
The call is used in various places, like SVGPathElement, SVGGlyph or SVGPathSegList.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGPathParserFactory.cpp:129
&gt; &gt; +PassOwnPtr&lt;SVGPathByteStream&gt; SVGPathParserFactory::copySVGPathByteStream(SVGPathByteStream* source)
&gt; 
&gt; This doesn&apos;t seem to make sense on the factory. If anything the SVGPathByteStream shoudl have a copy() method which could take a factory pointer if necessary.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGPathParserFactory.h:41
&gt; &gt; +    // SVGPathByteStream -&gt; SVGPathByteStream
&gt; &gt; +    PassOwnPtr&lt;SVGPathByteStream&gt; copySVGPathByteStream(SVGPathByteStream* source);
&gt; 
&gt; Why does this go on the factory and not on the bytestream object itself?
This is fixed in the last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339546</commentid>
    <comment_count>7</comment_count>
      <attachid>79977</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-01-25 01:35:41 -0800</bug_when>
    <thetext>Comment on attachment 79977
Patch

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

Looks great, r=me with two comments:

&gt; Source/WebCore/svg/SVGPathByteStream.h:54
&gt; +    PassOwnPtr&lt;SVGPathByteStream&gt; copySVGPathByteStream()

I&apos;d name it copy(), as it&apos;s a member of SVGPathByteStream...

&gt; Source/WebCore/svg/SVGPathByteStream.h:58
&gt; +        OwnPtr&lt;SVGPathByteStream&gt; copy = SVGPathByteStream::create();
&gt; +        copy-&gt;m_data = m_data;
&gt; +        return copy.release();

PassOwnPtr&lt;SVGPathByteStream&gt; copy()
{
    return SVGPathByteStream::create(m_data);
}

Then add a private SVGPathByteStream constructor, taking a Data&amp; reference:
private:
SVGPathByteStream(Data&amp; data)
    : m_data(data)
{
}

That&apos;s much cleaner and avoids a OwnPtr -&gt; PassOwnPtr conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339586</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-25 04:19:17 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 79977 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79977&amp;action=review
&gt; 
&gt; Looks great, r=me with two comments:
&gt; 
&gt; &gt; Source/WebCore/svg/SVGPathByteStream.h:54
&gt; &gt; +    PassOwnPtr&lt;SVGPathByteStream&gt; copySVGPathByteStream()
&gt; 
&gt; I&apos;d name it copy(), as it&apos;s a member of SVGPathByteStream...
&gt; 
&gt; &gt; Source/WebCore/svg/SVGPathByteStream.h:58
&gt; &gt; +        OwnPtr&lt;SVGPathByteStream&gt; copy = SVGPathByteStream::create();
&gt; &gt; +        copy-&gt;m_data = m_data;
&gt; &gt; +        return copy.release();
&gt; 
&gt; PassOwnPtr&lt;SVGPathByteStream&gt; copy()
&gt; {
&gt;     return SVGPathByteStream::create(m_data);
&gt; }
&gt; 
&gt; Then add a private SVGPathByteStream constructor, taking a Data&amp; reference:
&gt; private:
&gt; SVGPathByteStream(Data&amp; data)
&gt;     : m_data(data)
&gt; {
&gt; }
&gt; 
&gt; That&apos;s much cleaner and avoids a OwnPtr -&gt; PassOwnPtr conversion.

I take

    PassOwnPtr&lt;SVGPathByteStream&gt; copy()
    {
        return adoptPtr(new SVGPathByteStream(m_data));
    }

to avoid a second private create function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339611</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-25 05:46:58 -0800</bug_when>
    <thetext>Committed r76589: &lt;http://trac.webkit.org/changeset/76589&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79875</attachid>
            <date>2011-01-23 14:48:56 -0800</date>
            <delta_ts>2011-01-24 14:20:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52982-20110123234853.patch</filename>
            <type>text/plain</type>
            <size>11103</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NDcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMjMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkcgaXMgbWlzc2luZyB0by1hbmltYXRpb24gc3VwcG9ydCBmb3Ig
UGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI5
ODIKKyAgICAgICAgCisgICAgICAgIFNWRyB3YXMgbWlzc2luZyAndG8nIGFuaW1hdGlvbiBzdXBw
b3J0IGZvciBTVkcgcGF0aHMuIEV2ZW4gdGhlIGZhbGxiYWNrIHRvIGRpc2NyZXRlCisgICAgICAg
IGFuaW1hdGlvbiBkaWQgbm90IHdvcmsgYW5kIGFuIGFzc2VydCB3YXMgdGhyb3duLCBiZWNhdXNl
IG9mIHRoZSBtaXNzaW5nIG1fZnJvbVBhdGguCisgICAgICAgIFRoaXMgYWxzbyBpbmZsdWVuY2Vz
IGEgdGVzdCBvZiB0aGUgVzNDIHRlc3Qgc3VpdGUuIFN1YnRlc3QgMiBvZiBhbmltYXRlLWVsZW0t
ODMtdC5zdmcgcGFzc2VzIG5vdy4gCisKKyAgICAgICAgVGVzdDogc3ZnL2FuaW1hdGlvbnMvYW5p
bWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUpOiBUYWtlIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBTVkdBbmltYXRlRWxl
bWVudCBmb3IKKyAgICAgICAgbV9mcm9tUGF0aCwgc2luY2UgJ3RvJyBhbmltYXRpb25zIGFyZSBh
Y2N1bXVsYXRpdmUuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3Vs
YXRlRnJvbUFuZFRvVmFsdWVzKTogQWRkZWQgc3VwcG9ydCBmb3IgJ3RvJyBhbmltYXRpb25zLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOiBT
ZXQgbV9hbmltYXRlZFBhdGggdG8gYmFzZVZhbC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVT
dHJlYW0uaDogQWRkZWQgU1ZHUGF0aFBhcnNlckZhY3RvcnkgYXMgZnJpZW5kIGNsYXNzLCBmb3Ig
ZGlyZWN0IGFuZCBmYXN0IGFjY2VzcyB0byB0aGUgcGF0aCB2YWx1ZXMuCisgICAgICAgICogc3Zn
L1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJz
ZXJGYWN0b3J5Ojpjb3B5U1ZHUGF0aEJ5dGVTdHJlYW0pOiBDb3B5IHRoZSB2YWx1ZXMgb2YgYSBT
VkdQYXRoQnl0ZVN0cmVhbSB0byBhIG5ldyBvbmUuCisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJz
ZXJGYWN0b3J5Lmg6CisKIDIwMTEtMDEtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3NjQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOCw2ICsxMzgsMTEgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5p
bWF0ZQogICAgIH0KICAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSB0aGlzLT5hbmlt
YXRpb25Nb2RlKCk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFBhdGhQcm9wZXJ0eSkgewor
ICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikgeworICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlcik7CisgICAgICAgICAgICBTVkdQ
YXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7
CisgICAgICAgICAgICBtX2Zyb21QYXRoID0gZmFjdG9yeS0+Y29weVNWR1BhdGhCeXRlU3RyZWFt
KHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlcik7CisgICAgICAgIH0KICAgICAgICAgaWYg
KCFwZXJjZW50YWdlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7CiAgICAgICAg
ICAgICBBU1NFUlQocGVyY2VudGFnZSA+PSAwKTsKQEAgLTIxMCw4ICsyMTUsOSBAQCBib29sIFNW
R0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKG1fcHJvcGVydHlUeXBlID09IFBhdGhQcm9wZXJ0eSkgewogICAgICAgICBTVkdQYXRoUGFy
c2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAg
ICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhmcm9tU3Ry
aW5nLCBtX2Zyb21QYXRoLCBVbmFsdGVyZWRQYXJzaW5nKSkgewotICAgICAgICAgICAgaWYgKGZh
Y3RvcnktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHRvU3RyaW5nLCBtX3RvUGF0
aCwgVW5hbHRlcmVkUGFyc2luZykpCisgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVN0cmluZyh0b1N0cmluZywgbV90b1BhdGgsIFVuYWx0ZXJlZFBhcnNpbmcp
KSB7CisgICAgICAgICAgICAvLyBGb3IgdG8tYW5pbWF0aW9ucyB0aGUgZnJvbSBudW1iZXIgaXMg
Y2FsY3VsYXRlZCBsYXRlcgorICAgICAgICAgICAgaWYgKGFuaW1hdGlvbk1vZGUoKSA9PSBUb0Fu
aW1hdGlvbiB8fCBmYWN0b3J5LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhmcm9t
U3RyaW5nLCBtX2Zyb21QYXRoLCBVbmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBtX2Zyb21QYXRoLmNsZWFyKCk7CkBAIC0y
NzIsNyArMjc4LDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gUGF0
aFByb3BlcnR5KSB7CiAgICAgICAgIG1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7Ci0gICAgICAgIG1f
YW5pbWF0ZWRQYXRoUG9pbnRlciA9IDA7CisgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBm
YWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKKyAgICAgICAgZmFjdG9yeS0+
YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoYmFzZVN0cmluZywgbV9hbmltYXRlZFBh
dGgsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAgICBtX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSBt
X2FuaW1hdGVkUGF0aC5nZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAobV9w
cm9wZXJ0eVR5cGUgPT0gUG9pbnRzUHJvcGVydHkpIHsKICAgICAgICAgbV9hbmltYXRlZFBvaW50
cy5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgJKHJl
dmlzaW9uIDc2NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX2RhdGEuc2l6ZSgpOyB9CiAKIHByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIFNWR1BhdGhQYXJzZXJGYWN0b3J5OworCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0o
KSB7IH0KICAgICBEYXRhIG1fZGF0YTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFBhcnNlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAJKHJldmlzaW9uIDc2NDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYg
KzEyNiwxNyBAQCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6flNWR1BhdGhQYXJzZXJGYWN0CiB7CiB9
CiAKK1Bhc3NPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IFNWR1BhdGhQYXJzZXJGYWN0b3J5Ojpj
b3B5U1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIHNvdXJjZSkKK3sKKyAgICBP
d25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGRlc3RpbmF0aW9uID0gU1ZHUGF0aEJ5dGVTdHJlYW06
OmNyZWF0ZSgpOworCisgICAgaWYgKCFzb3VyY2UgfHwgc291cmNlLT5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBkZXN0aW5hdGlvbi5yZWxlYXNlKCk7CisgICAgCisgICAgZGVzdGluYXRpb24t
Pm1fZGF0YSA9IHNvdXJjZS0+bV9kYXRhOworICAgIHJldHVybiBkZXN0aW5hdGlvbi5yZWxlYXNl
KCk7Cit9CisKIGJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkUGF0aEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBkLCBQYXRoJiByZXN1bHQpCiB7CiAgICAgaWYgKGQuaXNFbXB0eSgpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmgJKHJldmlzaW9u
IDc2NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDkgQEAgY2xhc3MgU1ZHUGF0aFBhcnNlckZhY3Rvcnkg
ewogcHVibGljOgogICAgIHN0YXRpYyBTVkdQYXRoUGFyc2VyRmFjdG9yeSogc2VsZigpOwogCisg
ICAgLy8gU1ZHUGF0aEJ5dGVTdHJlYW0gLT4gU1ZHUGF0aEJ5dGVTdHJlYW0KKyAgICBQYXNzT3du
UHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5U1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVT
dHJlYW0qIHNvdXJjZSk7CisKICAgICAvLyBTdHJpbmcvU1ZHUGF0aEJ5dGVTdHJlYW0gLT4gUGF0
aAogICAgIGJvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBQYXRoJik7CiAg
ICAgYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGgm
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NDcwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDEtMjMgIERpcmsgU2NodWx6ZSAg
PGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTVkcgaXMgbWlzc2luZyB0by1hbmltYXRpb24gc3VwcG9ydCBmb3IgUGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI5ODIKKyAg
ICAgICAgCisgICAgICAgIEFkZGVkIGFuIGFuaW1hdGlvbiB0ZXN0IHRvIGNoZWNrICd0bycgYW5p
bWF0aW9ucyBpbiBjb21iaW5hdGlvbiB3aXRoIFNWRyBwYXRocy4KKworICAgICAgICAqIHN2Zy9h
bmltYXRpb25zL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9hbmltYXRlLXBhdGgtdG8tYW5pbWF0aW9uLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLXBh
dGgtdG8tYW5pbWF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNhbXBsZTEpOgorICAgICAgICAo
c2FtcGxlMik6CisgICAgICAgIChzYW1wbGUzKToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKwog
MjAxMS0wMS0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5p
bWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTkgQEAKK1NWRyAxLjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHMKKworVGVzdCBjYWxjTW9k
ZSBzcGxpbmUgd2l0aCB0byBhbmltYXRpb24uIFlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gMTAweDEw
MCBwYXRoIGFuZCBvbmx5IFBBU1MgbWVzc2FnZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgcGF0aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLnggaXMgNDAKK1BBU1MgcGF0
aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLnkgaXMgNDAKK1BBU1MgcGF0aC5wYXRoU2VnTGlzdC5n
ZXRJdGVtKDApLnggaXMgYWxtb3N0IDIwLCBhZnRlciBmaXJzdCBoYWxmCitQQVNTIHBhdGgucGF0
aFNlZ0xpc3QuZ2V0SXRlbSgwKS55IGlzIGFsbW9zdCAyMCwgYWZ0ZXIgZmlyc3QgaGFsZgorUEFT
UyBwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueCBpcyBhbG1vc3QgMCwgYWZ0ZXIgZmlyc3Qg
aGFsZgorUEFTUyBwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueSBpcyBhbG1vc3QgMCwgYWZ0
ZXIgZmlyc3QgaGFsZgorUEFTUyBwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueCBpcyA0MAor
UEFTUyBwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueSBpcyA0MAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLXBhdGgtdG8tYW5pbWF0aW9uLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLXBh
dGgtdG8tYW5pbWF0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZHluYW1pYy11cGRhdGVz
L3Jlc291cmNlcy9TVkdUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL1NWR0FuaW1hdGlvblRlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGgxPlNWRyAxLjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvYW5pbWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5p
bWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmlt
YXRlLXBhdGgtdG8tYW5pbWF0aW9uLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACitk
ZXNjcmlwdGlvbigiVGVzdCBjYWxjTW9kZSBzcGxpbmUgd2l0aCB0byBhbmltYXRpb24uIFlvdSBz
aG91bGQgc2VlIGEgZ3JlZW4gMTAweDEwMCBwYXRoIGFuZCBvbmx5IFBBU1MgbWVzc2FnZXMiKTsK
K2NyZWF0ZVNWR1Rlc3RDYXNlKCk7CisvLyBGSVhNRTogV2Ugc2hvdWxkIG1vdmUgdG8gYW5pbWF0
ZVBhdGhTZWdMaXN0LCBvbmNlIGl0IGlzIGltcGxlbWVudGVkLgorCisvLyBTZXR1cCB0ZXN0IGRv
Y3VtZW50Cit2YXIgcGF0aCA9IGNyZWF0ZVNWR0VsZW1lbnQoInBhdGgiKTsKK3BhdGguc2V0QXR0
cmlidXRlKCJpZCIsICJwYXRoIik7CitwYXRoLnNldEF0dHJpYnV0ZSgiZCIsICJNIDQwIDQwIEwg
NjAgNDAgTCA2MCA2MCBMIDQwIDYwIHoiKTsKK3BhdGguc2V0QXR0cmlidXRlKCJmaWxsIiwgImdy
ZWVuIik7CitwYXRoLnNldEF0dHJpYnV0ZSgib25jbGljayIsICJleGVjdXRlVGVzdCgpIik7CisK
K3ZhciBhbmltYXRlID0gY3JlYXRlU1ZHRWxlbWVudCgiYW5pbWF0ZSIpOworYW5pbWF0ZS5zZXRB
dHRyaWJ1dGUoImlkIiwgImFuaW1hdGlvbiIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImF0dHJp
YnV0ZU5hbWUiLCAiZCIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoInRvIiwgIk0gMCAwIEwgMTAw
IDAgTCAxMDAgMTAwIEwgMCAxMDAgeiIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImJlZ2luIiwg
ImNsaWNrIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZHVyIiwgIjRzIik7CitwYXRoLmFwcGVu
ZENoaWxkKGFuaW1hdGUpOworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQocGF0aCk7CisKKy8v
IFNldHVwIGFuaW1hdGlvbiB0ZXN0CitmdW5jdGlvbiBzYW1wbGUxKCkgeworICAgIC8vIENoZWNr
IGluaXRpYWwvZW5kIGNvbmRpdGlvbnMKKyAgICBzaG91bGRCZSgicGF0aC5wYXRoU2VnTGlzdC5n
ZXRJdGVtKDApLngiLCAiNDAiKTsKKyAgICBzaG91bGRCZSgicGF0aC5wYXRoU2VnTGlzdC5nZXRJ
dGVtKDApLnkiLCAiNDAiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMigpIHsKKyAgICB2YXIgb2sg
PSBpc0Nsb3NlRW5vdWdoKHBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS54LCAyMCwgMC4wMSk7
CisgICAgaWYgKG9rKQorICAgICAgICB0ZXN0UGFzc2VkKCJwYXRoLnBhdGhTZWdMaXN0LmdldEl0
ZW0oMCkueCBpcyBhbG1vc3QgMjAsIGFmdGVyIGZpcnN0IGhhbGYiKTsKKyAgICBlbHNlCisgICAg
ICAgIHRlc3RGYWlsZWQoInBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS54IHdhcyBOT1QgYWxt
b3N0IDIwLCBhcyBleHBlY3RlZCIpOworCisgICAgb2sgPSBpc0Nsb3NlRW5vdWdoKHBhdGgucGF0
aFNlZ0xpc3QuZ2V0SXRlbSgwKS55LCAyMCwgMC4wMSk7CisgICAgaWYgKG9rKQorICAgICAgICB0
ZXN0UGFzc2VkKCJwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueSBpcyBhbG1vc3QgMjAsIGFm
dGVyIGZpcnN0IGhhbGYiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoInBhdGgucGF0
aFNlZ0xpc3QuZ2V0SXRlbSgwKS55IHdhcyBOT1QgYWxtb3N0IDIwLCBhcyBleHBlY3RlZCIpOwor
fQorCitmdW5jdGlvbiBzYW1wbGUzKCkgeworICAgIHZhciBvayA9IGlzQ2xvc2VFbm91Z2gocGF0
aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLngsIDAsIDAuMDEpOworICAgIGlmIChvaykKKyAgICAg
ICAgdGVzdFBhc3NlZCgicGF0aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLnggaXMgYWxtb3N0IDAs
IGFmdGVyIGZpcnN0IGhhbGYiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoInBhdGgu
cGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS54IHdhcyBOT1QgYWxtb3N0IDAsIGFzIGV4cGVjdGVkIik7
CisKKyAgICBvayA9IGlzQ2xvc2VFbm91Z2gocGF0aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLnks
IDAsIDAuMDEpOworICAgIGlmIChvaykKKyAgICAgICAgdGVzdFBhc3NlZCgicGF0aC5wYXRoU2Vn
TGlzdC5nZXRJdGVtKDApLnkgaXMgYWxtb3N0IDAsIGFmdGVyIGZpcnN0IGhhbGYiKTsKKyAgICBl
bHNlCisgICAgICAgIHRlc3RGYWlsZWQoInBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS55IHdh
cyBOT1QgYWxtb3N0IDAsIGFzIGV4cGVjdGVkIik7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0
KCkgeworICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgICAvLyBbYW5pbWF0aW9u
SWQsIHRpbWUsIGVsZW1lbnRJZCwgc2FtcGxlQ2FsbGJhY2tdCisgICAgICAgIFsiYW5pbWF0aW9u
IiwgMC4wLCAgICAicGF0aCIsIHNhbXBsZTFdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDIuMCwg
ICAgInBhdGgiLCBzYW1wbGUyXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCAzLjk5OTksICJwYXRo
Iiwgc2FtcGxlM10sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgNC4wICwgICAicGF0aCIsIHNhbXBs
ZTFdCisgICAgXTsKKworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOworfQor
CisvLyBCZWdpbiB0ZXN0IGFzeW5jCit3aW5kb3cuc2V0VGltZW91dCgidHJpZ2dlclVwZGF0ZSg1
MCwgNTApIiwgMCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79977</attachid>
            <date>2011-01-24 14:20:32 -0800</date>
            <delta_ts>2011-01-25 01:35:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52982-20110124232028.patch</filename>
            <type>text/plain</type>
            <size>9640</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NTQ1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDEtMjQgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkcgaXMgbWlzc2luZyB0by1hbmltYXRpb24gc3VwcG9ydCBmb3Ig
UGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI5
ODIKKworICAgICAgICBTVkcgd2FzIG1pc3NpbmcgJ3RvJyBhbmltYXRpb24gc3VwcG9ydCBmb3Ig
U1ZHIHBhdGhzLiBFdmVuIHRoZSBmYWxsYmFjayB0byBkaXNjcmV0ZQorICAgICAgICBhbmltYXRp
b24gZGlkIG5vdCB3b3JrIGFuZCBhbiBhc3NlcnQgd2FzIHRocm93biwgYmVjYXVzZSBvZiB0aGUg
bWlzc2luZyBtX2Zyb21QYXRoLgorICAgICAgICBUaGlzIGFsc28gaW5mbHVlbmNlcyBhIHRlc3Qg
b2YgdGhlIFczQyB0ZXN0IHN1aXRlLiBTdWJ0ZXN0IDIgb2YgYW5pbWF0ZS1lbGVtLTgzLXQuc3Zn
IHBhc3NlcyBub3cuCisKKyAgICAgICAgVGVzdDogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1wYXRo
LXRvLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOiBUYWtlIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBTVkdBbmltYXRlRWxlbWVudCBmb3IK
KyAgICAgICAgbV9mcm9tUGF0aCwgc2luY2UgJ3RvJyBhbmltYXRpb25zIGFyZSBhY2N1bXVsYXRp
dmUuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFu
ZFRvVmFsdWVzKTogQWRkZWQgc3VwcG9ydCBmb3IgJ3RvJyBhbmltYXRpb25zLgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOiBTZXQgbV9hbmlt
YXRlZFBhdGggb24gdGhlIGZpcnN0IGFuaW1hdGlvbiBlbGVtZW50IHRvIGJhc2VWYWwuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
Qnl0ZVN0cmVhbTo6Y29weVNWR1BhdGhCeXRlU3RyZWFtKTogUmV0dXJuIGNvcHkgb2YgY3VycmVu
dCBieXRlIHN0cmVhbS4KKwogMjAxMS0wMS0yNCAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3NjU0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzOCw2ICsxMzgsMTAgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZQogICAgIH0KICAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSB0aGlzLT5hbmltYXRp
b25Nb2RlKCk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFBhdGhQcm9wZXJ0eSkgeworICAg
ICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikgeworICAgICAgICAgICAgQVNT
RVJUKHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlcik7CisgICAgICAgICAgICBtX2Zyb21Q
YXRoID0gcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyLT5jb3B5U1ZHUGF0aEJ5dGVTdHJl
YW0oKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoIXBlcmNlbnRhZ2UpIHsKICAgICAgICAgICAg
IEFTU0VSVChtX2Zyb21QYXRoKTsKICAgICAgICAgICAgIEFTU0VSVChwZXJjZW50YWdlID49IDAp
OwpAQCAtMjEwLDggKzIxNCw5IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmQKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gUGF0aFBy
b3BlcnR5KSB7CiAgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZHUGF0
aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGZyb21TdHJpbmcsIG1fZnJvbVBhdGgsIFVuYWx0ZXJlZFBh
cnNpbmcpKSB7Ci0gICAgICAgICAgICBpZiAoZmFjdG9yeS0+YnVpbGRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TdHJpbmcodG9TdHJpbmcsIG1fdG9QYXRoLCBVbmFsdGVyZWRQYXJzaW5nKSkKKyAgICAg
ICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHRvU3RyaW5n
LCBtX3RvUGF0aCwgVW5hbHRlcmVkUGFyc2luZykpIHsKKyAgICAgICAgICAgIC8vIEZvciB0by1h
bmltYXRpb25zIHRoZSBmcm9tIG51bWJlciBpcyBjYWxjdWxhdGVkIGxhdGVyCisgICAgICAgICAg
ICBpZiAoYW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uIHx8IGZhY3RvcnktPmJ1aWxkU1ZH
UGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGZyb21TdHJpbmcsIG1fZnJvbVBhdGgsIFVuYWx0ZXJl
ZFBhcnNpbmcpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIG1fZnJvbVBhdGguY2xlYXIoKTsKQEAgLTI3Miw3ICsyNzcsOSBAQCB2b2lkIFNWR0FuaW1h
dGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBl
bHNlIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBQYXRoUHJvcGVydHkpIHsKICAgICAgICAgbV9hbmlt
YXRlZFBhdGguY2xlYXIoKTsKLSAgICAgICAgbV9hbmltYXRlZFBhdGhQb2ludGVyID0gMDsKKyAg
ICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9y
eTo6c2VsZigpOworICAgICAgICBmYWN0b3J5LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0
cmluZyhiYXNlU3RyaW5nLCBtX2FuaW1hdGVkUGF0aCwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAg
ICAgIG1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9IG1fYW5pbWF0ZWRQYXRoLmdldCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBQb2ludHNQcm9wZXJ0
eSkgewogICAgICAgICBtX2FuaW1hdGVkUG9pbnRzLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAkocmV2aXNpb24gNzY1NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR1BhdGhCeXRlU3Ry
ZWFtKTsKICAgICB9CiAKKyAgICBQYXNzT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5U1ZH
UGF0aEJ5dGVTdHJlYW0oKQorICAgIHsKKyAgICAgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFt
PiBjb3B5ID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOworICAgICAgICBjb3B5LT5tX2Rh
dGEgPSBtX2RhdGE7CisgICAgICAgIHJldHVybiBjb3B5LnJlbGVhc2UoKTsKKyAgICB9CisKICAg
ICB0eXBlZGVmIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBEYXRhOwogICAgIHR5cGVkZWYgRGF0YTo6
Y29uc3RfaXRlcmF0b3IgRGF0YUl0ZXJhdG9yOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjU0NSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDExLTAxLTI0ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU1ZHIGlzIG1pc3NpbmcgdG8t
YW5pbWF0aW9uIHN1cHBvcnQgZm9yIFBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyOTgyCisKKyAgICAgICAgQWRkZWQgYW4gYW5pbWF0aW9uIHRl
c3QgdG8gY2hlY2sgJ3RvJyBhbmltYXRpb25zIGluIGNvbWJpbmF0aW9uIHdpdGggU1ZHIHBhdGhz
LgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2FuaW1hdGUtcGF0
aC10by1hbmltYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2Ny
aXB0LXRlc3RzL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24uanM6IEFkZGVkLgorICAgICAgICAo
c2FtcGxlMSk6CisgICAgICAgIChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAgICAg
ICAoZXhlY3V0ZVRlc3QpOgorCiAyMDExLTAxLTI0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLXBhdGgtdG8tYW5pbWF0aW9uLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLXBh
dGgtdG8tYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitTVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRl
c3RzCisKK1Rlc3QgY2FsY01vZGUgc3BsaW5lIHdpdGggdG8gYW5pbWF0aW9uLiBZb3Ugc2hvdWxk
IHNlZSBhIGdyZWVuIDEwMHgxMDAgcGF0aCBhbmQgb25seSBQQVNTIG1lc3NhZ2VzCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgw
KS54IGlzIDQwCitQQVNTIHBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS55IGlzIDQwCitQQVNT
IHBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS54IGlzIGFsbW9zdCAyMCwgYWZ0ZXIgZmlyc3Qg
aGFsZgorUEFTUyBwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueSBpcyBhbG1vc3QgMjAsIGFm
dGVyIGZpcnN0IGhhbGYKK1BBU1MgcGF0aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLnggaXMgYWxt
b3N0IDAsIGFmdGVyIGZpcnN0IGhhbGYKK1BBU1MgcGF0aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDAp
LnkgaXMgYWxtb3N0IDAsIGFmdGVyIGZpcnN0IGhhbGYKK1BBU1MgcGF0aC5wYXRoU2VnTGlzdC5n
ZXRJdGVtKDApLnggaXMgNDAKK1BBU1MgcGF0aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLnkgaXMg
NDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLXBhdGgtdG8tYW5pbWF0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1w
YXRoLXRvLWFuaW1hdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvYW5pbWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5TVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzPC9o
MT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24uanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtcGF0aC10by1hbmltYXRpb24uanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtcGF0aC10
by1hbmltYXRpb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1wYXRoLXRvLWFuaW1hdGlvbi5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3MCBAQAorZGVzY3JpcHRpb24oIlRlc3QgY2FsY01vZGUgc3BsaW5lIHdpdGgg
dG8gYW5pbWF0aW9uLiBZb3Ugc2hvdWxkIHNlZSBhIGdyZWVuIDEwMHgxMDAgcGF0aCBhbmQgb25s
eSBQQVNTIG1lc3NhZ2VzIik7CitjcmVhdGVTVkdUZXN0Q2FzZSgpOworLy8gRklYTUU6IFdlIHNo
b3VsZCBtb3ZlIHRvIGFuaW1hdGVQYXRoU2VnTGlzdCwgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4K
KworLy8gU2V0dXAgdGVzdCBkb2N1bWVudAordmFyIHBhdGggPSBjcmVhdGVTVkdFbGVtZW50KCJw
YXRoIik7CitwYXRoLnNldEF0dHJpYnV0ZSgiaWQiLCAicGF0aCIpOworcGF0aC5zZXRBdHRyaWJ1
dGUoImQiLCAiTSA0MCA0MCBMIDYwIDQwIEwgNjAgNjAgTCA0MCA2MCB6Iik7CitwYXRoLnNldEF0
dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworcGF0aC5zZXRBdHRyaWJ1dGUoIm9uY2xpY2siLCAi
ZXhlY3V0ZVRlc3QoKSIpOworCit2YXIgYW5pbWF0ZSA9IGNyZWF0ZVNWR0VsZW1lbnQoImFuaW1h
dGUiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJpZCIsICJhbmltYXRpb24iKTsKK2FuaW1hdGUu
c2V0QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgImQiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRl
KCJ0byIsICJNIDAgMCBMIDEwMCAwIEwgMTAwIDEwMCBMIDAgMTAwIHoiKTsKK2FuaW1hdGUuc2V0
QXR0cmlidXRlKCJiZWdpbiIsICJjbGljayIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImR1ciIs
ICI0cyIpOworcGF0aC5hcHBlbmRDaGlsZChhbmltYXRlKTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVu
ZENoaWxkKHBhdGgpOworCisvLyBTZXR1cCBhbmltYXRpb24gdGVzdAorZnVuY3Rpb24gc2FtcGxl
MSgpIHsKKyAgICAvLyBDaGVjayBpbml0aWFsL2VuZCBjb25kaXRpb25zCisgICAgc2hvdWxkQmUo
InBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS54IiwgIjQwIik7CisgICAgc2hvdWxkQmUoInBh
dGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS55IiwgIjQwIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBs
ZTIoKSB7CisgICAgdmFyIG9rID0gaXNDbG9zZUVub3VnaChwYXRoLnBhdGhTZWdMaXN0LmdldEl0
ZW0oMCkueCwgMjAsIDAuMDEpOworICAgIGlmIChvaykKKyAgICAgICAgdGVzdFBhc3NlZCgicGF0
aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDApLnggaXMgYWxtb3N0IDIwLCBhZnRlciBmaXJzdCBoYWxm
Iik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJwYXRoLnBhdGhTZWdMaXN0LmdldEl0
ZW0oMCkueCB3YXMgTk9UIGFsbW9zdCAyMCwgYXMgZXhwZWN0ZWQiKTsKKworICAgIG9rID0gaXND
bG9zZUVub3VnaChwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueSwgMjAsIDAuMDEpOworICAg
IGlmIChvaykKKyAgICAgICAgdGVzdFBhc3NlZCgicGF0aC5wYXRoU2VnTGlzdC5nZXRJdGVtKDAp
LnkgaXMgYWxtb3N0IDIwLCBhZnRlciBmaXJzdCBoYWxmIik7CisgICAgZWxzZQorICAgICAgICB0
ZXN0RmFpbGVkKCJwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueSB3YXMgTk9UIGFsbW9zdCAy
MCwgYXMgZXhwZWN0ZWQiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMygpIHsKKyAgICB2YXIgb2sg
PSBpc0Nsb3NlRW5vdWdoKHBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS54LCAwLCAwLjAxKTsK
KyAgICBpZiAob2spCisgICAgICAgIHRlc3RQYXNzZWQoInBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRl
bSgwKS54IGlzIGFsbW9zdCAwLCBhZnRlciBmaXJzdCBoYWxmIik7CisgICAgZWxzZQorICAgICAg
ICB0ZXN0RmFpbGVkKCJwYXRoLnBhdGhTZWdMaXN0LmdldEl0ZW0oMCkueCB3YXMgTk9UIGFsbW9z
dCAwLCBhcyBleHBlY3RlZCIpOworCisgICAgb2sgPSBpc0Nsb3NlRW5vdWdoKHBhdGgucGF0aFNl
Z0xpc3QuZ2V0SXRlbSgwKS55LCAwLCAwLjAxKTsKKyAgICBpZiAob2spCisgICAgICAgIHRlc3RQ
YXNzZWQoInBhdGgucGF0aFNlZ0xpc3QuZ2V0SXRlbSgwKS55IGlzIGFsbW9zdCAwLCBhZnRlciBm
aXJzdCBoYWxmIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJwYXRoLnBhdGhTZWdM
aXN0LmdldEl0ZW0oMCkueSB3YXMgTk9UIGFsbW9zdCAwLCBhcyBleHBlY3RlZCIpOworfQorCitm
dW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAg
ICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQsIHNhbXBsZUNhbGxiYWNrXQor
ICAgICAgICBbImFuaW1hdGlvbiIsIDAuMCwgICAgInBhdGgiLCBzYW1wbGUxXSwKKyAgICAgICAg
WyJhbmltYXRpb24iLCAyLjAsICAgICJwYXRoIiwgc2FtcGxlMl0sCisgICAgICAgIFsiYW5pbWF0
aW9uIiwgMy45OTk5LCAicGF0aCIsIHNhbXBsZTNdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDQu
MCAsICAgInBhdGgiLCBzYW1wbGUxXQorICAgIF07CisKKyAgICBydW5BbmltYXRpb25UZXN0KGV4
cGVjdGVkVmFsdWVzKTsKK30KKworLy8gQmVnaW4gdGVzdCBhc3luYword2luZG93LnNldFRpbWVv
dXQoInRyaWdnZXJVcGRhdGUoNTAsIDUwKSIsIDApOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cg==
</data>
<flag name="review"
          id="71444"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>