<?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>105810</bug_id>
          
          <creation_ts>2012-12-27 15:29:46 -0800</creation_ts>
          <short_desc>[Mutation Observers] prevent delivery while recipient context is suspended</short_desc>
          <delta_ts>2013-01-03 17:19:23 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rafael Weinstein">rafaelw</reporter>
          <assigned_to name="Rafael Weinstein">rafaelw</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>apavlov</cc>
    
    <cc>arv</cc>
    
    <cc>esprehn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rniwa</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>797692</commentid>
    <comment_count>0</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-12-27 15:29:46 -0800</bug_when>
    <thetext>If the execution context is paused, but triggers a mutation (e.g. by stepping through code), Mutation Observers should refrain from attempting delivery until the context is resumed.

Currently, the delivery just gets dropped on the floor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797693</commentid>
    <comment_count>1</comment_count>
      <attachid>180827</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-12-27 15:34:36 -0800</bug_when>
    <thetext>Created attachment 180827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797694</commentid>
    <comment_count>2</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-12-27 15:36:42 -0800</bug_when>
    <thetext>Pavel,

This is my first crack at an inspector test, please let me know if this is ok.

Adam/Ojan, I&apos;m guessing the way I&apos;m accessing the ActiveDOMCallback is wrong here. What&apos;s a better way to do this? It seems like maybe the MutationCallback should have a virtual canDeliver(), which JSC and V8 can implement respectively, but I&apos;m not sure how to do that.

Once I get the two above sorted, I&apos;ll attempt to implement JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797696</commentid>
    <comment_count>3</comment_count>
      <attachid>180827</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-27 15:45:20 -0800</bug_when>
    <thetext>Comment on attachment 180827
Patch

Attachment 180827 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15559492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797698</commentid>
    <comment_count>4</comment_count>
      <attachid>180827</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-27 15:46:40 -0800</bug_when>
    <thetext>Comment on attachment 180827
Patch

Attachment 180827 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15546638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797704</commentid>
    <comment_count>5</comment_count>
      <attachid>180827</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-27 16:12:37 -0800</bug_when>
    <thetext>Comment on attachment 180827
Patch

Attachment 180827 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15543642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797705</commentid>
    <comment_count>6</comment_count>
      <attachid>180827</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-27 16:37:18 -0800</bug_when>
    <thetext>Comment on attachment 180827
Patch

Attachment 180827 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15572185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797711</commentid>
    <comment_count>7</comment_count>
      <attachid>180827</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-27 17:17:39 -0800</bug_when>
    <thetext>Comment on attachment 180827
Patch

Attachment 180827 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15543644</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799032</commentid>
    <comment_count>8</comment_count>
      <attachid>180827</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-02 15:59:37 -0800</bug_when>
    <thetext>Comment on attachment 180827
Patch

Attachment 180827 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15656222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799510</commentid>
    <comment_count>9</comment_count>
      <attachid>180827</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-03 11:27:03 -0800</bug_when>
    <thetext>Comment on attachment 180827
Patch

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

&gt; Source/WebCore/dom/MutationObserver.cpp:193
&gt; +bool MutationObserver::canDeliver()
&gt; +{
&gt; +// FIXME: How does JSC suspend for inspection?
&gt; +#if USE(V8)
&gt; +    return reinterpret_cast&lt;V8MutationCallback*&gt;(m_callback.get())-&gt;canInvokeCallback();
&gt; +#else
&gt; +    return true;
&gt; +#endif
&gt; +}

This isn&apos;t right.  You mean to ask the callback&apos;s context whether active DOM objects are suspended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799557</commentid>
    <comment_count>10</comment_count>
      <attachid>181201</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-01-03 12:19:23 -0800</bug_when>
    <thetext>Created attachment 181201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799567</commentid>
    <comment_count>11</comment_count>
      <attachid>181201</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-03 12:30:45 -0800</bug_when>
    <thetext>Comment on attachment 181201
Patch

Attachment 181201 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15665185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799569</commentid>
    <comment_count>12</comment_count>
      <attachid>181201</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-03 12:31:53 -0800</bug_when>
    <thetext>Comment on attachment 181201
Patch

Attachment 181201 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15630998</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799571</commentid>
    <comment_count>13</comment_count>
      <attachid>181201</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-03 12:36:04 -0800</bug_when>
    <thetext>Comment on attachment 181201
Patch

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

&gt; Source/WebCore/dom/MutationObserver.cpp:241
&gt; +                suspendedMutationObservers().add(observers[i]);

Why not just call activeMutationObservers().add() and put the suspended ones back into the list? I don&apos;t think you need the two lists and all the copying logic above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799574</commentid>
    <comment_count>14</comment_count>
      <attachid>181205</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-01-03 12:39:38 -0800</bug_when>
    <thetext>Created attachment 181205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799586</commentid>
    <comment_count>15</comment_count>
      <attachid>181205</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-03 13:00:11 -0800</bug_when>
    <thetext>Comment on attachment 181205
Patch

Attachment 181205 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15671007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799587</commentid>
    <comment_count>16</comment_count>
      <attachid>181205</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-03 13:00:21 -0800</bug_when>
    <thetext>Comment on attachment 181205
Patch

Attachment 181205 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15671006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799592</commentid>
    <comment_count>17</comment_count>
      <attachid>181205</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-03 13:05:15 -0800</bug_when>
    <thetext>Comment on attachment 181205
Patch

Attachment 181205 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15670010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799595</commentid>
    <comment_count>18</comment_count>
      <attachid>181205</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-03 13:16:03 -0800</bug_when>
    <thetext>Comment on attachment 181205
Patch

Attachment 181205 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15669016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799603</commentid>
    <comment_count>19</comment_count>
      <attachid>181205</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-03 13:29:33 -0800</bug_when>
    <thetext>Comment on attachment 181205
Patch

Attachment 181205 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15647805</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799609</commentid>
    <comment_count>20</comment_count>
      <attachid>181210</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-01-03 13:33:24 -0800</bug_when>
    <thetext>Created attachment 181210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799623</commentid>
    <comment_count>21</comment_count>
      <attachid>181201</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-01-03 13:39:01 -0800</bug_when>
    <thetext>Comment on attachment 181201
Patch

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

&gt;&gt; Source/WebCore/dom/MutationObserver.cpp:241
&gt;&gt; +                suspendedMutationObservers().add(observers[i]);
&gt; 
&gt; Why not just call activeMutationObservers().add() and put the suspended ones back into the list? I don&apos;t think you need the two lists and all the copying logic above.

That would case this loop to non-terminate. deliverAllMutations will get called at the end of every task. By putting observers into the suspended list, it means that each task makes an attempt to redeliver to any pending. Notice that this loop is while(!activeMutationObservers().isEmpty()). We can&apos;t keep adding suspended back into it. Within this loop, nothing is going to cause them to become unsuspended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799636</commentid>
    <comment_count>22</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-03 13:44:10 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 181201 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181201&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/MutationObserver.cpp:241
&gt; &gt;&gt; +                suspendedMutationObservers().add(observers[i]);
&gt; &gt; 
&gt; &gt; Why not just call activeMutationObservers().add() and put the suspended ones back into the list? I don&apos;t think you need the two lists and all the copying logic above.
&gt; 
&gt; That would case this loop to non-terminate. deliverAllMutations will get called at the end of every task. By putting observers into the suspended list, it means that each task makes an attempt to redeliver to any pending. Notice that this loop is while(!activeMutationObservers().isEmpty()). We can&apos;t keep adding suspended back into it. Within this loop, nothing is going to cause them to become unsuspended.

I see, could we just put a stack allocated set outside the loop and copy into that then? Right after the loop add them all back. That&apos;s like 3 lines of code instead of all this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799647</commentid>
    <comment_count>23</comment_count>
      <attachid>181210</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-03 13:53:27 -0800</bug_when>
    <thetext>Comment on attachment 181210
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2833
&gt; +    push(@headerContent, &quot;    virtual ScriptExecutionContext* scriptExecutionContext() const { return ContextDestructionObserver::scriptExecutionContext(); }\n\n&quot;);

Can&apos;t we just write:

&quot;using ContextDestructionObserver::scriptExecutionContext;&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799662</commentid>
    <comment_count>24</comment_count>
      <attachid>181201</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-01-03 14:01:36 -0800</bug_when>
    <thetext>Comment on attachment 181201
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/MutationObserver.cpp:241
&gt;&gt;&gt;&gt; +                suspendedMutationObservers().add(observers[i]);
&gt;&gt;&gt; 
&gt;&gt;&gt; Why not just call activeMutationObservers().add() and put the suspended ones back into the list? I don&apos;t think you need the two lists and all the copying logic above.
&gt;&gt; 
&gt;&gt; That would case this loop to non-terminate. deliverAllMutations will get called at the end of every task. By putting observers into the suspended list, it means that each task makes an attempt to redeliver to any pending. Notice that this loop is while(!activeMutationObservers().isEmpty()). We can&apos;t keep adding suspended back into it. Within this loop, nothing is going to cause them to become unsuspended.
&gt; 
&gt; I see, could we just put a stack allocated set outside the loop and copy into that then? Right after the loop add them all back. That&apos;s like 3 lines of code instead of all this.

No. Observers aren&apos;t going to move from suspended-&gt;ready within the same stack. They will change states with later calls from a run loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799708</commentid>
    <comment_count>25</comment_count>
      <attachid>181210</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-01-03 14:54:24 -0800</bug_when>
    <thetext>Comment on attachment 181210
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2833
&gt;&gt; +    push(@headerContent, &quot;    virtual ScriptExecutionContext* scriptExecutionContext() const { return ContextDestructionObserver::scriptExecutionContext(); }\n\n&quot;);
&gt; 
&gt; Can&apos;t we just write:
&gt; 
&gt; &quot;using ContextDestructionObserver::scriptExecutionContext;&quot; ?

nope. that doesn&apos;t appear to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799744</commentid>
    <comment_count>26</comment_count>
      <attachid>181210</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 15:24:04 -0800</bug_when>
    <thetext>Comment on attachment 181210
Patch

Clearing flags on attachment: 181210

Committed r138754: &lt;http://trac.webkit.org/changeset/138754&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799745</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 15:24:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799861</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-03 17:09:47 -0800</bug_when>
    <thetext>This patch appears to have broken bindings tests:
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29/builds/4437
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29/builds/4437/steps/bindings-generation-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799866</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-03 17:19:23 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; This patch appears to have broken bindings tests:
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29/builds/4437
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29/builds/4437/steps/bindings-generation-tests/logs/stdio

Fixed in http://trac.webkit.org/changeset/138769</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180827</attachid>
            <date>2012-12-27 15:34:36 -0800</date>
            <delta_ts>2013-01-03 12:19:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105810-20121227153147.patch</filename>
            <type>text/plain</type>
            <size>8622</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIxMWE1MTI0MTdkYTY5
YjRmMzYwOWQyYmQ4NGMwODJjZDJkZTNjMS4uNTNiZDAzMGQ4MzlhYWY3MzQwYTFkMDYyNWIzNzAz
YzQ2ZTM5MzE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTI3ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
IE9ic2VydmVyc10gcHJldmVudCBkZWxpdmVyeSB3aGlsZSByZWNpcGllbnQgY29udGV4dCBpcyBz
dXNwZW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTgxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxl
LXBhdXNlZC5odG1sCisKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmNhbkRlbGl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKToKKyAgICAgICAg
KiBkb20vTXV0YXRpb25PYnNlcnZlci5oOgorCiAyMDEyLTEyLTI3ICBLb25kYXBhbGx5IEthbHlh
biAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXZWJHTF0g
SW1wbGVtZW50IEVHTCBzdXBwb3J0IHdpdGggR0xYLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCmluZGV4IDdiMWViYWI0YzIyNTU0NzIwNjQyNjUyNjU3MTM0OGRmYTNmYjRm
ZjIuLjNhZmM3MGU3YjNmYWE2M2U1ZjVmOTE3ZmQ1NzZhNDZkYzNmNDZlZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNv
cmQuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkNhbGxiYWNrLmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTE1NCw2ICsxNTUsMTIgQEAgc3RhdGljIE11dGF0aW9u
T2JzZXJ2ZXJTZXQmIGFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkKICAgICByZXR1cm4gYWN0aXZl
T2JzZXJ2ZXJzOwogfQogCitzdGF0aWMgTXV0YXRpb25PYnNlcnZlclNldCYgc3VzcGVuZGVkTXV0
YXRpb25PYnNlcnZlcnMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0YXRpb25PYnNl
cnZlclNldCwgc3VzcGVuZGVkT2JzZXJ2ZXJzLCAoKSk7CisgICAgcmV0dXJuIHN1c3BlbmRlZE9i
c2VydmVyczsKK30KKwogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25SZWNv
cmQoUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKQEAgLTE3NSw4ICsxODIsMjAgQEAgSGFzaFNldDxOb2RlKj4gTXV0YXRp
b25PYnNlcnZlcjo6Z2V0T2JzZXJ2ZWROb2RlcygpIGNvbnN0CiAgICAgcmV0dXJuIG9ic2VydmVk
Tm9kZXM7CiB9CiAKK2Jvb2wgTXV0YXRpb25PYnNlcnZlcjo6Y2FuRGVsaXZlcigpCit7CisvLyBG
SVhNRTogSG93IGRvZXMgSlNDIHN1c3BlbmQgZm9yIGluc3BlY3Rpb24/CisjaWYgVVNFKFY4KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFY4TXV0YXRpb25DYWxsYmFjayo+KG1fY2FsbGJh
Y2suZ2V0KCkpLT5jYW5JbnZva2VDYWxsYmFjaygpOworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgorfQorCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXIoKQogeworICAgIEFT
U0VSVChjYW5EZWxpdmVyKCkpOworCiAgICAgLy8gQ2FsbGluZyBjbGVhclRyYW5zaWVudFJlZ2lz
dHJhdGlvbnMoKSBjYW4gbW9kaWZ5IG1fcmVnaXN0cmF0aW9ucywgc28gaXQncyBuZWNlc3NhcnkK
ICAgICAvLyB0byBtYWtlIGEgY29weSBvZiB0aGUgdHJhbnNpZW50IHJlZ2lzdHJhdGlvbnMgYmVm
b3JlIG9wZXJhdGluZyBvbiB0aGVtLgogICAgIFZlY3RvcjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uKiwgMT4gdHJhbnNpZW50UmVnaXN0cmF0aW9uczsKQEAgLTIwNCwxMyArMjIzLDI5IEBA
IHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpCiAgICAgICAgIHJl
dHVybjsKICAgICBkZWxpdmVyeUluUHJvZ3Jlc3MgPSB0cnVlOwogCisgICAgaWYgKCFzdXNwZW5k
ZWRNdXRhdGlvbk9ic2VydmVycygpLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8UmVmUHRy
PE11dGF0aW9uT2JzZXJ2ZXI+ID4gc3VzcGVuZGVkOworICAgICAgICBjb3B5VG9WZWN0b3Ioc3Vz
cGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKSwgc3VzcGVuZGVkKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdXNwZW5kZWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICgh
c3VzcGVuZGVkW2ldLT5jYW5EZWxpdmVyKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKCkucmVtb3ZlKHN1c3BlbmRl
ZFtpXSk7CisgICAgICAgICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZChzdXNwZW5k
ZWRbaV0pOworICAgICAgICB9CisgICAgfQorCiAgICAgd2hpbGUgKCFhY3RpdmVNdXRhdGlvbk9i
c2VydmVycygpLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXI+ID4gb2JzZXJ2ZXJzOwogICAgICAgICBjb3B5VG9WZWN0b3IoYWN0aXZlTXV0YXRpb25P
YnNlcnZlcnMoKSwgb2JzZXJ2ZXJzKTsKICAgICAgICAgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMo
KS5jbGVhcigpOwogICAgICAgICBzdGQ6OnNvcnQob2JzZXJ2ZXJzLmJlZ2luKCksIG9ic2VydmVy
cy5lbmQoKSwgT2JzZXJ2ZXJMZXNzVGhhbigpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvYnNlcnZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvYnNlcnZlcnNbaV0tPmRl
bGl2ZXIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYnNlcnZlcnMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChvYnNlcnZlcnNbaV0tPmNhbkRlbGl2ZXIoKSkKKyAg
ICAgICAgICAgICAgICBvYnNlcnZlcnNbaV0tPmRlbGl2ZXIoKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpLmFkZChvYnNlcnZl
cnNbaV0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgZGVsaXZlcnlJblByb2dyZXNzID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA2NzdjNjM3ZmY0MTAw
NjI5ZGJkM2RjNDA4NzExMDMzY2VmOThiYjcxLi44ODA5NmRmZDgxZmIxZGU3MWU4NzRhZGQxMDU5
NDM3OTJlMDdkNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTg2
LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2YXRpb25FbmRlZChNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uKik7CiAgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNvcmQoUGFz
c1JlZlB0cjxNdXRhdGlvblJlY29yZD4pOwogICAgIHZvaWQgc2V0SGFzVHJhbnNpZW50UmVnaXN0
cmF0aW9uKCk7CisgICAgYm9vbCBjYW5EZWxpdmVyKCk7CiAKICAgICBIYXNoU2V0PE5vZGUqPiBn
ZXRPYnNlcnZlZE5vZGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMjk2MjIwNTc2YjAxMDE5Y2EyZWMw
MzRjZGI1ZmIwYjBkYTVlMDU0Li4xM2VhZGE1YmM1NGI2MTdkMzNmMDc4ZmQxNjNiNTgyNjA5NTRi
NzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTItMjcgIFJhZmFlbCBXZWluc3RlaW4g
IDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBbTXV0YXRpb24gT2JzZXJ2ZXJzXSBw
cmV2ZW50IGRlbGl2ZXJ5IHdoaWxlIHJlY2lwaWVudCBjb250ZXh0IGlzIHN1c3BlbmRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvbXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvbXV0YXRpb24tb2JzZXJ2
ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbDogQWRkZWQuCisKIDIwMTItMTItMjcgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogW1JlZ3Jlc3Npb25dIENhbiBub3Qgc2V0IGJyZWFrcG9pbnRzIGluIHNjcmlwdHMgbG9hZGVk
IHdpdGggc291cmNlIG1hcC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVu
ZC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlM2I0M2QyNTFmYjhmOTU0
MjhmOTI4OGE3NjhkOGZmMmI0MWRhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvbXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHRoYXQgRE9NIE11dGF0aW9uIE9i
c2VydmVycyBkbyBub3QgYXR0ZW1wdCB0byBkZWxpdmVyIG11dGF0aW9uIHJlY29yZHMgd2hpbGUg
dGhlIGRlYnVnZ2VyIGlzIHBhdXNlZC5CdWcgMTA1ODEwCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVk
LgorRElWIGFuZCBvYnNlcnZlciBzZXR1cC4KK2RlbGl2ZXJ5Q291bnQgPSAwCitzZXRBdHRyaWJ1
dGUgc2hvdWxkIGhhdmUgdHJpZ2dlcmVkIGRlbGl2ZXJ5LgorZGVsaXZlcnlDb3VudCA9IDEKK211
dGF0ZUFuZFBhdXNlIGludm9rZWQuCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0RlbGl2ZXJ5
IHNob3VsZCBub3QgaGF2ZSB0YWtlbiBwbGFjZS4KK2RlbGl2ZXJ5Q291bnQgPSAxCitTY3JpcHQg
ZXhlY3V0aW9uIHJlc3VtZWQuCitTZWNvbmQgZGVsaXZlcnkgc2hvdWxkIG5vdyBoYXZlIGhhcHBl
bmVkLgorZGVsaXZlcnlDb3VudCA9IDIKK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL211dGF0aW9uLW9ic2VydmVyLXN1
c3BlbmQtd2hpbGUtcGF1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
bXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NTk1ZTY2NWU1MWZhNWMzZTMyYWVlYWU0NjMwNmFjZjRkZTk1OTIwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL211dGF0aW9uLW9ic2VydmVyLXN1c3Bl
bmQtd2hpbGUtcGF1c2VkLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB2YXIgc2V0dXAgPQorICAgICAgICAidmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpO1xuIiArCisgICAgICAgICJ2YXIgZGVsaXZlcnlDb3VudCA9IDA7XG4iICsK
KyAgICAgICAgInZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKHJlY29yZHMpIHtcbiIgKworICAgICAgICAiICAgIGRlbGl2ZXJ5Q291bnQrKztcbiIgKwor
ICAgICAgICAifSk7XG4iICsKKyAgICAgICAgIm9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJp
YnV0ZXM6IHRydWUgfSk7IjsKKyAgICAKKyAgICB2YXIgbXV0YXRlQW5kUGF1c2UgPSAKKyAgICAg
ICAgImZ1bmN0aW9uIG11dGF0ZUFuZFBhdXNlKCkge1xuIiArCisgICAgICAgICIgICAgZGl2LnNl
dEF0dHJpYnV0ZSgnZm9vJywgJ2JheicpO1xuIiArCisgICAgICAgICIgICAgZGVidWdnZXI7XG4i
ICsKKyAgICAgICAgIn07XG4iICsKKyAgICAgICAgInNldFRpbWVvdXQobXV0YXRlQW5kUGF1c2Us
IDApOyI7CisKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKKwor
ICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJbkNvbnNvbGUoc2V0dXAsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIkRJViBhbmQgb2JzZXJ2ZXIgc2V0dXAuIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlQW5kRHVtcCgiZGVsaXZlcnlDb3VudCIsIHN0ZXAy
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgiZGl2LnNldEF0dHJpYnV0ZSgn
Zm9vJywgJ2JhcicpIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgic2V0QXR0cmlidXRlIHNob3VsZCBoYXZlIHRyaWdnZXJlZCBkZWxpdmVyeS4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKCJkZWxp
dmVyeUNvdW50Iiwgc3RlcDMpOyAKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c3RlcDMoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSht
dXRhdGVBbmRQYXVzZSwgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQuYmluZChJbnNwZWN0b3JUZXN0
LCAibXV0YXRlQW5kUGF1c2UgaW52b2tlZC4iKSk7CisgICAgICAgIEluc3BlY3RvclRlc3Qud2Fp
dFVudGlsUGF1c2VkKHN0ZXA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkRlbGl2ZXJ5IHNob3VsZCBub3QgaGF2ZSB0
YWtlbiBwbGFjZS4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZUFu
ZER1bXAoImRlbGl2ZXJ5Q291bnQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QucmVzdW1lRXhlY3V0aW9uKHN0ZXA1KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc3RlcDUoKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZWNv
bmQgZGVsaXZlcnkgc2hvdWxkIG5vdyBoYXZlIGhhcHBlbmVkLiIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlQW5kRHVtcCgiZGVsaXZlcnlDb3VudCIsIEluc3BlY3Rv
clRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBET00gTXV0
YXRpb24gT2JzZXJ2ZXJzIGRvIG5vdCBhdHRlbXB0IHRvIGRlbGl2ZXIgbXV0YXRpb24gcmVjb3Jk
cyB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU4MTAiPkJ1ZyAxMDU4MTA8L2E+Cis8L3A+CisKKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181201</attachid>
            <date>2013-01-03 12:19:23 -0800</date>
            <delta_ts>2013-01-03 14:01:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105810-20130103121630.patch</filename>
            <type>text/plain</type>
            <size>9380</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ0MTk2NTNiOGVlMTA4
MDcyODU1MDkzNzU2NDk5MTNiMWJhNjQ3Ny4uNTNiNjdjZTQyNWVkNjYwMTQyZTZhNGQ5NjU0YTVl
MzNlZjBlY2JjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTI3ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
IE9ic2VydmVyc10gcHJldmVudCBkZWxpdmVyeSB3aGlsZSByZWNpcGllbnQgY29udGV4dCBpcyBz
dXNwZW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTgxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxl
LXBhdXNlZC5odG1sCisKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmNhbkRlbGl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKToKKyAgICAgICAg
KiBkb20vTXV0YXRpb25PYnNlcnZlci5oOgorCiAyMDEzLTAxLTAzICBUaWFuY2hlbmcgSmlhbmcg
IDx0aWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgVXBkYXRlIEJCMTAgbWVkaWEgcmVuZGVyIHRo
ZW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCA3NjUyY2QyNTU0OWMzZmY4Nzg5ZjNmNzg0MGU4N2ExNmEyNDY5MzQzLi4x
MjhiMzA4ODJhY2I2ODZkYzE2NTQzNTFlNDYwODBlNTRlMDdlNjUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzI4Miw2
ICszMjgyLDggQEAgRU5ECiAgICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQp
OworICAKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgJHt2OEludGVyZmFjZU5h
bWV9KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oCmlu
ZGV4IDExOTE5N2FiZTM0YjFkYTkwNGQ0MjJiYmY4ZTBmMWY3N2U3NzZkZjIuLjg1YzQ2YTYxYmE3
YTMwYjlkYjZmOTdiYjFkYTg2MmVlMmVhNTI3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbkNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
Q2FsbGJhY2suaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TXV0YXRp
b25DYWxsYmFjaygpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KE11dGF0aW9u
UmVjb3JkQXJyYXkqLCBNdXRhdGlvbk9ic2VydmVyKikgPSAwOworICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA3YjFlYmFi
NGMyMjU1NDcyMDY0MjY1MjY1NzEzNDhkZmEzZmI0ZmYyLi4yNzM3ZmYyNDA1MTE5ZGUzNmY3NDUx
Yjk4MGVkNTVkMTdiZDE0YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwCkBAIC0xNTQsNiArMTU0LDEyIEBAIHN0YXRpYyBNdXRhdGlvbk9ic2VydmVyU2V0JiBhY3Rp
dmVNdXRhdGlvbk9ic2VydmVycygpCiAgICAgcmV0dXJuIGFjdGl2ZU9ic2VydmVyczsKIH0KIAor
c3RhdGljIE11dGF0aW9uT2JzZXJ2ZXJTZXQmIHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGF0aW9uT2JzZXJ2ZXJTZXQsIHN1c3BlbmRl
ZE9ic2VydmVycywgKCkpOworICAgIHJldHVybiBzdXNwZW5kZWRPYnNlcnZlcnM7Cit9CisKIHZv
aWQgTXV0YXRpb25PYnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFBhc3NSZWZQdHI8TXV0
YXRpb25SZWNvcmQ+IG11dGF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBA
IC0xNzUsOCArMTgxLDE1IEBAIEhhc2hTZXQ8Tm9kZSo+IE11dGF0aW9uT2JzZXJ2ZXI6OmdldE9i
c2VydmVkTm9kZXMoKSBjb25zdAogICAgIHJldHVybiBvYnNlcnZlZE5vZGVzOwogfQogCitib29s
IE11dGF0aW9uT2JzZXJ2ZXI6OmNhbkRlbGl2ZXIoKQoreworICAgIHJldHVybiAhbV9jYWxsYmFj
ay0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
KCk7Cit9CisKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlcigpCiB7CisgICAgQVNTRVJU
KGNhbkRlbGl2ZXIoKSk7CisKICAgICAvLyBDYWxsaW5nIGNsZWFyVHJhbnNpZW50UmVnaXN0cmF0
aW9ucygpIGNhbiBtb2RpZnkgbV9yZWdpc3RyYXRpb25zLCBzbyBpdCdzIG5lY2Vzc2FyeQogICAg
IC8vIHRvIG1ha2UgYSBjb3B5IG9mIHRoZSB0cmFuc2llbnQgcmVnaXN0cmF0aW9ucyBiZWZvcmUg
b3BlcmF0aW5nIG9uIHRoZW0uCiAgICAgVmVjdG9yPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b24qLCAxPiB0cmFuc2llbnRSZWdpc3RyYXRpb25zOwpAQCAtMjA0LDEzICsyMTcsMjkgQEAgdm9p
ZCBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCkKICAgICAgICAgcmV0dXJu
OwogICAgIGRlbGl2ZXJ5SW5Qcm9ncmVzcyA9IHRydWU7CiAKKyAgICBpZiAoIXN1c3BlbmRlZE11
dGF0aW9uT2JzZXJ2ZXJzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TXV0
YXRpb25PYnNlcnZlcj4gPiBzdXNwZW5kZWQ7CisgICAgICAgIGNvcHlUb1ZlY3RvcihzdXNwZW5k
ZWRNdXRhdGlvbk9ic2VydmVycygpLCBzdXNwZW5kZWQpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN1c3BlbmRlZC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzdXNw
ZW5kZWRbaV0tPmNhbkRlbGl2ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgc3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKS5yZW1vdmUoc3VzcGVuZGVkW2ld
KTsKKyAgICAgICAgICAgIGFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkuYWRkKHN1c3BlbmRlZFtp
XSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB3aGlsZSAoIWFjdGl2ZU11dGF0aW9uT2JzZXJ2
ZXJzKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25PYnNlcnZl
cj4gPiBvYnNlcnZlcnM7CiAgICAgICAgIGNvcHlUb1ZlY3RvcihhY3RpdmVNdXRhdGlvbk9ic2Vy
dmVycygpLCBvYnNlcnZlcnMpOwogICAgICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmNs
ZWFyKCk7CiAgICAgICAgIHN0ZDo6c29ydChvYnNlcnZlcnMuYmVnaW4oKSwgb2JzZXJ2ZXJzLmVu
ZCgpLCBPYnNlcnZlckxlc3NUaGFuKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9ic2VydmVycy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG9ic2VydmVyc1tpXS0+ZGVsaXZl
cigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9ic2VydmVycy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgaWYgKG9ic2VydmVyc1tpXS0+Y2FuRGVsaXZlcigpKQorICAgICAg
ICAgICAgICAgIG9ic2VydmVyc1tpXS0+ZGVsaXZlcigpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKCkuYWRkKG9ic2VydmVyc1tp
XSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBkZWxpdmVyeUluUHJvZ3Jlc3MgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCmluZGV4IDY3N2M2MzdmZjQxMDA2Mjlk
YmQzZGM0MDg3MTEwMzNjZWY5OGJiNzEuLjg4MDk2ZGZkODFmYjFkZTcxZTg3NGFkZDEwNTk0Mzc5
MmUwN2Q0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaApAQCAtODYsNiAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYnNlcnZhdGlvbkVuZGVkKE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24qKTsKICAgICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZChQYXNzUmVm
UHRyPE11dGF0aW9uUmVjb3JkPik7CiAgICAgdm9pZCBzZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRp
b24oKTsKKyAgICBib29sIGNhbkRlbGl2ZXIoKTsKIAogICAgIEhhc2hTZXQ8Tm9kZSo+IGdldE9i
c2VydmVkTm9kZXMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkNzg5MTlmM2JiYjBlNGFhM2NhOGNlMzcy
YjQwOWJiMzVmYzkyZGIuLjFkZDcyMmZlN2RhMjkwMzk0ODg3MWZiZjA4NDE4Yzg0YjVhZDQ5NDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMi0yNyAgUmFmYWVsIFdlaW5zdGVpbiAgPHJh
ZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtNdXRhdGlvbiBPYnNlcnZlcnNdIHByZXZl
bnQgZGVsaXZlcnkgd2hpbGUgcmVjaXBpZW50IGNvbnRleHQgaXMgc3VzcGVuZGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU4MTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1z
dXNwZW5kLXdoaWxlLXBhdXNlZC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0wMyAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBn
YXJkZW5pbmcsIHNraXAgYSBuZXcgZmFpbGluZyB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL211dGF0aW9uLW9ic2VydmVyLXN1c3BlbmQtd2hpbGUtcGF1
c2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlv
bi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmUzYjQzZDI1MWZiOGY5NTQyOGY5Mjg4YTc2OGQ4ZmYyYjQxZGFlZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNw
ZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMgdGhh
dCBET00gTXV0YXRpb24gT2JzZXJ2ZXJzIGRvIG5vdCBhdHRlbXB0IHRvIGRlbGl2ZXIgbXV0YXRp
b24gcmVjb3JkcyB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLkJ1ZyAxMDU4MTAKKworRGVi
dWdnZXIgd2FzIGVuYWJsZWQuCitESVYgYW5kIG9ic2VydmVyIHNldHVwLgorZGVsaXZlcnlDb3Vu
dCA9IDAKK3NldEF0dHJpYnV0ZSBzaG91bGQgaGF2ZSB0cmlnZ2VyZWQgZGVsaXZlcnkuCitkZWxp
dmVyeUNvdW50ID0gMQorbXV0YXRlQW5kUGF1c2UgaW52b2tlZC4KK1NjcmlwdCBleGVjdXRpb24g
cGF1c2VkLgorRGVsaXZlcnkgc2hvdWxkIG5vdCBoYXZlIHRha2VuIHBsYWNlLgorZGVsaXZlcnlD
b3VudCA9IDEKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK1NlY29uZCBkZWxpdmVyeSBzaG91
bGQgbm93IGhhdmUgaGFwcGVuZWQuCitkZWxpdmVyeUNvdW50ID0gMgorRGVidWdnZXIgd2FzIGRp
c2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbXV0
YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1OTVlNjY1ZTUxZmE1YzNlMzJhZWVhZTQ2MzA2YWNmNGRlOTU5MjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbXV0YXRp
b24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbApAQCAtMCwwICsxLDcwIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciB0
ZXN0ID0gZnVuY3Rpb24oKQoreworICAgIHZhciBzZXR1cCA9CisgICAgICAgICJ2YXIgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4iICsKKyAgICAgICAgInZhciBkZWxpdmVy
eUNvdW50ID0gMDtcbiIgKworICAgICAgICAidmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24ocmVjb3Jkcykge1xuIiArCisgICAgICAgICIgICAgZGVsaXZl
cnlDb3VudCsrO1xuIiArCisgICAgICAgICJ9KTtcbiIgKworICAgICAgICAib2JzZXJ2ZXIub2Jz
ZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsiOworICAgIAorICAgIHZhciBtdXRhdGVB
bmRQYXVzZSA9IAorICAgICAgICAiZnVuY3Rpb24gbXV0YXRlQW5kUGF1c2UoKSB7XG4iICsKKyAg
ICAgICAgIiAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7XG4iICsKKyAgICAgICAg
IiAgICBkZWJ1Z2dlcjtcbiIgKworICAgICAgICAifTtcbiIgKworICAgICAgICAic2V0VGltZW91
dChtdXRhdGVBbmRQYXVzZSwgMCk7IjsKKworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dl
clRlc3Qoc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZShzZXR1cCwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRElWIGFuZCBvYnNlcnZlciBzZXR1cC4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKCJkZWxp
dmVyeUNvdW50Iiwgc3RlcDIpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
dGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJk
aXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJykiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJzZXRBdHRyaWJ1dGUgc2hvdWxkIGhhdmUgdHJpZ2dl
cmVkIGRlbGl2ZXJ5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29u
c29sZUFuZER1bXAoImRlbGl2ZXJ5Q291bnQiLCBzdGVwMyk7IAorICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5Db25zb2xlKG11dGF0ZUFuZFBhdXNlLCBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdC5i
aW5kKEluc3BlY3RvclRlc3QsICJtdXRhdGVBbmRQYXVzZSBpbnZva2VkLiIpKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXA0KCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGVsaXZlcnkg
c2hvdWxkIG5vdCBoYXZlIHRha2VuIHBsYWNlLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5Db25zb2xlQW5kRHVtcCgiZGVsaXZlcnlDb3VudCIsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oc3RlcDUpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIlNlY29uZCBkZWxpdmVyeSBzaG91bGQgbm93IGhhdmUgaGFwcGVuZWQuIik7
CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKCJkZWxpdmVy
eUNvdW50IiwgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCk7CisgICAgfQorfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitU
ZXN0cyB0aGF0IERPTSBNdXRhdGlvbiBPYnNlcnZlcnMgZG8gbm90IGF0dGVtcHQgdG8gZGVsaXZl
ciBtdXRhdGlvbiByZWNvcmRzIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQuPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTgxMCI+QnVnIDEwNTgx
MDwvYT4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181205</attachid>
            <date>2013-01-03 12:39:38 -0800</date>
            <delta_ts>2013-01-03 13:33:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105810-20130103123645.patch</filename>
            <type>text/plain</type>
            <size>10295</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYzYzcxYWRlYTUxZTYy
ZmZjZTYwYWIzMjRkNzA5ZGJhMGZhOTEyOS4uYmM3YzkyOTcwYmRiYWFiNTFjYjg4MmEzYWQzNzc3
ZThkMTRlOWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTI3ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
IE9ic2VydmVyc10gcHJldmVudCBkZWxpdmVyeSB3aGlsZSByZWNpcGllbnQgY29udGV4dCBpcyBz
dXNwZW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTgxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxl
LXBhdXNlZC5odG1sCisKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmNhbkRlbGl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKToKKyAgICAgICAg
KiBkb20vTXV0YXRpb25PYnNlcnZlci5oOgorCiAyMDEzLTAxLTAzICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUXVlcnlpbmcgdHJhbnNpdGlvbi10aW1pbmct
ZnVuY3Rpb24gdmFsdWUgb24gdGhlIGNvbXB1dGVkIHN0eWxlIGRvZXMgbm90IHJldHVybiBrZXl3
b3JkcyB3aGVuIGl0IHNob3VsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNmM5MmQ3MTE2ODIwZDMxZDI0MzU2MjJiNjQ5
Yzg3M2ZkYzBlYmUzMS4uMTEwYTUyNzIzZWViNTU1ODkyYTgyY2EyNDM1M2M4M2FhODBlMTY5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTI4MjksNiArMjgyOSw5IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyCiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAkY2xh
c3NOYW1lKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTtcbiIpOwogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgfVxuXG4iKTsKIAorICAgICMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAg
IHB1c2goQGhlYWRlckNvbnRleHQsICIgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfVxuXG4iKTsKKwogICAgICMg
RGVzdHJ1Y3RvcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB+JGNsYXNz
TmFtZSgpO1xuIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZDIzZjUzYTg1ODU2Nzg2M2NkNzRhNjY2YjBmZWRmYTJk
ZTEwMmEzZS4uNDI2NWI2MDgzZGRlNTE0NzJlOTRhNzJkYjY2ZDJkOTU1MDAxODNkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTMyODYsNiArMzI4Niw4IEBAIEVORAogICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKKyAgCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgogICAgICR7djhJ
bnRlcmZhY2VOYW1lfSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uQ2Fs
bGJhY2suaAppbmRleCAxMTkxOTdhYmUzNGIxZGE5MDRkNDIyYmJmOGUwZjFmNzdlNzc2ZGYyLi44
NWM0NmE2MWJhN2EzMGI5ZGI2Zjk3YmIxZGE4NjJlZTJlYTUyNzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkNhbGxiYWNrLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfk11dGF0aW9uQ2FsbGJhY2soKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVu
dChNdXRhdGlvblJlY29yZEFycmF5KiwgTXV0YXRpb25PYnNlcnZlciopID0gMDsKKyAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5k
ZXggN2IxZWJhYjRjMjI1NTQ3MjA2NDI2NTI2NTcxMzQ4ZGZhM2ZiNGZmMi4uMjczN2ZmMjQwNTEx
OWRlMzZmNzQ1MWI5ODBlZDU1ZDE3YmQxNGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmNwcApAQCAtMTU0LDYgKzE1NCwxMiBAQCBzdGF0aWMgTXV0YXRpb25PYnNlcnZl
clNldCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogICAgIHJldHVybiBhY3RpdmVPYnNlcnZl
cnM7CiB9CiAKK3N0YXRpYyBNdXRhdGlvbk9ic2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9i
c2VydmVycygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVyU2V0
LCBzdXNwZW5kZWRPYnNlcnZlcnMsICgpKTsKKyAgICByZXR1cm4gc3VzcGVuZGVkT2JzZXJ2ZXJz
OworfQorCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChQYXNz
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMTc1LDggKzE4MSwxNSBAQCBIYXNoU2V0PE5vZGUqPiBNdXRhdGlvbk9ic2Vy
dmVyOjpnZXRPYnNlcnZlZE5vZGVzKCkgY29uc3QKICAgICByZXR1cm4gb2JzZXJ2ZWROb2RlczsK
IH0KIAorYm9vbCBNdXRhdGlvbk9ic2VydmVyOjpjYW5EZWxpdmVyKCkKK3sKKyAgICByZXR1cm4g
IW1fY2FsbGJhY2stPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0Fy
ZVN1c3BlbmRlZCgpOworfQorCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXIoKQogewor
ICAgIEFTU0VSVChjYW5EZWxpdmVyKCkpOworCiAgICAgLy8gQ2FsbGluZyBjbGVhclRyYW5zaWVu
dFJlZ2lzdHJhdGlvbnMoKSBjYW4gbW9kaWZ5IG1fcmVnaXN0cmF0aW9ucywgc28gaXQncyBuZWNl
c3NhcnkKICAgICAvLyB0byBtYWtlIGEgY29weSBvZiB0aGUgdHJhbnNpZW50IHJlZ2lzdHJhdGlv
bnMgYmVmb3JlIG9wZXJhdGluZyBvbiB0aGVtLgogICAgIFZlY3RvcjxNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uKiwgMT4gdHJhbnNpZW50UmVnaXN0cmF0aW9uczsKQEAgLTIwNCwxMyArMjE3
LDI5IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpCiAgICAg
ICAgIHJldHVybjsKICAgICBkZWxpdmVyeUluUHJvZ3Jlc3MgPSB0cnVlOwogCisgICAgaWYgKCFz
dXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8
UmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+ID4gc3VzcGVuZGVkOworICAgICAgICBjb3B5VG9WZWN0
b3Ioc3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKSwgc3VzcGVuZGVkKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdXNwZW5kZWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGlmICghc3VzcGVuZGVkW2ldLT5jYW5EZWxpdmVyKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKCkucmVtb3ZlKHN1
c3BlbmRlZFtpXSk7CisgICAgICAgICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZChz
dXNwZW5kZWRbaV0pOworICAgICAgICB9CisgICAgfQorCiAgICAgd2hpbGUgKCFhY3RpdmVNdXRh
dGlvbk9ic2VydmVycygpLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRyPE11dGF0
aW9uT2JzZXJ2ZXI+ID4gb2JzZXJ2ZXJzOwogICAgICAgICBjb3B5VG9WZWN0b3IoYWN0aXZlTXV0
YXRpb25PYnNlcnZlcnMoKSwgb2JzZXJ2ZXJzKTsKICAgICAgICAgYWN0aXZlTXV0YXRpb25PYnNl
cnZlcnMoKS5jbGVhcigpOwogICAgICAgICBzdGQ6OnNvcnQob2JzZXJ2ZXJzLmJlZ2luKCksIG9i
c2VydmVycy5lbmQoKSwgT2JzZXJ2ZXJMZXNzVGhhbigpKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBvYnNlcnZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvYnNlcnZlcnNb
aV0tPmRlbGl2ZXIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYnNlcnZlcnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChvYnNlcnZlcnNbaV0tPmNhbkRlbGl2ZXIo
KSkKKyAgICAgICAgICAgICAgICBvYnNlcnZlcnNbaV0tPmRlbGl2ZXIoKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpLmFkZChv
YnNlcnZlcnNbaV0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgZGVsaXZlcnlJblByb2dyZXNz
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA2NzdjNjM3
ZmY0MTAwNjI5ZGJkM2RjNDA4NzExMDMzY2VmOThiYjcxLi44ODA5NmRmZDgxZmIxZGU3MWU4NzRh
ZGQxMDU5NDM3OTJlMDdkNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgK
QEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2YXRpb25FbmRlZChNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKik7CiAgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNv
cmQoUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4pOwogICAgIHZvaWQgc2V0SGFzVHJhbnNpZW50
UmVnaXN0cmF0aW9uKCk7CisgICAgYm9vbCBjYW5EZWxpdmVyKCk7CiAKICAgICBIYXNoU2V0PE5v
ZGUqPiBnZXRPYnNlcnZlZE5vZGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYjE5NjNlMTNjYjM2OGQw
ZWQxYzg2YTM3N2YwZjRmMjZhOTY5ZGY1Li40N2E3MTZjNzg0ZWE1MTc2M2YwYjBlMmM0OGRmZDAw
ZjI5MjZkMjk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTItMjcgIFJhZmFlbCBXZWlu
c3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBbTXV0YXRpb24gT2JzZXJ2
ZXJzXSBwcmV2ZW50IGRlbGl2ZXJ5IHdoaWxlIHJlY2lwaWVudCBjb250ZXh0IGlzIHN1c3BlbmRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvbXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvbXV0YXRpb24t
b2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDMg
IEFsZXhpcyBNZW5hcmQgIDxhbGV4aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBRdWVyeWluZyB0
cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiB2YWx1ZSBvbiB0aGUgY29tcHV0ZWQgc3R5bGUgZG9l
cyBub3QgcmV0dXJuIGtleXdvcmRzIHdoZW4gaXQgc2hvdWxkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL211dGF0aW9uLW9ic2VydmVyLXN1c3BlbmQtd2hpbGUt
cGF1c2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRh
dGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmUzYjQzZDI1MWZiOGY5NTQyOGY5Mjg4YTc2OGQ4ZmYyYjQxZGFlZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1z
dXNwZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMg
dGhhdCBET00gTXV0YXRpb24gT2JzZXJ2ZXJzIGRvIG5vdCBhdHRlbXB0IHRvIGRlbGl2ZXIgbXV0
YXRpb24gcmVjb3JkcyB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLkJ1ZyAxMDU4MTAKKwor
RGVidWdnZXIgd2FzIGVuYWJsZWQuCitESVYgYW5kIG9ic2VydmVyIHNldHVwLgorZGVsaXZlcnlD
b3VudCA9IDAKK3NldEF0dHJpYnV0ZSBzaG91bGQgaGF2ZSB0cmlnZ2VyZWQgZGVsaXZlcnkuCitk
ZWxpdmVyeUNvdW50ID0gMQorbXV0YXRlQW5kUGF1c2UgaW52b2tlZC4KK1NjcmlwdCBleGVjdXRp
b24gcGF1c2VkLgorRGVsaXZlcnkgc2hvdWxkIG5vdCBoYXZlIHRha2VuIHBsYWNlLgorZGVsaXZl
cnlDb3VudCA9IDEKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK1NlY29uZCBkZWxpdmVyeSBz
aG91bGQgbm93IGhhdmUgaGFwcGVuZWQuCitkZWxpdmVyeUNvdW50ID0gMgorRGVidWdnZXIgd2Fz
IGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
bXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY1OTVlNjY1ZTUxZmE1YzNlMzJhZWVhZTQ2MzA2YWNmNGRlOTU5
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbXV0
YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbApAQCAtMCwwICsxLDcwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3Zh
ciB0ZXN0ID0gZnVuY3Rpb24oKQoreworICAgIHZhciBzZXR1cCA9CisgICAgICAgICJ2YXIgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4iICsKKyAgICAgICAgInZhciBkZWxp
dmVyeUNvdW50ID0gMDtcbiIgKworICAgICAgICAidmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24ocmVjb3Jkcykge1xuIiArCisgICAgICAgICIgICAgZGVs
aXZlcnlDb3VudCsrO1xuIiArCisgICAgICAgICJ9KTtcbiIgKworICAgICAgICAib2JzZXJ2ZXIu
b2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsiOworICAgIAorICAgIHZhciBtdXRh
dGVBbmRQYXVzZSA9IAorICAgICAgICAiZnVuY3Rpb24gbXV0YXRlQW5kUGF1c2UoKSB7XG4iICsK
KyAgICAgICAgIiAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7XG4iICsKKyAgICAg
ICAgIiAgICBkZWJ1Z2dlcjtcbiIgKworICAgICAgICAifTtcbiIgKworICAgICAgICAic2V0VGlt
ZW91dChtdXRhdGVBbmRQYXVzZSwgMCk7IjsKKworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1
Z2dlclRlc3Qoc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZShzZXR1cCwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRElWIGFuZCBvYnNlcnZlciBzZXR1cC4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKCJk
ZWxpdmVyeUNvdW50Iiwgc3RlcDIpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xl
KCJkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJykiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJzZXRBdHRyaWJ1dGUgc2hvdWxkIGhhdmUgdHJp
Z2dlcmVkIGRlbGl2ZXJ5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
Q29uc29sZUFuZER1bXAoImRlbGl2ZXJ5Q291bnQiLCBzdGVwMyk7IAorICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5Db25zb2xlKG11dGF0ZUFuZFBhdXNlLCBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dC5iaW5kKEluc3BlY3RvclRlc3QsICJtdXRhdGVBbmRQYXVzZSBpbnZva2VkLiIpKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXA0KCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGVsaXZl
cnkgc2hvdWxkIG5vdCBoYXZlIHRha2VuIHBsYWNlLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5Db25zb2xlQW5kRHVtcCgiZGVsaXZlcnlDb3VudCIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oc3RlcDUpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgpIHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlNlY29uZCBkZWxpdmVyeSBzaG91bGQgbm93IGhhdmUgaGFwcGVuZWQu
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKCJkZWxp
dmVyeUNvdW50IiwgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCk7CisgICAgfQor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
CitUZXN0cyB0aGF0IERPTSBNdXRhdGlvbiBPYnNlcnZlcnMgZG8gbm90IGF0dGVtcHQgdG8gZGVs
aXZlciBtdXRhdGlvbiByZWNvcmRzIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQuPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTgxMCI+QnVnIDEw
NTgxMDwvYT4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181210</attachid>
            <date>2013-01-03 13:33:24 -0800</date>
            <delta_ts>2013-01-03 15:24:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105810-20130103133031.patch</filename>
            <type>text/plain</type>
            <size>10295</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYzYzcxYWRlYTUxZTYy
ZmZjZTYwYWIzMjRkNzA5ZGJhMGZhOTEyOS4uYmM3YzkyOTcwYmRiYWFiNTFjYjg4MmEzYWQzNzc3
ZThkMTRlOWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTI3ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
IE9ic2VydmVyc10gcHJldmVudCBkZWxpdmVyeSB3aGlsZSByZWNpcGllbnQgY29udGV4dCBpcyBz
dXNwZW5kZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTgxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxl
LXBhdXNlZC5odG1sCisKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmNhbkRlbGl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKToKKyAgICAgICAg
KiBkb20vTXV0YXRpb25PYnNlcnZlci5oOgorCiAyMDEzLTAxLTAzICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUXVlcnlpbmcgdHJhbnNpdGlvbi10aW1pbmct
ZnVuY3Rpb24gdmFsdWUgb24gdGhlIGNvbXB1dGVkIHN0eWxlIGRvZXMgbm90IHJldHVybiBrZXl3
b3JkcyB3aGVuIGl0IHNob3VsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNmM5MmQ3MTE2ODIwZDMxZDI0MzU2MjJiNjQ5
Yzg3M2ZkYzBlYmUzMS4uZjk3ZDA5MmIwOGJjZjJkOWEwYjU2NzliODk1YTQ3NmYyOTI4Y2NiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTI4MjksNiArMjgyOSw5IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyCiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAkY2xh
c3NOYW1lKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTtcbiIpOwogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgfVxuXG4iKTsKIAorICAgICMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfVxuXG4iKTsKKwogICAgICMg
RGVzdHJ1Y3RvcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB+JGNsYXNz
TmFtZSgpO1xuIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZDIzZjUzYTg1ODU2Nzg2M2NkNzRhNjY2YjBmZWRmYTJk
ZTEwMmEzZS4uNDI2NWI2MDgzZGRlNTE0NzJlOTRhNzJkYjY2ZDJkOTU1MDAxODNkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTMyODYsNiArMzI4Niw4IEBAIEVORAogICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKKyAgCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgogICAgICR7djhJ
bnRlcmZhY2VOYW1lfSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uQ2Fs
bGJhY2suaAppbmRleCAxMTkxOTdhYmUzNGIxZGE5MDRkNDIyYmJmOGUwZjFmNzdlNzc2ZGYyLi44
NWM0NmE2MWJhN2EzMGI5ZGI2Zjk3YmIxZGE4NjJlZTJlYTUyNzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkNhbGxiYWNrLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfk11dGF0aW9uQ2FsbGJhY2soKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVu
dChNdXRhdGlvblJlY29yZEFycmF5KiwgTXV0YXRpb25PYnNlcnZlciopID0gMDsKKyAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5k
ZXggN2IxZWJhYjRjMjI1NTQ3MjA2NDI2NTI2NTcxMzQ4ZGZhM2ZiNGZmMi4uMjczN2ZmMjQwNTEx
OWRlMzZmNzQ1MWI5ODBlZDU1ZDE3YmQxNGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmNwcApAQCAtMTU0LDYgKzE1NCwxMiBAQCBzdGF0aWMgTXV0YXRpb25PYnNlcnZl
clNldCYgYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKQogICAgIHJldHVybiBhY3RpdmVPYnNlcnZl
cnM7CiB9CiAKK3N0YXRpYyBNdXRhdGlvbk9ic2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9i
c2VydmVycygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRhdGlvbk9ic2VydmVyU2V0
LCBzdXNwZW5kZWRPYnNlcnZlcnMsICgpKTsKKyAgICByZXR1cm4gc3VzcGVuZGVkT2JzZXJ2ZXJz
OworfQorCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChQYXNz
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMTc1LDggKzE4MSwxNSBAQCBIYXNoU2V0PE5vZGUqPiBNdXRhdGlvbk9ic2Vy
dmVyOjpnZXRPYnNlcnZlZE5vZGVzKCkgY29uc3QKICAgICByZXR1cm4gb2JzZXJ2ZWROb2RlczsK
IH0KIAorYm9vbCBNdXRhdGlvbk9ic2VydmVyOjpjYW5EZWxpdmVyKCkKK3sKKyAgICByZXR1cm4g
IW1fY2FsbGJhY2stPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0Fy
ZVN1c3BlbmRlZCgpOworfQorCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXIoKQogewor
ICAgIEFTU0VSVChjYW5EZWxpdmVyKCkpOworCiAgICAgLy8gQ2FsbGluZyBjbGVhclRyYW5zaWVu
dFJlZ2lzdHJhdGlvbnMoKSBjYW4gbW9kaWZ5IG1fcmVnaXN0cmF0aW9ucywgc28gaXQncyBuZWNl
c3NhcnkKICAgICAvLyB0byBtYWtlIGEgY29weSBvZiB0aGUgdHJhbnNpZW50IHJlZ2lzdHJhdGlv
bnMgYmVmb3JlIG9wZXJhdGluZyBvbiB0aGVtLgogICAgIFZlY3RvcjxNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uKiwgMT4gdHJhbnNpZW50UmVnaXN0cmF0aW9uczsKQEAgLTIwNCwxMyArMjE3
LDI5IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpCiAgICAg
ICAgIHJldHVybjsKICAgICBkZWxpdmVyeUluUHJvZ3Jlc3MgPSB0cnVlOwogCisgICAgaWYgKCFz
dXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8
UmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+ID4gc3VzcGVuZGVkOworICAgICAgICBjb3B5VG9WZWN0
b3Ioc3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKSwgc3VzcGVuZGVkKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdXNwZW5kZWQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGlmICghc3VzcGVuZGVkW2ldLT5jYW5EZWxpdmVyKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKCkucmVtb3ZlKHN1
c3BlbmRlZFtpXSk7CisgICAgICAgICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZChz
dXNwZW5kZWRbaV0pOworICAgICAgICB9CisgICAgfQorCiAgICAgd2hpbGUgKCFhY3RpdmVNdXRh
dGlvbk9ic2VydmVycygpLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRyPE11dGF0
aW9uT2JzZXJ2ZXI+ID4gb2JzZXJ2ZXJzOwogICAgICAgICBjb3B5VG9WZWN0b3IoYWN0aXZlTXV0
YXRpb25PYnNlcnZlcnMoKSwgb2JzZXJ2ZXJzKTsKICAgICAgICAgYWN0aXZlTXV0YXRpb25PYnNl
cnZlcnMoKS5jbGVhcigpOwogICAgICAgICBzdGQ6OnNvcnQob2JzZXJ2ZXJzLmJlZ2luKCksIG9i
c2VydmVycy5lbmQoKSwgT2JzZXJ2ZXJMZXNzVGhhbigpKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBvYnNlcnZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvYnNlcnZlcnNb
aV0tPmRlbGl2ZXIoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYnNlcnZlcnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChvYnNlcnZlcnNbaV0tPmNhbkRlbGl2ZXIo
KSkKKyAgICAgICAgICAgICAgICBvYnNlcnZlcnNbaV0tPmRlbGl2ZXIoKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpLmFkZChv
YnNlcnZlcnNbaV0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgZGVsaXZlcnlJblByb2dyZXNz
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA2NzdjNjM3
ZmY0MTAwNjI5ZGJkM2RjNDA4NzExMDMzY2VmOThiYjcxLi44ODA5NmRmZDgxZmIxZGU3MWU4NzRh
ZGQxMDU5NDM3OTJlMDdkNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgK
QEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2YXRpb25FbmRlZChNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKik7CiAgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNv
cmQoUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4pOwogICAgIHZvaWQgc2V0SGFzVHJhbnNpZW50
UmVnaXN0cmF0aW9uKCk7CisgICAgYm9vbCBjYW5EZWxpdmVyKCk7CiAKICAgICBIYXNoU2V0PE5v
ZGUqPiBnZXRPYnNlcnZlZE5vZGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYjE5NjNlMTNjYjM2OGQw
ZWQxYzg2YTM3N2YwZjRmMjZhOTY5ZGY1Li40N2E3MTZjNzg0ZWE1MTc2M2YwYjBlMmM0OGRmZDAw
ZjI5MjZkMjk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTItMjcgIFJhZmFlbCBXZWlu
c3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBbTXV0YXRpb24gT2JzZXJ2
ZXJzXSBwcmV2ZW50IGRlbGl2ZXJ5IHdoaWxlIHJlY2lwaWVudCBjb250ZXh0IGlzIHN1c3BlbmRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvbXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvbXV0YXRpb24t
b2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDMg
IEFsZXhpcyBNZW5hcmQgIDxhbGV4aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBRdWVyeWluZyB0
cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiB2YWx1ZSBvbiB0aGUgY29tcHV0ZWQgc3R5bGUgZG9l
cyBub3QgcmV0dXJuIGtleXdvcmRzIHdoZW4gaXQgc2hvdWxkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL211dGF0aW9uLW9ic2VydmVyLXN1c3BlbmQtd2hpbGUt
cGF1c2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRh
dGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmUzYjQzZDI1MWZiOGY5NTQyOGY5Mjg4YTc2OGQ4ZmYyYjQxZGFlZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1z
dXNwZW5kLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMg
dGhhdCBET00gTXV0YXRpb24gT2JzZXJ2ZXJzIGRvIG5vdCBhdHRlbXB0IHRvIGRlbGl2ZXIgbXV0
YXRpb24gcmVjb3JkcyB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLkJ1ZyAxMDU4MTAKKwor
RGVidWdnZXIgd2FzIGVuYWJsZWQuCitESVYgYW5kIG9ic2VydmVyIHNldHVwLgorZGVsaXZlcnlD
b3VudCA9IDAKK3NldEF0dHJpYnV0ZSBzaG91bGQgaGF2ZSB0cmlnZ2VyZWQgZGVsaXZlcnkuCitk
ZWxpdmVyeUNvdW50ID0gMQorbXV0YXRlQW5kUGF1c2UgaW52b2tlZC4KK1NjcmlwdCBleGVjdXRp
b24gcGF1c2VkLgorRGVsaXZlcnkgc2hvdWxkIG5vdCBoYXZlIHRha2VuIHBsYWNlLgorZGVsaXZl
cnlDb3VudCA9IDEKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK1NlY29uZCBkZWxpdmVyeSBz
aG91bGQgbm93IGhhdmUgaGFwcGVuZWQuCitkZWxpdmVyeUNvdW50ID0gMgorRGVidWdnZXIgd2Fz
IGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
bXV0YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9tdXRhdGlvbi1vYnNlcnZlci1zdXNwZW5kLXdoaWxlLXBhdXNl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY1OTVlNjY1ZTUxZmE1YzNlMzJhZWVhZTQ2MzA2YWNmNGRlOTU5
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbXV0
YXRpb24tb2JzZXJ2ZXItc3VzcGVuZC13aGlsZS1wYXVzZWQuaHRtbApAQCAtMCwwICsxLDcwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3Zh
ciB0ZXN0ID0gZnVuY3Rpb24oKQoreworICAgIHZhciBzZXR1cCA9CisgICAgICAgICJ2YXIgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4iICsKKyAgICAgICAgInZhciBkZWxp
dmVyeUNvdW50ID0gMDtcbiIgKworICAgICAgICAidmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24ocmVjb3Jkcykge1xuIiArCisgICAgICAgICIgICAgZGVs
aXZlcnlDb3VudCsrO1xuIiArCisgICAgICAgICJ9KTtcbiIgKworICAgICAgICAib2JzZXJ2ZXIu
b2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsiOworICAgIAorICAgIHZhciBtdXRh
dGVBbmRQYXVzZSA9IAorICAgICAgICAiZnVuY3Rpb24gbXV0YXRlQW5kUGF1c2UoKSB7XG4iICsK
KyAgICAgICAgIiAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7XG4iICsKKyAgICAg
ICAgIiAgICBkZWJ1Z2dlcjtcbiIgKworICAgICAgICAifTtcbiIgKworICAgICAgICAic2V0VGlt
ZW91dChtdXRhdGVBbmRQYXVzZSwgMCk7IjsKKworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1
Z2dlclRlc3Qoc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZShzZXR1cCwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRElWIGFuZCBvYnNlcnZlciBzZXR1cC4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKCJk
ZWxpdmVyeUNvdW50Iiwgc3RlcDIpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xl
KCJkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJykiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJzZXRBdHRyaWJ1dGUgc2hvdWxkIGhhdmUgdHJp
Z2dlcmVkIGRlbGl2ZXJ5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
Q29uc29sZUFuZER1bXAoImRlbGl2ZXJ5Q291bnQiLCBzdGVwMyk7IAorICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5Db25zb2xlKG11dGF0ZUFuZFBhdXNlLCBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dC5iaW5kKEluc3BlY3RvclRlc3QsICJtdXRhdGVBbmRQYXVzZSBpbnZva2VkLiIpKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXA0KCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGVsaXZl
cnkgc2hvdWxkIG5vdCBoYXZlIHRha2VuIHBsYWNlLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5Db25zb2xlQW5kRHVtcCgiZGVsaXZlcnlDb3VudCIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oc3RlcDUpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNSgpIHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlNlY29uZCBkZWxpdmVyeSBzaG91bGQgbm93IGhhdmUgaGFwcGVuZWQu
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKCJkZWxp
dmVyeUNvdW50IiwgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCk7CisgICAgfQor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
CitUZXN0cyB0aGF0IERPTSBNdXRhdGlvbiBPYnNlcnZlcnMgZG8gbm90IGF0dGVtcHQgdG8gZGVs
aXZlciBtdXRhdGlvbiByZWNvcmRzIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQuPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTgxMCI+QnVnIDEw
NTgxMDwvYT4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>