<?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>70451</bug_id>
          
          <creation_ts>2011-10-19 16:38:44 -0700</creation_ts>
          <short_desc>Implement TextTrackCueList</short_desc>
          <delta_ts>2011-11-03 13:29:20 -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>Media</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>62883</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anna Cavender">annacc</reporter>
          <assigned_to name="Anna Cavender">annacc</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487125</commentid>
    <comment_count>0</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-19 16:38:44 -0700</bug_when>
    <thetext>TextTrackCueList is a dynamically updating list of text track cues.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrackcuelist

TextTrackCueLists are primarily used as a mechanism to access a TextTrack&apos;s list of cues and list of active cues from JavaScript.  They are also used here as storage for TextTrackCues, i.e. TextTrackCues are owned by the TextTrackCueLists of their respective TextTracks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487164</commentid>
    <comment_count>1</comment_count>
      <attachid>111700</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-19 17:23:39 -0700</bug_when>
    <thetext>Created attachment 111700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487337</commentid>
    <comment_count>2</comment_count>
      <attachid>111700</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-19 22:26:53 -0700</bug_when>
    <thetext>Comment on attachment 111700
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Covered by existing tests:
&gt; +        Any test in media/track, especially track-text-track-cue-list.html

How do the tests change? Is it a progression?  It makes reviewing much easier if the tests are included in the patch.

&gt; Source/WebCore/html/TextTrackCueList.cpp:49
&gt; +    for (Vector&lt;RefPtr&lt;TextTrackCue&gt; &gt;::const_iterator it = m_list.begin(); it != m_list.end(); it++) {
&gt; +        TextTrackCue* cue = it-&gt;get();
&gt; +        if (cue-&gt;id() == id)
&gt; +            return cue;
&gt; +    }

We generally use index style iteration for Vectors instead of iterator style.

&gt; Source/WebCore/html/TextTrackCueList.cpp:63
&gt; +    for (Vector&lt;RefPtr&lt;TextTrackCue&gt; &gt;::const_iterator it = newCues.begin(); it != newCues.end(); it++)
&gt; +        add(*it);

Again, index style indexing preferred.

&gt; Source/WebCore/html/TextTrackCueList.cpp:69
&gt; +    RefPtr&lt;TextTrackCue&gt; newCue = cue;
&gt; +    add(newCue, 0, m_list.size());

There doesn&apos;t seem a reason here to put cue in a RefPtr, just pass it along to the other add() function as is.

&gt; Source/WebCore/html/TextTrackCueList.cpp:74
&gt; +void TextTrackCueList::add(PassRefPtr&lt;TextTrackCue&gt; cue, size_t start, size_t end)
&gt; +{
&gt; +    // Maintain text track cue order:

It probably makes sense to sanity check start and end here in an ASSERT.

&gt; Source/WebCore/html/TextTrackCueList.cpp:96
&gt; +    if (m_list.contains(cue)) {
&gt; +        cue-&gt;setIsActive(false);
&gt; +        m_list.remove(m_list.find(cue));
&gt; +    }

This looks like it does two searches of m_list.  Instead, you should use find(), test for not found, and if found, use the index to remove it.

&gt; Source/WebCore/html/TextTrackCueList.h:60
&gt; +    Iterator begin();
&gt; +    Iterator end();

These don&apos;t seem to be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487699</commentid>
    <comment_count>3</comment_count>
      <attachid>111700</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-20 10:38:05 -0700</bug_when>
    <thetext>Comment on attachment 111700
Patch

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

Thanks Sam!

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        Any test in media/track, especially track-text-track-cue-list.html
&gt; 
&gt; How do the tests change? Is it a progression?  It makes reviewing much easier if the tests are included in the patch.

Sorry for not including tests in with the patch.  I believe all the functionality in this patch is currently being tested.  media/track/track-text-track-cue-list.html thoroughly tests length(), getCueById(), item() as required for previous patches.  media/track/track-mutable.html thoroughly tests adding and removing cues from text tracks which will then use the internal add() and remove() to update their TextTrackCueLists.  I&apos;ll add that test to the changelog.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:49
&gt;&gt; +    }
&gt; 
&gt; We generally use index style iteration for Vectors instead of iterator style.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:63
&gt;&gt; +        add(*it);
&gt; 
&gt; Again, index style indexing preferred.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:69
&gt;&gt; +    add(newCue, 0, m_list.size());
&gt; 
&gt; There doesn&apos;t seem a reason here to put cue in a RefPtr, just pass it along to the other add() function as is.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:74
&gt;&gt; +    // Maintain text track cue order:
&gt; 
&gt; It probably makes sense to sanity check start and end here in an ASSERT.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:96
&gt;&gt; +    }
&gt; 
&gt; This looks like it does two searches of m_list.  Instead, you should use find(), test for not found, and if found, use the index to remove it.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.h:60
&gt;&gt; +    Iterator end();
&gt; 
&gt; These don&apos;t seem to be used.

Gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487709</commentid>
    <comment_count>4</comment_count>
      <attachid>111807</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-20 10:58:52 -0700</bug_when>
    <thetext>Created attachment 111807
addressing Sam&apos;s comments and removing iterators</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488782</commentid>
    <comment_count>5</comment_count>
      <attachid>112048</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-21 17:29:29 -0700</bug_when>
    <thetext>Created attachment 112048
updating to ToT

I think that the remaining bots weren&apos;t able to process the patch because of eric&apos;s renaming patch: http://trac.webkit.org/changeset/98000.  This patch just updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488786</commentid>
    <comment_count>6</comment_count>
      <attachid>112048</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 17:32:59 -0700</bug_when>
    <thetext>Comment on attachment 112048
updating to ToT

Attachment 112048 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10203045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488792</commentid>
    <comment_count>7</comment_count>
      <attachid>112048</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-10-21 17:40:49 -0700</bug_when>
    <thetext>Comment on attachment 112048
updating to ToT

Attachment 112048 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10204035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488798</commentid>
    <comment_count>8</comment_count>
      <attachid>112053</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-21 18:04:49 -0700</bug_when>
    <thetext>Created attachment 112053
fixing typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489048</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-23 12:06:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 111700 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111700&amp;action=review
&gt; 
&gt; Thanks Sam!
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:9
&gt; &gt;&gt; +        Any test in media/track, especially track-text-track-cue-list.html
&gt; &gt; 
&gt; &gt; How do the tests change? Is it a progression?  It makes reviewing much easier if the tests are included in the patch.
&gt; 
&gt; Sorry for not including tests in with the patch.  I believe all the functionality in this patch is currently being tested.  media/track/track-text-track-cue-list.html thoroughly tests length(), getCueById(), item() as required for previous patches.  media/track/track-mutable.html thoroughly tests adding and removing cues from text tracks which will then use the internal add() and remove() to update their TextTrackCueLists.  I&apos;ll add that test to the changelog.

I would really rather you include the actual changes to the test results in the patch as we require of everyone else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489155</commentid>
    <comment_count>10</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-23 21:50:43 -0700</bug_when>
    <thetext>Sam, I didn&apos;t include any changes to tests because existing tests already cover this functionality.  This feature is a work in progress and I am incrementally adding functionality in small, easy to digest patches.  As a result, layout tests have been submitted with prior patches even though not enough functionality existed at that time to actually run the tests successfully.  This patch adds some of that functionality, so that existing tests can soon be un-skipped.

I am certainly not opposed to adding new test cases, but please take a look at media/track/track-text-track-cue-list.html and media/track/track-mutable.html and let me know if you think there is functionality in this patch that is not covered by those tests.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493059</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-30 12:18:26 -0700</bug_when>
    <thetext>I understand that you implemented a bunch of stuff out of the main tree and are trying to commit it piecemeal, but part of the breaking up of the large change needs to include the test result changes so we can see the progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493307</commentid>
    <comment_count>12</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-31 07:29:10 -0700</bug_when>
    <thetext>Thanks Sam, I understand.  I&apos;m working on some other patches to put the functionality in place first to be able to run tests against this patch and others.  After that I&apos;ll come back to this patch and include tests.  Stay tuned :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495524</commentid>
    <comment_count>13</comment_count>
      <attachid>113504</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-03 09:21:06 -0700</bug_when>
    <thetext>Created attachment 113504
now with tests

A functional TextTrackCueList with passing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495638</commentid>
    <comment_count>14</comment_count>
      <attachid>113504</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-03 10:58:43 -0700</bug_when>
    <thetext>Comment on attachment 113504
now with tests

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

&gt; Source/WebCore/html/TextTrack.cpp:49
&gt; +    m_cues = TextTrackCueList::create();

Can this be done when newCuesAvailable is called for the first time?

&gt; Source/WebCore/html/TextTrack.cpp:103
&gt;  PassRefPtr&lt;TextTrackCueList&gt; TextTrack::cues() const

Returning a PassRefPtr?

&gt; Source/WebCore/html/TextTrack.cpp:107
&gt; -    // FIXME(62885): Implement.
&gt; +    if (m_mode != TextTrack::DISABLED)
&gt; +        return m_cues;
&gt;      return 0;

I am a big fan of quoting the spec text and noting the spec section number to make it easier to find the relevant section in the spec, and to make it easier to figure out when the logic is out of sync with spec changes.

&gt; Source/WebCore/html/TextTrackCueList.cpp:50
&gt; +TextTrackCue* TextTrackCueList::getCueById(const String&amp; id) const

This would be more efficient if the cue id and parameters were both AtomicString so the == is a pointer comparison. This change could be made as a follow up optimization.

&gt; Source/WebCore/html/TextTrackCueList.cpp:86
&gt; +        || (newCue-&gt;startTime() == m_list[index]-&gt;startTime()
&gt; +        &amp;&amp; newCue-&gt;endTime() &gt; m_list[index]-&gt;endTime()))

Having these on the same line will make it easier to follow the logic.

&gt; Source/WebCore/html/TextTrackCueList.cpp:89
&gt; +        add(newCue, start, index);
&gt; +    else
&gt; +        add(newCue, index + 1, end);

newCue.release() will prevent reference count churn.

&gt; Source/WebCore/html/TextTrackCueList.h:50
&gt;      PassRefPtr&lt;TextTrackCueList&gt; activeCues();

PassRefPtr?

&gt; LayoutTests/media/track/track-text-track-cue-list.html:12
&gt; +                cues = testTrack.track.cues;

Using &quot;testTrack&quot; as a global without looking it up works, but it is an old crusty compat feature so please add a getElementById().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495727</commentid>
    <comment_count>15</comment_count>
      <attachid>113504</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-03 12:45:24 -0700</bug_when>
    <thetext>Comment on attachment 113504
now with tests

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

Thanks Eric!

&gt;&gt; Source/WebCore/html/TextTrack.cpp:49
&gt;&gt; +    m_cues = TextTrackCueList::create();
&gt; 
&gt; Can this be done when newCuesAvailable is called for the first time?

Sure.  It would also have to be checked and possibly created in addCue, but that&apos;s fine.

&gt;&gt; Source/WebCore/html/TextTrack.cpp:103
&gt;&gt;  PassRefPtr&lt;TextTrackCueList&gt; TextTrack::cues() const
&gt; 
&gt; Returning a PassRefPtr?

Huh, good call.  Can&apos;t remember why it got changed to PassRefPtr, but it should definitely be a raw pointer (ownership is not being transfered).

&gt;&gt; Source/WebCore/html/TextTrack.cpp:107
&gt;&gt;      return 0;
&gt; 
&gt; I am a big fan of quoting the spec text and noting the spec section number to make it easier to find the relevant section in the spec, and to make it easier to figure out when the logic is out of sync with spec changes.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:50
&gt;&gt; +TextTrackCue* TextTrackCueList::getCueById(const String&amp; id) const
&gt; 
&gt; This would be more efficient if the cue id and parameters were both AtomicString so the == is a pointer comparison. This change could be made as a follow up optimization.

Good idea.  Noted for follow up patch.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:86
&gt;&gt; +        &amp;&amp; newCue-&gt;endTime() &gt; m_list[index]-&gt;endTime()))
&gt; 
&gt; Having these on the same line will make it easier to follow the logic.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.cpp:89
&gt;&gt; +        add(newCue, index + 1, end);
&gt; 
&gt; newCue.release() will prevent reference count churn.

Done.

&gt;&gt; Source/WebCore/html/TextTrackCueList.h:50
&gt;&gt;      PassRefPtr&lt;TextTrackCueList&gt; activeCues();
&gt; 
&gt; PassRefPtr?

Done.  Raw pointer now.  Thanks.

&gt;&gt; LayoutTests/media/track/track-text-track-cue-list.html:12
&gt;&gt; +                cues = testTrack.track.cues;
&gt; 
&gt; Using &quot;testTrack&quot; as a global without looking it up works, but it is an old crusty compat feature so please add a getElementById().

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495730</commentid>
    <comment_count>16</comment_count>
      <attachid>113543</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-03 12:49:06 -0700</bug_when>
    <thetext>Created attachment 113543
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495751</commentid>
    <comment_count>17</comment_count>
      <attachid>113543</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 13:29:12 -0700</bug_when>
    <thetext>Comment on attachment 113543
Patch for landing

Clearing flags on attachment: 113543

Committed r99234: &lt;http://trac.webkit.org/changeset/99234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495752</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 13:29:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111700</attachid>
            <date>2011-10-19 17:23:39 -0700</date>
            <delta_ts>2011-10-20 10:58:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70451-20111019172338.patch</filename>
            <type>text/plain</type>
            <size>5198</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNTY0N2U4M2QxYmY1ODcy
MjhhNWZkZDIyOWVhMTMxMGEzMTc2Yzk4Li5lODU0ZDU3MDZkOTRlMmQzOGJjZTFjMDU0MTUzZDk5
ZjM0ZjBiMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTAtMTkgIEFubmEg
Q2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tDdWVMaXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOgorICAgICAgICBBbnkgdGVzdCBpbiBtZWRp
YS90cmFjaywgZXNwZWNpYWxseSB0cmFjay10ZXh0LXRyYWNrLWN1ZS1saXN0Lmh0bWwKKworICAg
ICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWVMaXN0OjpUZXh0VHJhY2tDdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZUxpc3Q6OmdldEN1ZUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
TGlzdDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OnJlbW92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpiZWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjplbmQpOgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6flRleHRUcmFj
a0N1ZUxpc3QpOgorCiAyMDExLTEwLTE5ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk3ODYzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKaW5kZXggOWEwNmJkNTE2YzlmZTA5ZmFjMDY4YzM1
ZDdkMjVmMGJlZDI5OWY2Yy4uMWQzNjEzNjZlM2Q3Zjg2N2M1ODZjZjRhNzUxNTA4MTBmN2YyY2Y5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCkBAIC0zMywyOCAr
MzMsODIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0VHJhY2tDdWVMaXN0OjpUZXh0VHJh
Y2tDdWVMaXN0KCkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KIH0KIAotVGV4
dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVMaXN0OjpnZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYpIGNv
bnN0Cit1bnNpZ25lZCBsb25nIFRleHRUcmFja0N1ZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiB7Ci0g
ICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIG1fbGlzdC5zaXplKCk7
Cit9CisKK1RleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZChjb25zdCBT
dHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9saXN0LmJlZ2luKCk7IGl0ICE9IG1fbGlzdC5lbmQo
KTsgaXQrKykgeworICAgICAgICBUZXh0VHJhY2tDdWUqIGN1ZSA9IGl0LT5nZXQoKTsKKyAgICAg
ICAgaWYgKGN1ZS0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBjdWU7CisgICAgfQor
ICAgIHJldHVybiAwOworfQorCitUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6Oml0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9saXN0LnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YXBwZW5kKFZlY3RvcjxQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4gPiYpCit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChjb25zdCBWZWN0b3I8UmVmUHRy
PFRleHRUcmFja0N1ZT4gPiYgbmV3Q3VlcykKK3sKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrQ3VlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG5ld0N1ZXMuYmVnaW4oKTsgaXQgIT0g
bmV3Q3Vlcy5lbmQoKTsgaXQrKykKKyAgICAgICAgYWRkKCppdCk7Cit9CisKK3ZvaWQgVGV4dFRy
YWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgUmVm
UHRyPFRleHRUcmFja0N1ZT4gbmV3Q3VlID0gY3VlOworICAgIGFkZChuZXdDdWUsIDAsIG1fbGlz
dC5zaXplKCkpOworfQorCit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZT4gY3VlLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQpCit7CisgICAgLy8gTWFp
bnRhaW4gdGV4dCB0cmFjayBjdWUgb3JkZXI6CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdGV4dC10cmFjay1jdWUtb3JkZXIKKyAgICBS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBuZXdDdWUgPSBjdWU7CisgICAgaWYgKHN0YXJ0ID09IGVuZCkg
eworICAgICAgIG1fbGlzdC5pbnNlcnQoc3RhcnQsIG5ld0N1ZSk7CisgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNpemVfdCBpbmRleCA9IChzdGFydCArIGVuZCkgLyAyOworICAgIGlmIChu
ZXdDdWUtPnN0YXJ0VGltZSgpIDwgbV9saXN0W2luZGV4XS0+c3RhcnRUaW1lKCkKKyAgICAgICAg
fHwgKG5ld0N1ZS0+c3RhcnRUaW1lKCkgPT0gbV9saXN0W2luZGV4XS0+c3RhcnRUaW1lKCkKKyAg
ICAgICAgJiYgbmV3Q3VlLT5lbmRUaW1lKCkgPiBtX2xpc3RbaW5kZXhdLT5lbmRUaW1lKCkpKQor
ICAgICAgICBhZGQobmV3Q3VlLCBzdGFydCwgaW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgYWRk
KG5ld0N1ZSwgaW5kZXggKyAxLCBlbmQpOworfQorCit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OnJl
bW92ZShUZXh0VHJhY2tDdWUqIGN1ZSkKK3sKKyAgICBpZiAobV9saXN0LmNvbnRhaW5zKGN1ZSkp
IHsKKyAgICAgICAgY3VlLT5zZXRJc0FjdGl2ZShmYWxzZSk7CisgICAgICAgIG1fbGlzdC5yZW1v
dmUobV9saXN0LmZpbmQoY3VlKSk7CisgICAgfQorfQorCitib29sIFRleHRUcmFja0N1ZUxpc3Q6
OmNvbnRhaW5zKFRleHRUcmFja0N1ZSogY3VlKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYyODgz
KTogSW1wbGVtZW50LgorICAgIHJldHVybiBtX2xpc3QuY29udGFpbnMoY3VlKTsKIH0KIAotdm9p
ZCBUZXh0VHJhY2tDdWVMaXN0OjphcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
JikKK1RleHRUcmFja0N1ZUxpc3Q6Okl0ZXJhdG9yIFRleHRUcmFja0N1ZUxpc3Q6OmJlZ2luKCkK
IHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICByZXR1cm4gbV9saXN0LmJl
Z2luKCk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6cmVtb3ZlKGNvbnN0IFBhc3NSZWZQ
dHI8VGV4dFRyYWNrQ3VlPiYpCitUZXh0VHJhY2tDdWVMaXN0OjpJdGVyYXRvciBUZXh0VHJhY2tD
dWVMaXN0OjplbmQoKQogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIHJl
dHVybiBtX2xpc3QuZW5kKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKaW5kZXggMjU0ODM5OWQ1NDI2NTc1Mjk5ZThiMWE3
MzIxOTdlZTA0NmQwN2UyOC4uYjg2OWYyM2JhMmMwZjg2NzJjMThiOWI3MjBiZTM5ODk4NzJiNTA3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKQEAgLTM3LDIxICszNywz
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3QgOiBwdWJs
aWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWVMaXN0PiB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPjo6aXRlcmF0b3IgSXRlcmF0b3I7CisKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBjcmVhdGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tDdWVMaXN0KTsKICAgICB9CiAKKyAgICB+
VGV4dFRyYWNrQ3VlTGlzdCgpIHsgfQorCiAgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25z
dDsKKyAgICBUZXh0VHJhY2tDdWUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIFRl
eHRUcmFja0N1ZSogZ2V0Q3VlQnlJZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPFRleHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKTsKIAotICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOwotICAgIHZvaWQgYXBwZW5kKFZlY3RvcjxQ
YXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOworICAgIHZvaWQgYWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPik7CisgICAgdm9pZCBhZGQoY29uc3QgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4m
KTsKKyAgICB2b2lkIHJlbW92ZShUZXh0VHJhY2tDdWUqKTsKKyAgICBib29sIGNvbnRhaW5zKFRl
eHRUcmFja0N1ZSopIGNvbnN0OworCisgICAgSXRlcmF0b3IgYmVnaW4oKTsKKyAgICBJdGVyYXRv
ciBlbmQoKTsKIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWVMaXN0KCk7CisgICAgdm9pZCBh
ZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBzaXplX3QsIHNpemVfdCk7CisgICAgCisgICAg
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4gbV9saXN0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111807</attachid>
            <date>2011-10-20 10:58:52 -0700</date>
            <delta_ts>2011-10-21 17:29:25 -0700</delta_ts>
            <desc>addressing Sam&apos;s comments and removing iterators</desc>
            <filename>bug-70451-20111020105850.patch</filename>
            <type>text/plain</type>
            <size>4871</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc5OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YWNiOGQ0NDBiNTliOWRl
ZjdkZmQ2MDdiOGU5ODM3MzNlY2NmYzYzLi5kZDhiYWY3OGIyNzRjNTRhZDJhOTllY2QyNmZiNTlh
ZGFkODgyNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMjAgIEFubmEg
Q2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tDdWVMaXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOgorICAgICAgICBtZWRpYS90cmFjay90cmFj
ay10ZXh0LXRyYWNrLWN1ZS1saXN0Lmh0bWwKKyAgICAgICAgbWVkaWEvdHJhY2svdHJhY2stbXV0
YWJsZS5odG1sCisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFpbnMpOgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6
flRleHRUcmFja0N1ZUxpc3QpOgorCiAyMDExLTEwLTIwICBBbmRyZWFzIEtsaW5nICA8a2xpbmdA
d2Via2l0Lm9yZz4KIAogICAgICAgICBTaW1wbGlmeSBDU1NQYXJzZXI6OmRvY3VtZW50KCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAppbmRleCAwNzc0MGY4ZjkzZGM5
MzE1YjVhMTVkM2IwNWEwYmU0ZTEzZThkNDJhLi42MWVkNmNiMWQ3MzE2NzA2NzcxNjhhNGE3OGU1
ZDhlMTYwZWMzOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1
ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAK
QEAgLTMzLDQwICszMyw3NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRUcmFja0N1ZUxp
c3Q6OlRleHRUcmFja0N1ZUxpc3QoKQogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50
LgogfQogCiB1bnNpZ25lZCBsb25nIFRleHRUcmFja0N1ZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG1fbGlzdC5zaXplKCk7CiB9CiAKIFRleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxl
bWVudC4KKyAgICBpZiAoaW5kZXggPCBtX2xpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gbV9s
aXN0W2luZGV4XS5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotVGV4dFRyYWNrQ3VlKiBUZXh0
VHJhY2tDdWVMaXN0OjpnZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0CitUZXh0VHJhY2tD
dWUqIFRleHRUcmFja0N1ZUxpc3Q6OmdldEN1ZUJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9saXN0W2ldLT5pZCgp
ID09IGlkKQorICAgICAgICAgICAgcmV0dXJuIG1fbGlzdFtpXS5nZXQoKTsKKyAgICB9CiAgICAg
cmV0dXJuIDA7CiB9CiAKLXZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YXBwZW5kKFZlY3RvcjxQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpCit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChjb25z
dCBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgbmV3Q3VlcykKIHsKLSAgICAvLyBGSVhN
RSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0N1ZXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIGFkZChuZXdDdWVzW2ldKTsKK30KKwordm9pZCBUZXh0VHJh
Y2tDdWVMaXN0OjphZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSkKK3sKKyAgICBhZGQo
Y3VlLCAwLCBtX2xpc3Quc2l6ZSgpKTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphZGQo
UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKQor
eworICAgIEFTU0VSVChzdGFydCA+PSAwICYmIHN0YXJ0IDw9IG1fbGlzdC5zaXplKCkpOworICAg
IEFTU0VSVChlbmQgPj0gMCAmJiBlbmQgPD0gbV9saXN0LnNpemUoKSk7CisKKyAgICAvLyBNYWlu
dGFpbiB0ZXh0IHRyYWNrIGN1ZSBvcmRlcjoKKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN0ZXh0LXRyYWNrLWN1ZS1vcmRlcgorICAgIFJl
ZlB0cjxUZXh0VHJhY2tDdWU+IG5ld0N1ZSA9IGN1ZTsKKyAgICBpZiAoc3RhcnQgPT0gZW5kKSB7
CisgICAgICAgbV9saXN0Lmluc2VydChzdGFydCwgbmV3Q3VlKTsKKyAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgc2l6ZV90IGluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CisgICAgaWYgKG5l
d0N1ZS0+c3RhcnRUaW1lKCkgPCBtX2xpc3RbaW5kZXhdLT5zdGFydFRpbWUoKQorICAgICAgICB8
fCAobmV3Q3VlLT5zdGFydFRpbWUoKSA9PSBtX2xpc3RbaW5kZXhdLT5zdGFydFRpbWUoKQorICAg
ICAgICAmJiBuZXdDdWUtPmVuZFRpbWUoKSA+IG1fbGlzdFtpbmRleF0tPmVuZFRpbWUoKSkpCisg
ICAgICAgIGFkZChuZXdDdWUsIHN0YXJ0LCBpbmRleCk7CisgICAgZWxzZQorICAgICAgICBhZGQo
bmV3Q3VlLCBpbmRleCArIDEsIGVuZCk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YXBw
ZW5kKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpCit2b2lkIFRleHRUcmFja0N1ZUxp
c3Q6OnJlbW92ZShUZXh0VHJhY2tDdWUqIGN1ZSkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IElt
cGxlbWVudC4KKyAgICBzaXplX3QgaW5kZXggPSBtX2xpc3QuZmluZChjdWUpOworICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIGN1ZS0+c2V0SXNBY3RpdmUo
ZmFsc2UpOworICAgIG1fbGlzdC5yZW1vdmUoaW5kZXgpOwogfQogCi12b2lkIFRleHRUcmFja0N1
ZUxpc3Q6OnJlbW92ZShjb25zdCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4mKQorYm9vbCBUZXh0
VHJhY2tDdWVMaXN0Ojpjb250YWlucyhUZXh0VHJhY2tDdWUqIGN1ZSkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICByZXR1cm4gbV9saXN0LmNvbnRhaW5zKGN1
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2tDdWVMaXN0LmgKaW5kZXggMDUxYWE1MjIzMGFkMDM4MTRlNDdkNzU2NGIwMDljYTE3ZjkzNTlk
My4uZTIyOGQ1MWFmNWQwMjZmMGE0ZDM3NDQwMTNhMjVjN2Q2YjI4Y2UzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKQEAgLTQyLDE3ICs0MiwyMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrQ3VlTGlzdCk7CiAgICAgfQogCisg
ICAgflRleHRUcmFja0N1ZUxpc3QoKSB7IH0KKwogICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkg
Y29uc3Q7CiAgICAgVGV4dFRyYWNrQ3VlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAg
ICBUZXh0VHJhY2tDdWUqIGdldEN1ZUJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzKCk7CiAKLSAgICB2b2lkIGFwcGVu
ZChjb25zdCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4mKTsKLSAgICB2b2lkIGFwcGVuZChWZWN0
b3I8UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+ID4mKTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBQ
YXNzUmVmUHRyPFRleHRUcmFja0N1ZT4mKTsKKyAgICB2b2lkIGFkZChQYXNzUmVmUHRyPFRleHRU
cmFja0N1ZT4pOworICAgIHZvaWQgYWRkKGNvbnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3Vl
PiA+Jik7CisgICAgdm9pZCByZW1vdmUoVGV4dFRyYWNrQ3VlKik7CisgICAgYm9vbCBjb250YWlu
cyhUZXh0VHJhY2tDdWUqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWVMaXN0
KCk7CisgICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBzaXplX3QsIHNpemVf
dCk7CisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4gbV9saXN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112048</attachid>
            <date>2011-10-21 17:29:29 -0700</date>
            <delta_ts>2011-10-21 18:04:40 -0700</delta_ts>
            <desc>updating to ToT</desc>
            <filename>bug-70451-20111021172928.patch</filename>
            <type>text/plain</type>
            <size>4905</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgxNjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNGVjN2FhYTQxMmYxN2I4
MDhiOGEwYWUwNWYxMzc3YzA3YThlN2M4Li4zMDlhMDdkNTdkNTVlNjdkMzgxMTI0YWFkYTAyM2Y2
MDY4NTgxYWY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMjAgIEFubmEg
Q2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tDdWVMaXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOgorICAgICAgICBtZWRpYS90cmFjay90cmFj
ay10ZXh0LXRyYWNrLWN1ZS1saXN0Lmh0bWwKKyAgICAgICAgbWVkaWEvdHJhY2svdHJhY2stbXV0
YWJsZS5odG1sCisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFpbnMpOgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6
flRleHRUcmFja0N1ZUxpc3QpOgorCiAyMDExLTEwLTIxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIEV2ZW50OjpoYXNJbnRlcmZhY2UgdG8gbWFr
ZSB1c2VzIG9mIGludGVyZmFjZU5hbWUgbW9yZSByZWFkYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHAKaW5kZXggZjgwMjk3MjRkYTY0MzQ3MzgyMGM5NjAxOTdmMThl
YTA1NjhhZDA1OC4uMzhkNjliYzliZGY4YzkxYTUyY2MwZTgwNWU0Y2RhYzE3MmNhZDY3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCkBAIC0zMyw0MCArMzMsNzQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0VHJhY2tDdWVMaXN0OjpUZXh0VHJhY2tDdWVM
aXN0KCkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KIH0KIAogdW5zaWduZWQg
bG9uZyBUZXh0VHJhY2tDdWVMaXN0OjpsZW5ndGgoKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYy
ODgzKTogSW1wbGVtZW50LgotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2xpc3Quc2l6ZSgp
OwogfQogCiBUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6Oml0ZW0odW5zaWduZWQpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgaWYgKGluZGV4IDwg
bV9saXN0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKLVRleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJ
ZChjb25zdCBTdHJpbmcmKSBjb25zdAorVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVMaXN0Ojpn
ZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODMp
OiBJbXBsZW1lbnQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fbGlzdFtpXS0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJl
dHVybiBtX2xpc3RbaV0uZ2V0KCk7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCi12b2lkIFRl
eHRUcmFja0N1ZUxpc3Q6OmFwcGVuZChWZWN0b3I8UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+ID4m
KQordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphZGQoY29uc3QgVmVjdG9yPFJlZlB0cjxUZXh0VHJh
Y2tDdWU+ID4mIG5ld0N1ZXMpCiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDdWVzLnNpemUoKTsgKytpKQorICAgICAgICBh
ZGQobmV3Q3Vlc1tpXSk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQ
dHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgYWRkKGN1ZSwgMCwgbV9saXN0LnNpemUoKSk7
Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
PiBjdWUsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKK3sKKyAgICBBU1NFUlQoc3RhcnQgPj0g
MCAmJiBzdGFydCA8PSBtX2xpc3Quc2l6ZSgpKTsKKyAgICBBU1NFUlQoZW5kID49IDAgJiYgZW5k
IDw9IG1fbGlzdC5zaXplKCkpOworCisgICAgLy8gTWFpbnRhaW4gdGV4dCB0cmFjayBjdWUgb3Jk
ZXI6CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jdGV4dC10cmFjay1jdWUtb3JkZXIKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBuZXdD
dWUgPSBjdWU7CisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgIG1fbGlzdC5pbnNlcnQo
c3RhcnQsIG5ld0N1ZSk7CisgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBpbmRl
eCA9IChzdGFydCArIGVuZCkgLyAyOworICAgIGlmIChuZXdDdWUtPnN0YXJ0VGltZSgpIDwgbV9s
aXN0W2luZGV4XS0+c3RhcnRUaW1lKCkKKyAgICAgICAgfHwgKG5ld0N1ZS0+c3RhcnRUaW1lKCkg
PT0gbV9saXN0W2luZGV4XS0+c3RhcnRUaW1lKCkKKyAgICAgICAgJiYgbmV3Q3VlLT5lbmRUaW1l
KCkgPiBtX2xpc3RbaW5kZXhdLT5lbmRUaW1lKCkpKQorICAgICAgICBhZGQobmV3Q3VlLCBzdGFy
dCwgaW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgYWRkKG5ld0N1ZSwgaW5kZXggKyAxLCBlbmQp
OwogfQogCi12b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFwcGVuZChjb25zdCBQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZT4mKQordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4dFRyYWNrQ3Vl
KiBjdWUpCiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgc2l6ZV90IGlu
ZGV4ID0gbV9saXN0LmZpbmQoY3VlKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKKyAgICBjdWUtPnNldElzQWN0aXZlKGZhbHNlKTsKKyAgICBtX2xpc3QucmVt
b3ZlKGluZGV4KTsKIH0KIAotdm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoY29uc3QgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+JikKK2Jvb2wgVGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFpbnMo
VGV4dFRyYWNrQ3VlKiBjdWUpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1l
bnQuCisgICAgcmV0dXJuIG1fbGlzdC5jb250YWlucyhjdWUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCmluZGV4IDA1MWFh
NTIyMzBhZDAzODE0ZTQ3ZDc1NjRiMDA5Y2ExN2Y5MzU5ZDMuLmUyMjhkNTFhZjVkMDI2ZjBhNGQz
NzQ0MDEzYTI1YzdkNmIyOGNlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrQ3VlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5oCkBAIC00MiwxNyArNDIsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFRleHRUcmFja0N1ZUxpc3QpOwogICAgIH0KIAorICAgIH5UZXh0VHJhY2tDdWVMaXN0KCkg
eyB9CisKICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0OwogICAgIFRleHRUcmFja0N1
ZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgVGV4dFRyYWNrQ3VlKiBnZXRDdWVC
eUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlz
dD4gYWN0aXZlQ3VlcygpOwogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+Jik7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPiA+Jik7Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
Jik7CisgICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKKyAgICB2b2lkIGFk
ZChjb25zdCBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpOworICAgIHZvaWQgcmVtb3Zl
KFRleHRUcmFja0N1ZSopOworICAgIGJvb2wgY29udGFpbnMoVGV4dFRyYWNrQ3VlKikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCgpOworICAgIHZvaWQgYWRkKFBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiwgc2l6ZV90LCBzaXplX3QpOworICAgIAorICAgIFZlY3RvcjxS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG1fbGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112053</attachid>
            <date>2011-10-21 18:04:49 -0700</date>
            <delta_ts>2011-11-03 09:21:01 -0700</delta_ts>
            <desc>fixing typo</desc>
            <filename>bug-70451-20111021180444.patch</filename>
            <type>text/plain</type>
            <size>4965</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgxNjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNGVjN2FhYTQxMmYxN2I4
MDhiOGEwYWUwNWYxMzc3YzA3YThlN2M4Li4zMDlhMDdkNTdkNTVlNjdkMzgxMTI0YWFkYTAyM2Y2
MDY4NTgxYWY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMjAgIEFubmEg
Q2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tDdWVMaXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOgorICAgICAgICBtZWRpYS90cmFjay90cmFj
ay10ZXh0LXRyYWNrLWN1ZS1saXN0Lmh0bWwKKyAgICAgICAgbWVkaWEvdHJhY2svdHJhY2stbXV0
YWJsZS5odG1sCisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFpbnMpOgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6
flRleHRUcmFja0N1ZUxpc3QpOgorCiAyMDExLTEwLTIxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIEV2ZW50OjpoYXNJbnRlcmZhY2UgdG8gbWFr
ZSB1c2VzIG9mIGludGVyZmFjZU5hbWUgbW9yZSByZWFkYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHAKaW5kZXggZjgwMjk3MjRkYTY0MzQ3MzgyMGM5NjAxOTdmMThl
YTA1NjhhZDA1OC4uNjFlZDZjYjFkNzMxNjcwNjc3MTY4YTRhNzhlNWQ4ZTE2MGVjMzkyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCkBAIC0zMyw0MCArMzMsNzQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0VHJhY2tDdWVMaXN0OjpUZXh0VHJhY2tDdWVM
aXN0KCkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KIH0KIAogdW5zaWduZWQg
bG9uZyBUZXh0VHJhY2tDdWVMaXN0OjpsZW5ndGgoKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYy
ODgzKTogSW1wbGVtZW50LgotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2xpc3Quc2l6ZSgp
OwogfQogCi1UZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6Oml0ZW0odW5zaWduZWQpIGNv
bnN0CitUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgaWYgKGluZGV4
IDwgbV9saXN0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKLVRleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3Vl
QnlJZChjb25zdCBTdHJpbmcmKSBjb25zdAorVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVMaXN0
OjpnZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4
ODMpOiBJbXBsZW1lbnQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGlzdFtpXS0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAg
IHJldHVybiBtX2xpc3RbaV0uZ2V0KCk7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCi12b2lk
IFRleHRUcmFja0N1ZUxpc3Q6OmFwcGVuZChWZWN0b3I8UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
ID4mKQordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphZGQoY29uc3QgVmVjdG9yPFJlZlB0cjxUZXh0
VHJhY2tDdWU+ID4mIG5ld0N1ZXMpCiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQu
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDdWVzLnNpemUoKTsgKytpKQorICAgICAg
ICBhZGQobmV3Q3Vlc1tpXSk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgYWRkKGN1ZSwgMCwgbV9saXN0LnNpemUo
KSk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPiBjdWUsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKK3sKKyAgICBBU1NFUlQoc3RhcnQg
Pj0gMCAmJiBzdGFydCA8PSBtX2xpc3Quc2l6ZSgpKTsKKyAgICBBU1NFUlQoZW5kID49IDAgJiYg
ZW5kIDw9IG1fbGlzdC5zaXplKCkpOworCisgICAgLy8gTWFpbnRhaW4gdGV4dCB0cmFjayBjdWUg
b3JkZXI6CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jdGV4dC10cmFjay1jdWUtb3JkZXIKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBu
ZXdDdWUgPSBjdWU7CisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgIG1fbGlzdC5pbnNl
cnQoc3RhcnQsIG5ld0N1ZSk7CisgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBp
bmRleCA9IChzdGFydCArIGVuZCkgLyAyOworICAgIGlmIChuZXdDdWUtPnN0YXJ0VGltZSgpIDwg
bV9saXN0W2luZGV4XS0+c3RhcnRUaW1lKCkKKyAgICAgICAgfHwgKG5ld0N1ZS0+c3RhcnRUaW1l
KCkgPT0gbV9saXN0W2luZGV4XS0+c3RhcnRUaW1lKCkKKyAgICAgICAgJiYgbmV3Q3VlLT5lbmRU
aW1lKCkgPiBtX2xpc3RbaW5kZXhdLT5lbmRUaW1lKCkpKQorICAgICAgICBhZGQobmV3Q3VlLCBz
dGFydCwgaW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgYWRkKG5ld0N1ZSwgaW5kZXggKyAxLCBl
bmQpOwogfQogCi12b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFwcGVuZChjb25zdCBQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4mKQordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4dFRyYWNr
Q3VlKiBjdWUpCiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgc2l6ZV90
IGluZGV4ID0gbV9saXN0LmZpbmQoY3VlKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisg
ICAgICAgIHJldHVybjsKKyAgICBjdWUtPnNldElzQWN0aXZlKGZhbHNlKTsKKyAgICBtX2xpc3Qu
cmVtb3ZlKGluZGV4KTsKIH0KIAotdm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoY29uc3Qg
UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+JikKK2Jvb2wgVGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFp
bnMoVGV4dFRyYWNrQ3VlKiBjdWUpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBs
ZW1lbnQuCisgICAgcmV0dXJuIG1fbGlzdC5jb250YWlucyhjdWUpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1
ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCmluZGV4IDA1
MWFhNTIyMzBhZDAzODE0ZTQ3ZDc1NjRiMDA5Y2ExN2Y5MzU5ZDMuLmUyMjhkNTFhZjVkMDI2ZjBh
NGQzNzQ0MDEzYTI1YzdkNmIyOGNlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
TGlzdC5oCkBAIC00MiwxNyArNDIsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRleHRUcmFja0N1ZUxpc3QpOwogICAgIH0KIAorICAgIH5UZXh0VHJhY2tDdWVMaXN0
KCkgeyB9CisKICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0OwogICAgIFRleHRUcmFj
a0N1ZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgVGV4dFRyYWNrQ3VlKiBnZXRD
dWVCeUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
TGlzdD4gYWN0aXZlQ3VlcygpOwogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWU+Jik7Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPiA+Jik7Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tD
dWU+Jik7CisgICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKKyAgICB2b2lk
IGFkZChjb25zdCBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpOworICAgIHZvaWQgcmVt
b3ZlKFRleHRUcmFja0N1ZSopOworICAgIGJvb2wgY29udGFpbnMoVGV4dFRyYWNrQ3VlKikgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCgpOworICAgIHZvaWQgYWRkKFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiwgc2l6ZV90LCBzaXplX3QpOworICAgIAorICAgIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG1fbGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113504</attachid>
            <date>2011-11-03 09:21:06 -0700</date>
            <delta_ts>2011-11-03 12:49:01 -0700</delta_ts>
            <desc>now with tests</desc>
            <filename>bug-70451-20111103092105.patch</filename>
            <type>text/plain</type>
            <size>10529</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxOTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOTM2MmJiNWEzNGI1M2I0
YTU4NDljM2JjZjVkMWViNmVkYTM3MzQ1Li41MTk2NmNlYTBmNzI2ZGY0MTRmNWI0Yjk0NjZlNzlm
ZGE2NzgwOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTEtMDMgIEFubmEg
Q2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tDdWVMaXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFjay10ZXh0LXRyYWNrLWN1ZS1saXN0Lmh0bWwKKwor
ICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAgICAgICAgICAgVXBkYXRl
IFRleHRUcmFjaydzIFRleHRUcmFja0N1ZUxpc3QgKG1fY3Vlcykgd2hlbiBuZXcgY3VlcyBhcmUg
ZGlzY292ZXJlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6CisgICAgICAgICAgICBDcmVhdGUgYW4gZW1wdHkg
VGV4dFRyYWNrQ3VlTGlzdCB1cG9uIFRleHRUcmFjayBjcmVhdGlvbi4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6Y3Vlcyk6CisgICAgICAgICAgICBSZXR1cm4gdGhpcyBUZXh0VHJhY2sn
cyBsaXN0IG9mIGN1ZXMuCisKKyAgICAgICAgSW1wbGVtZW50IFRleHRUcmFja0N1ZUxpc3QgZnVu
Y3Rpb25hbGl0eToKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlTGlzdDo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVM
aXN0OjpnZXRDdWVCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFpbnMpOgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6
flRleHRUcmFja0N1ZUxpc3QpOgorCiAyMDExLTExLTAzICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92aW5nIGxpbmUgaW4gY29tcHV0ZVZpZXdwb3J0
QXR0cmlidXRlcyB0aGF0IGVuZm9yY2VzIGEgbWluaW11bSBzY2FsZSBmYWN0b3IgdG8gbmV2ZXIg
YWxsb3cgem9vbWluZyBvdXQgbW9yZSB0aGFuIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDAyYjc1MzAyYTAyOWIxYzRmZmU5ZjkyYmNiMDA2
NmRiNTkzMzVlYTMuLjcyNDg3NDI3MGE4MTUzM2Y5MjIwYjFkNDRmMzJlYTE2YzFiNjNhYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC0yOSw2ICsyOSw4
IEBACiAKICNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgogCisjaW5jbHVkZSAiVGV4dFRy
YWNrQ3VlTGlzdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvYWRhYmxlVGV4dFRyYWNr
OjpMb2FkYWJsZVRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50LCBUZXh0VHJh
Y2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5nQ2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQpA
QCAtNTMsNyArNTUsMTUgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJs
ZShUZXh0VHJhY2tMb2FkZXIqIGxvYWRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwg
bV9sb2FkZXIgPT0gbG9hZGVyKTsKIAotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50Lgor
ICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG5ld0N1ZXM7CisgICAgbV9sb2FkZXIt
PmdldE5ld0N1ZXMobmV3Q3Vlcyk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0N1
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG5ld0N1ZXNbaV0tPnNldFRyYWNrKHRoaXMpOworICAg
IG1fY3Vlcy0+YWRkKG5ld0N1ZXMpOworCisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGll
bnQoKS0+dGV4dFRyYWNrQWRkQ3Vlcyh0aGlzLCBtX2N1ZXMuZ2V0KCkpOwogfQogCiB2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJhY2tMb2FkZXIqIGxvYWRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAppbmRleCBkYjE2YThlYjhmMzQzYzZhMzA5YTAz
NzdkNWQ4ODM2YzUwZGJjOWEzLi44OGEyODNmOTc0NjdmM2M3NjkwMmUzNTVkOTU3ZDU1Y2RmNGU1
NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCkBAIC00Niw2ICs0Niw3IEBAIFRleHRU
cmFjazo6VGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFN0cmluZyYKICAgICAsIG1fbW9kZShUZXh0VHJhY2s6OlNIT1dJTkcpCiAgICAg
LCBtX2NsaWVudChjbGllbnQpCiB7CisgICAgbV9jdWVzID0gVGV4dFRyYWNrQ3VlTGlzdDo6Y3Jl
YXRlKCk7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygpCkBAIC0xMDEsNyArMTAyLDggQEAg
dm9pZCBUZXh0VHJhY2s6OnNldE1vZGUodW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gVGV4dFRyYWNrOjpjdWVzKCkg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICBpZiAobV9tb2Rl
ICE9IFRleHRUcmFjazo6RElTQUJMRUQpCisgICAgICAgIHJldHVybiBtX2N1ZXM7CiAgICAgcmV0
dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCmluZGV4
IGY4MDI5NzI0ZGE2NDM0NzM4MjBjOTYwMTk3ZjE4ZWEwNTY4YWQwNTguLjYxZWQ2Y2IxZDczMTY3
MDY3NzE2OGE0YTc4ZTVkOGUxNjBlYzM5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2tDdWVMaXN0LmNwcApAQCAtMzMsNDAgKzMzLDc0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
VGV4dFRyYWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdCgpCiB7Ci0gICAgLy8gRklYTUUoNjI4
ODMpOiBJbXBsZW1lbnQuCiB9CiAKIHVuc2lnbmVkIGxvbmcgVGV4dFRyYWNrQ3VlTGlzdDo6bGVu
Z3RoKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbV9saXN0LnNpemUoKTsKIH0KIAotVGV4dFRyYWNrQ3VlKiBUZXh0
VHJhY2tDdWVMaXN0OjppdGVtKHVuc2lnbmVkKSBjb25zdAorVGV4dFRyYWNrQ3VlKiBUZXh0VHJh
Y2tDdWVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIC8vIEZJWE1FKDYy
ODgzKTogSW1wbGVtZW50LgorICAgIGlmIChpbmRleCA8IG1fbGlzdC5zaXplKCkpCisgICAgICAg
IHJldHVybiBtX2xpc3RbaW5kZXhdLmdldCgpOwogICAgIHJldHVybiAwOwogfQogCi1UZXh0VHJh
Y2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6OmdldEN1ZUJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3QK
K1RleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZChjb25zdCBTdHJpbmcm
IGlkKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9saXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xp
c3RbaV0tPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gbV9saXN0W2ldLmdldCgpOwor
ICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphcHBlbmQo
VmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JikKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlz
dDo6YWRkKGNvbnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBuZXdDdWVzKQogewot
ICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbmV3Q3Vlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYWRkKG5ld0N1ZXNbaV0pOworfQorCit2
b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQor
eworICAgIGFkZChjdWUsIDAsIG1fbGlzdC5zaXplKCkpOworfQorCit2b2lkIFRleHRUcmFja0N1
ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlLCBzaXplX3Qgc3RhcnQsIHNp
emVfdCBlbmQpCit7CisgICAgQVNTRVJUKHN0YXJ0ID49IDAgJiYgc3RhcnQgPD0gbV9saXN0LnNp
emUoKSk7CisgICAgQVNTRVJUKGVuZCA+PSAwICYmIGVuZCA8PSBtX2xpc3Quc2l6ZSgpKTsKKwor
ICAgIC8vIE1haW50YWluIHRleHQgdHJhY2sgY3VlIG9yZGVyOgorICAgIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RleHQtdHJhY2stY3VlLW9y
ZGVyCisgICAgUmVmUHRyPFRleHRUcmFja0N1ZT4gbmV3Q3VlID0gY3VlOworICAgIGlmIChzdGFy
dCA9PSBlbmQpIHsKKyAgICAgICBtX2xpc3QuaW5zZXJ0KHN0YXJ0LCBuZXdDdWUpOworICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgaW5kZXggPSAoc3RhcnQgKyBlbmQpIC8gMjsK
KyAgICBpZiAobmV3Q3VlLT5zdGFydFRpbWUoKSA8IG1fbGlzdFtpbmRleF0tPnN0YXJ0VGltZSgp
CisgICAgICAgIHx8IChuZXdDdWUtPnN0YXJ0VGltZSgpID09IG1fbGlzdFtpbmRleF0tPnN0YXJ0
VGltZSgpCisgICAgICAgICYmIG5ld0N1ZS0+ZW5kVGltZSgpID4gbV9saXN0W2luZGV4XS0+ZW5k
VGltZSgpKSkKKyAgICAgICAgYWRkKG5ld0N1ZSwgc3RhcnQsIGluZGV4KTsKKyAgICBlbHNlCisg
ICAgICAgIGFkZChuZXdDdWUsIGluZGV4ICsgMSwgZW5kKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tD
dWVMaXN0OjphcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+JikKK3ZvaWQgVGV4
dFRyYWNrQ3VlTGlzdDo6cmVtb3ZlKFRleHRUcmFja0N1ZSogY3VlKQogewotICAgIC8vIEZJWE1F
KDYyODgzKTogSW1wbGVtZW50LgorICAgIHNpemVfdCBpbmRleCA9IG1fbGlzdC5maW5kKGN1ZSk7
CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgY3VlLT5z
ZXRJc0FjdGl2ZShmYWxzZSk7CisgICAgbV9saXN0LnJlbW92ZShpbmRleCk7CiB9CiAKLXZvaWQg
VGV4dFRyYWNrQ3VlTGlzdDo6cmVtb3ZlKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYp
Citib29sIFRleHRUcmFja0N1ZUxpc3Q6OmNvbnRhaW5zKFRleHRUcmFja0N1ZSogY3VlKSBjb25z
dAogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIHJldHVybiBtX2xpc3Qu
Y29udGFpbnMoY3VlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRUcmFja0N1ZUxpc3QuaAppbmRleCAwNTFhYTUyMjMwYWQwMzgxNGU0N2Q3NTY0YjAw
OWNhMTdmOTM1OWQzLi5lMjI4ZDUxYWY1ZDAyNmYwYTRkMzc0NDAxM2EyNWM3ZDZiMjhjZTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaApAQCAtNDIsMTcgKzQyLDIzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tDdWVMaXN0KTsK
ICAgICB9CiAKKyAgICB+VGV4dFRyYWNrQ3VlTGlzdCgpIHsgfQorCiAgICAgdW5zaWduZWQgbG9u
ZyBsZW5ndGgoKSBjb25zdDsKICAgICBUZXh0VHJhY2tDdWUqIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0OwogICAgIFRleHRUcmFja0N1ZSogZ2V0Q3VlQnlJZChjb25zdCBTdHJpbmcmKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKTsKIAotICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOwotICAgIHZvaWQg
YXBwZW5kKFZlY3RvcjxQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpOwotICAgIHZvaWQgcmVt
b3ZlKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOworICAgIHZvaWQgYWRkKFBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPik7CisgICAgdm9pZCBhZGQoY29uc3QgVmVjdG9yPFJlZlB0cjxU
ZXh0VHJhY2tDdWU+ID4mKTsKKyAgICB2b2lkIHJlbW92ZShUZXh0VHJhY2tDdWUqKTsKKyAgICBi
b29sIGNvbnRhaW5zKFRleHRUcmFja0N1ZSopIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFRleHRU
cmFja0N1ZUxpc3QoKTsKKyAgICB2b2lkIGFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4sIHNp
emVfdCwgc2l6ZV90KTsKKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiBt
X2xpc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTlkZmEyMWQyMzJl
NTFlNGNkMDY3ZTllMjFiMDc0Y2YyMzk3NGU2YS4uNWEwYWU2NzY1MmViNjdmMzYzN2VlMzU3NTM5
ZDYwYjY0M2JhZGI5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTExLTAzICBBbm5hIENh
dmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXN0cyBmb3IgVGV4dFRy
YWNrQ3VlTGlzdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcwNDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay10ZXh0LXRyYWNrLWN1ZS1saXN0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stdGV4dC10
cmFjay1jdWUtbGlzdC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wMyAgQW5kcmV5IEtvc3lha292
ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZXhwZWN0YXRpb25z
IHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXRleHQt
dHJhY2stY3VlLWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJh
Y2stdGV4dC10cmFjay1jdWUtbGlzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUxYmRhNGJi
NDViNDkwZjc0ZWJiMzYzYWM2MTQ5MjlhNWFkZDZkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXRleHQtdHJhY2stY3VlLWxpc3QtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3RzIFRleHRUcmFja0N1ZUxpc3QgZnVuY3Rpb25hbGl0eTog
bGVuZ3RoLCBvcGVyYXRvcltdLCBhbmQgZ2V0Q3VlQnlJZCgpCisKKworKioqIFRlc3RpbmcgVGV4
dFRyYWNrQ3VlTGlzdCBsZW5ndGgKK0VYUEVDVEVEIChjdWVzLmxlbmd0aCA9PSAnNCcpIE9LCisK
KyoqKiBUZXN0aW5nIFRleHRUcmFja0N1ZUxpc3QgW10gb3BlcmF0b3IKK0VYUEVDVEVEIChjdWVz
WzBdLmlkID09ICcxJykgT0sKK0VYUEVDVEVEIChjdWVzWzNdLmlkID09ICc0JykgT0sKK0VYUEVD
VEVEIChjdWVzWzRdID09ICd1bmRlZmluZWQnKSBPSworCisqKiogVGVzdGluZyBUZXh0VHJhY2tD
dWVMaXN0IGdldEN1ZUJ5SWQoKQorRVhQRUNURUQgKGN1ZXMuZ2V0Q3VlQnlJZCgnMScpLnN0YXJ0
VGltZSA9PSAnMCcpIE9LCitFWFBFQ1RFRCAoY3Vlcy5nZXRDdWVCeUlkKCc0Jykuc3RhcnRUaW1l
ID09ICcxMjEnKSBPSworRVhQRUNURUQgKGN1ZXMuZ2V0Q3VlQnlJZCgnanVuaycpID09ICd1bmRl
ZmluZWQnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stdGV4dC10cmFjay1jdWUtbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stdGV4dC10cmFjay1jdWUtbGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMjQ2MTdl
YmNkOTJmODY4YTM2MDRjMzkzNzQzNjE1MmNkMjBiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay10ZXh0LXRyYWNrLWN1ZS1saXN0Lmh0bWwKQEAgLTAs
MCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4gICAgICAgICAgIAorCisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja0xv
YWRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY3VlcyA9IHRlc3RUcmFjay50
cmFjay5jdWVzOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KioqIFRlc3Rp
bmcgVGV4dFRyYWNrQ3VlTGlzdCBsZW5ndGgiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgiY3Vlcy5sZW5ndGgiLCA0KTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
PGJyPioqKiBUZXN0aW5nIFRleHRUcmFja0N1ZUxpc3QgW10gb3BlcmF0b3IiKTsKKworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3Vlc1swXS5pZCIsICIxIik7CisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJjdWVzWzNdLmlkIiwgIjQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoImN1ZXNbNF0iLCB1bmRlZmluZWQpOworCisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCI8YnI+KioqIFRlc3RpbmcgVGV4dFRyYWNrQ3VlTGlzdCBnZXRDdWVCeUlkKCkiKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVzLmdldEN1ZUJ5SWQoJzEnKS5zdGFydFRpbWUiLCAw
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZXMuZ2V0Q3VlQnlJZCgnNCcpLnN0
YXJ0VGltZSIsIDEyMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVzLmdldEN1
ZUJ5SWQoJ2p1bmsnKSIsIHVuZGVmaW5lZCk7CisKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8cD5UZXN0cyBUZXh0VHJhY2tDdWVMaXN0IGZ1bmN0aW9uYWxpdHk6IGxl
bmd0aCwgb3BlcmF0b3JbXSwgYW5kIGdldEN1ZUJ5SWQoKTwvcD4KKyAgICAgICAgPHZpZGVvPgor
ICAgICAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L3Rj
MDEzLXNldHRpbmdzLnZ0dCIga2luZD0iY2FwdGlvbnMiIG9ubG9hZD0idHJhY2tMb2FkZWQoKSI+
CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113543</attachid>
            <date>2011-11-03 12:49:06 -0700</date>
            <delta_ts>2011-11-03 13:29:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-70451-20111103124905.patch</filename>
            <type>text/plain</type>
            <size>11675</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxOTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOTM2MmJiNWEzNGI1M2I0
YTU4NDljM2JjZjVkMWViNmVkYTM3MzQ1Li5lMzM1MTZiZTY5MTAzZjYzODE4Zjc3NTgxNmZmYWQy
YmIyMTdiZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTEtMDMgIEFubmEg
Q2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tDdWVMaXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAg
ICAgVGVzdDogbWVkaWEvdHJhY2svdHJhY2stdGV4dC10cmFjay1jdWUtbGlzdC5odG1sCisKKyAg
ICAgICAgKiBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxv
YWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToKKyAgICAgICAgICAgIFVwZGF0ZSBU
ZXh0VHJhY2sncyBUZXh0VHJhY2tDdWVMaXN0IChtX2N1ZXMpIHdoZW4gbmV3IGN1ZXMgYXJlIGRp
c2NvdmVyZWQuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAgICAgQ3JlYXRlIGFuIGVtcHR5IFRl
eHRUcmFja0N1ZUxpc3QgdXBvbiBUZXh0VHJhY2sgY3JlYXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2s6OmN1ZXMpOgorICAgICAgICAgICAgUmV0dXJuIHRoaXMgVGV4dFRyYWNrJ3Mg
bGlzdCBvZiBjdWVzLgorCisgICAgICAgIEltcGxlbWVudCBUZXh0VHJhY2tDdWVMaXN0IGZ1bmN0
aW9uYWxpdHk6CisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OlRleHRUcmFja0N1ZUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0N1ZUxpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlz
dDo6Z2V0Q3VlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmNvbnRhaW5zKToKKyAgICAgICAgKiBodG1sL1Rl
eHRUcmFja0N1ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6On5U
ZXh0VHJhY2tDdWVMaXN0KToKKwogMjAxMS0xMS0wMyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmluZyBsaW5lIGluIGNvbXB1dGVWaWV3cG9ydEF0
dHJpYnV0ZXMgdGhhdCBlbmZvcmNlcyBhIG1pbmltdW0gc2NhbGUgZmFjdG9yIHRvIG5ldmVyIGFs
bG93IHpvb21pbmcgb3V0IG1vcmUgdGhhbiB2aWV3cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCAwMmI3NTMwMmEwMjliMWM0ZmZlOWY5MmJjYjAwNjZk
YjU5MzM1ZWEzLi5kOTg4OTZhODYwMTUyZGEwZTE3ZjA3YTc3M2EzMWJlOWFmYzk3YTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtMjksNiArMjksOCBA
QAogCiAjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKIAorI2luY2x1ZGUgIlRleHRUcmFj
a0N1ZUxpc3QuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2FkYWJsZVRleHRUcmFjazo6
TG9hZGFibGVUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNr
TG9hZGluZ0NsaWVudCogbG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKQEAg
LTUzLDcgKzU1LDE4IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUo
VGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1f
bG9hZGVyID09IGxvYWRlcik7CiAKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAg
ICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiBuZXdDdWVzOworICAgIG1fbG9hZGVyLT5n
ZXROZXdDdWVzKG5ld0N1ZXMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDdWVz
LnNpemUoKTsgKytpKQorICAgICAgICBuZXdDdWVzW2ldLT5zZXRUcmFjayh0aGlzKTsKKworICAg
IGlmICghbV9jdWVzKQorICAgICAgICBtX2N1ZXMgPSBUZXh0VHJhY2tDdWVMaXN0OjpjcmVhdGUo
KTsgICAgCisgICAgbV9jdWVzLT5hZGQobmV3Q3Vlcyk7CisKKyAgICBpZiAoY2xpZW50KCkpCisg
ICAgICAgIGNsaWVudCgpLT50ZXh0VHJhY2tBZGRDdWVzKHRoaXMsIG1fY3Vlcy5nZXQoKSk7CiB9
CiAKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdTdGFydGVkKFRleHRUcmFja0xv
YWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCmluZGV4IGRiMTZhOGViOGYz
NDNjNmEzMDlhMDM3N2Q1ZDg4MzZjNTBkYmM5YTMuLmE2MDBmY2EyM2E4NzI1NTg2MzY5YzRlMzkw
ZDBlYjNkNzc3OWM0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAKQEAgLTk5LDEzICs5
OSwxOSBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZSh1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiB9CiAKLVBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gVGV4dFRyYWNrOjpjdWVzKCkgY29uc3QKK1RleHRU
cmFja0N1ZUxpc3QqIFRleHRUcmFjazo6Y3VlcygpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4
ODUpOiBJbXBsZW1lbnQuCisgICAgLy8gNC44LjEwLjEyLjUgSWYgdGhlIHRleHQgdHJhY2sgbW9k
ZSAuLi4gaXMgbm90IHRoZSB0ZXh0IHRyYWNrIGRpc2FibGVkIG1vZGUsCisgICAgLy8gdGhlbiB0
aGUgY3VlcyBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBsaXZlIFRleHRUcmFja0N1ZUxpc3Qgb2Jq
ZWN0IC4uLgorICAgIC8vIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4gV2hlbiBhbiBv
YmplY3QgaXMgcmV0dXJuZWQsIHRoZQorICAgIC8vIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0dXJu
ZWQgZWFjaCB0aW1lLgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvI2RvbS10ZXh0dHJhY2stY3VlcworICAgIGlmIChtX21vZGUgIT0gVGV4
dFRyYWNrOjpESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuIG1fY3Vlcy5nZXQoKTsKICAgICByZXR1
cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBUZXh0VHJhY2s6OmFjdGl2
ZUN1ZXMoKSBjb25zdAorVGV4dFRyYWNrQ3VlTGlzdCogVGV4dFRyYWNrOjphY3RpdmVDdWVzKCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRUcmFjay5oCmluZGV4IDgwMGEwZWViMzRkNjMyMWFmMzk0NjY1Nzc3Njdi
MjJlOWY5YmMxNmYuLmQxZDU5NDA1NWNhM2I5ZjRkOWViMmVlZTkyMDk5ODc0MzE4MDgzNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0VHJhY2suaApAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAgICAgTW9k
ZSBtb2RlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNb2RlKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRp
b25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGN1ZXMoKSBjb25z
dDsKLSAgICBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKSBjb25zdDsK
KyAgICBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKCkgY29uc3Q7CisgICAgVGV4dFRyYWNrQ3VlTGlz
dCogYWN0aXZlQ3VlcygpIGNvbnN0OwogCiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpOwog
ICAgIHZvaWQgbW9kZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxp
c3QuY3BwCmluZGV4IGY4MDI5NzI0ZGE2NDM0NzM4MjBjOTYwMTk3ZjE4ZWEwNTY4YWQwNTguLjI4
MzY5YWExZDA3YTYwMDJlNzhiYzA2OWQ3ZDUwMzU0YzUxMGE2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcApAQCAtMzMsNDAgKzMzLDcyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogVGV4dFRyYWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdCgpCiB7Ci0gICAg
Ly8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCiB9CiAKIHVuc2lnbmVkIGxvbmcgVGV4dFRyYWNr
Q3VlTGlzdDo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVu
dC4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9saXN0LnNpemUoKTsKIH0KIAotVGV4dFRy
YWNrQ3VlKiBUZXh0VHJhY2tDdWVMaXN0OjppdGVtKHVuc2lnbmVkKSBjb25zdAorVGV4dFRyYWNr
Q3VlKiBUZXh0VHJhY2tDdWVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAg
IC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIGlmIChpbmRleCA8IG1fbGlzdC5zaXpl
KCkpCisgICAgICAgIHJldHVybiBtX2xpc3RbaW5kZXhdLmdldCgpOwogICAgIHJldHVybiAwOwog
fQogCi1UZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6OmdldEN1ZUJ5SWQoY29uc3QgU3Ry
aW5nJikgY29uc3QKK1RleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZChj
b25zdCBTdHJpbmcmIGlkKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50
LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9saXN0LnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChtX2xpc3RbaV0tPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gbV9saXN0
W2ldLmdldCgpOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBUZXh0VHJhY2tDdWVM
aXN0OjphcHBlbmQoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JikKK3ZvaWQgVGV4
dFRyYWNrQ3VlTGlzdDo6YWRkKGNvbnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBu
ZXdDdWVzKQogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbmV3Q3Vlcy5zaXplKCk7ICsraSkKKyAgICAgICAgYWRkKG5ld0N1ZXNb
aV0pOworfQorCit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4gY3VlKQoreworICAgIGFkZChjdWUsIDAsIG1fbGlzdC5zaXplKCkpOworfQorCit2b2lk
IFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlLCBzaXpl
X3Qgc3RhcnQsIHNpemVfdCBlbmQpCit7CisgICAgQVNTRVJUKHN0YXJ0ID49IDAgJiYgc3RhcnQg
PD0gbV9saXN0LnNpemUoKSk7CisgICAgQVNTRVJUKGVuZCA+PSAwICYmIGVuZCA8PSBtX2xpc3Qu
c2l6ZSgpKTsKKworICAgIC8vIE1haW50YWluIHRleHQgdHJhY2sgY3VlIG9yZGVyOgorICAgIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RleHQt
dHJhY2stY3VlLW9yZGVyCisgICAgUmVmUHRyPFRleHRUcmFja0N1ZT4gbmV3Q3VlID0gY3VlOwor
ICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICBtX2xpc3QuaW5zZXJ0KHN0YXJ0LCBuZXdD
dWUpOworICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgaW5kZXggPSAoc3RhcnQg
KyBlbmQpIC8gMjsKKyAgICBpZiAobmV3Q3VlLT5zdGFydFRpbWUoKSA8IG1fbGlzdFtpbmRleF0t
PnN0YXJ0VGltZSgpIHx8IChuZXdDdWUtPnN0YXJ0VGltZSgpID09IG1fbGlzdFtpbmRleF0tPnN0
YXJ0VGltZSgpICYmIG5ld0N1ZS0+ZW5kVGltZSgpID4gbV9saXN0W2luZGV4XS0+ZW5kVGltZSgp
KSkKKyAgICAgICAgYWRkKG5ld0N1ZS5yZWxlYXNlKCksIHN0YXJ0LCBpbmRleCk7CisgICAgZWxz
ZQorICAgICAgICBhZGQobmV3Q3VlLnJlbGVhc2UoKSwgaW5kZXggKyAxLCBlbmQpOwogfQogCi12
b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFwcGVuZChjb25zdCBQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZT4mKQordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4dFRyYWNrQ3VlKiBjdWUpCiB7
Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgc2l6ZV90IGluZGV4ID0gbV9s
aXN0LmZpbmQoY3VlKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
bjsKKyAgICBjdWUtPnNldElzQWN0aXZlKGZhbHNlKTsKKyAgICBtX2xpc3QucmVtb3ZlKGluZGV4
KTsKIH0KIAotdm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWU+JikKK2Jvb2wgVGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFpbnMoVGV4dFRyYWNr
Q3VlKiBjdWUpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAg
cmV0dXJuIG1fbGlzdC5jb250YWlucyhjdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCmluZGV4IDA1MWFhNTIyMzBhZDAz
ODE0ZTQ3ZDc1NjRiMDA5Y2ExN2Y5MzU5ZDMuLmFlNDc0ZWU3M2U0MmIyOGJiYWUxYzQxMGY2Y2Ji
Y2U5M2ZmYzVkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCkBAIC00
MiwxNyArNDIsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRU
cmFja0N1ZUxpc3QpOwogICAgIH0KIAorICAgIH5UZXh0VHJhY2tDdWVMaXN0KCkgeyB9CisKICAg
ICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0OwogICAgIFRleHRUcmFja0N1ZSogaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgVGV4dFRyYWNrQ3VlKiBnZXRDdWVCeUlkKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gYWN0aXZl
Q3VlcygpOworICAgIFRleHRUcmFja0N1ZUxpc3QqIGFjdGl2ZUN1ZXMoKTsKIAotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOwotICAgIHZvaWQgYXBwZW5k
KFZlY3RvcjxQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpOwotICAgIHZvaWQgcmVtb3ZlKGNv
bnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOworICAgIHZvaWQgYWRkKFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPik7CisgICAgdm9pZCBhZGQoY29uc3QgVmVjdG9yPFJlZlB0cjxUZXh0VHJh
Y2tDdWU+ID4mKTsKKyAgICB2b2lkIHJlbW92ZShUZXh0VHJhY2tDdWUqKTsKKyAgICBib29sIGNv
bnRhaW5zKFRleHRUcmFja0N1ZSopIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1
ZUxpc3QoKTsKKyAgICB2b2lkIGFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4sIHNpemVfdCwg
c2l6ZV90KTsKKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiBtX2xpc3Q7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTlkZmEyMWQyMzJlNTFlNGNk
MDY3ZTllMjFiMDc0Y2YyMzk3NGU2YS4uYjNkYjdmZDMyZTBkNTAwYWY3NzA2MDk2MWRiZThhOTlj
NmUzMTIzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTExLTAzICBBbm5hIENhdmVuZGVy
ICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXN0cyBmb3IgVGV4dFRyYWNrQ3Vl
TGlzdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcwNDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stdGV4dC10cmFjay1jdWUtbGlzdC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXRleHQtdHJhY2stY3Vl
LWxpc3QuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGV4cGVjdGF0aW9ucyB1cGRhdGUu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay10ZXh0LXRyYWNrLWN1
ZS1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXRleHQt
dHJhY2stY3VlLWxpc3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMWJkYTRiYjQ1YjQ5MGY3
NGViYjM2M2FjNjE0OTI5YTVhZGQ2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay10ZXh0LXRyYWNrLWN1ZS1saXN0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE3IEBACitUZXN0cyBUZXh0VHJhY2tDdWVMaXN0IGZ1bmN0aW9uYWxpdHk6IGxlbmd0aCwg
b3BlcmF0b3JbXSwgYW5kIGdldEN1ZUJ5SWQoKQorCisKKyoqKiBUZXN0aW5nIFRleHRUcmFja0N1
ZUxpc3QgbGVuZ3RoCitFWFBFQ1RFRCAoY3Vlcy5sZW5ndGggPT0gJzQnKSBPSworCisqKiogVGVz
dGluZyBUZXh0VHJhY2tDdWVMaXN0IFtdIG9wZXJhdG9yCitFWFBFQ1RFRCAoY3Vlc1swXS5pZCA9
PSAnMScpIE9LCitFWFBFQ1RFRCAoY3Vlc1szXS5pZCA9PSAnNCcpIE9LCitFWFBFQ1RFRCAoY3Vl
c1s0XSA9PSAndW5kZWZpbmVkJykgT0sKKworKioqIFRlc3RpbmcgVGV4dFRyYWNrQ3VlTGlzdCBn
ZXRDdWVCeUlkKCkKK0VYUEVDVEVEIChjdWVzLmdldEN1ZUJ5SWQoJzEnKS5zdGFydFRpbWUgPT0g
JzAnKSBPSworRVhQRUNURUQgKGN1ZXMuZ2V0Q3VlQnlJZCgnNCcpLnN0YXJ0VGltZSA9PSAnMTIx
JykgT0sKK0VYUEVDVEVEIChjdWVzLmdldEN1ZUJ5SWQoJ2p1bmsnKSA9PSAndW5kZWZpbmVkJykg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLXRleHQtdHJhY2stY3VlLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLXRleHQtdHJhY2stY3VlLWxpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2JhYzg2ZWNiZGY4NGMx
YzJlNTE3ZjI2MDllZmM2NDViOTI2OWE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stdGV4dC10cmFjay1jdWUtbGlzdC5odG1sCkBAIC0wLDAgKzEsNDIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+ICAgICAgICAgICAKKworICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tMb2FkZWQoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciB0ZXN0VHJhY2sgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGVzdFRyYWNrJyk7CisgICAgICAgICAgICAgICAgY3VlcyA9IHRlc3RU
cmFjay50cmFjay5jdWVzOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+Kioq
IFRlc3RpbmcgVGV4dFRyYWNrQ3VlTGlzdCBsZW5ndGgiKTsKKworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgiY3Vlcy5sZW5ndGgiLCA0KTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiPGJyPioqKiBUZXN0aW5nIFRleHRUcmFja0N1ZUxpc3QgW10gb3BlcmF0b3IiKTsKKwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3Vlc1swXS5pZCIsICIxIik7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVzWzNdLmlkIiwgIjQiKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImN1ZXNbNF0iLCB1bmRlZmluZWQpOworCisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCI8YnI+KioqIFRlc3RpbmcgVGV4dFRyYWNrQ3VlTGlzdCBnZXRDdWVCeUlk
KCkiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVzLmdldEN1ZUJ5SWQoJzEnKS5zdGFydFRp
bWUiLCAwKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZXMuZ2V0Q3VlQnlJZCgn
NCcpLnN0YXJ0VGltZSIsIDEyMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVz
LmdldEN1ZUJ5SWQoJ2p1bmsnKSIsIHVuZGVmaW5lZCk7CisKKyAgICAgICAgICAgICAgICBlbmRU
ZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0cyBUZXh0VHJhY2tDdWVMaXN0IGZ1bmN0aW9uYWxp
dHk6IGxlbmd0aCwgb3BlcmF0b3JbXSwgYW5kIGdldEN1ZUJ5SWQoKTwvcD4KKyAgICAgICAgPHZp
ZGVvPgorICAgICAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2Vi
dnR0L3RjMDEzLXNldHRpbmdzLnZ0dCIga2luZD0iY2FwdGlvbnMiIG9ubG9hZD0idHJhY2tMb2Fk
ZWQoKSI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>