<?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>121954</bug_id>
          
          <creation_ts>2013-09-26 06:40:47 -0700</creation_ts>
          <short_desc>[MediaStream API] allow a stream source to be shared</short_desc>
          <delta_ts>2013-11-13 11:33:27 -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>WebCore Misc.</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>124288</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>lauro.neto</cc>
    
    <cc>pnormand</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933470</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-26 06:40:47 -0700</bug_when>
    <thetext>The MediaStream API allows a stream source to be rendered to multiple outputs, eg. by using MediaTrack.clone() and/or MediaStream.addTrack(), but we currently assume that each source is owned by a single track.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939297</commentid>
    <comment_count>1</comment_count>
      <attachid>214107</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-13 10:30:36 -0700</bug_when>
    <thetext>Created attachment 214107
First draft</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939298</commentid>
    <comment_count>2</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-13 10:31:33 -0700</bug_when>
    <thetext>I think this will be a long review. I&apos;m proposing this first draft so reviewers can give feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939308</commentid>
    <comment_count>3</comment_count>
      <attachid>214107</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-13 14:00:38 -0700</bug_when>
    <thetext>Comment on attachment 214107
First draft

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

This is a great start, but I think it definitely needs a test to make sure the states are being set correctly. For example, what makes a source-&gt;readyState() go to &quot;Ended&quot;?

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:197
&gt; +    m_descriptor-&gt;addSource(prpTrack-&gt;source());

You should use &quot;track&quot; rather than &quot;prpTrack&quot;.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:243
&gt; +bool MediaStream::hasTrackWithSource(PassRefPtr&lt;MediaStreamSource&gt; source)

Nit: I think &quot;haveTrackWithSource&quot; would be a slightly better name.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:257
&gt; +    if (source-&gt;type() == MediaStreamSource::Audio) {
&gt; +        for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_audioTracks) {
&gt; +            if (track-&gt;source() == source.get())
&gt; +                return true;
&gt; +        }
&gt; +    } else {
&gt; +        for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_videoTracks) {
&gt; +            if (track-&gt;source() == source.get())
&gt; +                return true;
&gt; +        }
&gt; +    }
&gt; +
&gt; +    return false;

The &quot;else&quot; isn&apos;t necessary:

if (source-&gt;type() == MediaStreamSource::Audio) {
    for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_audioTracks) {
        if (track-&gt;source() == source.get())
            return true;
    }
    return false;
}

for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_videoTracks) {
    if (track-&gt;source() == source.get())
        return true;
}

return false;

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:346
&gt;              index = i;
&gt; +            removedTracks.append((*tracks)[i]);
&gt; +            tracks-&gt;remove(i);
&gt;              break;

Don&apos;t you want to look through all of the tracks instead of breaking on the first one that uses the source?

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:353
&gt; +    if (index == notFound)
&gt; +        return;

if (!removedTracks.size()) return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939339</commentid>
    <comment_count>4</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-13 19:14:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 214107 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214107&amp;action=review
&gt; 
&gt; This is a great start, but I think it definitely needs a test to make sure the states are being set correctly. For example, what makes a source-&gt;readyState() go to &quot;Ended&quot;?

Yep, it needs tests. I just uploaded it as a first draft, without tests for you guys to take a look at my approach on the problem :)

I think that only the backend the provided the source can tell if a source has ended or not. Then the MediaStreamSource is going to tell the others that are interested in its state (by the observers) that it has ended, for instance.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:197
&gt; &gt; +    m_descriptor-&gt;addSource(prpTrack-&gt;source());
&gt; 
&gt; You should use &quot;track&quot; rather than &quot;prpTrack&quot;.

My bad.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:243
&gt; &gt; +bool MediaStream::hasTrackWithSource(PassRefPtr&lt;MediaStreamSource&gt; source)
&gt; 
&gt; Nit: I think &quot;haveTrackWithSource&quot; would be a slightly better name.

I agree
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:257
&gt; &gt; +    if (source-&gt;type() == MediaStreamSource::Audio) {
&gt; &gt; +        for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_audioTracks) {
&gt; &gt; +            if (track-&gt;source() == source.get())
&gt; &gt; +                return true;
&gt; &gt; +        }
&gt; &gt; +    } else {
&gt; &gt; +        for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_videoTracks) {
&gt; &gt; +            if (track-&gt;source() == source.get())
&gt; &gt; +                return true;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    return false;
&gt; 
&gt; The &quot;else&quot; isn&apos;t necessary:

good point
&gt; 
&gt; if (source-&gt;type() == MediaStreamSource::Audio) {
&gt;     for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_audioTracks) {
&gt;         if (track-&gt;source() == source.get())
&gt;             return true;
&gt;     }
&gt;     return false;
&gt; }
&gt; 
&gt; for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : m_videoTracks) {
&gt;     if (track-&gt;source() == source.get())
&gt;         return true;
&gt; }
&gt; 
&gt; return false;
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:346
&gt; &gt;              index = i;
&gt; &gt; +            removedTracks.append((*tracks)[i]);
&gt; &gt; +            tracks-&gt;remove(i);
&gt; &gt;              break;
&gt; 
&gt; Don&apos;t you want to look through all of the tracks instead of breaking on the first one that uses the source?

Silly me
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:353
&gt; &gt; +    if (index == notFound)
&gt; &gt; +        return;
&gt; 
&gt; if (!removedTracks.size()) return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939340</commentid>
    <comment_count>5</comment_count>
      <attachid>214121</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-13 19:27:54 -0700</bug_when>
    <thetext>Created attachment 214121
Fixing last patch (no tests yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943120</commentid>
    <comment_count>6</comment_count>
      <attachid>214121</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-24 07:47:33 -0700</bug_when>
    <thetext>Comment on attachment 214121
Fixing last patch (no tests yet)

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

r=me but you need to fix the ChangeLog comment. Please consider the other suggestions.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

This won&apos;t commit with the &quot;OOPS!&quot; in place. I would change it to something like &quot;No new tests, no change in functionality&quot;.

&gt; Source/WebCore/ChangeLog:32
&gt; +        * Modules/mediastream/MediaStream.cpp:
&gt; +        (WebCore::MediaStream::MediaStream):
&gt; +        (WebCore::MediaStream::addTrack):
&gt; +        (WebCore::MediaStream::removeTrack):
&gt; +        (WebCore::MediaStream::haveTrackWithSource):
&gt; +        (WebCore::MediaStream::addRemoteSource):
&gt; +        (WebCore::MediaStream::removeRemoteSource):
&gt; +        * Modules/mediastream/MediaStream.h:
&gt; +        * Modules/mediastream/MediaStreamTrack.cpp:
&gt; +        (WebCore::MediaStreamTrack::addObserver):
&gt; +        (WebCore::MediaStreamTrack::removeObserver):
&gt; +        (WebCore::MediaStreamTrack::trackDidEnd):
&gt; +        * Modules/mediastream/MediaStreamTrack.h:
&gt; +        * platform/mediastream/MediaStreamDescriptor.cpp:
&gt; +        (WebCore::MediaStreamDescriptor::removeSource):
&gt; +        (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
&gt; +        (WebCore::MediaStreamDescriptor::setEnded):
&gt; +        * platform/mediastream/MediaStreamDescriptor.h:
&gt; +        (WebCore::MediaStreamDescriptor::~MediaStreamDescriptor):
&gt; +        * platform/mediastream/MediaStreamSource.cpp:
&gt; +        (WebCore::MediaStreamSource::MediaStreamSource):
&gt; +        (WebCore::MediaStreamSource::reset):
&gt; +        * platform/mediastream/MediaStreamSource.h:

It would be nice to have brief descriptions of what changed in each method. I think this can really help later when investigating past changes.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:127
&gt; +        m_audioTracks.append(track);

Nit: m_audioTracks.append(track.release());

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:135
&gt; +        m_videoTracks.append(track);

Ditto

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:342
&gt;          if ((*tracks)[i]-&gt;source() == source) {

Nit: you might as well update this loop to use the new hotness - for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : *tracks) ...

&gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp:106
&gt; +    for (size_t i = 0; i &lt; audioSources.size(); i++)

Ditto.

&gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp:109
&gt; +    for (size_t i = 0; i &lt; videoSources.size(); i++)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943248</commentid>
    <comment_count>7</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-24 12:06:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 214121 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214121&amp;action=review
&gt; 
&gt; r=me but you need to fix the ChangeLog comment. Please consider the other suggestions.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; This won&apos;t commit with the &quot;OOPS!&quot; in place. I would change it to something like &quot;No new tests, no change in functionality&quot;.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:32
&gt; &gt; +        * Modules/mediastream/MediaStream.cpp:
&gt; &gt; +        (WebCore::MediaStream::MediaStream):
&gt; &gt; +        (WebCore::MediaStream::addTrack):
&gt; &gt; +        (WebCore::MediaStream::removeTrack):
&gt; &gt; +        (WebCore::MediaStream::haveTrackWithSource):
&gt; &gt; +        (WebCore::MediaStream::addRemoteSource):
&gt; &gt; +        (WebCore::MediaStream::removeRemoteSource):
&gt; &gt; +        * Modules/mediastream/MediaStream.h:
&gt; &gt; +        * Modules/mediastream/MediaStreamTrack.cpp:
&gt; &gt; +        (WebCore::MediaStreamTrack::addObserver):
&gt; &gt; +        (WebCore::MediaStreamTrack::removeObserver):
&gt; &gt; +        (WebCore::MediaStreamTrack::trackDidEnd):
&gt; &gt; +        * Modules/mediastream/MediaStreamTrack.h:
&gt; &gt; +        * platform/mediastream/MediaStreamDescriptor.cpp:
&gt; &gt; +        (WebCore::MediaStreamDescriptor::removeSource):
&gt; &gt; +        (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
&gt; &gt; +        (WebCore::MediaStreamDescriptor::setEnded):
&gt; &gt; +        * platform/mediastream/MediaStreamDescriptor.h:
&gt; &gt; +        (WebCore::MediaStreamDescriptor::~MediaStreamDescriptor):
&gt; &gt; +        * platform/mediastream/MediaStreamSource.cpp:
&gt; &gt; +        (WebCore::MediaStreamSource::MediaStreamSource):
&gt; &gt; +        (WebCore::MediaStreamSource::reset):
&gt; &gt; +        * platform/mediastream/MediaStreamSource.h:
&gt; 
&gt; It would be nice to have brief descriptions of what changed in each method. I think this can really help later when investigating past changes.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:127
&gt; &gt; +        m_audioTracks.append(track);
&gt; 
&gt; Nit: m_audioTracks.append(track.release());

OK

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:135
&gt; &gt; +        m_videoTracks.append(track);
&gt; 
&gt; Ditto

OK

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:342
&gt; &gt;          if ((*tracks)[i]-&gt;source() == source) {
&gt; 
&gt; Nit: you might as well update this loop to use the new hotness - for (const RefPtr&lt;MediaStreamTrack&gt;&amp; track : *tracks) ...

But I need the indexes to remove the tracks from the track vector :(.
Also, by looking carefully at this loop, I&apos;m removing the element while iterating on the vector, this is not very safe. So I will keep the for (with no range based loop) and store the indexes to be removed in another vector and remove them in the loop below it (which is dispatching the events). Is that ok for you?

&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp:106
&gt; &gt; +    for (size_t i = 0; i &lt; audioSources.size(); i++)
&gt; 
&gt; Ditto.

OK

&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp:109
&gt; &gt; +    for (size_t i = 0; i &lt; videoSources.size(); i++)
&gt; 
&gt; Ditto.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943291</commentid>
    <comment_count>8</comment_count>
      <attachid>215099</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-24 13:17:48 -0700</bug_when>
    <thetext>Created attachment 215099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943305</commentid>
    <comment_count>9</comment_count>
      <attachid>215099</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-24 13:43:41 -0700</bug_when>
    <thetext>Comment on attachment 215099
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:356
&gt; +    for (int i : tracksToRemove) {
&gt; +        RefPtr&lt;MediaStreamTrack&gt; track = (*tracks)[i];
&gt; +        track-&gt;removeObserver(this);
&gt; +        tracks-&gt;remove(i);
&gt; +        scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().removetrackEvent, false, false, track.release()));
&gt; +    }

Doesn&apos;t this need to loop backwards through the tracks since you are removing them by index?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943306</commentid>
    <comment_count>10</comment_count>
      <attachid>215099</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-24 13:51:25 -0700</bug_when>
    <thetext>Comment on attachment 215099
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:349
&gt; +    if (tracksToRemove.isEmpty())
&gt; +        return;

This early return doesn’t do anything useful.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:351
&gt; +    for (int i : tracksToRemove) {

Not all the compilers we support work with this syntax.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943308</commentid>
    <comment_count>11</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-24 14:00:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 215099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215099&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:349
&gt; &gt; +    if (tracksToRemove.isEmpty())
&gt; &gt; +        return;
&gt; 
&gt; This early return doesn’t do anything useful.

you are right.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:351
&gt; &gt; +    for (int i : tracksToRemove) {
&gt; 
&gt; Not all the compilers we support work with this syntax.

There are other parts in WebKit code that are already using range based for loops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943318</commentid>
    <comment_count>12</comment_count>
      <attachid>215105</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-24 14:42:05 -0700</bug_when>
    <thetext>Created attachment 215105
Patch with requested changeds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943320</commentid>
    <comment_count>13</comment_count>
      <attachid>215107</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-24 14:44:29 -0700</bug_when>
    <thetext>Created attachment 215107
Patch with requested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943321</commentid>
    <comment_count>14</comment_count>
      <attachid>215108</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-24 14:55:07 -0700</bug_when>
    <thetext>Created attachment 215108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943324</commentid>
    <comment_count>15</comment_count>
      <attachid>215108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 15:20:39 -0700</bug_when>
    <thetext>Comment on attachment 215108
Patch

Clearing flags on attachment: 215108

Committed r157958: &lt;http://trac.webkit.org/changeset/157958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943325</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 15:20:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214107</attachid>
            <date>2013-10-13 10:30:36 -0700</date>
            <delta_ts>2013-10-13 19:27:49 -0700</delta_ts>
            <desc>First draft</desc>
            <filename>bug-121954-20131013143034.patch</filename>
            <type>text/plain</type>
            <size>15946</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzNGY1MjZiNzVlYjQ1
MjYwNWQ1ZmRlODIzNjQ0ODE5YmYxOWZkMC4uMTU5NjQ4ZTViZWMxZTViZjIyOTVmZjcyMmUzZGY1
Y2E1NWYzODRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEwLTEzICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbSBBUEldIGFsbG93IGEgc3RyZWFtIHNvdXJjZSB0byBiZSBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6aGFzVHJhY2tXaXRoU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
OjphZGRSZW1vdGVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJlbW92
ZVJlbW90ZVNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphZGRPYnNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0RpZEVuZCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVtb3ZlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c2V0RW5kZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjp+TWVkaWFTdHJlYW1EZXNjcmlwdG9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnJlc2V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oOgorCiAyMDEzLTEwLTEzICBBbmRy
ZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBDVFRFOiBSZW5kZXJTbGlk
ZXIgYWx3YXlzIGhhcyBhbiBIVE1MSW5wdXRFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCA5NDI0OTk5Mjc3MTQ1
NzI5MGRmNjgyMjA4N2M2NmMzMWRmZmMyNjY5Li41OTk0ZmRmMDgyMThkYzBjZTA1MTFkY2QxZjlj
MzQ4MGY2YjNhZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMTE4LDE1ICsxMTgsMjIgQEAgTWVkaWFTdHJlYW06Ok1l
ZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW0KICAgICBBU1NFUlQobV9kZXNjcmlwdG9yKTsKICAgICBtX2Rlc2NyaXB0b3ItPnNl
dENsaWVudCh0aGlzKTsKIAorICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKICAg
ICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZBdWRp
b1N0cmVhbXMoKTsKICAgICBtX2F1ZGlvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkF1
ZGlvVHJhY2tzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFj
a3M7IGkrKykKLSAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoQXVkaW9TdHJlYW1UcmFjazo6
Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvci0+YXVkaW9TdHJlYW1zKGkpKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspIHsKKyAgICAgICAg
dHJhY2sgPSBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLT5h
dWRpb1N0cmVhbXMoaSkpOworICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAg
ICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKKyAgICB9CiAKICAgICBzaXplX3QgbnVt
YmVyT2ZWaWRlb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZWaWRlb1N0cmVhbXMoKTsK
ICAgICBtX3ZpZGVvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tzKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVmlkZW9UcmFja3M7IGkrKykKLSAg
ICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoVmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRl
eHQsIG1fZGVzY3JpcHRvci0+dmlkZW9TdHJlYW1zKGkpKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspIHsKKyAgICAgICAgdHJhY2sgPSBWaWRl
b1N0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLT52aWRlb1N0cmVhbXMo
aSkpOworICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fdmlkZW9U
cmFja3MuYXBwZW5kKHRyYWNrKTsKKyAgICB9CiB9CiAKIE1lZGlhU3RyZWFtOjp+TWVkaWFTdHJl
YW0oKQpAQCAtMTg1LDYgKzE5Miw5IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFkZFRyYWNrKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAg
IG1fdmlkZW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisg
ICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOworICAgIG1fZGVzY3JpcHRvci0+YWRkU291cmNl
KHBycFRyYWNrLT5zb3VyY2UoKSk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNr
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtMjE4LDEyICsyMjgsMzUgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ28KICAgICBpZiAo
cG9zID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Rlc2NyaXB0b3ItPnJl
bW92ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOworICAgIC8vIFRoZXJlIGNhbiBiZSBvdGhlciB0
cmFja3MgdXNpbmcgdGhlIHNhbWUgc291cmNlIGluIHRoZSBzYW1lIE1lZGlhU3RyZWFtLAorICAg
IC8vIGxpa2Ugd2hlbiBNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpIGlzIGNhbGxlZCwgZm9yIGlu
c3RhbmNlLgorICAgIC8vIFNwZWMgc2F5cyB0aGF0IGEgc291cmNlIGNhbiBiZSBzaGFyZWQsIHNv
IHdlIG11c3QgYXNzdXJlIHRoYXQgdGhlcmUgaXMgbm8KKyAgICAvLyBvdGhlciB0cmFjayB1c2lu
ZyBpdC4KKyAgICBpZiAoIWhhc1RyYWNrV2l0aFNvdXJjZSh0cmFjay0+c291cmNlKCkpKQorICAg
ICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOwogCisgICAg
dHJhY2stPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXpl
KCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6ZSgpKQogICAgICAgICBzZXRFbmRlZCgpOwogfQogCiti
b29sIE1lZGlhU3RyZWFtOjpoYXNUcmFja1dpdGhTb3VyY2UoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZT4gc291cmNlKQoreworICAgIGlmIChzb3VyY2UtPnR5cGUoKSA9PSBNZWRpYVN0cmVh
bVNvdXJjZTo6QXVkaW8pIHsKKyAgICAgICAgZm9yIChjb25zdCBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4mIHRyYWNrIDogbV9hdWRpb1RyYWNrcykgeworICAgICAgICAgICAgaWYgKHRyYWNrLT5z
b3VyY2UoKSA9PSBzb3VyY2UuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKSB7CisgICAgICAgICAgICBpZiAodHJh
Y2stPnNvdXJjZSgpID09IHNvdXJjZS5nZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogTWVkaWFTdHJl
YW1UcmFjayogTWVkaWFTdHJlYW06OmdldFRyYWNrQnlJZChTdHJpbmcgaWQpCiB7CiAgICAgZm9y
IChNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gbV9hdWRpb1RyYWNrcy5i
ZWdpbigpOyBpdGVyICE9IG1fYXVkaW9UcmFja3MuZW5kKCk7ICsraXRlcikgewpAQCAtMjcxLDgg
KzMwNCw2IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNv
dXJjZSogc291cmNlKQogICAgIGlmIChlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
b3VyY2UtPnNldFN0cmVhbShkZXNjcmlwdG9yKCkpOwotCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+IHRyYWNrOwogICAgIHN3aXRjaCAoc291cmNlLT50eXBlKCkpIHsKICAgICBjYXNlIE1l
ZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKQEAgLTI4NCw2ICszMTUsNyBAQCB2b2lkIE1lZGlhU3Ry
ZWFtOjphZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKICAgICAgICAg
bV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9CisgICAg
dHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOwogICAgIG1fZGVzY3JpcHRvci0+YWRkU291cmNlKHNv
dXJjZSk7CiAKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2sp
KTsKQEAgLTMwNCwyMSArMzM2LDI2IEBAIHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVJlbW90ZVNv
dXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHJlbW92ZWRUcmFja3M7CiAgICAgc2l6ZV90IGlu
ZGV4ID0gbm90Rm91bmQ7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3MtPnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmICgoKnRyYWNrcylbaV0tPnNvdXJjZSgpID09IHNvdXJjZSkg
ewogICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgcmVtb3ZlZFRyYWNrcy5hcHBl
bmQoKCp0cmFja3MpW2ldKTsKKyAgICAgICAgICAgIHRyYWNrcy0+cmVtb3ZlKGkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5k
KQotICAgICAgICByZXR1cm47CiAKICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJjZShzb3Vy
Y2UpOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gKCp0cmFja3MpW2lu
ZGV4XTsKLSAgICB0cmFja3MtPnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVEaXNwYXRjaEV2
ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFj
a0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGNvbnN0IFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiYgdHJhY2sgOiByZW1vdmVkVHJhY2tzKSB7CisgICAgICAgIHRyYWNrLT5yZW1vdmVPYnNl
cnZlcih0aGlzKTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJh
Y2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFs
c2UsIHRyYWNrKSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVsZURpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggYjQyOGM3N2UzNTNhZTNmNWNk
MmNmZWYyOTdmMDRkZDFmOGQ4YWZiNS4uZTBmODRkZDUwNTRmOGVlMjgxYWVlNTYxODM3ZjhmYmQ3
NDhiODI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaApAQCAtOTgsNiArOTgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERSBGSU5BTDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJ
REUgRklOQUw7CiAKKyAgICBib29sIGhhc1RyYWNrV2l0aFNvdXJjZShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtU291cmNlPik7CisKICAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50Pik7CiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVk
aWFTdHJlYW0+Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDAxYmJjZGMyY2MwZDI4M2QyZWMwYmI4
Zjk0NDdlNGUwYjFlNjQ0ODIuLjkzYWYyM2MwNDFlOTQ0NThhNjI3ZWU1YjFiZWRhOTYxZTc5ZmE4
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMjg3LDYgKzI4NywxOCBAQCBib29sIE1lZGlhU3RyZWFt
VHJhY2s6OmVuZGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9zdG9wcGVkIHx8IChtX3NvdXJjZSAm
JiBtX3NvdXJjZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCk7CiB9
CiAKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1UcmFjazo6
T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7
Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIoTWVkaWFTdHJlYW1U
cmFjazo6T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIHNpemVfdCBwb3MgPSBtX29ic2VydmVy
cy5maW5kKG9ic2VydmVyKTsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICBtX29i
c2VydmVycy5yZW1vdmUocG9zKTsKK30KKwogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VT
dGF0ZUNoYW5nZWQoKQogewogICAgIGlmIChtX3N0b3BwZWQpCkBAIC0zNDQsMTIgKzM1Niw4IEBA
IGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6c3RvcHBlZCgpCiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFj
azo6dHJhY2tEaWRFbmQoKQogewotICAgIC8vIEZJWE1FOiB0aGlzIGlzIHdyb25nLCB0aGUgdHJh
Y2sgc2hvdWxkbid0IGhhdmUgdG8gY2FsbCB0aGUgZGVzY3JpcHRvcidzIGNsaWVudCEKLSAgICBN
ZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCA9IG1fc291cmNlID8gbV9zb3VyY2Ut
PnN0cmVhbSgpLT5jbGllbnQoKSA6IDA7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBjbGllbnQtPnRyYWNrRGlkRW5kKCk7CisgICAgZm9yIChWZWN0b3I8T2Jz
ZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZl
cnMuZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+dHJhY2tEaWRFbmQoKTsKIH0KIAogdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggYjVkYWJkMDA4OTdiNGY5ODY0
MGNiNTlhZTJhZmMwY2Y1MDUzYWEwZi4uMTBmZDI5YzFlYTM1ZGFhYTA2ZmQyMGE2ZWYyYzI5NTNl
OGFlMzVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTQ5LDYgKzQ5LDExIEBAIGNsYXNzIE1lZGlhVHJhY2tD
b25zdHJhaW50czsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlh
U3RyZWFtU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIHRyYWNrRGlkRW5kKCkgPSAwOworICAg
IH07CisKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrKCk7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYga2luZCgpIGNvbnN0ID0gMDsKQEAgLTg1LDYgKzkwLDkgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRPYnNlcnZlcihP
YnNlcnZlciopOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKKwogICAgIC8v
IEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIE1lZGlhU3RyZWFtVHJh
Y2tFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAt
MTI0LDYgKzEzMiw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9pZDsKICAgICBN
dXRleCBtX211dGV4OwogCisgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisKICAg
ICBib29sIG1fc3RvcHBlZDsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fbXV0ZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAppbmRleCBjMmY4ZDE1M2E3MjYxYWUyNDYxMDQzMDU4
YThiMjAxMTgwMjVlZGZkLi5kYzRiMThiMjI1ZTFkNjU1OTFlZGZlY2VhNWM0ZTc5YzhiMjIyNmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKQEAgLTQ4LDE1ICs0OCw2IEBAIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShj
b25zdCBNZWRpYVN0cmVhCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2Ny
aXB0b3IoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291
cmNlcywgZmxhZyA9PSBJc0VuZGVkKSk7CiB9CiAKLU1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1l
ZGlhU3RyZWFtRGVzY3JpcHRvcigpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F1
ZGlvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJj
ZXNbaV0tPnNldFN0cmVhbSgwKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
dmlkZW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAgICBtX3ZpZGVvU3RyZWFtU291
cmNlc1tpXS0+c2V0U3RyZWFtKDApOwotfQotCiB2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
YWRkU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKIHsKICAgICBz
d2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CkBAIC04OCw4ICs3OSw2IEBAIHZvaWQgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOjpyZW1vdmVTb3VyY2UoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4g
c291cmNlKQogICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5yZW1vdmUocG9zKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotCi0gICAgc291cmNlLT5zZXRTdHJlYW0oMCk7CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2Uq
IHNvdXJjZSkKQEAgLTExNCwyNiArMTAzLDE5IEBAIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVk
aWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlhU3RyZWFtCiAg
ICAgLCBtX2VuZGVkKGVuZGVkKQogewogICAgIEFTU0VSVChtX2lkLmxlbmd0aCgpKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykgewotICAgICAg
ICBhdWRpb1NvdXJjZXNbaV0tPnNldFN0cmVhbSh0aGlzKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykKICAgICAgICAgbV9hdWRpb1N0cmVhbVNv
dXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlc1tpXSk7Ci0gICAgfQogCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgdmlkZW9Tb3Vy
Y2VzW2ldLT5zZXRTdHJlYW0odGhpcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRl
b1NvdXJjZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2VzLmFwcGVu
ZCh2aWRlb1NvdXJjZXNbaV0pOwotICAgIH0KIH0KIAogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0
b3I6OnNldEVuZGVkKCkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5z
dHJlYW1EaWRFbmQoKTsKKwogICAgIG1fZW5kZWQgPSB0cnVlOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fYXVk
aW9TdHJlYW1Tb3VyY2VzW2ldLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpFbmRl
ZCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3RyZWFtU291cmNlcy5zaXpl
KCk7IGkrKykKLSAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0tPnNldFJlYWR5U3RhdGUo
TWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCBiYjdmZDBmYjBiN2NlOTEzYWVjYmM0ZGE0MWZjYjcw
MDkxM2JiZTQ2Li4zZDgwYjM3OTRmMmRkNDc0MmY5Yzg2YjcxYTg5YTMzZGM1MzdmNjhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURl
c2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbURlc2NyaXB0b3IuaApAQCAtMzUsMTYgKzM1LDE2IEBACiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiTWVk
aWFTdHJlYW1UcmFjay5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU3RyZWFt
RGVzY3JpcHRvckNsaWVudCB7CitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQgOiBw
dWJsaWMgTWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwg
fk1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHRy
YWNrRGlkRW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRFbmQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikg
PSAwOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3Vy
Y2VzLCBFbmRlZEF0Q3JlYXRpb25GbGFnKTsKIAotICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRGVz
Y3JpcHRvcigpOworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpIHsgfQogCiAg
ICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWVudDsgfQogICAgIHZvaWQgc2V0Q2xpZW50KE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVu
dCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXgg
NmRiZGI5N2MyODk1MmVlMzkxNGJlZWE3OGE3YmRmNDUxODRiM2IzOC4uMmQxZDE3YzE1NmNkNWY3
ZTliOTE2OTU0ZTA0NjZkZGE5NTkzNzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtNDgsNyAr
NDgsNiBAQCBNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5n
JiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAs
IG1fbmFtZShuYW1lKQogICAgICwgbV9yZWFkeVN0YXRlKE5ldykKLSAgICAsIG1fc3RyZWFtKDAp
CiAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiAgICAgLCBtX3Jl
YWRvbmx5KGZhbHNlKQpAQCAtNjMsNyArNjIsNiBAQCBNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFT
dHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmCiB2
b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZXNldCgpCiB7CiAgICAgbV9yZWFkeVN0YXRlID0gTmV3
OwotICAgIG1fc3RyZWFtID0gMDsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIG1fbXV0ZWQg
PSBmYWxzZTsKICAgICBtX3JlYWRvbmx5ID0gZmFsc2U7CkBAIC05MiwxMyArOTAsNiBAQCB2b2lk
IE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcihNZWRpYVN0cmVhbVNvdXJjZTo6T2Jz
ZXJ2ZXIqIG9ic2VydmVyKQogICAgICAgICBtX29ic2VydmVycy5yZW1vdmUocG9zKTsKIH0KIAot
dm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0U3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciog
c3RyZWFtKQotewotICAgIC8vIEZJWE1FOiBBIHNvdXJjZSBzaG91bGQgbm90IG5lZWQgdG8ga25v
dyBhYm91dCBpdHMgc3RyZWFtKHMpLiBUaGlzIHdpbGwgYmUgZml4ZWQgYXMgYSBwYXJ0IG9mCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAotICAg
IG1fc3RyZWFtID0gc3RyZWFtOwotfQotCiBNZWRpYUNvbnN0cmFpbnRzKiBNZWRpYVN0cmVhbVNv
dXJjZTo6Y29uc3RyYWludHMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXaGlsZSB0aGlzIHJl
dHVybnMgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Tb3VyY2UuaAppbmRleCBkNjllMTQ5NzJkYzNlYWExODc5Zjk1MjhiYmU3Y2Ew
ZTQ1NDA3MWM0Li4wYzU1YTRhMmVjMDQ0MDFkZjJkNDcxNTBiYTU0YjVkN2E5M2JhN2E2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmgKQEAgLTEwMCw5ICsxMDAsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3Ao
KTsKIAotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJlYW07IH0KLSAgICB2b2lkIHNldFN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsK
LSAgICAKIHByb3RlY3RlZDoKICAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlk
LCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0xMTMsNyArMTEwLDYgQEAgcHJpdmF0
ZToKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBt
X29ic2VydmVyczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsK
LSAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1fc3RyZWFtOwogICAgIE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzIG1fc3RhdGVzOwogCiAgICAgYm9vbCBtX2VuYWJsZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214121</attachid>
            <date>2013-10-13 19:27:54 -0700</date>
            <delta_ts>2013-10-24 13:17:43 -0700</delta_ts>
            <desc>Fixing last patch (no tests yet)</desc>
            <filename>bug-121954-20131013232752.patch</filename>
            <type>text/plain</type>
            <size>15937</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNlNTA1ZWUzNzg1NTc2
NmE3OThlMWY2MTEyNWFlODQzOWIyODk4Ni4uYTM5YjdlZTI5YjRlYTAwMGI0ZTM1ZjY1NzAzYmI4
OGY5YzJlYTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEwLTEzICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbSBBUEldIGFsbG93IGEgc3RyZWFtIHNvdXJjZSB0byBiZSBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6aGF2ZVRyYWNrV2l0aFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bTo6YWRkUmVtb3RlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1v
dmVSZW1vdGVTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnNldEVuZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZXNldCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKwogMjAxMy0xMC0xMyAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1lcmdlIE5PREVfVFlQRV9DQVNU
UyBhbmQgRUxFTUVOVF9UWVBFX0NBU1RTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDk0MjQ5OTkyNzcxNDU3MjkwZGY2ODIy
MDg3YzY2YzMxZGZmYzI2NjkuLjY3Y2U4MjU1MDVhNjA0MDRiMWQ1MDE0Yjg0YTg0ZGM3OGExZDI1
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwCkBAIC0xMTgsMTUgKzExOCwyMiBAQCBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbQog
ICAgIEFTU0VSVChtX2Rlc2NyaXB0b3IpOwogICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KHRo
aXMpOwogCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrOwogICAgIHNpemVfdCBu
dW1iZXJPZkF1ZGlvVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJPZkF1ZGlvU3RyZWFtcygp
OwogICAgIG1fYXVkaW9UcmFja3MucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQXVkaW9UcmFja3Mp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZBdWRpb1RyYWNrczsgaSsrKQot
ICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoY29u
dGV4dCwgbV9kZXNjcmlwdG9yLT5hdWRpb1N0cmVhbXMoaSkpKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFja3M7IGkrKykgeworICAgICAgICB0cmFjayA9IEF1
ZGlvU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3ItPmF1ZGlvU3RyZWFt
cyhpKSk7CisgICAgICAgIHRyYWNrLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgbV9hdWRp
b1RyYWNrcy5hcHBlbmQodHJhY2spOworICAgIH0KIAogICAgIHNpemVfdCBudW1iZXJPZlZpZGVv
VHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJPZlZpZGVvU3RyZWFtcygpOwogICAgIG1fdmlk
ZW9UcmFja3MucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mVmlkZW9UcmFja3MpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZWaWRlb1RyYWNrczsgaSsrKQotICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZChWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNj
cmlwdG9yLT52aWRlb1N0cmVhbXMoaSkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bWJlck9mVmlkZW9UcmFja3M7IGkrKykgeworICAgICAgICB0cmFjayA9IFZpZGVvU3RyZWFtVHJh
Y2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3ItPnZpZGVvU3RyZWFtcyhpKSk7CisgICAg
ICAgIHRyYWNrLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBl
bmQodHJhY2spOworICAgIH0KIH0KIAogTWVkaWFTdHJlYW06On5NZWRpYVN0cmVhbSgpCkBAIC0x
ODUsNiArMTkyLDkgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgbV92aWRlb1Ry
YWNrcy5hcHBlbmQodHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICB0cmFjay0+
YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3VyY2UodHJhY2stPnNv
dXJjZSgpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMTgsMTIg
KzIyOCwzNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25DbwogICAgIGlmIChwb3MgPT0gbm90Rm91
bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlU291cmNlKHRy
YWNrLT5zb3VyY2UoKSk7CisgICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRyYWNrcyB1c2luZyB0
aGUgc2FtZSBzb3VyY2UgaW4gdGhlIHNhbWUgTWVkaWFTdHJlYW0sCisgICAgLy8gbGlrZSB3aGVu
IE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5zdGFuY2UuCisgICAg
Ly8gU3BlYyBzYXlzIHRoYXQgYSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28gd2UgbXVzdCBhc3N1
cmUgdGhhdCB0aGVyZSBpcyBubworICAgIC8vIG90aGVyIHRyYWNrIHVzaW5nIGl0LgorICAgIGlm
ICghaGF2ZVRyYWNrV2l0aFNvdXJjZSh0cmFjay0+c291cmNlKCkpKQorICAgICAgICBtX2Rlc2Ny
aXB0b3ItPnJlbW92ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOwogCisgICAgdHJhY2stPnJlbW92
ZU9ic2VydmVyKHRoaXMpOwogICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXplKCkgJiYgIW1fdmlk
ZW9UcmFja3Muc2l6ZSgpKQogICAgICAgICBzZXRFbmRlZCgpOwogfQogCitib29sIE1lZGlhU3Ry
ZWFtOjpoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNv
dXJjZSkKK3sKKyAgICBpZiAoc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkF1
ZGlvKSB7CisgICAgICAgIGZvciAoY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiB0cmFj
ayA6IG1fYXVkaW9UcmFja3MpIHsKKyAgICAgICAgICAgIGlmICh0cmFjay0+c291cmNlKCkgPT0g
c291cmNlLmdldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFj
ay0+c291cmNlKCkgPT0gc291cmNlLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0
cmVhbTo6Z2V0VHJhY2tCeUlkKFN0cmluZyBpZCkKIHsKICAgICBmb3IgKE1lZGlhU3RyZWFtVHJh
Y2tWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSBtX2F1ZGlvVHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0g
bV9hdWRpb1RyYWNrcy5lbmQoKTsgKytpdGVyKSB7CkBAIC0yNzEsOCArMzA1LDYgQEAgdm9pZCBN
ZWRpYVN0cmVhbTo6YWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiAg
ICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNvdXJjZS0+c2V0U3RyZWFt
KGRlc2NyaXB0b3IoKSk7Ci0KICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2s7CiAg
ICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6
OkF1ZGlvOgpAQCAtMjg0LDYgKzMxNiw3IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFkZFJlbW90ZVNv
dXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogICAgICAgICBtX3ZpZGVvVHJhY2tzLmFw
cGVuZCh0cmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICB0cmFjay0+YWRkT2JzZXJ2
ZXIodGhpcyk7CiAgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3VyY2Uoc291cmNlKTsKIAogICAgIHNj
aGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwpAQCAtMzA0LDIxICsz
MzcsMjMgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKE1lZGlhU3RyZWFt
U291cmNlKiBzb3VyY2UpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHNpemVfdCBpbmRl
eCA9IG5vdEZvdW5kOworICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgcmVtb3ZlZFRyYWNrczsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrcy0+c2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKCgqdHJhY2tzKVtpXS0+c291cmNlKCkgPT0gc291cmNlKSB7Ci0gICAgICAgICAgICBp
bmRleCA9IGk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlbW92ZWRUcmFja3Mu
YXBwZW5kKCgqdHJhY2tzKVtpXSk7CisgICAgICAgICAgICB0cmFja3MtPnJlbW92ZShpKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVy
bjsKIAogICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlU291cmNlKHNvdXJjZSk7CiAKLSAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSAoKnRyYWNrcylbaW5kZXhdOwotICAgIHRyYWNr
cy0+cmVtb3ZlKGluZGV4KTsKLSAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1U
cmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBm
YWxzZSwgdHJhY2spKTsKKyAgICBpZiAocmVtb3ZlZFRyYWNrcy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiB0cmFj
ayA6IHJlbW92ZWRUcmFja3MpIHsKKyAgICAgICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKHRoaXMp
OworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2sp
KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBiNDI4Yzc3ZTM1M2FlM2Y1Y2QyY2ZlZjI5N2Yw
NGRkMWY4ZDhhZmI1Li4wYWE2MTMzZDVhZGMzMGM0MjIzM2U5YWMwYTdhOTEzN2ZiMjc4N2Q4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5o
CkBAIC05OCw2ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNv
dXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERSBGSU5BTDsK
IAorICAgIGJvb2wgaGF2ZVRyYWNrV2l0aFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291
cmNlPik7CisKICAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
Pik7CiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFTdHJlYW0+
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDAxYmJjZGMyY2MwZDI4M2QyZWMwYmI4Zjk0NDdlNGUw
YjFlNjQ0ODIuLjkzYWYyM2MwNDFlOTQ0NThhNjI3ZWU1YjFiZWRhOTYxZTc5ZmE4ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcApAQCAtMjg3LDYgKzI4NywxOCBAQCBib29sIE1lZGlhU3RyZWFtVHJhY2s6OmVu
ZGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9zdG9wcGVkIHx8IChtX3NvdXJjZSAmJiBtX3NvdXJj
ZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCk7CiB9CiAKK3ZvaWQg
TWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIq
IG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIoTWVkaWFTdHJlYW1UcmFjazo6T2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIHNpemVfdCBwb3MgPSBtX29ic2VydmVycy5maW5kKG9i
c2VydmVyKTsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICBtX29ic2VydmVycy5y
ZW1vdmUocG9zKTsKK30KKwogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VTdGF0ZUNoYW5n
ZWQoKQogewogICAgIGlmIChtX3N0b3BwZWQpCkBAIC0zNDQsMTIgKzM1Niw4IEBAIGJvb2wgTWVk
aWFTdHJlYW1UcmFjazo6c3RvcHBlZCgpCiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tE
aWRFbmQoKQogewotICAgIC8vIEZJWE1FOiB0aGlzIGlzIHdyb25nLCB0aGUgdHJhY2sgc2hvdWxk
bid0IGhhdmUgdG8gY2FsbCB0aGUgZGVzY3JpcHRvcidzIGNsaWVudCEKLSAgICBNZWRpYVN0cmVh
bURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCA9IG1fc291cmNlID8gbV9zb3VyY2UtPnN0cmVhbSgp
LT5jbGllbnQoKSA6IDA7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBjbGllbnQtPnRyYWNrRGlkRW5kKCk7CisgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6
aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7
ICsraSkKKyAgICAgICAgKCppKS0+dHJhY2tEaWRFbmQoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVh
bVRyYWNrOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggYjVkYWJkMDA4OTdiNGY5ODY0MGNiNTlhZTJh
ZmMwY2Y1MDUzYWEwZi4uMTBmZDI5YzFlYTM1ZGFhYTA2ZmQyMGE2ZWYyYzI5NTNlOGFlMzVhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmgKQEAgLTQ5LDYgKzQ5LDExIEBAIGNsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50
czsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhU3RyZWFtU291
cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB2b2lkIHRyYWNrRGlkRW5kKCkgPSAwOworICAgIH07CisKICAg
ICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYga2luZCgpIGNvbnN0ID0gMDsKQEAgLTg1LDYgKzkwLDkgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBlbmRlZCgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciop
OworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKKwogICAgIC8vIEV2ZW50VGFy
Z2V0CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2tFdmVudFRh
cmdldEludGVyZmFjZVR5cGU7IH0KICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtMTI0LDYgKzEz
Miw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9pZDsKICAgICBNdXRleCBtX211
dGV4OwogCisgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisKICAgICBib29sIG1f
c3RvcHBlZDsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fbXV0ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmNwcAppbmRleCBjMmY4ZDE1M2E3MjYxYWUyNDYxMDQzMDU4YThiMjAxMTgw
MjVlZGZkLi5kYzRiMThiMjI1ZTFkNjU1OTFlZGZlY2VhNWM0ZTc5YzhiMjIyNmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2Ny
aXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtRGVzY3JpcHRvci5jcHAKQEAgLTQ4LDE1ICs0OCw2IEBAIFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1EZXNjcmlwdG9yPiBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjb25zdCBNZWRp
YVN0cmVhCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcywgZmxh
ZyA9PSBJc0VuZGVkKSk7CiB9CiAKLU1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFt
RGVzY3JpcHRvcigpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F1ZGlvU3RyZWFt
U291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXNbaV0tPnNl
dFN0cmVhbSgwKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmlkZW9TdHJl
YW1Tb3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlc1tpXS0+
c2V0U3RyZWFtKDApOwotfQotCiB2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkU291cmNl
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNv
dXJjZS0+dHlwZSgpKSB7CkBAIC04OCw4ICs3OSw2IEBAIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjpyZW1vdmVTb3VyY2UoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlKQog
ICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5yZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQotCi0gICAgc291cmNlLT5zZXRTdHJlYW0oMCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOjphZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkK
QEAgLTExNCwyNiArMTAzLDE5IEBAIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlhU3RyZWFtCiAgICAgLCBtX2Vu
ZGVkKGVuZGVkKQogewogICAgIEFTU0VSVChtX2lkLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykgewotICAgICAgICBhdWRpb1Nv
dXJjZXNbaV0tPnNldFN0cmVhbSh0aGlzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1
ZGlvU291cmNlcy5zaXplKCk7IGkrKykKICAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXMuYXBw
ZW5kKGF1ZGlvU291cmNlc1tpXSk7Ci0gICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgdmlkZW9Tb3VyY2VzW2ldLT5z
ZXRTdHJlYW0odGhpcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMu
c2l6ZSgpOyBpKyspCiAgICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2VzLmFwcGVuZCh2aWRlb1Nv
dXJjZXNbaV0pOwotICAgIH0KIH0KIAogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnNldEVu
ZGVkKCkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zdHJlYW1EaWRF
bmQoKTsKKwogICAgIG1fZW5kZWQgPSB0cnVlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fYXVkaW9TdHJlYW1T
b3VyY2VzW2ldLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykK
LSAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0tPnNldFJlYWR5U3RhdGUoTWVkaWFTdHJl
YW1Tb3VyY2U6OkVuZGVkKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURl
c2NyaXB0b3IuaAppbmRleCBiYjdmZDBmYjBiN2NlOTEzYWVjYmM0ZGE0MWZjYjcwMDkxM2JiZTQ2
Li4zZDgwYjM3OTRmMmRkNDc0MmY5Yzg2YjcxYTg5YTMzZGM1MzdmNjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURl
c2NyaXB0b3IuaApAQCAtMzUsMTYgKzM1LDE2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1U
cmFjay5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRv
ckNsaWVudCB7CitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQgOiBwdWJsaWMgTWVk
aWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvckNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHRyYWNrRGlkRW5k
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRFbmQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgPSAwOwpAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9T
b3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzLCBFbmRl
ZEF0Q3JlYXRpb25GbGFnKTsKIAotICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRGVzY3JpcHRvcigp
OworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpIHsgfQogCiAgICAgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsg
fQogICAgIHZvaWQgc2V0Q2xpZW50KE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50
KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggNmRiZGI5N2My
ODk1MmVlMzkxNGJlZWE3OGE3YmRmNDUxODRiM2IzOC4uMmQxZDE3YzE1NmNkNWY3ZTliOTE2OTU0
ZTA0NjZkZGE5NTkzNzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtNDgsNyArNDgsNiBAQCBN
ZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fbmFtZShu
YW1lKQogICAgICwgbV9yZWFkeVN0YXRlKE5ldykKLSAgICAsIG1fc3RyZWFtKDApCiAgICAgLCBt
X2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRvbmx5KGZh
bHNlKQpAQCAtNjMsNyArNjIsNiBAQCBNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmCiB2b2lkIE1lZGlh
U3RyZWFtU291cmNlOjpyZXNldCgpCiB7CiAgICAgbV9yZWFkeVN0YXRlID0gTmV3OwotICAgIG1f
c3RyZWFtID0gMDsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIG1fbXV0ZWQgPSBmYWxzZTsK
ICAgICBtX3JlYWRvbmx5ID0gZmFsc2U7CkBAIC05MiwxMyArOTAsNiBAQCB2b2lkIE1lZGlhU3Ry
ZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcihNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgICAgICBtX29ic2VydmVycy5yZW1vdmUocG9zKTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbVNvdXJjZTo6c2V0U3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQot
ewotICAgIC8vIEZJWE1FOiBBIHNvdXJjZSBzaG91bGQgbm90IG5lZWQgdG8ga25vdyBhYm91dCBp
dHMgc3RyZWFtKHMpLiBUaGlzIHdpbGwgYmUgZml4ZWQgYXMgYSBwYXJ0IG9mCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAotICAgIG1fc3RyZWFt
ID0gc3RyZWFtOwotfQotCiBNZWRpYUNvbnN0cmFpbnRzKiBNZWRpYVN0cmVhbVNvdXJjZTo6Y29u
c3RyYWludHMoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXaGlsZSB0aGlzIHJldHVybnMgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Tb3VyY2UuaAppbmRleCBkNjllMTQ5NzJkYzNlYWExODc5Zjk1MjhiYmU3Y2EwZTQ1NDA3MWM0
Li4wYzU1YTRhMmVjMDQ0MDFkZjJkNDcxNTBiYTU0YjVkN2E5M2JhN2E2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
LmgKQEAgLTEwMCw5ICsxMDAsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3AoKTsKIAotICAg
IE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW07
IH0KLSAgICB2b2lkIHNldFN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKLSAgICAKIHBy
b3RlY3RlZDoKICAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0xMTMsNyArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVy
czsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAgICBNZWRp
YVN0cmVhbURlc2NyaXB0b3IqIG1fc3RyZWFtOwogICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
IG1fc3RhdGVzOwogCiAgICAgYm9vbCBtX2VuYWJsZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215099</attachid>
            <date>2013-10-24 13:17:48 -0700</date>
            <delta_ts>2013-10-24 14:42:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121954-20131024171747.patch</filename>
            <type>text/plain</type>
            <size>17492</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVhNDM0YmQ0NmExY2Iw
ZDRhOGRlOTZhODkwMDQ4NTAwNGMzYWQ5Yy4uYjA5NDcwNWY1MTRmMzA3NDllMWM3NzIzNGI1YzEy
N2NkNzY2NjQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTEwLTI0ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbSBBUEldIGFsbG93IGEgc3RyZWFtIHNvdXJjZSB0byBiZSBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdywg
dGhlIE1lZGlhU3RyZWFtU291cmNlIGRvbid0IGtub3cgYWJvdXQgdGhlIE1lZGlhU3RyZWFtIHRo
YXQgb3ducyBpdCwKKyAgICAgICAgc2luY2UgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgTWVk
aWFTdHJlYW0gdGhhdCBoYXMgaXQgYXMgc291cmNlIGZvciBzb21lIHRyYWNrLgorICAgICAgICBN
ZWRpYVN0cmVhbVRyYWNrIGNsYXNzZXMgbm93IGhhdmUgb2JzZXJ2ZXJzIHJlZ2lzdGVyZWQsIGlu
IGNhc2UgdGhlcmUgYXJlIG1vcmUgdGhhbgorICAgICAgICBvbmUgTWVkaWFTdHJlYW0gb3duaW5n
IHRoYXQgdHJhY2sKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOiBBZGRpbmcgdGhl
IE1lZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIGZvciBlYWNoIHRyYWNrIGl0IG93bnMuCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6IE5vdyBhZGRpbmcgdGhlIE1l
ZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIHRoZSBuZXcgYWRkZWQgdHJhY2sKKyAgICAgICAgYW5k
IGFkZGluZyB0aGUgc291cmNlIHRvIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6IEluc3RlYWQgb2YgcmVtb3Zp
bmcgdGhlIHNvdXJjZSByaWdodCBhd2F5LCB3ZSBmaXJzdCBjaGVjayBpZgorICAgICAgICB0aGVy
ZSBpc24ndCBhbnkgb3RoZXIgdHJhY2sgdXNpbmcgdGhhdCBzb3VyY2UsIGlmIG5vdCB3ZSByZW1v
dmUgdGhlIHNvdXJjZS4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmhhdmVUcmFj
a1dpdGhTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFJlbW90ZVNv
dXJjZSk6IE1lZGlhU3RyZWFtU291cmNlIGhhcyBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTWVk
aWFTdHJlYW0KKyAgICAgICAgdGhhdCB1c2VzIGl0LCBzbyBub3cgd2UgZG9uJ3Qgc2V0IHRoZSBz
dHJlYW0gaW4gdGhlIHNvdXJjZSBhbnltb3JlLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKTogVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbiB0cmFj
ayB1c2luZyB0aGUgc291cmNlLiBTbyB3ZQorICAgICAgICBnZXQgZWFjaCB0cmFjayB0aGF0IGlz
IHVzaW5nIHRoZSBzb3VyY2UgYW5kIHRoZW4gcmVtb3ZlIGl0IGFuZCBmaXJlIHRoZSBlbmRlZCBl
dmVudC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQpOiBEb2VzIG5vdCBnZXQgdGhlIGNsaWVu
dCBmcm9tIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IsIGl0IG5vdworICAgICAgICBub3RpZnkg
ZWFjaCBvZiBpdHMgb2JzZXJ2ZXJzIHRoYXQgdGhlIHRyYWNrIGVuZGVkLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6IEFkZGluZyBPYnNlcnZlciBj
bGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHA6IERlc3RydWN0b3Igbm93IGRvZXMgbm90aGluZy4gUHJldmlvdXNseSBpdCB3YXMg
c2V0dGluZworICAgICAgICBlYWNoIE1lZGlhU3RyZWFtU291cmNlJ3MgZGVzY3JpcHRvciB0byBu
dWxsLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNv
dXJjZSk6IE5vdCBzZXR0aW5nIHRoZSBzdHJlYW0gaW4gc291cmNlIGFueW1vcmUuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9y
KTogRGl0dG8uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c2V0
RW5kZWQpOiBOb3Qgc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIHNvdXJjZSB0byBFbmRlZAorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVhbURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
LmNwcDogUmVtb3ZpbmcgcmVmZXJlbmNlcyB0byBNZWRpYVN0cmVhbSBvYmplY3QKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmg6CisKIDIwMTMtMTAtMjQgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXBzIGJldHdlZW4g
dW5kZXJsaW5lcyBpbiBhZGphY2VudCB1bmRlcmxpbmVkIHRleHQgcnVucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCA3ZTdl
OTM4Y2ZlZjJhN2RhOGNjZGZjMjE1NGZkZjBlMWNkYWRhYTlkLi5kNTc3YTJlYzExNTBmYzQyNTRi
YTUwMmJkNWU3ZDhiNjc3YWU0YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMTE4LDE1ICsxMTgsMjIgQEAgTWVkaWFT
dHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW0KICAgICBBU1NFUlQobV9kZXNjcmlwdG9yKTsKICAgICBtX2Rlc2Ny
aXB0b3ItPnNldENsaWVudCh0aGlzKTsKIAorICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjazsKICAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVt
YmVyT2ZBdWRpb1N0cmVhbXMoKTsKICAgICBtX2F1ZGlvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShu
dW1iZXJPZkF1ZGlvVHJhY2tzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9m
QXVkaW9UcmFja3M7IGkrKykKLSAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoQXVkaW9TdHJl
YW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvci0+YXVkaW9TdHJlYW1zKGkpKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspIHsK
KyAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNj
cmlwdG9yLT5hdWRpb1N0cmVhbXMoaSkpOworICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhp
cyk7CisgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrLnJlbGVhc2UoKSk7CisgICAg
fQogCiAgICAgc2l6ZV90IG51bWJlck9mVmlkZW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJl
ck9mVmlkZW9TdHJlYW1zKCk7CiAgICAgbV92aWRlb1RyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobnVt
YmVyT2ZWaWRlb1RyYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZp
ZGVvVHJhY2tzOyBpKyspCi0gICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKFZpZGVvU3RyZWFt
VHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3ItPnZpZGVvU3RyZWFtcyhpKSkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZWaWRlb1RyYWNrczsgaSsrKSB7Cisg
ICAgICAgIHRyYWNrID0gVmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3Jp
cHRvci0+dmlkZW9TdHJlYW1zKGkpKTsKKyAgICAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMp
OworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh0cmFjay5yZWxlYXNlKCkpOworICAgIH0K
IH0KIAogTWVkaWFTdHJlYW06On5NZWRpYVN0cmVhbSgpCkBAIC0xODUsNiArMTkyLDkgQEAgdm9p
ZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBU
cmFjaywgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2sp
OwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7
CisgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3VyY2UodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogdm9p
ZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBw
cnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMTgsMTIgKzIyOCwzNiBAQCB2b2lkIE1l
ZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRy
YWNrLCBFeGNlcHRpb25DbwogICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlU291cmNlKHRyYWNrLT5zb3VyY2UoKSk7Cisg
ICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRyYWNrcyB1c2luZyB0aGUgc2FtZSBzb3VyY2UgaW4g
dGhlIHNhbWUgTWVkaWFTdHJlYW0sCisgICAgLy8gbGlrZSB3aGVuIE1lZGlhU3RyZWFtVHJhY2s6
OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5zdGFuY2UuCisgICAgLy8gU3BlYyBzYXlzIHRoYXQg
YSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28gd2UgbXVzdCBhc3N1cmUgdGhhdCB0aGVyZSBpcyBu
bworICAgIC8vIG90aGVyIHRyYWNrIHVzaW5nIGl0LgorICAgIGlmICghaGF2ZVRyYWNrV2l0aFNv
dXJjZSh0cmFjay0+c291cmNlKCkpKQorICAgICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJj
ZSh0cmFjay0+c291cmNlKCkpOwogCisgICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKHRoaXMpOwog
ICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXplKCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6ZSgpKQog
ICAgICAgICBzZXRFbmRlZCgpOwogfQogCitib29sIE1lZGlhU3RyZWFtOjpoYXZlVHJhY2tXaXRo
U291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKK3sKKyAgICBpZiAo
c291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvKSB7CisgICAgICAgIGZv
ciAoY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiB0cmFjayA6IG1fYXVkaW9UcmFja3Mp
IHsKKyAgICAgICAgICAgIGlmICh0cmFjay0+c291cmNlKCkgPT0gc291cmNlLmdldCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYgdHJh
Y2sgOiBtX3ZpZGVvVHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFjay0+c291cmNlKCkgPT0gc291
cmNlLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlk
KFN0cmluZyBpZCkKIHsKICAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9y
IGl0ZXIgPSBtX2F1ZGlvVHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gbV9hdWRpb1RyYWNrcy5lbmQo
KTsgKytpdGVyKSB7CkBAIC0yNzEsOCArMzA1LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkUmVt
b3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiAgICAgaWYgKGVuZGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNvdXJjZS0+c2V0U3RyZWFtKGRlc2NyaXB0b3IoKSk7Ci0K
ICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2s7CiAgICAgc3dpdGNoIChzb3VyY2Ut
PnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvOgpAQCAtMjg0LDYg
KzMxNiw3IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNv
dXJjZSogc291cmNlKQogICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh0cmFjayk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CiAgICAgbV9k
ZXNjcmlwdG9yLT5hZGRTb3VyY2Uoc291cmNlKTsKIAogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVu
dChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVu
dCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwpAQCAtMzA0LDIxICszMzcsMjMgQEAgdm9pZCBNZWRp
YVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHNpemVfdCBpbmRleCA9IG5vdEZvdW5kOworICAg
IFZlY3RvcjxpbnQ+IHRyYWNrc1RvUmVtb3ZlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dHJhY2tzLT5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoKCp0cmFja3MpW2ldLT5zb3VyY2Uo
KSA9PSBzb3VyY2UpIHsKLSAgICAgICAgICAgIGluZGV4ID0gaTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9CisgICAgICAgIGlmICgoKnRyYWNrcylbaV0tPnNvdXJjZSgpID09IHNvdXJj
ZSkKKyAgICAgICAgICAgIHRyYWNrc1RvUmVtb3ZlLmFwcGVuZChpKTsKICAgICB9Ci0gICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47CiAKICAgICBtX2Rlc2NyaXB0b3It
PnJlbW92ZVNvdXJjZShzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRy
YWNrID0gKCp0cmFja3MpW2luZGV4XTsKLSAgICB0cmFja3MtPnJlbW92ZShpbmRleCk7Ci0gICAg
c2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7CisgICAgaWYg
KHRyYWNrc1RvUmVtb3ZlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChp
bnQgaSA6IHRyYWNrc1RvUmVtb3ZlKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiB0cmFjayA9ICgqdHJhY2tzKVtpXTsKKyAgICAgICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKHRo
aXMpOworICAgICAgICB0cmFja3MtPnJlbW92ZShpKTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRj
aEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0
cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrLnJlbGVhc2UoKSkpOworICAgIH0KIH0KIAog
dm9pZCBNZWRpYVN0cmVhbTo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5oCmluZGV4IGZjNDMzOTE2OTdjNjNhZmQ2NzZkMmIwYTY2ZDFjNzQ2MGQ0YTMyZTUuLjJi
Mjg3YjljNGVlYTQxOTRiYTA3ZDcwMmU0ODlhYWFmZGMyNDVmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKQEAgLTk4LDYgKzk4LDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFt
U291cmNlKikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVNv
dXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFIEZJTkFMOwogCisgICAgYm9vbCBoYXZl
VHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+KTsKKwogICAgIHZv
aWQgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIHNj
aGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbT4qKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5j
cHAKaW5kZXggZDFiYzM0YmRlNTBmNTQ0NjdmYzQzNzljZWViNTViYmMyZGNkNTBhMS4uYWEwZGU1
ZmEzNDVmYWNmMzhlMzI2ZmEyODJmNTBhMDNkYmUyYTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0y
OTYsNiArMjk2LDE4IEBAIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQoKSBjb25zdAogICAg
IHJldHVybiBtX3N0b3BwZWQgfHwgbV9yZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpF
bmRlZDsKIH0KIAordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphZGRPYnNlcnZlcihNZWRpYVN0cmVh
bVRyYWNrOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgbV9vYnNlcnZlcnMuYXBwZW5kKG9i
c2VydmVyKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdmVPYnNlcnZlcihNZWRp
YVN0cmVhbVRyYWNrOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgc2l6ZV90IHBvcyA9IG1f
b2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpOworICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisgICAg
ICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShwb3MpOworfQorCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6
OnNvdXJjZVN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKQEAgLTM0NywxMyAr
MzU5LDggQEAgYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wcGVkKCkKIAogdm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjp0cmFja0RpZEVuZCgpCiB7Ci0gICAgLy8gRklYTUU6IHRoaXMgaXMgd3Jvbmcs
IHRoZSB0cmFjayBzaG91bGRuJ3QgaGF2ZSB0byBjYWxsIHRoZSBkZXNjcmlwdG9yJ3MgY2xpZW50
IQotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50ID0gbV9zb3VyY2UgPyBt
X3NvdXJjZS0+c3RyZWFtKCktPmNsaWVudCgpIDogMDsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGNsaWVudC0+dHJhY2tEaWRFbmQoKTsKLSAgICBzZXRTdGF0
ZShNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQpOworICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46
Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgp
OyArK2kpCisgICAgICAgICgqaSktPnRyYWNrRGlkRW5kKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJl
YW1UcmFjazo6c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGI1MGI5ZDQ5NjdhZWI5MmNlNjBlZDYyOGUy
NDA3MGU5Y2Y1YjIwYzAuLmQ3ZWEyN2IyZGQ2OGQ3MGM4ZDA5MWJlMDE2YTc0OTgwODI5NmRkODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5oCkBAIC00OSw2ICs0OSwxMSBAQCBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWlu
dHM7CiAKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0
cmVhbVRyYWNrPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYVN0cmVhbVNv
dXJjZTo6T2JzZXJ2ZXIgewogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpID0gMDsKKyAgICB9OworCiAg
ICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFjaygpOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGtpbmQoKSBjb25zdCA9IDA7CkBAIC04Niw2ICs5MSw5IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKIAorICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIq
KTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CisKICAgICAvLyBFdmVudFRh
cmdldAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYVN0cmVhbVRyYWNrRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTEyNSw2ICsx
MzMsOCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgU3RyaW5nIG1faWQ7CiAgICAgTXV0ZXggbV9t
dXRleDsKIAorICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworCiAgICAgYm9vbCBt
X3N0b3BwZWQ7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5jcHAKaW5kZXggYzJmOGQxNTNhNzI2MWFlMjQ2MTA0MzA1OGE4YjIwMTE4
MDI1ZWRmZC4uZWM2MzNjOGI0Y2VjMGI3NTQ5MjQxNWE5ZWZmZGVlNTc0OTViNDA0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbURlc2NyaXB0b3IuY3BwCkBAIC00OCwxNSArNDgsNiBAQCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY29uc3QgTWVk
aWFTdHJlYQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMsIGZs
YWcgPT0gSXNFbmRlZCkpOwogfQogCi1NZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVh
bURlc2NyaXB0b3IoKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdWRpb1N0cmVh
bVNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2ldLT5z
ZXRTdHJlYW0oMCk7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3Ry
ZWFtU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0t
PnNldFN0cmVhbSgwKTsKLX0KLQogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFNvdXJj
ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChz
b3VyY2UtPnR5cGUoKSkgewpAQCAtODgsOCArNzksNiBAQCB2b2lkIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcjo6cmVtb3ZlU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkK
ICAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXMucmVtb3ZlKHBvcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLQotICAgIHNvdXJjZS0+c2V0U3RyZWFtKDApOwogfQogCiB2b2lkIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcjo6YWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2Up
CkBAIC0xMTQsMjYgKzEwMywxOSBAQCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6Ok1lZGlhU3RyZWFt
RGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVhbQogICAgICwgbV9l
bmRlZChlbmRlZCkKIHsKICAgICBBU1NFUlQobV9pZC5sZW5ndGgoKSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgYXVkaW9T
b3VyY2VzW2ldLT5zZXRTdHJlYW0odGhpcyk7Ci0gICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2Vz
LmFwcGVuZChhdWRpb1NvdXJjZXNbaV0pOwotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8gc291
cmNlIDogYXVkaW9Tb3VyY2VzKQorICAgICAgICBtX2F1ZGlvU3RyZWFtU291cmNlcy5hcHBlbmQo
c291cmNlKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIHZpZGVvU291cmNlc1tpXS0+c2V0U3RyZWFtKHRoaXMpOwotICAg
ICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2VzW2ldKTsKLSAgICB9
CisgICAgZm9yIChjb25zdCBhdXRvIHNvdXJjZSA6IHZpZGVvU291cmNlcykKKyAgICAgICAgbV92
aWRlb1N0cmVhbVNvdXJjZXMuYXBwZW5kKHNvdXJjZSk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpzZXRFbmRlZCgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2Ns
aWVudC0+c3RyZWFtRGlkRW5kKCk7CisKICAgICBtX2VuZGVkID0gdHJ1ZTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAg
ICBtX2F1ZGlvU3RyZWFtU291cmNlc1tpXS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJj
ZTo6RW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92aWRlb1N0cmVhbVNvdXJj
ZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2VzW2ldLT5zZXRSZWFk
eVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKaW5kZXggNDUyODRhYmVjMjYxZGFjYmEyNzhhMjU0
NTgxNGQxODQ3NWQwNzYwOC4uOTM4OTYxYmMzYjFhNzRiZTkxNDJhNWY2ZTczZmU0ZjE0ZTIyMmIy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTM1LDE2ICszNSwxNiBAQAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRp
YVN0cmVhbURlc2NyaXB0b3JDbGllbnQgeworY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xp
ZW50IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCB0cmFja0RpZEVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2Uq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNv
dXJjZSopID0gMDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZp
ZGVvU291cmNlcywgRW5kZWRBdENyZWF0aW9uRmxhZyk7CiAKLSAgICB2aXJ0dWFsIH5NZWRpYVN0
cmVhbURlc2NyaXB0b3IoKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKSB7
IH0KIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChNZWRpYVN0cmVhbURlc2NyaXB0
b3JDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
CmluZGV4IDZkYmRiOTdjMjg5NTJlZTM5MTRiZWVhNzhhN2JkZjQ1MTg0YjNiMzguLjJkMWQxN2Mx
NTZjZDVmN2U5YjkxNjk1NGUwNDY2ZGRhOTU5MzcyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAg
LTQ4LDcgKzQ4LDYgQEAgTWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKGNvbnN0
IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJgogICAgICwgbV90eXBlKHR5cGUp
CiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fcmVhZHlTdGF0ZShOZXcpCi0gICAgLCBtX3N0
cmVhbSgwKQogICAgICwgbV9lbmFibGVkKHRydWUpCiAgICAgLCBtX211dGVkKGZhbHNlKQogICAg
ICwgbV9yZWFkb25seShmYWxzZSkKQEAgLTYzLDcgKzYyLDYgQEAgTWVkaWFTdHJlYW1Tb3VyY2U6
Ok1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJgogdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQoKQogewogICAgIG1fcmVhZHlTdGF0
ZSA9IE5ldzsKLSAgICBtX3N0cmVhbSA9IDA7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICBt
X211dGVkID0gZmFsc2U7CiAgICAgbV9yZWFkb25seSA9IGZhbHNlOwpAQCAtOTIsMTMgKzkwLDYg
QEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3Vy
Y2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKICAgICAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7
CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFN0cmVhbShNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqIHN0cmVhbSkKLXsKLSAgICAvLyBGSVhNRTogQSBzb3VyY2Ugc2hvdWxkIG5vdCBuZWVk
IHRvIGtub3cgYWJvdXQgaXRzIHN0cmVhbShzKS4gVGhpcyB3aWxsIGJlIGZpeGVkIGFzIGEgcGFy
dCBvZgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5
NTQKLSAgICBtX3N0cmVhbSA9IHN0cmVhbTsKLX0KLQogTWVkaWFDb25zdHJhaW50cyogTWVkaWFT
dHJlYW1Tb3VyY2U6OmNvbnN0cmFpbnRzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hpbGUg
dGhpcyByZXR1cm5zIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggMjA1NjQxOTk1OTNjY2Y4NDY0NWQwNGY2
ZGEyYjcwOTBiNzEzZmZhOS4uMWVkM2ZkYzdkYTE1MDU5YmMyZGU3Nzg3ZDRhZTMxOTUxN2NjOTQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVNvdXJjZS5oCkBAIC0xMDAsOSArMTAwLDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdG9wKCk7CiAKLSAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyZWFtOyB9Ci0gICAgdm9pZCBzZXRTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKik7Ci0gICAgCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAtMTEzLDcgKzExMCw2IEBA
IHByaXZhdGU6CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgVmVjdG9yPE9ic2Vy
dmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3Ry
YWludHM7Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBtX3N0cmVhbTsKICAgICBNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlcyBtX3N0YXRlczsKIAogICAgIGJvb2wgbV9lbmFibGVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215105</attachid>
            <date>2013-10-24 14:42:05 -0700</date>
            <delta_ts>2013-10-24 14:44:23 -0700</delta_ts>
            <desc>Patch with requested changeds</desc>
            <filename>bug-121954-20131024184204.patch</filename>
            <type>text/plain</type>
            <size>17396</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY0OGRiMDJhY2ZjOGUz
Y2FmNDU5YWQyNjcyNzcyOTVhYTI1NzYwOS4uNDQ5MGRmY2E0MmY0YWE3YWYwYTk2ZTc2YTI1YTgy
OTc2YzgzMzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTEwLTI0ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbSBBUEldIGFsbG93IGEgc3RyZWFtIHNvdXJjZSB0byBiZSBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdywg
dGhlIE1lZGlhU3RyZWFtU291cmNlIGRvbid0IGtub3cgYWJvdXQgdGhlIE1lZGlhU3RyZWFtIHRo
YXQgb3ducyBpdCwKKyAgICAgICAgc2luY2UgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgTWVk
aWFTdHJlYW0gdGhhdCBoYXMgaXQgYXMgc291cmNlIGZvciBzb21lIHRyYWNrLgorICAgICAgICBN
ZWRpYVN0cmVhbVRyYWNrIGNsYXNzZXMgbm93IGhhdmUgb2JzZXJ2ZXJzIHJlZ2lzdGVyZWQsIGlu
IGNhc2UgdGhlcmUgYXJlIG1vcmUgdGhhbgorICAgICAgICBvbmUgTWVkaWFTdHJlYW0gb3duaW5n
IHRoYXQgdHJhY2sKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOiBBZGRpbmcgdGhl
IE1lZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIGZvciBlYWNoIHRyYWNrIGl0IG93bnMuCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6IE5vdyBhZGRpbmcgdGhlIE1l
ZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIHRoZSBuZXcgYWRkZWQgdHJhY2sKKyAgICAgICAgYW5k
IGFkZGluZyB0aGUgc291cmNlIHRvIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6IEluc3RlYWQgb2YgcmVtb3Zp
bmcgdGhlIHNvdXJjZSByaWdodCBhd2F5LCB3ZSBmaXJzdCBjaGVjayBpZgorICAgICAgICB0aGVy
ZSBpc24ndCBhbnkgb3RoZXIgdHJhY2sgdXNpbmcgdGhhdCBzb3VyY2UsIGlmIG5vdCB3ZSByZW1v
dmUgdGhlIHNvdXJjZS4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmhhdmVUcmFj
a1dpdGhTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFJlbW90ZVNv
dXJjZSk6IE1lZGlhU3RyZWFtU291cmNlIGhhcyBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTWVk
aWFTdHJlYW0KKyAgICAgICAgdGhhdCB1c2VzIGl0LCBzbyBub3cgd2UgZG9uJ3Qgc2V0IHRoZSBz
dHJlYW0gaW4gdGhlIHNvdXJjZSBhbnltb3JlLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKTogVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbiB0cmFj
ayB1c2luZyB0aGUgc291cmNlLiBTbyB3ZQorICAgICAgICBnZXQgZWFjaCB0cmFjayB0aGF0IGlz
IHVzaW5nIHRoZSBzb3VyY2UgYW5kIHRoZW4gcmVtb3ZlIGl0IGFuZCBmaXJlIHRoZSBlbmRlZCBl
dmVudC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQpOiBEb2VzIG5vdCBnZXQgdGhlIGNsaWVu
dCBmcm9tIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IsIGl0IG5vdworICAgICAgICBub3RpZnkg
ZWFjaCBvZiBpdHMgb2JzZXJ2ZXJzIHRoYXQgdGhlIHRyYWNrIGVuZGVkLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6IEFkZGluZyBPYnNlcnZlciBj
bGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHA6IERlc3RydWN0b3Igbm93IGRvZXMgbm90aGluZy4gUHJldmlvdXNseSBpdCB3YXMg
c2V0dGluZworICAgICAgICBlYWNoIE1lZGlhU3RyZWFtU291cmNlJ3MgZGVzY3JpcHRvciB0byBu
dWxsLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNv
dXJjZSk6IE5vdCBzZXR0aW5nIHRoZSBzdHJlYW0gaW4gc291cmNlIGFueW1vcmUuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9y
KTogRGl0dG8uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c2V0
RW5kZWQpOiBOb3Qgc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIHNvdXJjZSB0byBFbmRlZAorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVhbURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
LmNwcDogUmVtb3ZpbmcgcmVmZXJlbmNlcyB0byBNZWRpYVN0cmVhbSBvYmplY3QKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmg6CisKIDIwMTMtMTAtMjQgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggYnVpbGQgd2l0
aG91dCBDU1NfU0hBUEVTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCA3ZTdlOTM4Y2ZlZjJhN2RhOGNjZGZjMjE1NGZkZjBl
MWNkYWRhYTlkLi5iZjhiMzdhNTY4NDlkOWQzYzVhNjMyZWMyYzlhYjAzYmIwZTc1MWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cApAQCAtMTE4LDE1ICsxMTgsMjIgQEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0KICAgICBBU1NF
UlQobV9kZXNjcmlwdG9yKTsKICAgICBtX2Rlc2NyaXB0b3ItPnNldENsaWVudCh0aGlzKTsKIAor
ICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKICAgICBzaXplX3QgbnVtYmVyT2ZB
dWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZBdWRpb1N0cmVhbXMoKTsKICAgICBt
X2F1ZGlvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkF1ZGlvVHJhY2tzKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFja3M7IGkrKykKLSAgICAgICAg
bV9hdWRpb1RyYWNrcy5hcHBlbmQoQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1f
ZGVzY3JpcHRvci0+YXVkaW9TdHJlYW1zKGkpKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspIHsKKyAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVh
bVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLT5hdWRpb1N0cmVhbXMoaSkpOwor
ICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fYXVkaW9UcmFja3Mu
YXBwZW5kKHRyYWNrLnJlbGVhc2UoKSk7CisgICAgfQogCiAgICAgc2l6ZV90IG51bWJlck9mVmlk
ZW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mVmlkZW9TdHJlYW1zKCk7CiAgICAgbV92
aWRlb1RyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCi0gICAgICAgIG1f
dmlkZW9UcmFja3MuYXBwZW5kKFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rl
c2NyaXB0b3ItPnZpZGVvU3RyZWFtcyhpKSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZWaWRlb1RyYWNrczsgaSsrKSB7CisgICAgICAgIHRyYWNrID0gVmlkZW9TdHJlYW1U
cmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvci0+dmlkZW9TdHJlYW1zKGkpKTsKKyAg
ICAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFw
cGVuZCh0cmFjay5yZWxlYXNlKCkpOworICAgIH0KIH0KIAogTWVkaWFTdHJlYW06On5NZWRpYVN0
cmVhbSgpCkBAIC0xODUsNiArMTkyLDkgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYKICAgICAg
ICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9CisK
KyAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3Vy
Y2UodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0yMTgsMTIgKzIyOCwzNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25DbwogICAgIGlmIChw
b3MgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVzY3JpcHRvci0+cmVt
b3ZlU291cmNlKHRyYWNrLT5zb3VyY2UoKSk7CisgICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRy
YWNrcyB1c2luZyB0aGUgc2FtZSBzb3VyY2UgaW4gdGhlIHNhbWUgTWVkaWFTdHJlYW0sCisgICAg
Ly8gbGlrZSB3aGVuIE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5z
dGFuY2UuCisgICAgLy8gU3BlYyBzYXlzIHRoYXQgYSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28g
d2UgbXVzdCBhc3N1cmUgdGhhdCB0aGVyZSBpcyBubworICAgIC8vIG90aGVyIHRyYWNrIHVzaW5n
IGl0LgorICAgIGlmICghaGF2ZVRyYWNrV2l0aFNvdXJjZSh0cmFjay0+c291cmNlKCkpKQorICAg
ICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOwogCisgICAg
dHJhY2stPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXpl
KCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6ZSgpKQogICAgICAgICBzZXRFbmRlZCgpOwogfQogCiti
b29sIE1lZGlhU3RyZWFtOjpoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2U+IHNvdXJjZSkKK3sKKyAgICBpZiAoc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJl
YW1Tb3VyY2U6OkF1ZGlvKSB7CisgICAgICAgIGZvciAoY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+JiB0cmFjayA6IG1fYXVkaW9UcmFja3MpIHsKKyAgICAgICAgICAgIGlmICh0cmFjay0+
c291cmNlKCkgPT0gc291cmNlLmdldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKSB7CisgICAg
ICAgIGlmICh0cmFjay0+c291cmNlKCkgPT0gc291cmNlLmdldCgpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYVN0cmVhbVRy
YWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKFN0cmluZyBpZCkKIHsKICAgICBmb3IgKE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSBtX2F1ZGlvVHJhY2tzLmJlZ2lu
KCk7IGl0ZXIgIT0gbV9hdWRpb1RyYWNrcy5lbmQoKTsgKytpdGVyKSB7CkBAIC0yNzEsOCArMzA1
LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNl
KiBzb3VyY2UpCiAgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNvdXJj
ZS0+c2V0U3RyZWFtKGRlc2NyaXB0b3IoKSk7Ci0KICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gdHJhY2s7CiAgICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2U6OkF1ZGlvOgpAQCAtMjg0LDYgKzMxNiw3IEBAIHZvaWQgTWVkaWFTdHJlYW06
OmFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZCh0cmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICB0cmFj
ay0+YWRkT2JzZXJ2ZXIodGhpcyk7CiAgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3VyY2Uoc291cmNl
KTsKIAogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwpA
QCAtMzA0LDIxICszMzcsMjAgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNl
KE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IHNpemVfdCBpbmRleCA9IG5vdEZvdW5kOworICAgIFZlY3RvcjxpbnQ+IHRyYWNrc1RvUmVtb3Zl
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzLT5zaXplKCk7ICsraSkgewotICAg
ICAgICBpZiAoKCp0cmFja3MpW2ldLT5zb3VyY2UoKSA9PSBzb3VyY2UpIHsKLSAgICAgICAgICAg
IGluZGV4ID0gaTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIGlmICgo
KnRyYWNrcylbaV0tPnNvdXJjZSgpID09IHNvdXJjZSkKKyAgICAgICAgICAgIHRyYWNrc1RvUmVt
b3ZlLmFwcGVuZChpKTsKICAgICB9Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAg
ICByZXR1cm47CiAKICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJjZShzb3VyY2UpOwogCi0g
ICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gKCp0cmFja3MpW2luZGV4XTsKLSAg
ICB0cmFja3MtPnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlh
U3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBm
YWxzZSwgZmFsc2UsIHRyYWNrKSk7CisgICAgZm9yIChpbnQgaSA9IHRyYWNrc1RvUmVtb3ZlLnNp
emUoKSAtIDE7IGkgPj0gMCA7IGktLSkgeworICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gdHJhY2sgPSAoKnRyYWNrcylbdHJhY2tzVG9SZW1vdmVbaV1dOworICAgICAgICB0cmFjay0+
cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIHRyYWNrcy0+cmVtb3ZlKHRyYWNrc1RvUmVt
b3ZlW2ldKTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2Us
IHRyYWNrLnJlbGVhc2UoKSkpOworICAgIH0KIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6c2NoZWR1
bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IGZjNDMzOTE2OTdj
NjNhZmQ2NzZkMmIwYTY2ZDFjNzQ2MGQ0YTMyZTUuLjJiMjg3YjljNGVlYTQxOTRiYTA3ZDcwMmU0
ODlhYWFmZGMyNDVmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmgKQEAgLTk4LDYgKzk4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgYWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREUgRklOQUw7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSop
IE9WRVJSSURFIEZJTkFMOwogCisgICAgYm9vbCBoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1Tb3VyY2U+KTsKKwogICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZChU
aW1lcjxNZWRpYVN0cmVhbT4qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggZDFiYzM0YmRlNTBmNTQ0
NjdmYzQzNzljZWViNTViYmMyZGNkNTBhMS4uYWEwZGU1ZmEzNDVmYWNmMzhlMzI2ZmEyODJmNTBh
MDNkYmUyYTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0yOTYsNiArMjk2LDE4IEBAIGJvb2wgTWVk
aWFTdHJlYW1UcmFjazo6ZW5kZWQoKSBjb25zdAogICAgIHJldHVybiBtX3N0b3BwZWQgfHwgbV9y
ZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZDsKIH0KIAordm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjphZGRPYnNlcnZlcihNZWRpYVN0cmVhbVRyYWNrOjpPYnNlcnZlciogb2JzZXJ2
ZXIpCit7CisgICAgbV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbVRyYWNrOjpyZW1vdmVPYnNlcnZlcihNZWRpYVN0cmVhbVRyYWNrOjpPYnNlcnZlciog
b2JzZXJ2ZXIpCit7CisgICAgc2l6ZV90IHBvcyA9IG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIp
OworICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisgICAgICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShw
b3MpOworfQorCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZVN0YXRlQ2hhbmdlZCgpCiB7
CiAgICAgaWYgKG1fc3RvcHBlZCkKQEAgLTM0NywxMyArMzU5LDggQEAgYm9vbCBNZWRpYVN0cmVh
bVRyYWNrOjpzdG9wcGVkKCkKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0RpZEVuZCgp
CiB7Ci0gICAgLy8gRklYTUU6IHRoaXMgaXMgd3JvbmcsIHRoZSB0cmFjayBzaG91bGRuJ3QgaGF2
ZSB0byBjYWxsIHRoZSBkZXNjcmlwdG9yJ3MgY2xpZW50IQotICAgIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvckNsaWVudCogY2xpZW50ID0gbV9zb3VyY2UgPyBtX3NvdXJjZS0+c3RyZWFtKCktPmNsaWVu
dCgpIDogMDsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGNs
aWVudC0+dHJhY2tEaWRFbmQoKTsKLSAgICBzZXRTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6RW5k
ZWQpOworICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVy
cy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCisgICAgICAgICgqaSktPnRy
YWNrRGlkRW5kKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c3RvcCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
CmluZGV4IGI1MGI5ZDQ5NjdhZWI5MmNlNjBlZDYyOGUyNDA3MGU5Y2Y1YjIwYzAuLmQ3ZWEyN2Iy
ZGQ2OGQ3MGM4ZDA5MWJlMDE2YTc0OTgwODI5NmRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC00OSw2ICs0
OSwxMSBAQCBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKIGNsYXNzIE1lZGlhU3RyZWFt
VHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIgewogcHVibGlj
OgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB0cmFja0RpZEVuZCgpID0gMDsKKyAgICB9OworCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1U
cmFjaygpOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQoKSBjb25zdCA9
IDA7CkBAIC04Niw2ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsK
IAorICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU9ic2Vy
dmVyKE9ic2VydmVyKik7CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5B
TCB7IHJldHVybiBNZWRpYVN0cmVhbVRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAg
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTEyNSw2ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIG11
dGFibGUgU3RyaW5nIG1faWQ7CiAgICAgTXV0ZXggbV9tdXRleDsKIAorICAgIFZlY3RvcjxPYnNl
cnZlcio+IG1fb2JzZXJ2ZXJzOworCiAgICAgYm9vbCBtX3N0b3BwZWQ7CiAgICAgYm9vbCBtX2Vu
YWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKaW5kZXgg
YzJmOGQxNTNhNzI2MWFlMjQ2MTA0MzA1OGE4YjIwMTE4MDI1ZWRmZC4uZGM0YjE4YjIyNWUxZDY1
NTkxZWRmZWNlYTVjNGU3OWM4YjIyMjZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCkBA
IC00OCwxNSArNDgsNiBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYQogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMsIGZsYWcgPT0gSXNFbmRlZCkpOwogfQogCi1N
ZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKQotewotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyBpKyspCi0g
ICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2ldLT5zZXRTdHJlYW0oMCk7Ci0gICAgCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykK
LSAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0tPnNldFN0cmVhbSgwKTsKLX0KLQogdm9p
ZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlPiBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewpAQCAtODgs
OCArNzksNiBAQCB2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVtb3ZlU291cmNlKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKICAgICAgICAgbV92aWRlb1N0cmVhbVNv
dXJjZXMucmVtb3ZlKHBvcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIHNvdXJjZS0+
c2V0U3RyZWFtKDApOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkUmVtb3Rl
U291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCkBAIC0xMTQsMjYgKzEwMywxOSBAQCBN
ZWRpYVN0cmVhbURlc2NyaXB0b3I6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcm
IGlkLCBjb25zdCBNZWRpYVN0cmVhbQogICAgICwgbV9lbmRlZChlbmRlZCkKIHsKICAgICBBU1NF
UlQobV9pZC5sZW5ndGgoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJj
ZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgYXVkaW9Tb3VyY2VzW2ldLT5zZXRTdHJlYW0odGhp
cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyBpKysp
CiAgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZXNbaV0pOwot
ICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsg
aSsrKSB7Ci0gICAgICAgIHZpZGVvU291cmNlc1tpXS0+c2V0U3RyZWFtKHRoaXMpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQogICAgICAgICBt
X3ZpZGVvU3RyZWFtU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2VzW2ldKTsKLSAgICB9CiB9CiAK
IHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpzZXRFbmRlZCgpCiB7CiAgICAgaWYgKG1fY2xp
ZW50KQogICAgICAgICBtX2NsaWVudC0+c3RyZWFtRGlkRW5kKCk7CisKICAgICBtX2VuZGVkID0g
dHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnNp
emUoKTsgaSsrKQotICAgICAgICBtX2F1ZGlvU3RyZWFtU291cmNlc1tpXS0+c2V0UmVhZHlTdGF0
ZShNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV92aWRlb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fdmlkZW9TdHJlYW1T
b3VyY2VzW2ldLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKaW5kZXggNDUyODRh
YmVjMjYxZGFjYmEyNzhhMjU0NTgxNGQxODQ3NWQwNzYwOC4uOTM4OTYxYmMzYjFhNzRiZTkxNDJh
NWY2ZTczZmU0ZjE0ZTIyMmIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTM1LDE2ICsz
NSwxNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQgeworY2xhc3MgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yQ2xpZW50IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQoKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtRGlkRW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1vdGVTb3VyY2Uo
TWVkaWFTdHJlYW1Tb3VyY2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVNv
dXJjZShNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcywgRW5kZWRBdENyZWF0aW9uRmxhZyk7CiAKLSAg
ICB2aXJ0dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0
cmVhbURlc2NyaXB0b3IoKSB7IH0KIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCog
Y2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChN
ZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDZkYmRiOTdjMjg5NTJlZTM5MTRiZWVhNzhhN2JkZjQ1
MTg0YjNiMzguLjJkMWQxN2MxNTZjZDVmN2U5YjkxNjk1NGUwNDY2ZGRhOTU5MzcyMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAgTWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlh
U3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJgog
ICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fcmVhZHlTdGF0
ZShOZXcpCi0gICAgLCBtX3N0cmVhbSgwKQogICAgICwgbV9lbmFibGVkKHRydWUpCiAgICAgLCBt
X211dGVkKGZhbHNlKQogICAgICwgbV9yZWFkb25seShmYWxzZSkKQEAgLTYzLDcgKzYyLDYgQEAg
TWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJgogdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQoKQog
ewogICAgIG1fcmVhZHlTdGF0ZSA9IE5ldzsKLSAgICBtX3N0cmVhbSA9IDA7CiAgICAgbV9lbmFi
bGVkID0gdHJ1ZTsKICAgICBtX211dGVkID0gZmFsc2U7CiAgICAgbV9yZWFkb25seSA9IGZhbHNl
OwpAQCAtOTIsMTMgKzkwLDYgQEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2
ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKICAgICAgICAgbV9vYnNl
cnZlcnMucmVtb3ZlKHBvcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFN0cmVh
bShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICAvLyBGSVhNRTogQSBzb3Vy
Y2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGtub3cgYWJvdXQgaXRzIHN0cmVhbShzKS4gVGhpcyB3aWxs
IGJlIGZpeGVkIGFzIGEgcGFydCBvZgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjE5NTQKLSAgICBtX3N0cmVhbSA9IHN0cmVhbTsKLX0KLQogTWVkaWFD
b25zdHJhaW50cyogTWVkaWFTdHJlYW1Tb3VyY2U6OmNvbnN0cmFpbnRzKCkgY29uc3QKIHsKICAg
ICAvLyBGSVhNRTogV2hpbGUgdGhpcyByZXR1cm5zIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggMjA1NjQx
OTk1OTNjY2Y4NDY0NWQwNGY2ZGEyYjcwOTBiNzEzZmZhOS4uMWVkM2ZkYzdkYTE1MDU5YmMyZGU3
Nzg3ZDRhZTMxOTUxN2NjOTQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCkBAIC0xMDAsOSArMTAwLDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
IHN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9Ci0gICAgdm9pZCBzZXRTdHJlYW0o
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7Ci0gICAgCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJl
YW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApA
QCAtMTEzLDcgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IG1fY29uc3RyYWludHM7Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBtX3N0
cmVhbTsKICAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyBtX3N0YXRlczsKIAogICAgIGJvb2wg
bV9lbmFibGVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215107</attachid>
            <date>2013-10-24 14:44:29 -0700</date>
            <delta_ts>2013-10-24 14:55:02 -0700</delta_ts>
            <desc>Patch with requested changes</desc>
            <filename>bug-121954-20131024184427.patch</filename>
            <type>text/plain</type>
            <size>17395</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY0OGRiMDJhY2ZjOGUz
Y2FmNDU5YWQyNjcyNzcyOTVhYTI1NzYwOS4uNDQ5MGRmY2E0MmY0YWE3YWYwYTk2ZTc2YTI1YTgy
OTc2YzgzMzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTEwLTI0ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbSBBUEldIGFsbG93IGEgc3RyZWFtIHNvdXJjZSB0byBiZSBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdywg
dGhlIE1lZGlhU3RyZWFtU291cmNlIGRvbid0IGtub3cgYWJvdXQgdGhlIE1lZGlhU3RyZWFtIHRo
YXQgb3ducyBpdCwKKyAgICAgICAgc2luY2UgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgTWVk
aWFTdHJlYW0gdGhhdCBoYXMgaXQgYXMgc291cmNlIGZvciBzb21lIHRyYWNrLgorICAgICAgICBN
ZWRpYVN0cmVhbVRyYWNrIGNsYXNzZXMgbm93IGhhdmUgb2JzZXJ2ZXJzIHJlZ2lzdGVyZWQsIGlu
IGNhc2UgdGhlcmUgYXJlIG1vcmUgdGhhbgorICAgICAgICBvbmUgTWVkaWFTdHJlYW0gb3duaW5n
IHRoYXQgdHJhY2sKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOiBBZGRpbmcgdGhl
IE1lZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIGZvciBlYWNoIHRyYWNrIGl0IG93bnMuCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6IE5vdyBhZGRpbmcgdGhlIE1l
ZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIHRoZSBuZXcgYWRkZWQgdHJhY2sKKyAgICAgICAgYW5k
IGFkZGluZyB0aGUgc291cmNlIHRvIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6IEluc3RlYWQgb2YgcmVtb3Zp
bmcgdGhlIHNvdXJjZSByaWdodCBhd2F5LCB3ZSBmaXJzdCBjaGVjayBpZgorICAgICAgICB0aGVy
ZSBpc24ndCBhbnkgb3RoZXIgdHJhY2sgdXNpbmcgdGhhdCBzb3VyY2UsIGlmIG5vdCB3ZSByZW1v
dmUgdGhlIHNvdXJjZS4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmhhdmVUcmFj
a1dpdGhTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFJlbW90ZVNv
dXJjZSk6IE1lZGlhU3RyZWFtU291cmNlIGhhcyBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTWVk
aWFTdHJlYW0KKyAgICAgICAgdGhhdCB1c2VzIGl0LCBzbyBub3cgd2UgZG9uJ3Qgc2V0IHRoZSBz
dHJlYW0gaW4gdGhlIHNvdXJjZSBhbnltb3JlLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKTogVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbiB0cmFj
ayB1c2luZyB0aGUgc291cmNlLiBTbyB3ZQorICAgICAgICBnZXQgZWFjaCB0cmFjayB0aGF0IGlz
IHVzaW5nIHRoZSBzb3VyY2UgYW5kIHRoZW4gcmVtb3ZlIGl0IGFuZCBmaXJlIHRoZSBlbmRlZCBl
dmVudC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQpOiBEb2VzIG5vdCBnZXQgdGhlIGNsaWVu
dCBmcm9tIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IsIGl0IG5vdworICAgICAgICBub3RpZnkg
ZWFjaCBvZiBpdHMgb2JzZXJ2ZXJzIHRoYXQgdGhlIHRyYWNrIGVuZGVkLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6IEFkZGluZyBPYnNlcnZlciBj
bGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHA6IERlc3RydWN0b3Igbm93IGRvZXMgbm90aGluZy4gUHJldmlvdXNseSBpdCB3YXMg
c2V0dGluZworICAgICAgICBlYWNoIE1lZGlhU3RyZWFtU291cmNlJ3MgZGVzY3JpcHRvciB0byBu
dWxsLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNv
dXJjZSk6IE5vdCBzZXR0aW5nIHRoZSBzdHJlYW0gaW4gc291cmNlIGFueW1vcmUuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9y
KTogRGl0dG8uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c2V0
RW5kZWQpOiBOb3Qgc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIHNvdXJjZSB0byBFbmRlZAorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVhbURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
LmNwcDogUmVtb3ZpbmcgcmVmZXJlbmNlcyB0byBNZWRpYVN0cmVhbSBvYmplY3QKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmg6CisKIDIwMTMtMTAtMjQgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggYnVpbGQgd2l0
aG91dCBDU1NfU0hBUEVTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCA3ZTdlOTM4Y2ZlZjJhN2RhOGNjZGZjMjE1NGZkZjBl
MWNkYWRhYTlkLi5lODc1MGJmY2IyMjdlZDMwMmFmOTUxOTJkNzJlMmY4NTBjMTBiNGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cApAQCAtMTE4LDE1ICsxMTgsMjIgQEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0KICAgICBBU1NF
UlQobV9kZXNjcmlwdG9yKTsKICAgICBtX2Rlc2NyaXB0b3ItPnNldENsaWVudCh0aGlzKTsKIAor
ICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKICAgICBzaXplX3QgbnVtYmVyT2ZB
dWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZBdWRpb1N0cmVhbXMoKTsKICAgICBt
X2F1ZGlvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkF1ZGlvVHJhY2tzKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFja3M7IGkrKykKLSAgICAgICAg
bV9hdWRpb1RyYWNrcy5hcHBlbmQoQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1f
ZGVzY3JpcHRvci0+YXVkaW9TdHJlYW1zKGkpKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspIHsKKyAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVh
bVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLT5hdWRpb1N0cmVhbXMoaSkpOwor
ICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fYXVkaW9UcmFja3Mu
YXBwZW5kKHRyYWNrLnJlbGVhc2UoKSk7CisgICAgfQogCiAgICAgc2l6ZV90IG51bWJlck9mVmlk
ZW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mVmlkZW9TdHJlYW1zKCk7CiAgICAgbV92
aWRlb1RyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCi0gICAgICAgIG1f
dmlkZW9UcmFja3MuYXBwZW5kKFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rl
c2NyaXB0b3ItPnZpZGVvU3RyZWFtcyhpKSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZWaWRlb1RyYWNrczsgaSsrKSB7CisgICAgICAgIHRyYWNrID0gVmlkZW9TdHJlYW1U
cmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvci0+dmlkZW9TdHJlYW1zKGkpKTsKKyAg
ICAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFw
cGVuZCh0cmFjay5yZWxlYXNlKCkpOworICAgIH0KIH0KIAogTWVkaWFTdHJlYW06On5NZWRpYVN0
cmVhbSgpCkBAIC0xODUsNiArMTkyLDkgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYKICAgICAg
ICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9CisK
KyAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3Vy
Y2UodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0yMTgsMTIgKzIyOCwzNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25DbwogICAgIGlmIChw
b3MgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVzY3JpcHRvci0+cmVt
b3ZlU291cmNlKHRyYWNrLT5zb3VyY2UoKSk7CisgICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRy
YWNrcyB1c2luZyB0aGUgc2FtZSBzb3VyY2UgaW4gdGhlIHNhbWUgTWVkaWFTdHJlYW0sCisgICAg
Ly8gbGlrZSB3aGVuIE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5z
dGFuY2UuCisgICAgLy8gU3BlYyBzYXlzIHRoYXQgYSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28g
d2UgbXVzdCBhc3N1cmUgdGhhdCB0aGVyZSBpcyBubworICAgIC8vIG90aGVyIHRyYWNrIHVzaW5n
IGl0LgorICAgIGlmICghaGF2ZVRyYWNrV2l0aFNvdXJjZSh0cmFjay0+c291cmNlKCkpKQorICAg
ICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOwogCisgICAg
dHJhY2stPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXpl
KCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6ZSgpKQogICAgICAgICBzZXRFbmRlZCgpOwogfQogCiti
b29sIE1lZGlhU3RyZWFtOjpoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2U+IHNvdXJjZSkKK3sKKyAgICBpZiAoc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJl
YW1Tb3VyY2U6OkF1ZGlvKSB7CisgICAgICAgIGZvciAoY29uc3QgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+JiB0cmFjayA6IG1fYXVkaW9UcmFja3MpIHsKKyAgICAgICAgICAgIGlmICh0cmFjay0+
c291cmNlKCkgPT0gc291cmNlLmdldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKSB7CisgICAg
ICAgIGlmICh0cmFjay0+c291cmNlKCkgPT0gc291cmNlLmdldCgpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYVN0cmVhbVRy
YWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKFN0cmluZyBpZCkKIHsKICAgICBmb3IgKE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSBtX2F1ZGlvVHJhY2tzLmJlZ2lu
KCk7IGl0ZXIgIT0gbV9hdWRpb1RyYWNrcy5lbmQoKTsgKytpdGVyKSB7CkBAIC0yNzEsOCArMzA1
LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNl
KiBzb3VyY2UpCiAgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNvdXJj
ZS0+c2V0U3RyZWFtKGRlc2NyaXB0b3IoKSk7Ci0KICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gdHJhY2s7CiAgICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2U6OkF1ZGlvOgpAQCAtMjg0LDYgKzMxNiw3IEBAIHZvaWQgTWVkaWFTdHJlYW06
OmFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZCh0cmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICB0cmFj
ay0+YWRkT2JzZXJ2ZXIodGhpcyk7CiAgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3VyY2Uoc291cmNl
KTsKIAogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwpA
QCAtMzA0LDIxICszMzcsMjAgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNl
KE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IHNpemVfdCBpbmRleCA9IG5vdEZvdW5kOworICAgIFZlY3RvcjxpbnQ+IHRyYWNrc1RvUmVtb3Zl
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzLT5zaXplKCk7ICsraSkgewotICAg
ICAgICBpZiAoKCp0cmFja3MpW2ldLT5zb3VyY2UoKSA9PSBzb3VyY2UpIHsKLSAgICAgICAgICAg
IGluZGV4ID0gaTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIGlmICgo
KnRyYWNrcylbaV0tPnNvdXJjZSgpID09IHNvdXJjZSkKKyAgICAgICAgICAgIHRyYWNrc1RvUmVt
b3ZlLmFwcGVuZChpKTsKICAgICB9Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAg
ICByZXR1cm47CiAKICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJjZShzb3VyY2UpOwogCi0g
ICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gKCp0cmFja3MpW2luZGV4XTsKLSAg
ICB0cmFja3MtPnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlh
U3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBm
YWxzZSwgZmFsc2UsIHRyYWNrKSk7CisgICAgZm9yIChpbnQgaSA9IHRyYWNrc1RvUmVtb3ZlLnNp
emUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiB0cmFjayA9ICgqdHJhY2tzKVt0cmFja3NUb1JlbW92ZVtpXV07CisgICAgICAgIHRyYWNrLT5y
ZW1vdmVPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgdHJhY2tzLT5yZW1vdmUodHJhY2tzVG9SZW1v
dmVbaV0pOworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwg
dHJhY2sucmVsZWFzZSgpKSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVs
ZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggZmM0MzM5MTY5N2M2
M2FmZDY3NmQyYjBhNjZkMWM3NDYwZDRhMzJlNS4uMmIyODdiOWM0ZWVhNDE5NGJhMDdkNzAyZTQ4
OWFhYWZkYzI0NWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uaApAQCAtOTgsNiArOTgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBhZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERSBGSU5BTDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikg
T1ZFUlJJREUgRklOQUw7CiAKKyAgICBib29sIGhhdmVUcmFja1dpdGhTb3VyY2UoUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVNvdXJjZT4pOworCiAgICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRp
bWVyPE1lZGlhU3RyZWFtPiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCBkMWJjMzRiZGU1MGY1NDQ2
N2ZjNDM3OWNlZWI1NWJiYzJkY2Q1MGExLi5hYTBkZTVmYTM0NWZhY2YzOGUzMjZmYTI4MmY1MGEw
M2RiZTJhNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTI5Niw2ICsyOTYsMTggQEAgYm9vbCBNZWRp
YVN0cmVhbVRyYWNrOjplbmRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RvcHBlZCB8fCBtX3Jl
YWR5U3RhdGUgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkOwogfQogCit2b2lkIE1lZGlhU3Ry
ZWFtVHJhY2s6OmFkZE9ic2VydmVyKE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVyKiBvYnNlcnZl
cikKK3sKKyAgICBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIpOworfQorCit2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OnJlbW92ZU9ic2VydmVyKE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVyKiBv
YnNlcnZlcikKK3sKKyAgICBzaXplX3QgcG9zID0gbV9vYnNlcnZlcnMuZmluZChvYnNlcnZlcik7
CisgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAgICAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKHBv
cyk7Cit9CisKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlU3RhdGVDaGFuZ2VkKCkKIHsK
ICAgICBpZiAobV9zdG9wcGVkKQpAQCAtMzQ3LDEzICszNTksOCBAQCBib29sIE1lZGlhU3RyZWFt
VHJhY2s6OnN0b3BwZWQoKQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRGlkRW5kKCkK
IHsKLSAgICAvLyBGSVhNRTogdGhpcyBpcyB3cm9uZywgdGhlIHRyYWNrIHNob3VsZG4ndCBoYXZl
IHRvIGNhbGwgdGhlIGRlc2NyaXB0b3IncyBjbGllbnQhCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yQ2xpZW50KiBjbGllbnQgPSBtX3NvdXJjZSA/IG1fc291cmNlLT5zdHJlYW0oKS0+Y2xpZW50
KCkgOiAwOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY2xp
ZW50LT50cmFja0RpZEVuZCgpOwotICAgIHNldFN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpFbmRl
ZCk7CisgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJz
LmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+dHJh
Y2tEaWRFbmQoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
aW5kZXggYjUwYjlkNDk2N2FlYjkyY2U2MGVkNjI4ZTI0MDcwZTljZjViMjBjMC4uZDdlYTI3YjJk
ZDY4ZDcwYzhkMDkxYmUwMTZhNzQ5ODA4Mjk2ZGQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTQ5LDYgKzQ5
LDExIEBAIGNsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50czsKIAogY2xhc3MgTWVkaWFTdHJlYW1U
cmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6
CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lk
IHRyYWNrRGlkRW5kKCkgPSAwOworICAgIH07CisKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRy
YWNrKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCgpIGNvbnN0ID0g
MDsKQEAgLTg2LDYgKzkxLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0Owog
CisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciopOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2
ZXIoT2JzZXJ2ZXIqKTsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2tFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtMTI1LDYgKzEzMyw4IEBAIHByaXZhdGU6CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9pZDsKICAgICBNdXRleCBtX211dGV4OwogCisgICAgVmVjdG9yPE9ic2Vy
dmVyKj4gbV9vYnNlcnZlcnM7CisKICAgICBib29sIG1fc3RvcHBlZDsKICAgICBib29sIG1fZW5h
YmxlZDsKICAgICBib29sIG1fbXV0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAppbmRleCBj
MmY4ZDE1M2E3MjYxYWUyNDYxMDQzMDU4YThiMjAxMTgwMjVlZGZkLi5kYzRiMThiMjI1ZTFkNjU1
OTFlZGZlY2VhNWM0ZTc5YzhiMjIyNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKQEAg
LTQ4LDE1ICs0OCw2IEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBNZWRpYVN0
cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcywgZmxhZyA9PSBJc0VuZGVkKSk7CiB9CiAKLU1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpCi17Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2F1ZGlvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKLSAg
ICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXNbaV0tPnNldFN0cmVhbSgwKTsKLSAgICAKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgaSsrKQot
ICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlc1tpXS0+c2V0U3RyZWFtKDApOwotfQotCiB2b2lk
IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CkBAIC04OCw4
ICs3OSw2IEBAIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVTb3VyY2UoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlKQogICAgICAgICBtX3ZpZGVvU3RyZWFtU291
cmNlcy5yZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgc291cmNlLT5z
ZXRTdHJlYW0oMCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRSZW1vdGVT
b3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKQEAgLTExNCwyNiArMTAzLDE5IEBAIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYg
aWQsIGNvbnN0IE1lZGlhU3RyZWFtCiAgICAgLCBtX2VuZGVkKGVuZGVkKQogewogICAgIEFTU0VS
VChtX2lkLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNl
cy5zaXplKCk7IGkrKykgewotICAgICAgICBhdWRpb1NvdXJjZXNbaV0tPnNldFN0cmVhbSh0aGlz
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykK
ICAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlc1tpXSk7Ci0g
ICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgdmlkZW9Tb3VyY2VzW2ldLT5zZXRTdHJlYW0odGhpcyk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1f
dmlkZW9TdHJlYW1Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZXNbaV0pOwotICAgIH0KIH0KIAog
dm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnNldEVuZGVkKCkKIHsKICAgICBpZiAobV9jbGll
bnQpCiAgICAgICAgIG1fY2xpZW50LT5zdHJlYW1EaWRFbmQoKTsKKwogICAgIG1fZW5kZWQgPSB0
cnVlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6
ZSgpOyBpKyspCi0gICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2ldLT5zZXRSZWFkeVN0YXRl
KE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3ZpZGVvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV92aWRlb1N0cmVhbVNv
dXJjZXNbaV0tPnNldFJlYWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCA0NTI4NGFi
ZWMyNjFkYWNiYTI3OGEyNTQ1ODE0ZDE4NDc1ZDA3NjA4Li45Mzg5NjFiYzNiMWE3NGJlOTE0MmE1
ZjZlNzNmZTRmMTRlMjIyYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtMzUsMTYgKzM1
LDE2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
U291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCB7CitjbGFzcyBNZWRpYVN0
cmVhbURlc2NyaXB0b3JDbGllbnQgOiBwdWJsaWMgTWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCgpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHRyYWNrRGlkRW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1EaWRFbmQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShN
ZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291
cmNlKE1lZGlhU3RyZWFtU291cmNlKikgPSAwOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNyZWF0ZShjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzLCBFbmRlZEF0Q3JlYXRpb25GbGFnKTsKIAotICAg
IHZpcnR1YWwgfk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpOworICAgIHZpcnR1YWwgfk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcigpIHsgfQogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBj
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogICAgIHZvaWQgc2V0Q2xpZW50KE1l
ZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggNmRiZGI5N2MyODk1MmVlMzkxNGJlZWE3OGE3YmRmNDUx
ODRiM2IzOC4uMmQxZDE3YzE1NmNkNWY3ZTliOTE2OTU0ZTA0NjZkZGE5NTkzNzIwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmNwcApAQCAtNDgsNyArNDgsNiBAQCBNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFT
dHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmCiAg
ICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9yZWFkeVN0YXRl
KE5ldykKLSAgICAsIG1fc3RyZWFtKDApCiAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1f
bXV0ZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRvbmx5KGZhbHNlKQpAQCAtNjMsNyArNjIsNiBAQCBN
ZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmCiB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZXNldCgpCiB7
CiAgICAgbV9yZWFkeVN0YXRlID0gTmV3OwotICAgIG1fc3RyZWFtID0gMDsKICAgICBtX2VuYWJs
ZWQgPSB0cnVlOwogICAgIG1fbXV0ZWQgPSBmYWxzZTsKICAgICBtX3JlYWRvbmx5ID0gZmFsc2U7
CkBAIC05MiwxMyArOTAsNiBAQCB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZl
cihNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICAgICBtX29ic2Vy
dmVycy5yZW1vdmUocG9zKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0U3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAgIC8vIEZJWE1FOiBBIHNvdXJj
ZSBzaG91bGQgbm90IG5lZWQgdG8ga25vdyBhYm91dCBpdHMgc3RyZWFtKHMpLiBUaGlzIHdpbGwg
YmUgZml4ZWQgYXMgYSBwYXJ0IG9mCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMTk1NAotICAgIG1fc3RyZWFtID0gc3RyZWFtOwotfQotCiBNZWRpYUNv
bnN0cmFpbnRzKiBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3RyYWludHMoKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBXaGlsZSB0aGlzIHJldHVybnMgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAppbmRleCAyMDU2NDE5
OTU5M2NjZjg0NjQ1ZDA0ZjZkYTJiNzA5MGI3MTNmZmE5Li4xZWQzZmRjN2RhMTUwNTliYzJkZTc3
ODdkNGFlMzE5NTE3Y2M5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKQEAgLTEwMCw5ICsxMDAsNiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHN0b3AoKTsKIAotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciog
c3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW07IH0KLSAgICB2b2lkIHNldFN0cmVhbShN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKLSAgICAKIHByb3RlY3RlZDoKICAgICBNZWRpYVN0cmVh
bVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBA
IC0xMTMsNyArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsK
ICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1fc3Ry
ZWFtOwogICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fc3RhdGVzOwogCiAgICAgYm9vbCBt
X2VuYWJsZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215108</attachid>
            <date>2013-10-24 14:55:07 -0700</date>
            <delta_ts>2013-10-24 15:20:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121954-20131024185506.patch</filename>
            <type>text/plain</type>
            <size>17489</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY0OGRiMDJhY2ZjOGUz
Y2FmNDU5YWQyNjcyNzcyOTVhYTI1NzYwOS4uNDQ5MGRmY2E0MmY0YWE3YWYwYTk2ZTc2YTI1YTgy
OTc2YzgzMzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTEwLTI0ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbSBBUEldIGFsbG93IGEgc3RyZWFtIHNvdXJjZSB0byBiZSBzaGFy
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdywg
dGhlIE1lZGlhU3RyZWFtU291cmNlIGRvbid0IGtub3cgYWJvdXQgdGhlIE1lZGlhU3RyZWFtIHRo
YXQgb3ducyBpdCwKKyAgICAgICAgc2luY2UgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgTWVk
aWFTdHJlYW0gdGhhdCBoYXMgaXQgYXMgc291cmNlIGZvciBzb21lIHRyYWNrLgorICAgICAgICBN
ZWRpYVN0cmVhbVRyYWNrIGNsYXNzZXMgbm93IGhhdmUgb2JzZXJ2ZXJzIHJlZ2lzdGVyZWQsIGlu
IGNhc2UgdGhlcmUgYXJlIG1vcmUgdGhhbgorICAgICAgICBvbmUgTWVkaWFTdHJlYW0gb3duaW5n
IHRoYXQgdHJhY2sKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOiBBZGRpbmcgdGhl
IE1lZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIGZvciBlYWNoIHRyYWNrIGl0IG93bnMuCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6IE5vdyBhZGRpbmcgdGhlIE1l
ZGlhU3RyZWFtIGFzIGFuIG9ic2VydmVyIHRoZSBuZXcgYWRkZWQgdHJhY2sKKyAgICAgICAgYW5k
IGFkZGluZyB0aGUgc291cmNlIHRvIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6IEluc3RlYWQgb2YgcmVtb3Zp
bmcgdGhlIHNvdXJjZSByaWdodCBhd2F5LCB3ZSBmaXJzdCBjaGVjayBpZgorICAgICAgICB0aGVy
ZSBpc24ndCBhbnkgb3RoZXIgdHJhY2sgdXNpbmcgdGhhdCBzb3VyY2UsIGlmIG5vdCB3ZSByZW1v
dmUgdGhlIHNvdXJjZS4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmhhdmVUcmFj
a1dpdGhTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFJlbW90ZVNv
dXJjZSk6IE1lZGlhU3RyZWFtU291cmNlIGhhcyBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTWVk
aWFTdHJlYW0KKyAgICAgICAgdGhhdCB1c2VzIGl0LCBzbyBub3cgd2UgZG9uJ3Qgc2V0IHRoZSBz
dHJlYW0gaW4gdGhlIHNvdXJjZSBhbnltb3JlLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKTogVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbiB0cmFj
ayB1c2luZyB0aGUgc291cmNlLiBTbyB3ZQorICAgICAgICBnZXQgZWFjaCB0cmFjayB0aGF0IGlz
IHVzaW5nIHRoZSBzb3VyY2UgYW5kIHRoZW4gcmVtb3ZlIGl0IGFuZCBmaXJlIHRoZSBlbmRlZCBl
dmVudC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQpOiBEb2VzIG5vdCBnZXQgdGhlIGNsaWVu
dCBmcm9tIHRoZSBNZWRpYVN0cmVhbURlc2NyaXB0b3IsIGl0IG5vdworICAgICAgICBub3RpZnkg
ZWFjaCBvZiBpdHMgb2JzZXJ2ZXJzIHRoYXQgdGhlIHRyYWNrIGVuZGVkLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6IEFkZGluZyBPYnNlcnZlciBj
bGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHA6IERlc3RydWN0b3Igbm93IGRvZXMgbm90aGluZy4gUHJldmlvdXNseSBpdCB3YXMg
c2V0dGluZworICAgICAgICBlYWNoIE1lZGlhU3RyZWFtU291cmNlJ3MgZGVzY3JpcHRvciB0byBu
dWxsLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNv
dXJjZSk6IE5vdCBzZXR0aW5nIHRoZSBzdHJlYW0gaW4gc291cmNlIGFueW1vcmUuCisKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9y
KTogRGl0dG8uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c2V0
RW5kZWQpOiBOb3Qgc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIHNvdXJjZSB0byBFbmRlZAorCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVhbURlc2Ny
aXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
LmNwcDogUmVtb3ZpbmcgcmVmZXJlbmNlcyB0byBNZWRpYVN0cmVhbSBvYmplY3QKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmg6CisKIDIwMTMtMTAtMjQgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggYnVpbGQgd2l0
aG91dCBDU1NfU0hBUEVTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCA3ZTdlOTM4Y2ZlZjJhN2RhOGNjZGZjMjE1NGZkZjBl
MWNkYWRhYTlkLi5jYTNhNGI4MWE2NmU3MGZmYmI1MjI2YWM1MzE3OGY5NjcwNzE1ZTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cApAQCAtMTE4LDE1ICsxMTgsMjIgQEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0KICAgICBBU1NF
UlQobV9kZXNjcmlwdG9yKTsKICAgICBtX2Rlc2NyaXB0b3ItPnNldENsaWVudCh0aGlzKTsKIAor
ICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKICAgICBzaXplX3QgbnVtYmVyT2ZB
dWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZBdWRpb1N0cmVhbXMoKTsKICAgICBt
X2F1ZGlvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkF1ZGlvVHJhY2tzKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFja3M7IGkrKykKLSAgICAgICAg
bV9hdWRpb1RyYWNrcy5hcHBlbmQoQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1f
ZGVzY3JpcHRvci0+YXVkaW9TdHJlYW1zKGkpKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspIHsKKyAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVh
bVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLT5hdWRpb1N0cmVhbXMoaSkpOwor
ICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fYXVkaW9UcmFja3Mu
YXBwZW5kKHRyYWNrLnJlbGVhc2UoKSk7CisgICAgfQogCiAgICAgc2l6ZV90IG51bWJlck9mVmlk
ZW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mVmlkZW9TdHJlYW1zKCk7CiAgICAgbV92
aWRlb1RyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCi0gICAgICAgIG1f
dmlkZW9UcmFja3MuYXBwZW5kKFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rl
c2NyaXB0b3ItPnZpZGVvU3RyZWFtcyhpKSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZWaWRlb1RyYWNrczsgaSsrKSB7CisgICAgICAgIHRyYWNrID0gVmlkZW9TdHJlYW1U
cmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvci0+dmlkZW9TdHJlYW1zKGkpKTsKKyAg
ICAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFw
cGVuZCh0cmFjay5yZWxlYXNlKCkpOworICAgIH0KIH0KIAogTWVkaWFTdHJlYW06On5NZWRpYVN0
cmVhbSgpCkBAIC0xODUsNiArMTkyLDkgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYKICAgICAg
ICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9CisK
KyAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgbV9kZXNjcmlwdG9yLT5hZGRTb3Vy
Y2UodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0yMTgsMTIgKzIyOCwzNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25DbwogICAgIGlmIChw
b3MgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVzY3JpcHRvci0+cmVt
b3ZlU291cmNlKHRyYWNrLT5zb3VyY2UoKSk7CisgICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRy
YWNrcyB1c2luZyB0aGUgc2FtZSBzb3VyY2UgaW4gdGhlIHNhbWUgTWVkaWFTdHJlYW0sCisgICAg
Ly8gbGlrZSB3aGVuIE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5z
dGFuY2UuCisgICAgLy8gU3BlYyBzYXlzIHRoYXQgYSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28g
d2UgbXVzdCBhc3N1cmUgdGhhdCB0aGVyZSBpcyBubworICAgIC8vIG90aGVyIHRyYWNrIHVzaW5n
IGl0LgorICAgIGlmICghaGF2ZVRyYWNrV2l0aFNvdXJjZSh0cmFjay0+c291cmNlKCkpKQorICAg
ICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOwogCisgICAg
dHJhY2stPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXpl
KCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6ZSgpKQogICAgICAgICBzZXRFbmRlZCgpOwogfQogCiti
b29sIE1lZGlhU3RyZWFtOjpoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2U+IHNvdXJjZSkKK3sKKyAgICBpZiAoc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJl
YW1Tb3VyY2U6OkF1ZGlvKSB7CisgICAgICAgIGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6
aXRlcmF0b3IgaXRlciA9IG1fYXVkaW9UcmFja3MuYmVnaW4oKTsgaXRlciAhPSBtX2F1ZGlvVHJh
Y2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIGlmICgoKml0ZXIpLT5zb3VyY2UoKSA9
PSBzb3VyY2UuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAoTWVkaWFTdHJlYW1UcmFj
a1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9IG1fdmlkZW9UcmFja3MuYmVnaW4oKTsgaXRlciAhPSBt
X3ZpZGVvVHJhY2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKCgqaXRlciktPnNvdXJj
ZSgpID09IHNvdXJjZS5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogTWVkaWFTdHJlYW1UcmFjayogTWVkaWFTdHJlYW06Omdl
dFRyYWNrQnlJZChTdHJpbmcgaWQpCiB7CiAgICAgZm9yIChNZWRpYVN0cmVhbVRyYWNrVmVjdG9y
OjppdGVyYXRvciBpdGVyID0gbV9hdWRpb1RyYWNrcy5iZWdpbigpOyBpdGVyICE9IG1fYXVkaW9U
cmFja3MuZW5kKCk7ICsraXRlcikgewpAQCAtMjcxLDggKzMwNSw2IEBAIHZvaWQgTWVkaWFTdHJl
YW06OmFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogICAgIGlmIChl
bmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzb3VyY2UtPnNldFN0cmVhbShkZXNjcmlw
dG9yKCkpOwotCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrOwogICAgIHN3aXRj
aCAoc291cmNlLT50eXBlKCkpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoK
QEAgLTI4NCw2ICszMTYsNyBAQCB2b2lkIE1lZGlhU3RyZWFtOjphZGRSZW1vdGVTb3VyY2UoTWVk
aWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJh
Y2spOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMp
OwogICAgIG1fZGVzY3JpcHRvci0+YWRkU291cmNlKHNvdXJjZSk7CiAKICAgICBzY2hlZHVsZURp
c3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFk
ZHRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKQEAgLTMwNCwyMSArMzM3LDIwIEBA
IHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSog
c291cmNlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBzaXplX3QgaW5kZXggPSBub3RG
b3VuZDsKKyAgICBWZWN0b3I8aW50PiB0cmFja3NUb1JlbW92ZTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRyYWNrcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKCgqdHJhY2tzKVtp
XS0+c291cmNlKCkgPT0gc291cmNlKSB7Ci0gICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBpZiAoKCp0cmFja3MpW2ldLT5zb3VyY2Uo
KSA9PSBzb3VyY2UpCisgICAgICAgICAgICB0cmFja3NUb1JlbW92ZS5hcHBlbmQoaSk7CiAgICAg
fQotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgbV9k
ZXNjcmlwdG9yLT5yZW1vdmVTb3VyY2Uoc291cmNlKTsKIAotICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiB0cmFjayA9ICgqdHJhY2tzKVtpbmRleF07Ci0gICAgdHJhY2tzLT5yZW1vdmUoaW5k
ZXgpOwotICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykp
OworICAgIGZvciAoaW50IGkgPSB0cmFja3NUb1JlbW92ZS5zaXplKCkgLSAxOyBpID49IDA7IGkt
LSkgeworICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSAoKnRyYWNrcylb
dHJhY2tzVG9SZW1vdmVbaV1dOworICAgICAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7
CisgICAgICAgIHRyYWNrcy0+cmVtb3ZlKHRyYWNrc1RvUmVtb3ZlW2ldKTsKKyAgICAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrLnJlbGVhc2UoKSkpOwor
ICAgIH0KIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IGZjNDMzOTE2OTdjNjNhZmQ2NzZkMmIwYTY2ZDFjNzQ2
MGQ0YTMyZTUuLjJiMjg3YjljNGVlYTQxOTRiYTA3ZDcwMmU0ODlhYWFmZGMyNDVmZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKQEAg
LTk4LDYgKzk4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVtb3RlU291cmNl
KE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFIEZJTkFMOwogCisg
ICAgYm9vbCBoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
KTsKKwogICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsK
ICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbT4qKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAKaW5kZXggZDFiYzM0YmRlNTBmNTQ0NjdmYzQzNzljZWViNTViYmMyZGNk
NTBhMS4uYWEwZGU1ZmEzNDVmYWNmMzhlMzI2ZmEyODJmNTBhMDNkYmUyYTQ1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCkBAIC0yOTYsNiArMjk2LDE4IEBAIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQo
KSBjb25zdAogICAgIHJldHVybiBtX3N0b3BwZWQgfHwgbV9yZWFkeVN0YXRlID09IE1lZGlhU3Ry
ZWFtU291cmNlOjpFbmRlZDsKIH0KIAordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphZGRPYnNlcnZl
cihNZWRpYVN0cmVhbVRyYWNrOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgbV9vYnNlcnZl
cnMuYXBwZW5kKG9ic2VydmVyKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdmVP
YnNlcnZlcihNZWRpYVN0cmVhbVRyYWNrOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgc2l6
ZV90IHBvcyA9IG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpOworICAgIGlmIChwb3MgIT0gbm90
Rm91bmQpCisgICAgICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShwb3MpOworfQorCiB2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OnNvdXJjZVN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkK
QEAgLTM0NywxMyArMzU5LDggQEAgYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wcGVkKCkKIAog
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0RpZEVuZCgpCiB7Ci0gICAgLy8gRklYTUU6IHRo
aXMgaXMgd3JvbmcsIHRoZSB0cmFjayBzaG91bGRuJ3QgaGF2ZSB0byBjYWxsIHRoZSBkZXNjcmlw
dG9yJ3MgY2xpZW50IQotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50ID0g
bV9zb3VyY2UgPyBtX3NvdXJjZS0+c3RyZWFtKCktPmNsaWVudCgpIDogMDsKLSAgICBpZiAoIWNs
aWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGNsaWVudC0+dHJhY2tEaWRFbmQoKTsK
LSAgICBzZXRTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQpOworICAgIGZvciAoVmVjdG9y
PE9ic2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2Jz
ZXJ2ZXJzLmVuZCgpOyArK2kpCisgICAgICAgICgqaSktPnRyYWNrRGlkRW5kKCk7CiB9CiAKIHZv
aWQgTWVkaWFTdHJlYW1UcmFjazo6c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGI1MGI5ZDQ5NjdhZWI5
MmNlNjBlZDYyOGUyNDA3MGU5Y2Y1YjIwYzAuLmQ3ZWEyN2IyZGQ2OGQ3MGM4ZDA5MWJlMDE2YTc0
OTgwODI5NmRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC00OSw2ICs0OSwxMSBAQCBjbGFzcyBNZWRpYVRy
YWNrQ29uc3RyYWludHM7CiAKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBN
ZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIgewogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVy
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpID0gMDsK
KyAgICB9OworCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFjaygpOwogCiAgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQoKSBjb25zdCA9IDA7CkBAIC04Niw2ICs5MSw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKIAorICAgIHZvaWQgYWRkT2JzZXJ2
ZXIoT2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CisKICAg
ICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYVN0cmVh
bVRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklO
QUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
QEAgLTEyNSw2ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgU3RyaW5nIG1faWQ7CiAg
ICAgTXV0ZXggbV9tdXRleDsKIAorICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwor
CiAgICAgYm9vbCBtX3N0b3BwZWQ7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211
dGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKaW5kZXggYzJmOGQxNTNhNzI2MWFlMjQ2MTA0
MzA1OGE4YjIwMTE4MDI1ZWRmZC4uZGM0YjE4YjIyNWUxZDY1NTkxZWRmZWNlYTVjNGU3OWM4YjIy
MjZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCkBAIC00OCwxNSArNDgsNiBAQCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVh
dGUoY29uc3QgTWVkaWFTdHJlYQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Tb3VyY2VzLCB2aWRl
b1NvdXJjZXMsIGZsYWcgPT0gSXNFbmRlZCkpOwogfQogCi1NZWRpYVN0cmVhbURlc2NyaXB0b3I6
On5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fYXVkaW9TdHJlYW1T
b3VyY2VzW2ldLT5zZXRTdHJlYW0oMCk7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3ZpZGVvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV92aWRlb1N0cmVh
bVNvdXJjZXNbaV0tPnNldFN0cmVhbSgwKTsKLX0KLQogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0
b3I6OmFkZFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCiB7CiAg
ICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewpAQCAtODgsOCArNzksNiBAQCB2b2lkIE1lZGlh
U3RyZWFtRGVzY3JpcHRvcjo6cmVtb3ZlU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2U+IHNvdXJjZSkKICAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXMucmVtb3ZlKHBvcyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIHNvdXJjZS0+c2V0U3RyZWFtKDApOwogfQogCiB2
b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291
cmNlKiBzb3VyY2UpCkBAIC0xMTQsMjYgKzEwMywxOSBAQCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVh
bQogICAgICwgbV9lbmRlZChlbmRlZCkKIHsKICAgICBBU1NFUlQobV9pZC5sZW5ndGgoKSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgYXVkaW9Tb3VyY2VzW2ldLT5zZXRTdHJlYW0odGhpcyk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1fYXVkaW9TdHJl
YW1Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZXNbaV0pOwotICAgIH0KIAotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHZpZGVv
U291cmNlc1tpXS0+c2V0U3RyZWFtKHRoaXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQogICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5h
cHBlbmQodmlkZW9Tb3VyY2VzW2ldKTsKLSAgICB9CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpzZXRFbmRlZCgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVu
dC0+c3RyZWFtRGlkRW5kKCk7CisKICAgICBtX2VuZGVkID0gdHJ1ZTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAgICBt
X2F1ZGlvU3RyZWFtU291cmNlc1tpXS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6
RW5kZWQpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92aWRlb1N0cmVhbVNvdXJjZXMu
c2l6ZSgpOyBpKyspCi0gICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2VzW2ldLT5zZXRSZWFkeVN0
YXRlKE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKaW5kZXggNDUyODRhYmVjMjYxZGFjYmEyNzhhMjU0NTgx
NGQxODQ3NWQwNzYwOC4uOTM4OTYxYmMzYjFhNzRiZTkxNDJhNWY2ZTczZmU0ZjE0ZTIyMmIyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTM1LDE2ICszNSwxNiBAQAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVN0
cmVhbURlc2NyaXB0b3JDbGllbnQgeworY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50
IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCB0cmFja0RpZEVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJj
ZSopID0gMDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVv
U291cmNlcywgRW5kZWRBdENyZWF0aW9uRmxhZyk7CiAKLSAgICB2aXJ0dWFsIH5NZWRpYVN0cmVh
bURlc2NyaXB0b3IoKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKSB7IH0K
IAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1
cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChNZWRpYVN0cmVhbURlc2NyaXB0b3JD
bGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmlu
ZGV4IDZkYmRiOTdjMjg5NTJlZTM5MTRiZWVhNzhhN2JkZjQ1MTg0YjNiMzguLjJkMWQxN2MxNTZj
ZDVmN2U5YjkxNjk1NGUwNDY2ZGRhOTU5MzcyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTQ4
LDcgKzQ4LDYgQEAgTWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0
cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJgogICAgICwgbV90eXBlKHR5cGUpCiAg
ICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fcmVhZHlTdGF0ZShOZXcpCi0gICAgLCBtX3N0cmVh
bSgwKQogICAgICwgbV9lbmFibGVkKHRydWUpCiAgICAgLCBtX211dGVkKGZhbHNlKQogICAgICwg
bV9yZWFkb25seShmYWxzZSkKQEAgLTYzLDcgKzYyLDYgQEAgTWVkaWFTdHJlYW1Tb3VyY2U6Ok1l
ZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
Jgogdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQoKQogewogICAgIG1fcmVhZHlTdGF0ZSA9
IE5ldzsKLSAgICBtX3N0cmVhbSA9IDA7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICBtX211
dGVkID0gZmFsc2U7CiAgICAgbV9yZWFkb25seSA9IGZhbHNlOwpAQCAtOTIsMTMgKzkwLDYgQEAg
dm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6
Ok9ic2VydmVyKiBvYnNlcnZlcikKICAgICAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7CiB9
CiAKLXZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIHN0cmVhbSkKLXsKLSAgICAvLyBGSVhNRTogQSBzb3VyY2Ugc2hvdWxkIG5vdCBuZWVkIHRv
IGtub3cgYWJvdXQgaXRzIHN0cmVhbShzKS4gVGhpcyB3aWxsIGJlIGZpeGVkIGFzIGEgcGFydCBv
ZgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQK
LSAgICBtX3N0cmVhbSA9IHN0cmVhbTsKLX0KLQogTWVkaWFDb25zdHJhaW50cyogTWVkaWFTdHJl
YW1Tb3VyY2U6OmNvbnN0cmFpbnRzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hpbGUgdGhp
cyByZXR1cm5zIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggMjA1NjQxOTk1OTNjY2Y4NDY0NWQwNGY2ZGEy
YjcwOTBiNzEzZmZhOS4uMWVkM2ZkYzdkYTE1MDU5YmMyZGU3Nzg3ZDRhZTMxOTUxN2NjOTQ4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVNvdXJjZS5oCkBAIC0xMDAsOSArMTAwLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
dG9wKCk7CiAKLSAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyZWFtOyB9Ci0gICAgdm9pZCBzZXRTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9y
Kik7Ci0gICAgCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5n
JiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAtMTEzLDcgKzExMCw2IEBAIHBy
aXZhdGU6CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgVmVjdG9yPE9ic2VydmVy
Kj4gbV9vYnNlcnZlcnM7CiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWlu
dHM7Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBtX3N0cmVhbTsKICAgICBNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlcyBtX3N0YXRlczsKIAogICAgIGJvb2wgbV9lbmFibGVkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>