<?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>59313</bug_id>
          
          <creation_ts>2011-04-24 22:35:56 -0700</creation_ts>
          <short_desc>ASSERT failure in SVGUseElement</short_desc>
          <delta_ts>2011-04-26 02:57:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>59413</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Leo Yang">leo.yang</reporter>
          <assigned_to name="Leo Yang">leo.yang</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391685</commentid>
    <comment_count>0</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-24 22:35:56 -0700</bug_when>
    <thetext>The following non-wellformed document trigger &apos;ASSERT(!m_isPendingResource)&apos; in SVGUseElement::insertedIntoDocument()

&lt;?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt;
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; version=&quot;1.0&quot; width=&quot;400&quot; height=&quot;400&quot;&gt;
    &lt;use xlink:href=&quot;#undefined&quot;&gt;
&lt;/svg&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391689</commentid>
    <comment_count>1</comment_count>
      <attachid>90902</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-24 23:02:12 -0700</bug_when>
    <thetext>Created attachment 90902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391693</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-24 23:24:50 -0700</bug_when>
    <thetext>Attachment 90902 did not pass chromium-ews:
Output: http://queues.webkit.org/results/8507204
Unexpected failures:
svg/custom/use-crash-in-non-wellformed-document.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391698</commentid>
    <comment_count>3</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-24 23:33:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 90902 [details] did not pass chromium-ews:
&gt; Output: http://queues.webkit.org/results/8507204
&gt; Unexpected failures:
&gt; svg/custom/use-crash-in-non-wellformed-document.svg

Something wrong with chromium-linux bot? There were many patches didn&apos;t pass tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391710</commentid>
    <comment_count>4</comment_count>
      <attachid>90902</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-25 01:05:23 -0700</bug_when>
    <thetext>Comment on attachment 90902
Patch

Can we rewrite this:
if (document()-&gt;isSVGDocument() ....
    ASSERT(m_targetElementInstance || m_targetElementInstance);
else
   ....

This might make more sense, eh?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391714</commentid>
    <comment_count>5</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 01:17:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 90902 [details])
&gt; Can we rewrite this:
&gt; if (document()-&gt;isSVGDocument() ....
&gt;     ASSERT(m_targetElementInstance || m_targetElementInstance);
&gt; else
&gt;    ....
&gt; 
&gt; This might make more sense, eh?

hmm, how about this one?

ASSERT((!m_targetElementInstance &amp;&amp; !m_targetElementInstance) || ((document()-&gt;isSVGDocument() || document()-&gt;isXHTMLDocument()) &amp;&amp; !static_cast&lt;XMLDocumentParser*&gt;(document()-&gt;parser())-&gt;wellFormed()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391715</commentid>
    <comment_count>6</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 01:18:10 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 90902 [details] [details])
&gt; &gt; Can we rewrite this:
&gt; &gt; if (document()-&gt;isSVGDocument() ....
&gt; &gt;     ASSERT(m_targetElementInstance || m_targetElementInstance);
&gt; &gt; else
&gt; &gt;    ....
&gt; &gt; 
&gt; &gt; This might make more sense, eh?
&gt; 
&gt; hmm, how about this one?
&gt; 
&gt; ASSERT((!m_targetElementInstance &amp;&amp; !m_targetElementInstance) || ((document()-&gt;isSVGDocument() || document()-&gt;isXHTMLDocument()) &amp;&amp; !static_cast&lt;XMLDocumentParser*&gt;(document()-&gt;parser())-&gt;wellFormed()));

replacing the second m_targetElementInstance with m_isPendingResource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391723</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-25 02:03:37 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 90902 [details] [details] [details])
&gt; &gt; &gt; Can we rewrite this:
&gt; &gt; &gt; if (document()-&gt;isSVGDocument() ....
&gt; &gt; &gt;     ASSERT(m_targetElementInstance || m_targetElementInstance);
&gt; &gt; &gt; else
&gt; &gt; &gt;    ....
&gt; &gt; &gt; 
&gt; &gt; &gt; This might make more sense, eh?
&gt; &gt; 
&gt; &gt; hmm, how about this one?
&gt; &gt; 
&gt; &gt; ASSERT((!m_targetElementInstance &amp;&amp; !m_targetElementInstance) || ((document()-&gt;isSVGDocument() || document()-&gt;isXHTMLDocument()) &amp;&amp; !static_cast&lt;XMLDocumentParser*&gt;(document()-&gt;parser())-&gt;wellFormed()));
&gt; 
&gt; replacing the second m_targetElementInstance with m_isPendingResource

What happens if this assertion would ever fire - you won&apos;t go what&apos;s going on (is targetElementInstance 0 or isPendingResource etc..) - it&apos;s just confusing.
Maybe it would help to add a static inline bool isWellFormedDocument(Document*) helper method, and using the if branch I suggested as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391726</commentid>
    <comment_count>8</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 02:29:20 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; (From update of attachment 90902 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; Can we rewrite this:
&gt; &gt; &gt; &gt; if (document()-&gt;isSVGDocument() ....
&gt; &gt; &gt; &gt;     ASSERT(m_targetElementInstance || m_targetElementInstance);
&gt; &gt; &gt; &gt; else
&gt; &gt; &gt; &gt;    ....
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; This might make more sense, eh?
&gt; &gt; &gt; 
&gt; &gt; &gt; hmm, how about this one?
&gt; &gt; &gt; 
&gt; &gt; &gt; ASSERT((!m_targetElementInstance &amp;&amp; !m_targetElementInstance) || ((document()-&gt;isSVGDocument() || document()-&gt;isXHTMLDocument()) &amp;&amp; !static_cast&lt;XMLDocumentParser*&gt;(document()-&gt;parser())-&gt;wellFormed()));
&gt; &gt; 
&gt; &gt; replacing the second m_targetElementInstance with m_isPendingResource
&gt; 
&gt; What happens if this assertion would ever fire - you won&apos;t go what&apos;s going on (is targetElementInstance 0 or isPendingResource etc..) - it&apos;s just confusing.
&gt; Maybe it would help to add a static inline bool isWellFormedDocument(Document*) helper method, and using the if branch I suggested as well?

inline function is a good idea, so we need ASSERT(document-&gt;isSVGDocument() || document-&gt;isXHTMLDocument()) before we call static_cast&lt;XMLDocumentParser*&gt;(document-&gt;parser())-&gt;wellFormed() in isWellFormedDocument()?

release mode also cost a little time of &apos;if&apos; branch and function call(or inline instructions) of isWellFormedDocument. Is the following ok to you?

ASSERT(!targetElementInstance || !isWellFormedDocument(document());
ASSERT(!m_isPendingResource || !isWellFormedDocument(document());

Although in debug mode we need an extra isWellFormedDocument, in release mode we don&apos;t need any extra work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391728</commentid>
    <comment_count>9</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 02:38:21 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 90902 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; Can we rewrite this:
&gt; &gt; &gt; &gt; &gt; if (document()-&gt;isSVGDocument() ....
&gt; &gt; &gt; &gt; &gt;     ASSERT(m_targetElementInstance || m_targetElementInstance);
&gt; &gt; &gt; &gt; &gt; else
&gt; &gt; &gt; &gt; &gt;    ....
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; This might make more sense, eh?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; hmm, how about this one?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ASSERT((!m_targetElementInstance &amp;&amp; !m_targetElementInstance) || ((document()-&gt;isSVGDocument() || document()-&gt;isXHTMLDocument()) &amp;&amp; !static_cast&lt;XMLDocumentParser*&gt;(document()-&gt;parser())-&gt;wellFormed()));
&gt; &gt; &gt; 
&gt; &gt; &gt; replacing the second m_targetElementInstance with m_isPendingResource
&gt; &gt; 
&gt; &gt; What happens if this assertion would ever fire - you won&apos;t go what&apos;s going on (is targetElementInstance 0 or isPendingResource etc..) - it&apos;s just confusing.
&gt; &gt; Maybe it would help to add a static inline bool isWellFormedDocument(Document*) helper method, and using the if branch I suggested as well?
&gt; 
&gt; inline function is a good idea, so we need ASSERT(document-&gt;isSVGDocument() || document-&gt;isXHTMLDocument()) before we call static_cast&lt;XMLDocumentParser*&gt;(document-&gt;parser())-&gt;wellFormed() in isWellFormedDocument()?
&gt; 
&gt; release mode also cost a little time of &apos;if&apos; branch and function call(or inline instructions) of isWellFormedDocument. Is the following ok to you?
&gt; 
&gt; ASSERT(!targetElementInstance || !isWellFormedDocument(document());
&gt; ASSERT(!m_isPendingResource || !isWellFormedDocument(document());
&gt; 
&gt; Although in debug mode we need an extra isWellFormedDocument, in release mode we don&apos;t need any extra work.

Actually, a macro like DEBUG_CODE(
// Debug mode code goes here
)
would be the right one we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391733</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-25 03:05:48 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 90902 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; Can we rewrite this:
&gt; &gt; &gt; &gt; &gt; if (document()-&gt;isSVGDocument() ....
&gt; &gt; &gt; &gt; &gt;     ASSERT(m_targetElementInstance || m_targetElementInstance);
&gt; &gt; &gt; &gt; &gt; else
&gt; &gt; &gt; &gt; &gt;    ....
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; This might make more sense, eh?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; hmm, how about this one?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ASSERT((!m_targetElementInstance &amp;&amp; !m_targetElementInstance) || ((document()-&gt;isSVGDocument() || document()-&gt;isXHTMLDocument()) &amp;&amp; !static_cast&lt;XMLDocumentParser*&gt;(document()-&gt;parser())-&gt;wellFormed()));
&gt; &gt; &gt; 
&gt; &gt; &gt; replacing the second m_targetElementInstance with m_isPendingResource
&gt; &gt; 
&gt; &gt; What happens if this assertion would ever fire - you won&apos;t go what&apos;s going on (is targetElementInstance 0 or isPendingResource etc..) - it&apos;s just confusing.
&gt; &gt; Maybe it would help to add a static inline bool isWellFormedDocument(Document*) helper method, and using the if branch I suggested as well?
&gt; 
&gt; inline function is a good idea, so we need ASSERT(document-&gt;isSVGDocument() || document-&gt;isXHTMLDocument()) before we call static_cast&lt;XMLDocumentParser*&gt;(document-&gt;parser())-&gt;wellFormed() in isWellFormedDocument()?
&gt; 
&gt; release mode also cost a little time of &apos;if&apos; branch and function call(or inline instructions) of isWellFormedDocument. Is the following ok to you?
Yeah, you&apos;re right. The branch should be avoided.
&gt; 
&gt; ASSERT(!targetElementInstance || !isWellFormedDocument(document());
&gt; ASSERT(!m_isPendingResource || !isWellFormedDocument(document());
Fine with me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391735</commentid>
    <comment_count>11</comment_count>
      <attachid>90912</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 03:39:02 -0700</bug_when>
    <thetext>Created attachment 90912
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391736</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-25 03:57:36 -0700</bug_when>
    <thetext>Attachment 90912 did not pass chromium-ews:
Output: http://queues.webkit.org/results/8504652
Unexpected failures:
svg/custom/use-crash-in-non-wellformed-document.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391760</commentid>
    <comment_count>13</comment_count>
      <attachid>90912</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-25 08:01:42 -0700</bug_when>
    <thetext>Comment on attachment 90912
Revised patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392187</commentid>
    <comment_count>14</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 19:04:36 -0700</bug_when>
    <thetext>Committed r84864: &lt;http://trac.webkit.org/changeset/84864&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392193</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-25 19:53:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84864 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
svg/custom/use-crash-in-non-wellformed-document.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392194</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-25 19:55:16 -0700</bug_when>
    <thetext>Looks like this broke a test on mac...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392229</commentid>
    <comment_count>17</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 21:08:49 -0700</bug_when>
    <thetext>The patch has been rolled out.

It seems that the test result is platform dependent? The test is an non-wellformed svg document and the expected result is the error message of the parser. Is the parser message platform dependent? Do we have a good test way for this case? Manually test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392304</commentid>
    <comment_count>18</comment_count>
      <attachid>91070</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-25 23:43:16 -0700</bug_when>
    <thetext>Created attachment 91070
Patch - test case reworked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392358</commentid>
    <comment_count>19</comment_count>
      <attachid>91070</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-26 02:06:39 -0700</bug_when>
    <thetext>Comment on attachment 91070
Patch - test case reworked

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

Quite hacky, but somewhat okay. In the past we used to accept platform dependant results for cases like this. Why did you roll out in first place instead of adding specific results?

&gt; LayoutTests/svg/custom/use-crash-in-non-wellformed-document.svg:18
&gt; +                document.body.offsetWidth;

This is needed as well, you want to force layout here? Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392360</commentid>
    <comment_count>20</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-26 02:22:54 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 91070 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91070&amp;action=review
&gt; 
&gt; Quite hacky, but somewhat okay. In the past we used to accept platform dependant results for cases like this. Why did you roll out in first place instead of adding specific results?
I didn&apos;t know to rebase test case from the build server :p
is it &apos;webkit-patch rebaseline&apos; ?

&gt; 
&gt; &gt; LayoutTests/svg/custom/use-crash-in-non-wellformed-document.svg:18
&gt; &gt; +                document.body.offsetWidth;
&gt; 
&gt; This is needed as well, you want to force layout here? Why?

No need actually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392361</commentid>
    <comment_count>21</comment_count>
      <attachid>91084</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-26 02:27:18 -0700</bug_when>
    <thetext>Created attachment 91084
Revised patch - test case reworked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392365</commentid>
    <comment_count>22</comment_count>
      <attachid>91084</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-26 02:49:49 -0700</bug_when>
    <thetext>Comment on attachment 91084
Revised patch - test case reworked

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392368</commentid>
    <comment_count>23</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-04-26 02:57:38 -0700</bug_when>
    <thetext>Committed r84899: &lt;http://trac.webkit.org/changeset/84899&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90902</attachid>
            <date>2011-04-24 23:02:12 -0700</date>
            <delta_ts>2011-04-25 03:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-2011-04-24-Leo-Yang-leo.yang-torchmobile.com.cn.patch</filename>
            <type>text/plain</type>
            <size>5553</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSBiNTAzNzEwZTgzNzYzNDljMjQ5ZGJiMGRiMjM0NmQwODVjOTQzNTc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBNb24sIDI1IEFwciAyMDExIDEyOjM4OjU2ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
MjAxMS0wNC0yNCAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBBU1NFUlQgZmFpbHVyZSBp
biBTVkdVc2VFbGVtZW50CiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU5MzEzCgogICAgICAgIEluIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3Vt
ZW50KCksIEFTU0VSVCghbV9pc1BlbmRpbmdSZXNvdXJjZSkKICAgICAgICB3YXMgd3JvbmcgYmVj
YXVzZSB0aGUgZG9jdW1lbnQgbWF5IG5vdCBiZSB3ZWxsLWZvcm1lZC4KCiAgICAgICAgVGhpcyBw
YXRjaCBhc3NlcnRzIHRoZSBlbGVtZW50IGlzIG5vdCBwZW5kaW5nIG9uIHJlc291cmNlIG9yIHRo
ZQogICAgICAgIGRvY3VtZW50IGlzIG5vdCB3ZWxsLWZvcm1lZC4KCiAgICAgICAgVGVzdDogc3Zn
L2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnCgogICAgICAg
ICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgogICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CjIwMTEtMDQtMjQgIExlbyBZYW5nICA8bGVvLnlhbmdA
dG9yY2htb2JpbGUuY29tLmNuPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiAgICAgICAgQVNTRVJUIGZhaWx1cmUgaW4gU1ZHVXNlRWxlbWVudAogICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTMxMwoKICAgICAgICBUZXN0IGNhc2Ug
dG8gdmVyaWZ5IHdlYmtpdCBkb2Vzbid0IGNyYXNoIHdoZW4gYSA8dXNlPiBlbGVtZW50CiAgICAg
ICAgaXMgcGVuZGluZyBvbiByZXNvdXJjZSBhbmQgdGhlIGRvY3VtZW50IGlzIG5vdCB3ZWxsLWZv
cm1lZC4KICAgICAgICBUZXN0IHBhc3NlcyBpZiBubyBjcmFzaCBvY2N1cnMgaW4gZGVidWcgbW9k
ZS4KCiAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1
bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkCiAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1jcmFzaC1p
bi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC5zdmc6IEFkZGVkLgotLS0KIExheW91dFRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKysrKysrKysrKysr
KwogLi4uZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC1leHBlY3RlZC50eHQgfCAg
ICA2ICsrKysrKwogLi4uL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC5zdmcg
ICAgICAgfCAgICA4ICsrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTggKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDUgZmlsZXMg
Y2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1k
b2N1bWVudC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC5zdmcKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MmI3MmZlOC4uNzI0YjdlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA0LTI0ICBMZW8g
WWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBU1NFUlQgZmFpbHVyZSBpbiBTVkdVc2VFbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTMx
MworCisgICAgICAgIFRlc3QgY2FzZSB0byB2ZXJpZnkgd2Via2l0IGRvZXNuJ3QgY3Jhc2ggd2hl
biBhIDx1c2U+IGVsZW1lbnQKKyAgICAgICAgaXMgcGVuZGluZyBvbiByZXNvdXJjZSBhbmQgdGhl
IGRvY3VtZW50IGlzIG5vdCB3ZWxsLWZvcm1lZC4KKyAgICAgICAgVGVzdCBwYXNzZXMgaWYgbm8g
Y3Jhc2ggb2NjdXJzIGluIGRlYnVnIG1vZGUuCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1j
cmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LnN2
ZzogQWRkZWQuCisKIDIwMTEtMDQtMjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NDc1OS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9y
bWVkLWRvY3VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWNy
YXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDlkMzI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGhpcyBwYWdlIGNvbnRhaW5zIHRoZSBmb2xsb3dp
bmcgZXJyb3JzOgorCitlcnJvciBvbiBsaW5lIDggYXQgY29sdW1uIDY6IE9wZW5pbmcgYW5kIGVu
ZGluZyB0YWcgbWlzbWF0Y2guCitCZWxvdyBpcyBhIHJlbmRlcmluZyBvZiB0aGUgcGFnZSB1cCB0
byB0aGUgZmlyc3QgZXJyb3IuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnIGIvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMDdlYWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1
bWVudC5zdmcKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9
Im5vIj8+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMCIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0MDAiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgPC9zY3JpcHQ+CisgICAgPHVzZSB4bGluazpocmVmPSIjdW5kZWZpbmVkIj4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQwZjkwZWYuLmFlMjgwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMS0wNC0yNCAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5j
b20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QVNTRVJUIGZhaWx1cmUgaW4gU1ZHVXNlRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzMTMKKworICAgICAgICBJbiBTVkdVc2VFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpLCBBU1NFUlQoIW1faXNQZW5kaW5nUmVzb3VyY2UpCisg
ICAgICAgIHdhcyB3cm9uZyBiZWNhdXNlIHRoZSBkb2N1bWVudCBtYXkgbm90IGJlIHdlbGwtZm9y
bWVkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzZXJ0cyB0aGUgZWxlbWVudCBpcyBub3QgcGVu
ZGluZyBvbiByZXNvdXJjZSBvciB0aGUKKyAgICAgICAgZG9jdW1lbnQgaXMgbm90IHdlbGwtZm9y
bWVkLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9y
bWVkLWRvY3VtZW50LnN2ZworCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorCiAy
MDExLTA0LTI0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApp
bmRleCBmOWJiY2IyLi44ZjZiMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1
bWVudCgpCiAgICAgLy8gVGhpcyBmdW5jdGlvbnMgZXhpc3RzIHRvIGFzc3VyZSBhc3N1bXB0aW9u
cyBtYWRlIGluIHRoZSBjb2RlIHJlZ2FyZGluZyBTVkdFbGVtZW50SW5zdGFuY2UgY3JlYXRpb24v
ZGVzdHJ1Y3Rpb24gYXJlIHNhdGlzZmllZC4KICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBBU1NFUlQoIW1fdGFyZ2V0RWxlbWVu
dEluc3RhbmNlIHx8ICgoZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpIHx8IGRvY3VtZW50KCkt
PmlzWEhUTUxEb2N1bWVudCgpKSAmJiAhc3RhdGljX2Nhc3Q8WE1MRG9jdW1lbnRQYXJzZXIqPihk
b2N1bWVudCgpLT5wYXJzZXIoKSktPndlbGxGb3JtZWQoKSkpOwotICAgIEFTU0VSVCghbV9pc1Bl
bmRpbmdSZXNvdXJjZSk7CisgICAgQVNTRVJUKCFtX2lzUGVuZGluZ1Jlc291cmNlIHx8ICgoZG9j
dW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmlzWEhUTUxEb2N1bWVudCgp
KSAmJiAhc3RhdGljX2Nhc3Q8WE1MRG9jdW1lbnRQYXJzZXIqPihkb2N1bWVudCgpLT5wYXJzZXIo
KSktPndlbGxGb3JtZWQoKSkpOwogfQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQoKQotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90912</attachid>
            <date>2011-04-25 03:39:02 -0700</date>
            <delta_ts>2011-04-25 21:27:20 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>0001-2011-04-24-Leo-Yang-leo.yang-torchmobile.com.cn.patch</filename>
            <type>text/plain</type>
            <size>5931</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSBjZTgxNGJjNDZkMDhjYzY2MGM3NWIzODI3NDcxOTg2NDNlNTg3NDVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBNb24sIDI1IEFwciAyMDExIDEyOjM4OjU2ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
MjAxMS0wNC0yNCAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBBU1NFUlQgZmFpbHVyZSBp
biBTVkdVc2VFbGVtZW50CiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU5MzEzCgogICAgICAgIEluIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3Vt
ZW50KCksIEFTU0VSVCghbV9pc1BlbmRpbmdSZXNvdXJjZSkKICAgICAgICB3YXMgd3JvbmcgYmVj
YXVzZSB0aGUgZG9jdW1lbnQgbWF5IG5vdCBiZSB3ZWxsLWZvcm1lZC4KCiAgICAgICAgVGhpcyBw
YXRjaCBhc3NlcnRzIHRoZSBlbGVtZW50IGlzIG5vdCBwZW5kaW5nIG9uIHJlc291cmNlIG9yIHRo
ZQogICAgICAgIGRvY3VtZW50IGlzIG5vdCB3ZWxsLWZvcm1lZC4KCiAgICAgICAgVGVzdDogc3Zn
L2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnCgogICAgICAg
ICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgogICAgICAgIChXZWJDb3JlOjppc1dlbGxGb3JtZWRE
b2N1bWVudCkKICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9j
dW1lbnQpOgoyMDExLTA0LTI0ICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEFTU0VSVCBm
YWlsdXJlIGluIFNWR1VzZUVsZW1lbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTkzMTMKCiAgICAgICAgVGVzdCBjYXNlIHRvIHZlcmlmeSB3ZWJraXQg
ZG9lc24ndCBjcmFzaCB3aGVuIGEgPHVzZT4gZWxlbWVudAogICAgICAgIGlzIHBlbmRpbmcgb24g
cmVzb3VyY2UgYW5kIHRoZSBkb2N1bWVudCBpcyBub3Qgd2VsbC1mb3JtZWQuCiAgICAgICAgVGVz
dCBwYXNzZXMgaWYgbm8gY3Jhc2ggb2NjdXJzIGluIGRlYnVnIG1vZGUuCgogICAgICAgICogc3Zn
L2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZAogICAgICAgICogc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQt
ZG9jdW1lbnQuc3ZnOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKysrKysrKysKIC4uLmUtY3Jhc2gtaW4t
bm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQtZXhwZWN0ZWQudHh0IHwgICAgNiArKysrKysKIC4uLi91
c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnICAgICAgIHwgICAgOCArKysr
KysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDE5ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcCAgICAgICAgICAgICAgIHwgICAxMSArKysrKysrKystLQogNSBmaWxlcyBjaGFuZ2Vk
LCA1NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50
LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3N2Zy9jdXN0b20v
dXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LnN2ZwoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYjcyZmU4
Li43MjRiN2U3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjQgIExlbyBZYW5nICA8
bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFTU0VSVCBmYWlsdXJlIGluIFNWR1VzZUVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MzEzCisKKyAg
ICAgICAgVGVzdCBjYXNlIHRvIHZlcmlmeSB3ZWJraXQgZG9lc24ndCBjcmFzaCB3aGVuIGEgPHVz
ZT4gZWxlbWVudAorICAgICAgICBpcyBwZW5kaW5nIG9uIHJlc291cmNlIGFuZCB0aGUgZG9jdW1l
bnQgaXMgbm90IHdlbGwtZm9ybWVkLgorICAgICAgICBUZXN0IHBhc3NlcyBpZiBubyBjcmFzaCBv
Y2N1cnMgaW4gZGVidWcgbW9kZS4KKworICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWNyYXNoLWlu
LW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnOiBBZGRl
ZC4KKwogMjAxMS0wNC0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg0NzU5LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9j
dW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4t
bm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjZkOWQzMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw2IEBACitUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBlcnJv
cnM6CisKK2Vycm9yIG9uIGxpbmUgOCBhdCBjb2x1bW4gNjogT3BlbmluZyBhbmQgZW5kaW5nIHRh
ZyBtaXNtYXRjaC4KK0JlbG93IGlzIGEgcmVuZGVyaW5nIG9mIHRoZSBwYWdlIHVwIHRvIHRoZSBm
aXJzdCBlcnJvci4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1j
cmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwN2VhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LnN2
ZwpAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0ibm8iPz4K
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4wIiB3aWR0aD0iNDAwIiBoZWln
aHQ9IjQwMCI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICA8L3NjcmlwdD4KKyAgICA8dXNlIHhsaW5rOmhyZWY9IiN1bmRlZmluZWQiPgorPC9zdmc+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZDBmOTBlZi4uNGI0ODA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDExLTA0LTI0ICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBU1NFUlQg
ZmFpbHVyZSBpbiBTVkdVc2VFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01OTMxMworCisgICAgICAgIEluIFNWR1VzZUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCksIEFTU0VSVCghbV9pc1BlbmRpbmdSZXNvdXJjZSkKKyAgICAgICAg
d2FzIHdyb25nIGJlY2F1c2UgdGhlIGRvY3VtZW50IG1heSBub3QgYmUgd2VsbC1mb3JtZWQuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhc3NlcnRzIHRoZSBlbGVtZW50IGlzIG5vdCBwZW5kaW5nIG9u
IHJlc291cmNlIG9yIHRoZQorICAgICAgICBkb2N1bWVudCBpcyBub3Qgd2VsbC1mb3JtZWQuCisK
KyAgICAgICAgVGVzdDogc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9j
dW1lbnQuc3ZnCisKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1dlbGxGb3JtZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisKIDIwMTEtMDQtMjQgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IGY5YmJjYjIuLmU1MGFlODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTEyNywxMiArMTI3LDE5IEBA
IHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzV2VsbEZvcm1lZERvY3VtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9jdW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSB8
fCBkb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxYTUxEb2N1bWVudFBhcnNlcio+KGRvY3VtZW50LT5wYXJzZXIoKSktPndlbGxGb3JtZWQoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9E
b2N1bWVudCgpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbnMgZXhpc3RzIHRvIGFzc3VyZSBhc3N1
bXB0aW9ucyBtYWRlIGluIHRoZSBjb2RlIHJlZ2FyZGluZyBTVkdFbGVtZW50SW5zdGFuY2UgY3Jl
YXRpb24vZGVzdHJ1Y3Rpb24gYXJlIHNhdGlzZmllZC4KICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICBBU1NFUlQoIW1fdGFyZ2V0
RWxlbWVudEluc3RhbmNlIHx8ICgoZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpIHx8IGRvY3Vt
ZW50KCktPmlzWEhUTUxEb2N1bWVudCgpKSAmJiAhc3RhdGljX2Nhc3Q8WE1MRG9jdW1lbnRQYXJz
ZXIqPihkb2N1bWVudCgpLT5wYXJzZXIoKSktPndlbGxGb3JtZWQoKSkpOwotICAgIEFTU0VSVCgh
bV9pc1BlbmRpbmdSZXNvdXJjZSk7CisgICAgQVNTRVJUKCFtX3RhcmdldEVsZW1lbnRJbnN0YW5j
ZSB8fCAhaXNXZWxsRm9ybWVkRG9jdW1lbnQoZG9jdW1lbnQoKSkpOworICAgIEFTU0VSVCghbV9p
c1BlbmRpbmdSZXNvdXJjZSB8fCAhaXNXZWxsRm9ybWVkRG9jdW1lbnQoZG9jdW1lbnQoKSkpOwog
fQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQotLSAKMS43LjAu
NAoK
</data>
<flag name="review"
          id="83683"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91070</attachid>
            <date>2011-04-25 23:43:16 -0700</date>
            <delta_ts>2011-04-26 02:27:18 -0700</delta_ts>
            <desc>Patch - test case reworked</desc>
            <filename>0001-2011-04-25-Leo-Yang-leo.yang-torchmobile.com.cn.patch</filename>
            <type>text/plain</type>
            <size>6468</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSBiMjc5NDQ1Y2I5YThiNTExNDlkYjIwODhmZTQ2YTEzMjJlYjhhMGEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24gPGxlby55YW5n
QHRvcmNobW9iaWxlLmNvbS5jbj4KRGF0ZTogVHVlLCAyNiBBcHIgMjAxMSAwMjowNDoxMiArMDAw
MApTdWJqZWN0OiBbUEFUQ0hdIDIwMTEtMDQtMjUgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2ht
b2JpbGUuY29tLmNuPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgQVNTRVJUIGZhaWx1cmUgaW4gU1ZHVXNlRWxlbWVudAogICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTMxMwoKICAgICAgICBJbiBTVkdVc2VFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpLCBBU1NFUlQoIW1faXNQZW5kaW5nUmVzb3VyY2UpCiAg
ICAgICAgd2FzIHdyb25nIGJlY2F1c2UgdGhlIGRvY3VtZW50IG1heSBub3QgYmUgd2VsbC1mb3Jt
ZWQuCgogICAgICAgIFRoaXMgcGF0Y2ggYXNzZXJ0cyB0aGUgZWxlbWVudCBpcyBub3QgcGVuZGlu
ZyBvbiByZXNvdXJjZSBvciB0aGUKICAgICAgICBkb2N1bWVudCBpcyBub3Qgd2VsbC1mb3JtZWQu
CgogICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRv
Y3VtZW50LnN2ZwoKICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKICAgICAgICAoV2Vi
Q29yZTo6aXNXZWxsRm9ybWVkRG9jdW1lbnQpOgogICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CjIwMTEtMDQtMjUgIExlbyBZYW5nICA8bGVvLnlh
bmdAdG9yY2htb2JpbGUuY29tLmNuPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCiAgICAgICAgQVNTRVJUIGZhaWx1cmUgaW4gU1ZHVXNlRWxlbWVudAogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTMxMwoKICAgICAgICBUZXN0IGNh
c2UgdG8gdmVyaWZ5IHdlYmtpdCBkb2Vzbid0IGNyYXNoIHdoZW4gYSA8dXNlPiBlbGVtZW50CiAg
ICAgICAgaXMgcGVuZGluZyBvbiByZXNvdXJjZSBhbmQgdGhlIGRvY3VtZW50IGlzIG5vdCB3ZWxs
LWZvcm1lZC4KICAgICAgICBUZXN0IHBhc3NlcyBpZiBubyBjcmFzaCBvY2N1cnMgaW4gZGVidWcg
bW9kZS4KCiAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1k
b2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICogc3ZnL2N1c3RvbS91c2UtY3Jh
c2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKysr
KwogLi4uZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC1leHBlY3RlZC50eHQgfCAg
ICAxICsKIC4uLi91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnICAgICAg
IHwgICAyOCArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCAgICAgICAgICAgICAgIHwgICAxMSArKysrKystCiA1
IGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxm
b3JtZWQtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGZlN2E3MGEuLmVhYjJlZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wNC0y
NSAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVNTRVJUIGZhaWx1cmUgaW4gU1ZH
VXNlRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTkzMTMKKworICAgICAgICBUZXN0IGNhc2UgdG8gdmVyaWZ5IHdlYmtpdCBkb2Vzbid0IGNy
YXNoIHdoZW4gYSA8dXNlPiBlbGVtZW50CisgICAgICAgIGlzIHBlbmRpbmcgb24gcmVzb3VyY2Ug
YW5kIHRoZSBkb2N1bWVudCBpcyBub3Qgd2VsbC1mb3JtZWQuCisgICAgICAgIFRlc3QgcGFzc2Vz
IGlmIG5vIGNyYXNoIG9jY3VycyBpbiBkZWJ1ZyBtb2RlLgorCisgICAgICAgICogc3ZnL2N1c3Rv
bS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1
bWVudC5zdmc6IEFkZGVkLgorCiAyMDExLTA0LTI1ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1k
b2N1bWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1p
bi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZjM4MTgzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxIEBACitQQVNTIHdpdGhvdXQgY3Jhc2guCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC5z
dmcgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1k
b2N1bWVudC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI2ZjJlNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5v
bi13ZWxsZm9ybWVkLWRvY3VtZW50LnN2ZwpAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIHN0YW5kYWxvbmU9Im5vIj8+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNp
b249IjEuMCI+CisgICAgPHRleHQgeD0iMCIgeT0iMzAiPlBBU1Mgd2l0aG91dCBjcmFzaC48L3Rl
eHQ+CisgICAgPHVzZSB4bGluazpocmVmPSIjdW5kZWZpbmVkIj4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBy
dW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB2
YXIgZXJyb3JFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVy
cm9yIilbMF07CisgICAgICAgICAgICAgICAgZXJyb3JFbGVtZW50LnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoZXJyb3JFbGVtZW50KTsKKyAgICAgICAgICAgICAgICB2YXIgdXNlRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ1c2UiKVswXTsKKyAgICAgICAgICAgICAgICB1
c2VFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodXNlRWxlbWVudCk7CisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJydW5UZXN0KCkiLCAw
KTsKKyAgICA8L3NjcmlwdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMxN2U0ZGEuLmFmMzAyOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wNC0yNSAgTGVvIFlhbmcgIDxsZW8u
eWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQVNTRVJUIGZhaWx1cmUgaW4gU1ZHVXNlRWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzMTMKKworICAgICAg
ICBJbiBTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpLCBBU1NFUlQoIW1faXNQ
ZW5kaW5nUmVzb3VyY2UpCisgICAgICAgIHdhcyB3cm9uZyBiZWNhdXNlIHRoZSBkb2N1bWVudCBt
YXkgbm90IGJlIHdlbGwtZm9ybWVkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzZXJ0cyB0aGUg
ZWxlbWVudCBpcyBub3QgcGVuZGluZyBvbiByZXNvdXJjZSBvciB0aGUKKyAgICAgICAgZG9jdW1l
bnQgaXMgbm90IHdlbGwtZm9ybWVkLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20vdXNlLWNy
YXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LnN2ZworCisgICAgICAgICogc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXZWxsRm9ybWVkRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgor
CiAyMDExLTA0LTI1ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CmluZGV4IGY5YmJjYjIuLmU1MGFlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAKQEAgLTEyNywxMiArMTI3LDE5IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSBib29s
IGlzV2VsbEZvcm1lZERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9j
dW1lbnQtPmlzU1ZHRG9jdW1lbnQoKSB8fCBkb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYTUxEb2N1bWVudFBhcnNlcio+KGRvY3VtZW50LT5w
YXJzZXIoKSktPndlbGxGb3JtZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBTVkdV
c2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlv
bnMgZXhpc3RzIHRvIGFzc3VyZSBhc3N1bXB0aW9ucyBtYWRlIGluIHRoZSBjb2RlIHJlZ2FyZGlu
ZyBTVkdFbGVtZW50SW5zdGFuY2UgY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYXJlIHNhdGlzZmllZC4K
ICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKLSAgICBBU1NFUlQoIW1fdGFyZ2V0RWxlbWVudEluc3RhbmNlIHx8ICgoZG9jdW1lbnQoKS0+
aXNTVkdEb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmlzWEhUTUxEb2N1bWVudCgpKSAmJiAhc3Rh
dGljX2Nhc3Q8WE1MRG9jdW1lbnRQYXJzZXIqPihkb2N1bWVudCgpLT5wYXJzZXIoKSktPndlbGxG
b3JtZWQoKSkpOwotICAgIEFTU0VSVCghbV9pc1BlbmRpbmdSZXNvdXJjZSk7CisgICAgQVNTRVJU
KCFtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSB8fCAhaXNXZWxsRm9ybWVkRG9jdW1lbnQoZG9jdW1l
bnQoKSkpOworICAgIEFTU0VSVCghbV9pc1BlbmRpbmdSZXNvdXJjZSB8fCAhaXNXZWxsRm9ybWVk
RG9jdW1lbnQoZG9jdW1lbnQoKSkpOwogfQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRG
cm9tRG9jdW1lbnQoKQotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91084</attachid>
            <date>2011-04-26 02:27:18 -0700</date>
            <delta_ts>2011-04-26 02:49:49 -0700</delta_ts>
            <desc>Revised patch - test case reworked</desc>
            <filename>0001-2011-04-25-Leo-Yang-leo.yang-torchmobile.com.cn.patch</filename>
            <type>text/plain</type>
            <size>6425</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSBlY2I3NjQ2YjE3NmE2NjM5NzZjMTJjZWQwZTczZjc5M2M5YWFhN2RmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24gPGxlby55YW5n
QHRvcmNobW9iaWxlLmNvbS5jbj4KRGF0ZTogVHVlLCAyNiBBcHIgMjAxMSAwMjowNDoxMiArMDAw
MApTdWJqZWN0OiBbUEFUQ0hdIDIwMTEtMDQtMjUgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2ht
b2JpbGUuY29tLmNuPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgQVNTRVJUIGZhaWx1cmUgaW4gU1ZHVXNlRWxlbWVudAogICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTMxMwoKICAgICAgICBJbiBTVkdVc2VFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpLCBBU1NFUlQoIW1faXNQZW5kaW5nUmVzb3VyY2UpCiAg
ICAgICAgd2FzIHdyb25nIGJlY2F1c2UgdGhlIGRvY3VtZW50IG1heSBub3QgYmUgd2VsbC1mb3Jt
ZWQuCgogICAgICAgIFRoaXMgcGF0Y2ggYXNzZXJ0cyB0aGUgZWxlbWVudCBpcyBub3QgcGVuZGlu
ZyBvbiByZXNvdXJjZSBvciB0aGUKICAgICAgICBkb2N1bWVudCBpcyBub3Qgd2VsbC1mb3JtZWQu
CgogICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRv
Y3VtZW50LnN2ZwoKICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKICAgICAgICAoV2Vi
Q29yZTo6aXNXZWxsRm9ybWVkRG9jdW1lbnQpOgogICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CjIwMTEtMDQtMjUgIExlbyBZYW5nICA8bGVvLnlh
bmdAdG9yY2htb2JpbGUuY29tLmNuPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCiAgICAgICAgQVNTRVJUIGZhaWx1cmUgaW4gU1ZHVXNlRWxlbWVudAogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTMxMwoKICAgICAgICBUZXN0IGNh
c2UgdG8gdmVyaWZ5IHdlYmtpdCBkb2Vzbid0IGNyYXNoIHdoZW4gYSA8dXNlPiBlbGVtZW50CiAg
ICAgICAgaXMgcGVuZGluZyBvbiByZXNvdXJjZSBhbmQgdGhlIGRvY3VtZW50IGlzIG5vdCB3ZWxs
LWZvcm1lZC4KICAgICAgICBUZXN0IHBhc3NlcyBpZiBubyBjcmFzaCBvY2N1cnMgaW4gZGVidWcg
bW9kZS4KCiAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1k
b2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICogc3ZnL2N1c3RvbS91c2UtY3Jh
c2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKysr
KwogLi4uZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC1leHBlY3RlZC50eHQgfCAg
ICAxICsKIC4uLi91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnICAgICAg
IHwgICAyNyArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysrKysrKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgICAgICAgICAgICAgICB8ICAgMTEgKysrKysrLQog
NSBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxs
Zm9ybWVkLWRvY3VtZW50LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL3N2Zy9jdXN0b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LnN2ZwoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZTdhNzBhLi5lYWIyZWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQt
MjUgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFTU0VSVCBmYWlsdXJlIGluIFNW
R1VzZUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MzEzCisKKyAgICAgICAgVGVzdCBjYXNlIHRvIHZlcmlmeSB3ZWJraXQgZG9lc24ndCBj
cmFzaCB3aGVuIGEgPHVzZT4gZWxlbWVudAorICAgICAgICBpcyBwZW5kaW5nIG9uIHJlc291cmNl
IGFuZCB0aGUgZG9jdW1lbnQgaXMgbm90IHdlbGwtZm9ybWVkLgorICAgICAgICBUZXN0IHBhc3Nl
cyBpZiBubyBjcmFzaCBvY2N1cnMgaW4gZGVidWcgbW9kZS4KKworICAgICAgICAqIHN2Zy9jdXN0
b20vdXNlLWNyYXNoLWluLW5vbi13ZWxsZm9ybWVkLWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9j
dW1lbnQuc3ZnOiBBZGRlZC4KKwogMjAxMS0wNC0yNSAgTWloYWkgUGFycGFyaXRhICA8bWloYWlw
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQt
ZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gt
aW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmYzODE4MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1ub24td2VsbGZvcm1lZC1kb2N1bWVudC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUyB3aXRob3V0IGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQu
c3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQt
ZG9jdW1lbnQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNmU1ZmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1jcmFzaC1pbi1u
b24td2VsbGZvcm1lZC1kb2N1bWVudC5zdmcKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJz
aW9uPSIxLjAiPgorICAgIDx0ZXh0IHg9IjAiIHk9IjMwIj5QQVNTIHdpdGhvdXQgY3Jhc2guPC90
ZXh0PgorICAgIDx1c2UgeGxpbms6aHJlZj0iI3VuZGVmaW5lZCI+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
dmFyIGVycm9yRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJl
cnJvciIpWzBdOworICAgICAgICAgICAgICAgIGVycm9yRWxlbWVudC5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGVycm9yRWxlbWVudCk7CisgICAgICAgICAgICAgICAgdmFyIHVzZUVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidXNlIilbMF07CisgICAgICAgICAgICAgICAg
dXNlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHVzZUVsZW1lbnQpOworICAgICAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQo
InJ1blRlc3QoKSIsIDApOworICAgIDwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE3
ZTRkYS4uYWYzMDI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTA0LTI1ICBM
ZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBU1NFUlQgZmFpbHVyZSBpbiBTVkdVc2VF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTMxMworCisgICAgICAgIEluIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCks
IEFTU0VSVCghbV9pc1BlbmRpbmdSZXNvdXJjZSkKKyAgICAgICAgd2FzIHdyb25nIGJlY2F1c2Ug
dGhlIGRvY3VtZW50IG1heSBub3QgYmUgd2VsbC1mb3JtZWQuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhc3NlcnRzIHRoZSBlbGVtZW50IGlzIG5vdCBwZW5kaW5nIG9uIHJlc291cmNlIG9yIHRoZQor
ICAgICAgICBkb2N1bWVudCBpcyBub3Qgd2VsbC1mb3JtZWQuCisKKyAgICAgICAgVGVzdDogc3Zn
L2N1c3RvbS91c2UtY3Jhc2gtaW4tbm9uLXdlbGxmb3JtZWQtZG9jdW1lbnQuc3ZnCisKKyAgICAg
ICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1dlbGxGb3Jt
ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudCk6CisKIDIwMTEtMDQtMjUgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKaW5kZXggZjliYmNiMi4uZTUwYWU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcApAQCAtMTI3LDEyICsxMjcsMTkgQEAgdm9pZCBTVkdVc2VFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfQogfQogCitzdGF0
aWMgaW5saW5lIGJvb2wgaXNXZWxsRm9ybWVkRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworICAgIGlmIChkb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpIHx8IGRvY3VtZW50LT5pc1hIVE1M
RG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFhNTERvY3VtZW50UGFyc2Vy
Kj4oZG9jdW1lbnQtPnBhcnNlcigpKS0+d2VsbEZvcm1lZCgpOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICAv
LyBUaGlzIGZ1bmN0aW9ucyBleGlzdHMgdG8gYXNzdXJlIGFzc3VtcHRpb25zIG1hZGUgaW4gdGhl
IGNvZGUgcmVnYXJkaW5nIFNWR0VsZW1lbnRJbnN0YW5jZSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBh
cmUgc2F0aXNmaWVkLgogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwotICAgIEFTU0VSVCghbV90YXJnZXRFbGVtZW50SW5zdGFuY2UgfHwg
KChkb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+aXNYSFRNTERvY3Vt
ZW50KCkpICYmICFzdGF0aWNfY2FzdDxYTUxEb2N1bWVudFBhcnNlcio+KGRvY3VtZW50KCktPnBh
cnNlcigpKS0+d2VsbEZvcm1lZCgpKSk7Ci0gICAgQVNTRVJUKCFtX2lzUGVuZGluZ1Jlc291cmNl
KTsKKyAgICBBU1NFUlQoIW1fdGFyZ2V0RWxlbWVudEluc3RhbmNlIHx8ICFpc1dlbGxGb3JtZWRE
b2N1bWVudChkb2N1bWVudCgpKSk7CisgICAgQVNTRVJUKCFtX2lzUGVuZGluZ1Jlc291cmNlIHx8
ICFpc1dlbGxGb3JtZWREb2N1bWVudChkb2N1bWVudCgpKSk7CiB9CiAKIHZvaWQgU1ZHVXNlRWxl
bWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCi0tIAoxLjcuMC40Cgo=
</data>
<flag name="review"
          id="83854"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>