<?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>76014</bug_id>
          
          <creation_ts>2012-01-10 17:43:12 -0800</creation_ts>
          <short_desc>Web Intents chromium API modifications to track IntentRequest invocation method</short_desc>
          <delta_ts>2012-01-19 18:04:08 -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>New Bugs</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>75123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Greg Billock">gbillock</reporter>
          <assigned_to name="Greg Billock">gbillock</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533529</commentid>
    <comment_count>0</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-10 17:43:12 -0800</bug_when>
    <thetext>Web Intents chromium API modifications to track IntentRequest invocation method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533530</commentid>
    <comment_count>1</comment_count>
      <attachid>121951</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-10 17:43:39 -0800</bug_when>
    <thetext>Created attachment 121951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533533</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-10 17:46:37 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533540</commentid>
    <comment_count>3</comment_count>
      <attachid>121951</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-10 17:54:37 -0800</bug_when>
    <thetext>Comment on attachment 121951
Patch

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

&gt; Source/WebKit/chromium/public/WebIntent.h:66
&gt; +        void postResult(const WebString&amp;);
&gt; +        void postFailure(const WebString&amp;);

Virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534051</commentid>
    <comment_count>4</comment_count>
      <attachid>122056</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-11 11:26:11 -0800</bug_when>
    <thetext>Created attachment 122056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534085</commentid>
    <comment_count>5</comment_count>
      <attachid>121951</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-11 11:50:43 -0800</bug_when>
    <thetext>Comment on attachment 121951
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:66
&gt;&gt; +        void postFailure(const WebString&amp;);
&gt; 
&gt; Virtual?

Yes. Botched this just before leaving last night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534205</commentid>
    <comment_count>6</comment_count>
      <attachid>122056</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-11 13:26:59 -0800</bug_when>
    <thetext>Comment on attachment 122056
Patch

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

I wonder if it would be better to use two separate objects in the interface, a WebIntent object and a WebIntentRequest object.  Each of them could wrap a RefPtr to the WebCore object, like we do for WebCore::Node.  That seems less error prone w.r.t. memory management.

(I&apos;m also happy to defer to fishd on these matters.)

&gt; Source/WebKit/chromium/public/WebIntent.h:65
&gt; +        ~WebIntentReplyBroker() { }

Should the destructor be virtual too?

&gt; Source/WebKit/chromium/public/WebIntent.h:76
&gt; +    explicit WebIntent(const WTF::PassRefPtr&lt;WebCore::IntentRequest&gt;&amp;);

Should we rename this interface to WebIntentRequest to match the WebCore object?  Maybe we should have a WebIntentRequest that has a WebIntent as a member to mirror the structure of the WebCore classes.

&gt; Source/WebKit/chromium/src/WebIntent.cpp:88
&gt; +    delete m_broker;

Do we not have an OwnPtr variant for the API?

&gt; Source/WebKit/chromium/src/WebIntent.cpp:133
&gt; -    m_identifier = identifier;
&gt; +    WebIntentReplyBroker* broker = m_broker;
&gt; +    m_broker = 0;
&gt; +    return broker;

I see.  This transfers ownership to the embedder.  I don&apos;t remember how we typically manage memory in the API.  I&apos;ll let fishd comment on that aspect.  From this design, it seems clear that WebIntentReplyBroker needs a virtual destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534214</commentid>
    <comment_count>7</comment_count>
      <attachid>122056</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-11 13:37:19 -0800</bug_when>
    <thetext>Comment on attachment 122056
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:65
&gt;&gt; +        ~WebIntentReplyBroker() { }
&gt; 
&gt; Should the destructor be virtual too?

yes

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:76
&gt;&gt; +    explicit WebIntent(const WTF::PassRefPtr&lt;WebCore::IntentRequest&gt;&amp;);
&gt; 
&gt; Should we rename this interface to WebIntentRequest to match the WebCore object?  Maybe we should have a WebIntentRequest that has a WebIntent as a member to mirror the structure of the WebCore classes.

Yeah, I re-used the WebIntent object because I&apos;d already created it while writing the chromium-side code. I agree it isn&apos;t the best name. Shall I make a new one now, or put it off to later?

&gt;&gt; Source/WebKit/chromium/src/WebIntent.cpp:88
&gt;&gt; +    delete m_broker;
&gt; 
&gt; Do we not have an OwnPtr variant for the API?

I looked at WebPrivatePtr and WebPrivateOwnPtr before doing this manually, but those are not really appropriate. WebPrivateOwnPtr is close, but it has to be manually cleared before exit anyway, and the semantics aren&apos;t right. &quot;WebOwnPtr&quot; is probably what we need. Is it worth it to make such a thing? I looked around, but didn&apos;t find a pattern elsewhere where we transfer object ownership up like this. There&apos;s a lot of classes, though. Is there one I should copy?

&gt;&gt; Source/WebKit/chromium/src/WebIntent.cpp:133
&gt;&gt; +    return broker;
&gt; 
&gt; I see.  This transfers ownership to the embedder.  I don&apos;t remember how we typically manage memory in the API.  I&apos;ll let fishd comment on that aspect.  From this design, it seems clear that WebIntentReplyBroker needs a virtual destructor.

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534222</commentid>
    <comment_count>8</comment_count>
      <attachid>122056</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-11 13:42:59 -0800</bug_when>
    <thetext>Comment on attachment 122056
Patch

As discussed over IM, please just use WebPrivatePtr to wrap WebCore::IntentRequest in a simple fashion.  See WebNode for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534284</commentid>
    <comment_count>9</comment_count>
      <attachid>122099</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-11 14:49:30 -0800</bug_when>
    <thetext>Created attachment 122099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534287</commentid>
    <comment_count>10</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-11 14:51:04 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 122056 [details])
&gt; As discussed over IM, please just use WebPrivatePtr to wrap WebCore::IntentRequest in a simple fashion.  See WebNode for example.

Yeah, this comes out nicely. I&apos;m just transferring ownership of the WebIntentRequest directly, not using any pass-through object wrapper as before. Does that look OK? Should I add code to delete this param in the empty impl of WebFrameClient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534297</commentid>
    <comment_count>11</comment_count>
      <attachid>122099</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-11 14:58:01 -0800</bug_when>
    <thetext>Comment on attachment 122099
Patch

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

&gt; Source/WebKit/chromium/public/WebIntentRequest.h:57
&gt; +    WEBKIT_EXPORT WebString action() const;
&gt; +
&gt; +    WEBKIT_EXPORT WebString type() const;
&gt; +
&gt; +    WEBKIT_EXPORT WebString data() const;

Do you want to expose these accessors on WebIntentRequest, or do you just want to expose an access for the WebIntent itself?

&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1636
&gt; +    m_webFrame-&gt;client()-&gt;dispatchIntent(webFrame(), new WebIntentRequest(intentRequest));

Do you want to use &quot;new&quot; here, or have it stack allocated?

&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:59
&gt; +    if (m_intentRequest.get() &amp;&amp; m_intentRequest-&gt;intent())

is m_intentRequest-&gt;intent() ever null?  It seems meaningless to have an intent request without an intent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534338</commentid>
    <comment_count>12</comment_count>
      <attachid>122099</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-11 15:37:12 -0800</bug_when>
    <thetext>Comment on attachment 122099
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebIntentRequest.h:57
&gt;&gt; +    WEBKIT_EXPORT WebString data() const;
&gt; 
&gt; Do you want to expose these accessors on WebIntentRequest, or do you just want to expose an access for the WebIntent itself?

I think it is easier to just use these. See http://codereview.chromium.org/9186021/ for the chromium-side code that uses this. This way I can remove the WebIntent object in a follow-on.

&gt;&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1636
&gt;&gt; +    m_webFrame-&gt;client()-&gt;dispatchIntent(webFrame(), new WebIntentRequest(intentRequest));
&gt; 
&gt; Do you want to use &quot;new&quot; here, or have it stack allocated?

I&apos;m passing ownership to the client. I think if I stack-allocate it I&apos;d have to make a copy in the client anyway. Is that preferable? It makes the stub WebFrameClient default code simpler, but to me it obscures that the callee is expected to take ownership of the object. I see WebNode ownership transfer happening in, i.e. WebDOMEvent, but it is using a mechanism similar to the one I had before, where there&apos;s an intermediary object you grab the reference from (but that&apos;s just because of the larger interface there, it seems).

&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:59
&gt;&gt; +    if (m_intentRequest.get() &amp;&amp; m_intentRequest-&gt;intent())
&gt; 
&gt; is m_intentRequest-&gt;intent() ever null?  It seems meaningless to have an intent request without an intent.

We discussed before that we may want to clear it out, since it might be heavy. That kind of makes this API state-dependent, which is awkward, but it may be preferable to carrying a large Intent object payload for a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535072</commentid>
    <comment_count>13</comment_count>
      <attachid>122099</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-12 12:37:04 -0800</bug_when>
    <thetext>Comment on attachment 122099
Patch

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

&gt; Source/WebKit/chromium/public/WebIntentRequest.h:51
&gt; +    ~WebIntentRequest();

remember, if you do not implement a method inline or behind a WEBKIT_IMPLEMENTATION guard, then it needs to be decorated with WEBKIT_EXPORT.  else the DLL build will fail to link.

&gt;&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:59
&gt;&gt;&gt; +    if (m_intentRequest.get() &amp;&amp; m_intentRequest-&gt;intent())
&gt;&gt; 
&gt;&gt; is m_intentRequest-&gt;intent() ever null?  It seems meaningless to have an intent request without an intent.
&gt; 
&gt; We discussed before that we may want to clear it out, since it might be heavy. That kind of makes this API state-dependent, which is awkward, but it may be preferable to carrying a large Intent object payload for a long time.

Sorry to create more work for you, but we really try to make the WebKit API just be a thin wrapper for WebCore.  You might as well expose WebIntent since it can easily wrap WebCore::Intent as that is also ref-counted.  This way as these objects grow, you don&apos;t have to have the WebKit API concepts differ from the WebCore concepts.  Past experience suggests that keeping these aligned helps.

&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:86
&gt; +void WebIntentRequest::postResult(const WebKit::WebString&amp; data)

nit: postResult and postFailure should take WebSerializedScriptValue.  this will help when you want to post more than just a string, which i&apos;m sure we will want to do.  it also will reduce the code for the WebKit layer, which is always a good thing.

&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:99
&gt; +    if (m_intentRequest.get())

it does not look possible to create a WebIntentRequest that has a null m_intentRequest.  why are you null checking?  just ASSERT or let it crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535157</commentid>
    <comment_count>14</comment_count>
      <attachid>122099</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-12 14:19:58 -0800</bug_when>
    <thetext>Comment on attachment 122099
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebIntentRequest.h:51
&gt;&gt; +    ~WebIntentRequest();
&gt; 
&gt; remember, if you do not implement a method inline or behind a WEBKIT_IMPLEMENTATION guard, then it needs to be decorated with WEBKIT_EXPORT.  else the DLL build will fail to link.

Moved the empty impl here inline

&gt;&gt;&gt; Source/WebKit/chromium/public/WebIntentRequest.h:57
&gt;&gt;&gt; +    WEBKIT_EXPORT WebString data() const;
&gt;&gt; 
&gt;&gt; Do you want to expose these accessors on WebIntentRequest, or do you just want to expose an access for the WebIntent itself?
&gt; 
&gt; I think it is easier to just use these. See http://codereview.chromium.org/9186021/ for the chromium-side code that uses this. This way I can remove the WebIntent object in a follow-on.

Followed Darin&apos;s advice and just put in the WebIntent object.

&gt;&gt;&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1636
&gt;&gt;&gt; +    m_webFrame-&gt;client()-&gt;dispatchIntent(webFrame(), new WebIntentRequest(intentRequest));
&gt;&gt; 
&gt;&gt; Do you want to use &quot;new&quot; here, or have it stack allocated?
&gt; 
&gt; I&apos;m passing ownership to the client. I think if I stack-allocate it I&apos;d have to make a copy in the client anyway. Is that preferable? It makes the stub WebFrameClient default code simpler, but to me it obscures that the callee is expected to take ownership of the object. I see WebNode ownership transfer happening in, i.e. WebDOMEvent, but it is using a mechanism similar to the one I had before, where there&apos;s an intermediary object you grab the reference from (but that&apos;s just because of the larger interface there, it seems).

Any view on this, Darin? Pass pointer or use a copy constructor?

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:59
&gt;&gt;&gt;&gt; +    if (m_intentRequest.get() &amp;&amp; m_intentRequest-&gt;intent())
&gt;&gt;&gt; 
&gt;&gt;&gt; is m_intentRequest-&gt;intent() ever null?  It seems meaningless to have an intent request without an intent.
&gt;&gt; 
&gt;&gt; We discussed before that we may want to clear it out, since it might be heavy. That kind of makes this API state-dependent, which is awkward, but it may be preferable to carrying a large Intent object payload for a long time.
&gt; 
&gt; Sorry to create more work for you, but we really try to make the WebKit API just be a thin wrapper for WebCore.  You might as well expose WebIntent since it can easily wrap WebCore::Intent as that is also ref-counted.  This way as these objects grow, you don&apos;t have to have the WebKit API concepts differ from the WebCore concepts.  Past experience suggests that keeping these aligned helps.

OK, switched to that.

&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:86
&gt;&gt; +void WebIntentRequest::postResult(const WebKit::WebString&amp; data)
&gt; 
&gt; nit: postResult and postFailure should take WebSerializedScriptValue.  this will help when you want to post more than just a string, which i&apos;m sure we will want to do.  it also will reduce the code for the WebKit layer, which is always a good thing.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:99
&gt;&gt; +    if (m_intentRequest.get())
&gt; 
&gt; it does not look possible to create a WebIntentRequest that has a null m_intentRequest.  why are you null checking?  just ASSERT or let it crash.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535158</commentid>
    <comment_count>15</comment_count>
      <attachid>122309</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-12 14:22:03 -0800</bug_when>
    <thetext>Created attachment 122309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535173</commentid>
    <comment_count>16</comment_count>
      <attachid>122309</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-12 14:35:02 -0800</bug_when>
    <thetext>Comment on attachment 122309
Patch

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

&gt; Source/WebKit/chromium/public/WebIntent.h:70
&gt; +#if WEBKIT_IMPLEMENTATION

Presumably we&apos;ll need this storage in this class even when WEBKIT_IMPLEMENTATION isn&apos;t defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535199</commentid>
    <comment_count>17</comment_count>
      <attachid>122309</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-12 14:56:23 -0800</bug_when>
    <thetext>Comment on attachment 122309
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:70
&gt;&gt; +#if WEBKIT_IMPLEMENTATION
&gt; 
&gt; Presumably we&apos;ll need this storage in this class even when WEBKIT_IMPLEMENTATION isn&apos;t defined.

I&apos;ve changed the impl to just directly use the fields in the wrapped type. Is this going to be impossible? That is, I can&apos;t use ENABLE(WEB_INTENTS) outside the WEBKIT_IMPLEMENTATION ifdef, since Chromium code doesn&apos;t know about it. But does that mean the linker is confused about what the methods will be doing internally? My mental image is that the webkit compile will create the object file, and the defines are to not let client code know about these implementation details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535749</commentid>
    <comment_count>18</comment_count>
      <attachid>122445</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-13 10:01:03 -0800</bug_when>
    <thetext>Created attachment 122445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535762</commentid>
    <comment_count>19</comment_count>
      <attachid>122445</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-13 10:14:57 -0800</bug_when>
    <thetext>Comment on attachment 122445
Patch

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

&gt; Source/WebKit/chromium/public/WebFrameClient.h:388
&gt; +    virtual void dispatchIntent(WebFrame*, WebIntentRequest*) { }

WebIntentRequest should be passed using |const Foo&amp;|.  the chromium code should
retain a WebIntentRequest by using the copy-constructor.  the only oddity about
this is that it strips the const, but that&apos;s the pattern we&apos;ve been following.
treat it like a RefPtr.

&gt; Source/WebKit/chromium/public/WebIntent.h:57
&gt; +    // FIXME(gbillock): delete this.

nit: WebKit style does not put names on FIXME comments like this.

&gt; Source/WebKit/chromium/public/WebIntent.h:62
&gt; +    WebIntent(const WebIntent&amp;);

why don&apos;t you want to allow the embedder to copy a WebIntent?  i think
you will have trouble using WebIntentRequest::intent() if you don&apos;t
make the copy-constructor available.

There&apos;s a pattern for writing classes like this.  For an example that
is simpler than WebNode, see WebUserMediaRequest.  You should have
the following methods generally speaking on classes that just wrap
a ref-counted WebCore type:

  default constructor
  copy constructor
  destructor
  operator=
  reset
  isNull
  assign

you can optionally add equals and operator== if needed.

treat this as boilerplate.  maybe we should have macros to make this
easier to replicate, but we&apos;ve so far favored the readability of not
using macros.

same deal for WebIntentRequest.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535845</commentid>
    <comment_count>20</comment_count>
      <attachid>122445</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-13 11:32:14 -0800</bug_when>
    <thetext>Comment on attachment 122445
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:388
&gt;&gt; +    virtual void dispatchIntent(WebFrame*, WebIntentRequest*) { }
&gt; 
&gt; WebIntentRequest should be passed using |const Foo&amp;|.  the chromium code should
&gt; retain a WebIntentRequest by using the copy-constructor.  the only oddity about
&gt; this is that it strips the const, but that&apos;s the pattern we&apos;ve been following.
&gt; treat it like a RefPtr.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:57
&gt;&gt; +    // FIXME(gbillock): delete this.
&gt; 
&gt; nit: WebKit style does not put names on FIXME comments like this.

Done

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:62
&gt;&gt; +    WebIntent(const WebIntent&amp;);
&gt; 
&gt; why don&apos;t you want to allow the embedder to copy a WebIntent?  i think
&gt; you will have trouble using WebIntentRequest::intent() if you don&apos;t
&gt; make the copy-constructor available.
&gt; 
&gt; There&apos;s a pattern for writing classes like this.  For an example that
&gt; is simpler than WebNode, see WebUserMediaRequest.  You should have
&gt; the following methods generally speaking on classes that just wrap
&gt; a ref-counted WebCore type:
&gt; 
&gt;   default constructor
&gt;   copy constructor
&gt;   destructor
&gt;   operator=
&gt;   reset
&gt;   isNull
&gt;   assign
&gt; 
&gt; you can optionally add equals and operator== if needed.
&gt; 
&gt; treat this as boilerplate.  maybe we should have macros to make this
&gt; easier to replicate, but we&apos;ve so far favored the readability of not
&gt; using macros.
&gt; 
&gt; same deal for WebIntentRequest.h

OK. I was trying to only implement the ones I needed, but if there&apos;s a macro-like consistency I&apos;ll do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535846</commentid>
    <comment_count>21</comment_count>
      <attachid>122474</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-13 11:33:06 -0800</bug_when>
    <thetext>Created attachment 122474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536117</commentid>
    <comment_count>22</comment_count>
      <attachid>122527</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-13 18:52:41 -0800</bug_when>
    <thetext>Created attachment 122527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537279</commentid>
    <comment_count>23</comment_count>
      <attachid>122797</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-17 12:17:07 -0800</bug_when>
    <thetext>Created attachment 122797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537398</commentid>
    <comment_count>24</comment_count>
      <attachid>122827</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-17 15:40:44 -0800</bug_when>
    <thetext>Created attachment 122827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538211</commentid>
    <comment_count>25</comment_count>
      <attachid>122827</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-18 15:02:04 -0800</bug_when>
    <thetext>Comment on attachment 122827
Patch

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

&gt; Source/WebKit/chromium/public/WebFrameClient.h:385
&gt; +    // the WebFrame starting the activity. The callee uses this object to

This comment is incorrect now, right?  &quot;Replies to this request should be sent to __the request object__.&quot;

&gt; Source/WebKit/chromium/public/WebFrameClient.h:387
&gt; +    // soon as possible when it is no longer needed.)

This parenthetical comment is perhaps a bit confusing since there is no way
to release a WebIntentRequest.

&gt; Source/WebKit/chromium/public/WebIntent.h:47
&gt; +    WebIntent();

constructors should be implemented inline.

&gt; Source/WebKit/chromium/public/WebIntent.h:48
&gt; +    WebIntent(const WebIntent&amp;);

this should just be an inline call to assign.

&gt; Source/WebKit/chromium/public/WebIntentRequest.h:50
&gt; +    WebIntentRequest();

implement constructors inline

&gt; Source/WebKit/chromium/public/WebIntentRequest.h:70
&gt; +#if ENABLE(WEB_INTENTS)

since you&apos;ve unconditionally declared WebCore::IntentRequest, it seems like this
function does not need to be protected by ENABLE(WEB_INTENTS).  in generaly, it&apos;d
be nice to avoid using ENABLE macros in public header files, even though this one
is protected by WEBKIT_IMPLEMENTATION.

&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1637
&gt; +    WebIntentRequest request(intentRequest);

nit: you should be able to delete this line and just pass intentRequest directly to dispatchIntent.  it should be implicitly converted to WebIntentRequest.

&gt; Source/WebKit/chromium/src/WebIntent.cpp:66
&gt; +#endif

nit: use #else here and elsewhere instead of relying on first return statement wins.

&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:109
&gt; +    RefPtr&lt;WebCore::SerializedScriptValue&gt; serializedValue = 

nit: we&apos;d normally write this like so:

  m_private-&gt;postFailure(PassRefPtr&lt;WebCore::SerializedScriptValue&gt;(data).get());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538328</commentid>
    <comment_count>26</comment_count>
      <attachid>122827</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-18 16:49:28 -0800</bug_when>
    <thetext>Comment on attachment 122827
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:385
&gt;&gt; +    // the WebFrame starting the activity. The callee uses this object to
&gt; 
&gt; This comment is incorrect now, right?  &quot;Replies to this request should be sent to __the request object__.&quot;

Fixed up now. Took out the bad information and condensed.

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:387
&gt;&gt; +    // soon as possible when it is no longer needed.)
&gt; 
&gt; This parenthetical comment is perhaps a bit confusing since there is no way
&gt; to release a WebIntentRequest.

Removed.

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:47
&gt;&gt; +    WebIntent();
&gt; 
&gt; constructors should be implemented inline.

Done. I moved these to the .cc file while I had the ifdefs around the m_private member to make sure they got created in the webkit code. That whole thing was a bad idea, though, now fixed up.

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:48
&gt;&gt; +    WebIntent(const WebIntent&amp;);
&gt; 
&gt; this should just be an inline call to assign.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebIntentRequest.h:50
&gt;&gt; +    WebIntentRequest();
&gt; 
&gt; implement constructors inline

Done (ditto).

&gt;&gt; Source/WebKit/chromium/public/WebIntentRequest.h:70
&gt;&gt; +#if ENABLE(WEB_INTENTS)
&gt; 
&gt; since you&apos;ve unconditionally declared WebCore::IntentRequest, it seems like this
&gt; function does not need to be protected by ENABLE(WEB_INTENTS).  in generaly, it&apos;d
&gt; be nice to avoid using ENABLE macros in public header files, even though this one
&gt; is protected by WEBKIT_IMPLEMENTATION.

Agreed. Removed this.

&gt;&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1637
&gt;&gt; +    WebIntentRequest request(intentRequest);
&gt; 
&gt; nit: you should be able to delete this line and just pass intentRequest directly to dispatchIntent.  it should be implicitly converted to WebIntentRequest.

That constructor is marked explicit, so I need to make the temporary. It looks to me like those constructors are typically not marked explicit in the chromium API. Shall I change them?

&gt;&gt; Source/WebKit/chromium/src/WebIntent.cpp:66
&gt;&gt; +#endif
&gt; 
&gt; nit: use #else here and elsewhere instead of relying on first return statement wins.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:109
&gt;&gt; +    RefPtr&lt;WebCore::SerializedScriptValue&gt; serializedValue = 
&gt; 
&gt; nit: we&apos;d normally write this like so:
&gt; 
&gt;   m_private-&gt;postFailure(PassRefPtr&lt;WebCore::SerializedScriptValue&gt;(data).get());

Done here and above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538330</commentid>
    <comment_count>27</comment_count>
      <attachid>123038</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-18 16:50:13 -0800</bug_when>
    <thetext>Created attachment 123038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538460</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-18 21:33:03 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt;&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1637
&gt; &gt;&gt; +    WebIntentRequest request(intentRequest);
&gt; &gt; 
&gt; &gt; nit: you should be able to delete this line and just pass intentRequest directly to dispatchIntent.  it should be implicitly converted to WebIntentRequest.
&gt; 
&gt; That constructor is marked explicit, so I need to make the temporary. It looks to me like those constructors are typically not marked explicit in the chromium API. Shall I change them?

Ah, you should not mark that WebIntentRequest constructor explicit.  The point is to benefit from implicit conversion where you are just converting between like types.  A WebIntentRequest is really just a RefPtr&lt;IntentRequest&gt;, and implicit conversion between those should not be something a developer really needs to think about.  We&apos;ve preferred less verbosity when crossing the API boundary in other words!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538703</commentid>
    <comment_count>29</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-19 07:51:02 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #26)
&gt; &gt; &gt;&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1637
&gt; &gt; &gt;&gt; +    WebIntentRequest request(intentRequest);
&gt; &gt; &gt; 
&gt; &gt; &gt; nit: you should be able to delete this line and just pass intentRequest directly to dispatchIntent.  it should be implicitly converted to WebIntentRequest.
&gt; &gt; 
&gt; &gt; That constructor is marked explicit, so I need to make the temporary. It looks to me like those constructors are typically not marked explicit in the chromium API. Shall I change them?
&gt; 
&gt; Ah, you should not mark that WebIntentRequest constructor explicit.  The point is to benefit from implicit conversion where you are just converting between like types.  A WebIntentRequest is really just a RefPtr&lt;IntentRequest&gt;, and implicit conversion between those should not be something a developer really needs to think about.  We&apos;ve preferred less verbosity when crossing the API boundary in other words!

Sounds good. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538706</commentid>
    <comment_count>30</comment_count>
      <attachid>123127</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-19 07:54:02 -0800</bug_when>
    <thetext>Created attachment 123127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539014</commentid>
    <comment_count>31</comment_count>
      <attachid>123127</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-19 14:02:39 -0800</bug_when>
    <thetext>Comment on attachment 123127
Patch

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

&gt; Source/WebKit/chromium/public/WebIntent.h:58
&gt; +    WEBKIT_EXPORT bool equals(const WebIntent&amp;);

nit: I think equals should be a const method.

&gt; Source/WebKit/chromium/public/WebIntentRequest.h:61
&gt; +    WEBKIT_EXPORT bool equals(const WebIntentRequest&amp;);

nit: equals should be const

&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:93
&gt; +//    RefPtr&lt;WebCore::SerializedScriptValue&gt; serializedValue = 

nit: delete commented out code

&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:104
&gt; +//        (PassRefPtr&lt;WebCore::SerializedScriptValue&gt;)data;

nit: delete commented out code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539018</commentid>
    <comment_count>32</comment_count>
      <attachid>123127</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-19 14:07:22 -0800</bug_when>
    <thetext>Comment on attachment 123127
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebIntent.h:58
&gt;&gt; +    WEBKIT_EXPORT bool equals(const WebIntent&amp;);
&gt; 
&gt; nit: I think equals should be a const method.

Done

&gt;&gt; Source/WebKit/chromium/public/WebIntentRequest.h:61
&gt;&gt; +    WEBKIT_EXPORT bool equals(const WebIntentRequest&amp;);
&gt; 
&gt; nit: equals should be const

Done

&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:93
&gt;&gt; +//    RefPtr&lt;WebCore::SerializedScriptValue&gt; serializedValue = 
&gt; 
&gt; nit: delete commented out code

Done

&gt;&gt; Source/WebKit/chromium/src/WebIntentRequest.cpp:104
&gt;&gt; +//        (PassRefPtr&lt;WebCore::SerializedScriptValue&gt;)data;
&gt; 
&gt; nit: delete commented out code

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539032</commentid>
    <comment_count>33</comment_count>
      <attachid>123196</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-19 14:20:31 -0800</bug_when>
    <thetext>Created attachment 123196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539202</commentid>
    <comment_count>34</comment_count>
      <attachid>123196</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 18:04:02 -0800</bug_when>
    <thetext>Comment on attachment 123196
Patch

Clearing flags on attachment: 123196

Committed r105469: &lt;http://trac.webkit.org/changeset/105469&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539203</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 18:04:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121951</attachid>
            <date>2012-01-10 17:43:39 -0800</date>
            <delta_ts>2012-01-11 11:50:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120110174338.patch</filename>
            <type>text/plain</type>
            <size>8951</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGYwZTQyMDE1MTNhYjllNTVkMGU3NTJhZTA4MDg3ZTY1MDIyYmQyMGYuLjZmODJjNzYwMGFiMGQ4
ZDU1NDBjNjgyZjYxZTVkNWI2YTgxYWUzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNw
YXRjaEludGVudCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJJbnRlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnQ6Oldl
YkludGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudDo6fldlYkludGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkludGVudDo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50
ZW50Ojp0eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50OjpkYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW50ZW50OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50
ZW50Ojp0YWtlUmVwbHlCcm9rZXIpOgorCiAyMDEyLTAxLTA5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyBmcm9tIDExNjQ1OSB0
byAxMTY5NzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGll
bnQuaAppbmRleCA5NGFiZTgzZmIwYTgyMTg2OGIwMGMyOTlmYWQxNzUyZWQ2MzA0N2VhLi4yZjg0
Zjk3ZGNmYWQzMTRiMjY0ZGNlYzQ0NmIxYmVhYzU1ZWUwYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTM4NCw4ICszODQsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2UoV2ViRnJhbWUq
LCBjb25zdCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyYpIHsgfQogCiAgICAgLy8gU3RhcnQgYSBXZWIg
SW50ZW50cyBhY3Rpdml0eS4gUmVwbGllcyB0byB0aGlzIHJlcXVlc3Qgc2hvdWxkIGJlIHNlbnQg
dG8KLSAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2aXR5LgotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIGNvbnN0IFdlYkludGVudCYpIHsgfQor
ICAgIC8vIHRoZSBXZWJGcmFtZSBzdGFydGluZyB0aGUgYWN0aXZpdHkuIFRoZSBjYWxsZWUgc2hv
dWxkIG5vdCB0YWtlIG93bmVyc2hpcAorICAgIC8vIG9mIHRoaXMgb2JqZWN0IG9yIGFzc3VtZSBp
dCBoYXMgc2NvcGUgcGFzdCB0aGlzIGNhbGwuIEl0IGlzIG11dGFibGUKKyAgICAvLyBiZWNhdXNl
IHRoZSBjYWxsZWUgbWF5IHdpc2ggdG8gdGFrZSBvd25lcnNoaXAgb2YgdGhlIHJlcGx5IGJyb2tl
cgorICAgIC8vIG9iamVjdCAoV2ViSW50ZW50Ojp0YWtlUmVwbHlCcm9rZXIpLgorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIFdlYkludGVudCopIHsgfQogCiAgICAg
Ly8gTWVzc2FnZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkludGVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKaW5k
ZXggNGNlMDM0MmI3ODdiYjEyNWMxMjI3ZWQyY2ZlNjQxZGUyMTNkNjFjNC4uOGE5ZmRhOTJjNGM4
NjRmYTBlMGYyYzZiMDlhNjU4ZWY0YjU4Yjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSW50ZW50LmgKQEAgLTMyLDggKzMyLDE2IEBACiAjZGVmaW5lIFdlYkludGVudF9o
CiAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJQcml2YXRlUHRyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAKKworI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK25hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50UmVxdWVzdDsgfQorI2VuZGlmCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIC8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIgSW50
ZW50cyBpbnZvY2F0aW9uIGNhbGwgZnJvbSB0aGUgSmF2YXNjcmlwdApAQCAtNDEsMjkgKzQ5LDM3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1
bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKIGNsYXNzIFdl
YkludGVudCB7CiBwdWJsaWM6Ci0gICAgfldlYkludGVudCgpIHsgfQorICAgIH5XZWJJbnRlbnQo
KTsKKwogCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgYWN0aW9uKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEFjdGlvbihjb25zdCBXZWJTdHJpbmcmKTsKIAogICAgIFdF
QktJVF9FWFBPUlQgV2ViU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0VHlwZShjb25zdCBXZWJTdHJpbmcmKTsKIAogICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIGRhdGEoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGF0YShjb25zdCBX
ZWJTdHJpbmcmKTsKIAogICAgIFdFQktJVF9FWFBPUlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRlbnRpZmllcihpbnQpOwogCisgICAgY2xhc3Mg
V2ViSW50ZW50UmVwbHlCcm9rZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBwb3N0UmVz
dWx0KGNvbnN0IFdlYlN0cmluZyYpOworICAgICAgICB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdl
YlN0cmluZyYpOworICAgIH07CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkludGVudFJlcGx5QnJv
a2VyKiB0YWtlUmVwbHlCcm9rZXIoKTsKKyAgICAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
ICAgICBXZWJJbnRlbnQoKTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgZXhwbGljaXQg
V2ViSW50ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYp
OworI2VuZGlmCiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBXZWJTdHJpbmcgbV9hY3Rpb247CiAg
ICAgV2ViU3RyaW5nIG1fdHlwZTsKICAgICBXZWJTdHJpbmcgbV9kYXRhOwotICAgIGludCBtX2lk
ZW50aWZpZXI7CisgICAgV2ViSW50ZW50UmVwbHlCcm9rZXIqIG1fYnJva2VyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA0NmY5NmI1MDhlNzk2MDA3MDkxODkwYmI0
ZjVlYmM2MWRhOTg5ODgxLi4zYzE2NTVmZWE1MWMyZDg2MjQzODU0M2Q0ODc1ZDZkYmFiYzdiYmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgi
CisjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
TWltZVJlZ2lzdHJ5LmgiCkBAIC0xNjI5LDQgKzE2MzAsMTIgQEAgYm9vbCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAgICAgICBtX3dl
YkZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbih0YXJnZXQpLCBXZWJET01NZXNzYWdlRXZlbnQoZXZl
bnQpKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+
IGludGVudFJlcXVlc3QpCit7CisgICAgV2ViSW50ZW50IHdlYkludGVudChpbnRlbnRSZXF1ZXN0
KTsKKyAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlzcGF0Y2hJbnRlbnQod2ViRnJhbWUoKSwg
JndlYkludGVudCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4
IGIxYjg1YmEzNTg3YjI2MWE1Yjg5OWJiY2Y4NjY2YWRhMWJmM2M3MDIuLjBiZjkzNWQ2ZGQ5ODA4
OTI3ODUwNGY3N2UzZTk4ZmRkZjJlYWRjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCkBAIC0yMDgsNiArMjA4LDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29u
dGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbENo
ZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRhcmdl
dCwgV2ViQ29yZTo6TWVzc2FnZUV2ZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6
SW50ZW50UmVxdWVzdD4pIE9WRVJSSURFOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBt
YWtlRG9jdW1lbnRWaWV3KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQu
Y3BwCmluZGV4IDEzNTQwZTE2MjFiOGEzYWZlYzgxYmE5NGVhMDliZGZmMTBiOWVjZTMuLjMxODhl
MjNlYTU2MzE0MDEwNmZhZjc4MmE1ODEwNTQzMjYwZjI0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW50ZW50LmNwcApAQCAtMzEsNDggKzMxLDEwNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkludGVudC5oIgogCisjaW5jbHVkZSAiSW50ZW50LmgiCisj
aW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorbmFtZXNwYWNlIHsKKworY2xhc3MgV2ViSW50ZW50UmVwbHlCcm9rZXJJbXBsIDogcHVibGlj
IFdlYktpdDo6V2ViSW50ZW50OjpXZWJJbnRlbnRSZXBseUJyb2tlciB7CitwdWJsaWM6CisgICAg
V2ViSW50ZW50UmVwbHlCcm9rZXJJbXBsKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50
UmVxdWVzdD4mIGludGVudFJlcXVlc3QpCisgICAgICAgIDogbV9pbnRlbnRSZXF1ZXN0KGludGVu
dFJlcXVlc3QpCisgICAgeworICAgIH0KKworICAgIH5XZWJJbnRlbnRSZXBseUJyb2tlckltcGwo
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHBvc3RSZXN1bHQoY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmIGRhdGEpCisgICAgeworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZUZyb21XaXJlKGRhdGEpOworICAgICAgICBtX2ludGVudFJlcXVlc3QtPnBvc3RS
ZXN1bHQoc2VyaWFsaXplZFZhbHVlLmdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHBvc3RGYWls
dXJlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkYXRhKQorICAgIHsKKyAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShkYXRhKTsKKyAgICAgICAg
bV9pbnRlbnRSZXF1ZXN0LT5wb3N0RmFpbHVyZShzZXJpYWxpemVkVmFsdWUuZ2V0KCkpOworICAg
IH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBtX2ludGVudFJlcXVlc3Q7
Cit9OworCit9CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkludGVudDo6V2Vi
SW50ZW50KCkgeyB9CiAKLVdlYlN0cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorV2ViSW50ZW50OjpXZWJJbnRlbnQoY29uc3QgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYgaW50ZW50UmVxdWVzdCkKKyAgICA6IG1fYWN0aW9u
KGludGVudFJlcXVlc3QtPmludGVudCgpLT5hY3Rpb24oKSkKKyAgICAsIG1fdHlwZShpbnRlbnRS
ZXF1ZXN0LT5pbnRlbnQoKS0+dHlwZSgpKQorICAgICwgbV9kYXRhKGludGVudFJlcXVlc3QtPmlu
dGVudCgpLT5kYXRhKCktPnRvV2lyZVN0cmluZygpKQorICAgICwgbV9icm9rZXIobmV3IFdlYklu
dGVudFJlcGx5QnJva2VySW1wbChpbnRlbnRSZXF1ZXN0KSkKIHsKLSAgICByZXR1cm4gbV9hY3Rp
b247CiB9CisjZW5kaWYKIAotdm9pZCBXZWJJbnRlbnQ6OnNldEFjdGlvbihjb25zdCBXZWJTdHJp
bmcmIGFjdGlvbikKK1dlYkludGVudDo6fldlYkludGVudCgpCiB7Ci0gICAgbV9hY3Rpb24gPSBh
Y3Rpb247CisgICAgZGVsZXRlIG1fYnJva2VyOwogfQogCi1XZWJTdHJpbmcgV2ViSW50ZW50Ojp0
eXBlKCkgY29uc3QKK1dlYlN0cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdHlwZTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgaWYgKG1fYnJva2Vy
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViSW50ZW50UmVwbHlCcm9rZXJJbXBsKj4o
bV9icm9rZXIpLT4KKyAgICAgICAgICAgIG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCktPmFjdGlv
bigpOworI2VuZGlmCisKKyAgICByZXR1cm4gbV9hY3Rpb247CiB9CiAKLXZvaWQgV2ViSW50ZW50
OjpzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYgdHlwZSkKK1dlYlN0cmluZyBXZWJJbnRlbnQ6OnR5
cGUoKSBjb25zdAogewotICAgIG1fdHlwZSA9IHR5cGU7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIGlmIChtX2Jyb2tlcikKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkludGVu
dFJlcGx5QnJva2VySW1wbCo+KG1fYnJva2VyKS0+CisgICAgICAgICAgICBtX2ludGVudFJlcXVl
c3QtPmludGVudCgpLT5hY3Rpb24oKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG1fdHlwZTsKIH0K
IAogV2ViU3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0
YTsKLX0KKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgaWYgKG1fYnJva2VyKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViSW50ZW50UmVwbHlCcm9rZXJJbXBsKj4obV9icm9rZXIp
LT4KKyAgICAgICAgICAgIG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCktPmRhdGEoKS0+dG9XaXJl
U3RyaW5nKCk7CisjZW5kaWYKIAotdm9pZCBXZWJJbnRlbnQ6OnNldERhdGEoY29uc3QgV2ViU3Ry
aW5nJiBkYXRhKQotewotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YTsKIH0K
IAogaW50IFdlYkludGVudDo6aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faWRl
bnRpZmllcjsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJJbnRlbnQ6OnNldElkZW50aWZp
ZXIoaW50IGlkZW50aWZpZXIpCitXZWJJbnRlbnQ6OldlYkludGVudFJlcGx5QnJva2VyKiBXZWJJ
bnRlbnQ6OnRha2VSZXBseUJyb2tlcigpCiB7Ci0gICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmll
cjsKKyAgICBXZWJJbnRlbnRSZXBseUJyb2tlciogYnJva2VyID0gbV9icm9rZXI7CisgICAgbV9i
cm9rZXIgPSAwOworICAgIHJldHVybiBicm9rZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122056</attachid>
            <date>2012-01-11 11:26:11 -0800</date>
            <delta_ts>2012-01-11 14:49:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120111112610.patch</filename>
            <type>text/plain</type>
            <size>9044</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGYwZTQyMDE1MTNhYjllNTVkMGU3NTJhZTA4MDg3ZTY1MDIyYmQyMGYuLjZmODJjNzYwMGFiMGQ4
ZDU1NDBjNjgyZjYxZTVkNWI2YTgxYWUzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNw
YXRjaEludGVudCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJJbnRlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnQ6Oldl
YkludGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudDo6fldlYkludGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkludGVudDo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50
ZW50Ojp0eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50OjpkYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW50ZW50OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50
ZW50Ojp0YWtlUmVwbHlCcm9rZXIpOgorCiAyMDEyLTAxLTA5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyBmcm9tIDExNjQ1OSB0
byAxMTY5NzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGll
bnQuaAppbmRleCA5NGFiZTgzZmIwYTgyMTg2OGIwMGMyOTlmYWQxNzUyZWQ2MzA0N2VhLi4yZjg0
Zjk3ZGNmYWQzMTRiMjY0ZGNlYzQ0NmIxYmVhYzU1ZWUwYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTM4NCw4ICszODQsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2UoV2ViRnJhbWUq
LCBjb25zdCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyYpIHsgfQogCiAgICAgLy8gU3RhcnQgYSBXZWIg
SW50ZW50cyBhY3Rpdml0eS4gUmVwbGllcyB0byB0aGlzIHJlcXVlc3Qgc2hvdWxkIGJlIHNlbnQg
dG8KLSAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2aXR5LgotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIGNvbnN0IFdlYkludGVudCYpIHsgfQor
ICAgIC8vIHRoZSBXZWJGcmFtZSBzdGFydGluZyB0aGUgYWN0aXZpdHkuIFRoZSBjYWxsZWUgc2hv
dWxkIG5vdCB0YWtlIG93bmVyc2hpcAorICAgIC8vIG9mIHRoaXMgb2JqZWN0IG9yIGFzc3VtZSBp
dCBoYXMgc2NvcGUgcGFzdCB0aGlzIGNhbGwuIEl0IGlzIG11dGFibGUKKyAgICAvLyBiZWNhdXNl
IHRoZSBjYWxsZWUgbWF5IHdpc2ggdG8gdGFrZSBvd25lcnNoaXAgb2YgdGhlIHJlcGx5IGJyb2tl
cgorICAgIC8vIG9iamVjdCAoV2ViSW50ZW50Ojp0YWtlUmVwbHlCcm9rZXIpLgorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIFdlYkludGVudCopIHsgfQogCiAgICAg
Ly8gTWVzc2FnZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkludGVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKaW5k
ZXggNGNlMDM0MmI3ODdiYjEyNWMxMjI3ZWQyY2ZlNjQxZGUyMTNkNjFjNC4uYjgwOWUzMTNmZGI2
ZmRjOTk4YjQ3ZTEyY2FjZjlhZTFjMzgxOGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSW50ZW50LmgKQEAgLTMyLDggKzMyLDE2IEBACiAjZGVmaW5lIFdlYkludGVudF9o
CiAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJQcml2YXRlUHRyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAKKworI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK25hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50UmVxdWVzdDsgfQorI2VuZGlmCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIC8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIgSW50
ZW50cyBpbnZvY2F0aW9uIGNhbGwgZnJvbSB0aGUgSmF2YXNjcmlwdApAQCAtNDEsMjkgKzQ5LDM5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1
bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKIGNsYXNzIFdl
YkludGVudCB7CiBwdWJsaWM6Ci0gICAgfldlYkludGVudCgpIHsgfQorICAgIH5XZWJJbnRlbnQo
KTsKKwogCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgYWN0aW9uKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEFjdGlvbihjb25zdCBXZWJTdHJpbmcmKTsKIAogICAgIFdF
QktJVF9FWFBPUlQgV2ViU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0VHlwZShjb25zdCBXZWJTdHJpbmcmKTsKIAogICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIGRhdGEoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGF0YShjb25zdCBX
ZWJTdHJpbmcmKTsKIAogICAgIFdFQktJVF9FWFBPUlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRlbnRpZmllcihpbnQpOworCisgICAgY2xhc3Mg
V2ViSW50ZW50UmVwbHlCcm9rZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgfldlYkludGVudFJl
cGx5QnJva2VyKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RSZXN1bHQoY29uc3Qg
V2ViU3RyaW5nJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEZhaWx1cmUoY29uc3Qg
V2ViU3RyaW5nJikgPSAwOworICAgIH07CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkludGVudFJl
cGx5QnJva2VyKiB0YWtlUmVwbHlCcm9rZXIoKTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgogICAgIFdlYkludGVudCgpOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBleHBsaWNp
dCBXZWJJbnRlbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+
Jik7CisjZW5kaWYKICNlbmRpZgogCiBwcml2YXRlOgogICAgIFdlYlN0cmluZyBtX2FjdGlvbjsK
ICAgICBXZWJTdHJpbmcgbV90eXBlOwogICAgIFdlYlN0cmluZyBtX2RhdGE7Ci0gICAgaW50IG1f
aWRlbnRpZmllcjsKKyAgICBXZWJJbnRlbnRSZXBseUJyb2tlciogbV9icm9rZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IDQ2Zjk2YjUwOGU3OTYwMDcwOTE4OTBi
YjRmNWViYzYxZGE5ODk4ODEuLjNjMTY1NWZlYTUxYzJkODYyNDM4NTQzZDQ4NzVkNmRiYWJjN2Ji
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwu
aCIKKyNpbmNsdWRlICJXZWJJbnRlbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJNaW1lUmVnaXN0cnkuaCIKQEAgLTE2MjksNCArMTYzMCwxMiBAQCBib29sIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoCiAgICAgICAgIG1f
d2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKHRhcmdldCksIFdlYkRPTU1lc3NhZ2VFdmVudChl
dmVudCkpOwogfQogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVz
dD4gaW50ZW50UmVxdWVzdCkKK3sKKyAgICBXZWJJbnRlbnQgd2ViSW50ZW50KGludGVudFJlcXVl
c3QpOworICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaXNwYXRjaEludGVudCh3ZWJGcmFtZSgp
LCAmd2ViSW50ZW50KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5k
ZXggYjFiODViYTM1ODdiMjYxYTViODk5YmJjZjg2NjZhZGExYmYzYzcwMi4uMGJmOTM1ZDZkZDk4
MDg5Mjc4NTA0Zjc3ZTNlOThmZGRmMmVhZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwOCw2ICsyMDgsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdD
b250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCB3aWxs
Q2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdGFy
Z2V0LCBXZWJDb3JlOjpNZXNzYWdlRXZlbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJbnRlbnRSZXF1ZXN0PikgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lk
IG1ha2VEb2N1bWVudFZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVu
dC5jcHAKaW5kZXggMTM1NDBlMTYyMWI4YTNhZmVjODFiYTk0ZWEwOWJkZmYxMGI5ZWNlMy4uM2Zh
MDA0NWIxZmQ0MzFmMDQwZmQxYTA2MmM1YTRiZmI0NmViZjdhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMSw0OCArMzEsMTA2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAKKyNpbmNsdWRlICJJbnRlbnQuaCIK
KyNpbmNsdWRlICJJbnRlbnRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJJbnRlbnRSZXBseUJyb2tlckltcGwgOiBwdWJs
aWMgV2ViS2l0OjpXZWJJbnRlbnQ6OldlYkludGVudFJlcGx5QnJva2VyIHsKK3B1YmxpYzoKKyAg
ICBXZWJJbnRlbnRSZXBseUJyb2tlckltcGwoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0PiYgaW50ZW50UmVxdWVzdCkKKyAgICAgICAgOiBtX2ludGVudFJlcXVlc3QoaW50
ZW50UmVxdWVzdCkKKyAgICB7CisgICAgfQorCisgICAgfldlYkludGVudFJlcGx5QnJva2VySW1w
bCgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwb3N0UmVzdWx0KGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBkYXRhKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShkYXRhKTsKKyAgICAgICAgbV9p
bnRlbnRSZXF1ZXN0LT5wb3N0UmVzdWx0KHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBk
YXRhKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZShkYXRhKTsKKyAgICAgICAgbV9pbnRlbnRSZXF1ZXN0LT5wb3N0
RmFpbHVyZShzZXJpYWxpemVkVmFsdWUuZ2V0KCkpOworICAgIH0KKworICAgIFJlZlB0cjxXZWJD
b3JlOjpJbnRlbnRSZXF1ZXN0PiBtX2ludGVudFJlcXVlc3Q7Cit9OworCit9CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkludGVudDo6V2ViSW50ZW50KCkgeyB9CiAKLVdlYlN0
cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
V2ViSW50ZW50OjpXZWJJbnRlbnQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1
ZXN0PiYgaW50ZW50UmVxdWVzdCkKKyAgICA6IG1fYWN0aW9uKGludGVudFJlcXVlc3QtPmludGVu
dCgpLT5hY3Rpb24oKSkKKyAgICAsIG1fdHlwZShpbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKS0+dHlw
ZSgpKQorICAgICwgbV9kYXRhKGludGVudFJlcXVlc3QtPmludGVudCgpLT5kYXRhKCktPnRvV2ly
ZVN0cmluZygpKQorICAgICwgbV9icm9rZXIobmV3IFdlYkludGVudFJlcGx5QnJva2VySW1wbChp
bnRlbnRSZXF1ZXN0KSkKIHsKLSAgICByZXR1cm4gbV9hY3Rpb247CiB9CisjZW5kaWYKIAotdm9p
ZCBXZWJJbnRlbnQ6OnNldEFjdGlvbihjb25zdCBXZWJTdHJpbmcmIGFjdGlvbikKK1dlYkludGVu
dDo6fldlYkludGVudCgpCiB7Ci0gICAgbV9hY3Rpb24gPSBhY3Rpb247CisgICAgZGVsZXRlIG1f
YnJva2VyOwogfQogCi1XZWJTdHJpbmcgV2ViSW50ZW50Ojp0eXBlKCkgY29uc3QKK1dlYlN0cmlu
ZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZTsKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisgICAgaWYgKG1fYnJva2VyKQorICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViSW50ZW50UmVwbHlCcm9rZXJJbXBsKj4obV9icm9rZXIpLT4KKyAgICAgICAg
ICAgIG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCktPmFjdGlvbigpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gbV9hY3Rpb247CiB9CiAKLXZvaWQgV2ViSW50ZW50OjpzZXRUeXBlKGNvbnN0IFdlYlN0
cmluZyYgdHlwZSkKK1dlYlN0cmluZyBXZWJJbnRlbnQ6OnR5cGUoKSBjb25zdAogewotICAgIG1f
dHlwZSA9IHR5cGU7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGlmIChtX2Jyb2tlcikK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkludGVudFJlcGx5QnJva2VySW1wbCo+KG1f
YnJva2VyKS0+CisgICAgICAgICAgICBtX2ludGVudFJlcXVlc3QtPmludGVudCgpLT5hY3Rpb24o
KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG1fdHlwZTsKIH0KIAogV2ViU3RyaW5nIFdlYkludGVu
dDo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YTsKLX0KKyNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCisgICAgaWYgKG1fYnJva2VyKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViSW50ZW50UmVwbHlCcm9rZXJJbXBsKj4obV9icm9rZXIpLT4KKyAgICAgICAgICAgIG1faW50
ZW50UmVxdWVzdC0+aW50ZW50KCktPmRhdGEoKS0+dG9XaXJlU3RyaW5nKCk7CisjZW5kaWYKIAot
dm9pZCBXZWJJbnRlbnQ6OnNldERhdGEoY29uc3QgV2ViU3RyaW5nJiBkYXRhKQotewotICAgIG1f
ZGF0YSA9IGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YTsKIH0KIAogaW50IFdlYkludGVudDo6aWRl
bnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBXZWJJbnRlbnQ6OnNldElkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCitX
ZWJJbnRlbnQ6OldlYkludGVudFJlcGx5QnJva2VyKiBXZWJJbnRlbnQ6OnRha2VSZXBseUJyb2tl
cigpCiB7Ci0gICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBXZWJJbnRlbnRSZXBs
eUJyb2tlciogYnJva2VyID0gbV9icm9rZXI7CisgICAgbV9icm9rZXIgPSAwOworICAgIHJldHVy
biBicm9rZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122099</attachid>
            <date>2012-01-11 14:49:30 -0800</date>
            <delta_ts>2012-01-12 14:22:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120111144929.patch</filename>
            <type>text/plain</type>
            <size>11481</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGYwZTQyMDE1MTNhYjllNTVkMGU3NTJhZTA4MDg3ZTY1MDIyYmQyMGYuLmVkY2Q1ZWRjNTQ0ZDIx
Mzc5M2ViZmQ2ZjI4NTgzMzczMWUyNDA5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoSW50ZW50KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkludGVudFJlcXVlc3QuY3BwOiBBZGRlZC4KKwog
MjAxMi0wMS0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
b2xsIENocm9taXVtIERFUFMgZnJvbSAxMTY0NTkgdG8gMTE2OTc5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCmluZGV4IGEyNDE5NzhkMjVhOWUxYmI2MWY2ZjBmN2I5ZTQ2YTVmMTIxY2UwMGEu
LjkxMTQwZWMyOGMyYjQzMzhmZTczMTlmMTg3ZDAzNDc3MjlhYzM0MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKQEAgLTE4Nyw2ICsxODcsNyBAQAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSW5wdXRFbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW5wdXRF
dmVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkludGVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkludGVudFJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YktpdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkxhYmVsRWxlbWVudC5oJywKQEAg
LTU3OSw2ICs1ODAsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW50ZW50LmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJ
bnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViS2l0LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IDk0YWJlODNmYjBh
ODIxODY4YjAwYzI5OWZhZDE3NTJlZDYzMDQ3ZWEuLmU2YmM2ZDUwMjg1OWE3YTgyNWYyYTBkYzhj
MmVmNTdhYjEyMTFmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaApAQCAtNTUsOCArNTUsOCBAQCBjbGFzcyBXZWJEYXRhU291cmNlOwogY2xh
c3MgV2ViRE9NRXZlbnQ7CiBjbGFzcyBXZWJGb3JtRWxlbWVudDsKIGNsYXNzIFdlYkZyYW1lOwor
Y2xhc3MgV2ViSW50ZW50UmVxdWVzdDsKIGNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwotY2xh
c3MgV2ViSW50ZW50OwogY2xhc3MgV2ViTWVkaWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXll
ckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBAIC0zODQsOCArMzg0LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKFdlYkZyYW1lKiwgY29uc3QgV2Vi
SW50ZW50U2VydmljZUluZm8mKSB7IH0KIAogICAgIC8vIFN0YXJ0IGEgV2ViIEludGVudHMgYWN0
aXZpdHkuIFJlcGxpZXMgdG8gdGhpcyByZXF1ZXN0IHNob3VsZCBiZSBzZW50IHRvCi0gICAgLy8g
dGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnQmKSB7IH0KKyAgICAvLyB0aGUg
V2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2aXR5LiBUaGUgY2FsbGVlIHRha2VzIG93bmVyc2hp
cAorICAgIC8vIG9mIHRoaXMgb2JqZWN0IGFuZCBjYW4gdXNlIGl0IHRvIGNvb3JkaW5hdGUgcmVw
bGllcyB0byB0aGUgaW50ZW50CisgICAgLy8gaW52b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBXZWJJbnRlbnRSZXF1ZXN0KikgeyB9CiAKICAgICAv
LyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50
UmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MmFmYTkxODA3YzMxYzk3NTQ4ZTA1MjMyMWM2OGQ0MDBi
Y2ZkZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnRlbnRSZXF1ZXN0LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50ZW50UmVxdWVz
dF9oCisjZGVmaW5lIFdlYkludGVudFJlcXVlc3RfaAorCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlN0cmluZy5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnRSZXF1
ZXN0OyB9CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gSG9sZHMg
ZGF0YSBwYXNzZWQgdGhyb3VnaCBhIFdlYiBJbnRlbnRzIGludm9jYXRpb24gY2FsbCBmcm9tIHRo
ZSBKYXZhc2NyaXB0CisvLyBJbnRlbnQgb2JqZWN0LgorLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3
dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkK
K2NsYXNzIFdlYkludGVudFJlcXVlc3QgeworcHVibGljOgorICAgIH5XZWJJbnRlbnRSZXF1ZXN0
KCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBhY3Rpb24oKSBjb25zdDsKKworICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHR5cGUoKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIGRhdGEoKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBwb3N0
UmVzdWx0KGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBwb3N0RmFp
bHVyZShjb25zdCBXZWJTdHJpbmcmKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IFdlYkludGVudFJlcXVlc3QoKTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgZXhwbGlj
aXQgV2ViSW50ZW50UmVxdWVzdChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50
UmVxdWVzdD4mKTsKKyNlbmRpZgorI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIFdlYlByaXZhdGVQdHI8V2Vi
Q29yZTo6SW50ZW50UmVxdWVzdD4gbV9pbnRlbnRSZXF1ZXN0OworI2VuZGlmCisjZW5kaWYKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSW50ZW50UmVxdWVzdF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAppbmRleCA0NmY5NmI1MDhlNzk2MDA3MDkxODkwYmI0ZjVlYmM2MWRhOTg5ODgxLi42
ZmEzNjkwZDJkMTYzMWMzODllOGEwNmMxNDVjMTJkZWFhMzkxYWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTY2
LDYgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZy
YW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSW50
ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YktpdFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1pbWVSZWdpc3Ry
eS5oIgpAQCAtMTYyOSw0ICsxNjMwLDExIEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp3
aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudCgKICAgICAgICAgbV93ZWJGcmFtZSwgV2Vi
U2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7CiB9CiAK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBpbnRlbnRSZXF1
ZXN0KQoreworICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaXNwYXRjaEludGVudCh3ZWJGcmFt
ZSgpLCBuZXcgV2ViSW50ZW50UmVxdWVzdChpbnRlbnRSZXF1ZXN0KSk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IGIxYjg1YmEzNTg3YjI2MWE1Yjg5OWJiY2Y4
NjY2YWRhMWJmM2M3MDIuLjBiZjkzNWQ2ZGQ5ODA4OTI3ODUwNGY3N2UzZTk4ZmRkZjJlYWRjMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oCkBAIC0yMDgsNiArMjA4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRhcmdldCwgV2ViQ29yZTo6TWVzc2FnZUV2ZW50Kikg
Y29uc3Q7CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4pIE9WRVJSSURFOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWQ5MjI3MzJhZDQyYjU0ZmUyMGU3N2M1OGM1NzQ3MGZlNGI5NTIyZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFJlcXVlc3QuY3BwCkBA
IC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkludGVudFJl
cXVlc3QuaCIKKworI2luY2x1ZGUgIkludGVudC5oIgorI2luY2x1ZGUgIkludGVudFJlcXVlc3Qu
aCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitXZWJJbnRlbnRSZXF1ZXN0OjpXZWJJbnRl
bnRSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4mIGludGVu
dFJlcXVlc3QpCisgICAgOiBtX2ludGVudFJlcXVlc3QoaW50ZW50UmVxdWVzdCkKK3sKK30KKyNl
bmRpZgorCitXZWJJbnRlbnRSZXF1ZXN0OjpXZWJJbnRlbnRSZXF1ZXN0KCkKK3sKK30KKworV2Vi
SW50ZW50UmVxdWVzdDo6fldlYkludGVudFJlcXVlc3QoKQoreworfQorCisKK1dlYlN0cmluZyBX
ZWJJbnRlbnRSZXF1ZXN0OjphY3Rpb24oKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICBpZiAobV9pbnRlbnRSZXF1ZXN0LmdldCgpICYmIG1faW50ZW50UmVxdWVzdC0+aW50
ZW50KCkpCisgICAgICAgIHJldHVybiBtX2ludGVudFJlcXVlc3QtPmludGVudCgpLT5hY3Rpb24o
KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFdlYlN0cmluZygpOworfQorCitXZWJTdHJpbmcgV2Vi
SW50ZW50UmVxdWVzdDo6dHlwZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIGlmIChtX2ludGVudFJlcXVlc3QuZ2V0KCkgJiYgbV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQo
KSkKKyAgICAgICAgcmV0dXJuIG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCktPmFjdGlvbigpOwor
I2VuZGlmCisKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7Cit9CisKK1dlYlN0cmluZyBXZWJJbnRl
bnRSZXF1ZXN0OjpkYXRhKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
aWYgKG1faW50ZW50UmVxdWVzdC5nZXQoKSAmJiBtX2ludGVudFJlcXVlc3QtPmludGVudCgpKQor
ICAgICAgICByZXR1cm4gbV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKS0+ZGF0YSgpLT50b1dpcmVT
dHJpbmcoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFdlYlN0cmluZygpOworfQorCit2b2lkIFdl
YkludGVudFJlcXVlc3Q6OnBvc3RSZXN1bHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGRhdGEp
Cit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUoZGF0YSk7CisgICAgaWYgKG1faW50ZW50UmVxdWVzdC5n
ZXQoKSkKKyAgICAgICAgbV9pbnRlbnRSZXF1ZXN0LT5wb3N0UmVzdWx0KHNlcmlhbGl6ZWRWYWx1
ZS5nZXQoKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVy
ZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFZhbHVlID0gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShk
YXRhKTsKKyAgICBpZiAobV9pbnRlbnRSZXF1ZXN0LmdldCgpKQorICAgICAgICBtX2ludGVudFJl
cXVlc3QtPnBvc3RGYWlsdXJlKHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSk7CisjZW5kaWYKK30KKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122309</attachid>
            <date>2012-01-12 14:22:03 -0800</date>
            <delta_ts>2012-01-13 10:00:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120112142202.patch</filename>
            <type>text/plain</type>
            <size>14303</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGI4ZWQyMWE1ODcyZmI3NjVjOWIxOWIwMDQ5OTY5YzJhNGJjODA4Y2IuLjZkZDIzMmQ3NzU4NmU2
OGE1MzdhNzIwZjRkYzU5ZmI1ZDliMGQ2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgzLi44
YWEwZDEyMzRjYTM0MTczNjY5YjBjYzIxYzFhMTVlNmRjYzEwMWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0RXZl
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnQuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJL
aXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCkBAIC01
NzksNiArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudC5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW50
ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYktpdC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAxZDhkYmI3NDE2Y2E2
ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li45M2FmOGQ0MDVkZmM1NzVjNGFlMDBmNzliNzRm
OWJjYTE3YmUyNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNz
IFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKLWNs
YXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2ViSW50
ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViTWVkaWFQ
bGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBAIC0z
ODEsOCArMzgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlKFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50U2VydmljZUluZm8mKSB7IH0KIAogICAg
IC8vIFN0YXJ0IGEgV2ViIEludGVudHMgYWN0aXZpdHkuIFJlcGxpZXMgdG8gdGhpcyByZXF1ZXN0
IHNob3VsZCBiZSBzZW50IHRvCi0gICAgLy8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBhY3Rp
dml0eS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBX
ZWJJbnRlbnQmKSB7IH0KKyAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2aXR5
LiBUaGUgY2FsbGVlIHRha2VzIG93bmVyc2hpcAorICAgIC8vIG9mIHRoaXMgb2JqZWN0IGFuZCBj
YW4gdXNlIGl0IHRvIGNvb3JkaW5hdGUgcmVwbGllcyB0byB0aGUgaW50ZW50CisgICAgLy8gaW52
b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBXZWJJ
bnRlbnRSZXF1ZXN0KikgeyB9CiAKICAgICAvLyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJbnRlbnQuaAppbmRleCA0Y2UwMzQyYjc4N2JiMTI1YzEyMjdlZDJjZmU2
NDFkZTIxM2Q2MWM0Li4wZDUxYmQ2NjhhNTA0NTc0YjU4NzlkYzMyYTJiMDc4NGVlNDY2YWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAtMzIsOCArMzIs
MTUgQEAKICNkZWZpbmUgV2ViSW50ZW50X2gKIAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKIAorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50OyB9CisjZW5k
aWYKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gSG9sZHMgZGF0YSBwYXNzZWQg
dGhyb3VnaCBhIFdlYiBJbnRlbnRzIGludm9jYXRpb24gY2FsbCBmcm9tIHRoZSBKYXZhc2NyaXB0
CkBAIC00NCwyNiArNTEsMjcgQEAgcHVibGljOgogICAgIH5XZWJJbnRlbnQoKSB7IH0KIAogICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGFjdGlvbigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRBY3Rpb24oY29uc3QgV2ViU3RyaW5nJik7Ci0KICAgICBXRUJLSVRfRVhQT1JU
IFdlYlN0cmluZyB0eXBlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFR5cGUo
Y29uc3QgV2ViU3RyaW5nJik7Ci0KICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkYXRhKCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgV2ViU3RyaW5nJik7
CiAKKyAgICAvLyBGSVhNRShnYmlsbG9jayk6IGRlbGV0ZSB0aGlzLgogICAgIFdFQktJVF9FWFBP
UlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRl
bnRpZmllcihpbnQpOwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSW50ZW50
KCk7CisgICAgV2ViSW50ZW50KGNvbnN0IFdlYkludGVudCYpOworICAgIFdlYkludGVudCYgb3Bl
cmF0b3I9KGNvbnN0IFdlYkludGVudCYpOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBl
eHBsaWNpdCBXZWJJbnRlbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4m
KTsKKyNlbmRpZgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV2ViU3RyaW5nIG1fYWN0aW9uOwot
ICAgIFdlYlN0cmluZyBtX3R5cGU7Ci0gICAgV2ViU3RyaW5nIG1fZGF0YTsKLSAgICBpbnQgbV9p
ZGVudGlmaWVyOworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OkludGVudD4gbV9pbnRlbnQ7CisjZW5k
aWYKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc5ZDRj
YzUyZDg0MDMzNjhmZjdkZDI5MWEyM2FiYjUzNGY3MWIxOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudFJlcXVlc3QuaApAQCAtMCwwICsx
LDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJJbnRlbnRSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViSW50ZW50UmVxdWVz
dF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KKyNlbmRpZgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnRlbnQ7CitjbGFzcyBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CisKKy8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIgSW50ZW50
cyBpbnZvY2F0aW9uIGNhbGwgZnJvbSB0aGUgSmF2YXNjcmlwdAorLy8gSW50ZW50IG9iamVjdC4K
Ky8vIFNlZSBzcGVjIGF0IGh0dHA6Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWdu
LWRvY3VtZW50cy93ZWJpbnRlbnRzYXBpCitjbGFzcyBXZWJJbnRlbnRSZXF1ZXN0IHsKK3B1Ymxp
YzoKKyAgICB+V2ViSW50ZW50UmVxdWVzdCgpIHsgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYp
OworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJJbnRlbnQgaW50ZW50KCkgY29uc3Q7CisKKyNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJbnRlbnRSZXF1ZXN0KCk7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIGV4cGxpY2l0IFdlYkludGVudFJlcXVlc3QoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+Jik7CisjZW5kaWYKKyNlbmRpZgorCitw
cml2YXRlOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+IG1faW50ZW50UmVx
dWVzdDsKKyNlbmRpZgorI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYkludGVudFJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNzJlNzFiOTYwODdkYjYxOGZl
ZDNkMDA5ZWQ0ODQ5M2VhNmM1ZDkxMS4uZjJjOTg3Yzg4N2E4ODNiY2YxZDYyMDBjMTE5YzQ0YWUx
NzRhMTIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1l
SW1wbC5oIgorI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJLaXQu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRl
IDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CkBAIC0xNjI5LDQgKzE2MzAsMTEgQEAgYm9vbCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAog
ICAgICAgICBtX3dlYkZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbih0YXJnZXQpLCBXZWJET01NZXNz
YWdlRXZlbnQoZXZlbnQpKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6Oklu
dGVudFJlcXVlc3Q+IGludGVudFJlcXVlc3QpCit7CisgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpc3BhdGNoSW50ZW50KHdlYkZyYW1lKCksIG5ldyBXZWJJbnRlbnRSZXF1ZXN0KGludGVudFJl
cXVlc3QpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggYjFi
ODViYTM1ODdiMjYxYTViODk5YmJjZjg2NjZhZGExYmYzYzcwMi4uMGJmOTM1ZDZkZDk4MDg5Mjc4
NTA0Zjc3ZTNlOThmZGRmMmVhZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwOCw2ICsyMDgsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0
PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tB
bmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdGFyZ2V0LCBX
ZWJDb3JlOjpNZXNzYWdlRXZlbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0PikgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VE
b2N1bWVudFZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAK
aW5kZXggMTM1NDBlMTYyMWI4YTNhZmVjODFiYTk0ZWEwOWJkZmYxMGI5ZWNlMy4uZjA3MTQzYmY0
MmRlZjliZDY1NzA3Y2IyNTEyODM3YTkzOGRlZDViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMyw0NiArMzMsNTkgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVdlYkludGVudDo6V2ViSW50ZW50KCkgeyB9Ci0KLVdlYlN0cmluZyBXZWJJbnRlbnQ6
OmFjdGlvbigpIGNvbnN0CitXZWJJbnRlbnQ6OldlYkludGVudCgpCiB7Ci0gICAgcmV0dXJuIG1f
YWN0aW9uOwogfQogCi12b2lkIFdlYkludGVudDo6c2V0QWN0aW9uKGNvbnN0IFdlYlN0cmluZyYg
YWN0aW9uKQorV2ViSW50ZW50OjpXZWJJbnRlbnQoY29uc3QgV2ViSW50ZW50JiBvdGhlcikKIHsK
LSAgICBtX2FjdGlvbiA9IGFjdGlvbjsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgbV9p
bnRlbnQgPSBvdGhlci5tX2ludGVudDsKKyNlbmRpZgogfQogCi1XZWJTdHJpbmcgV2ViSW50ZW50
Ojp0eXBlKCkgY29uc3QKK1dlYkludGVudCYgV2ViSW50ZW50OjpvcGVyYXRvcj0oY29uc3QgV2Vi
SW50ZW50JikKIHsKLSAgICByZXR1cm4gbV90eXBlOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICBtX2ludGVudCA9IG90aGVyLm1faW50ZW50OworI2VuZGlmCisgICAgcmV0dXJuICp0aGlz
OwogfQogCi12b2lkIFdlYkludGVudDo6c2V0VHlwZShjb25zdCBXZWJTdHJpbmcmIHR5cGUpCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorV2ViSW50ZW50OjpXZWJJbnRlbnQoY29uc3QgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJbnRlbnQ+JiBpbnRlbnQpCisgICAgOiBtX2ludGVudChpbnRlbnQpCiB7
Ci0gICAgbV90eXBlID0gdHlwZTsKIH0KKyNlbmRpZgogCi1XZWJTdHJpbmcgV2ViSW50ZW50Ojpk
YXRhKCkgY29uc3QKK1dlYlN0cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fZGF0YTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1faW50
ZW50LT5hY3Rpb24oKTsKKyNlbmRpZgorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKIH0KIAotdm9p
ZCBXZWJJbnRlbnQ6OnNldERhdGEoY29uc3QgV2ViU3RyaW5nJiBkYXRhKQorV2ViU3RyaW5nIFdl
YkludGVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1faW50ZW50LT50eXBlKCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gV2ViU3RyaW5nKCk7CiB9CiAKLWludCBXZWJJbnRlbnQ6OmlkZW50aWZpZXIoKSBjb25z
dAorV2ViU3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faWRl
bnRpZmllcjsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1faW50ZW50LT50
eXBlKCk7CisjZW5kaWYKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiB9CiAKLXZvaWQgV2ViSW50
ZW50OjpzZXRJZGVudGlmaWVyKGludCBpZGVudGlmaWVyKQoraW50IFdlYkludGVudDo6aWRlbnRp
ZmllcigpIGNvbnN0CiB7Ci0gICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICByZXR1
cm4gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkludGVudFJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTZmYThkMzUyZDUw
ZTI2OTlkMDhjODcyYjZhMmY4YTM2YTU3MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDgwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKKworI2luY2x1
ZGUgIkludGVudC5oIgorI2luY2x1ZGUgIkludGVudFJlcXVlc3QuaCIKKyNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnQuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitXZWJJbnRlbnRSZXF1ZXN0OjpXZWJJbnRlbnRS
ZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4mIGludGVudFJl
cXVlc3QpCisgICAgOiBtX2ludGVudFJlcXVlc3QoaW50ZW50UmVxdWVzdCkKK3sKK30KKyNlbmRp
ZgorCitXZWJJbnRlbnRSZXF1ZXN0OjpXZWJJbnRlbnRSZXF1ZXN0KCkKK3sKK30KKworV2ViSW50
ZW50IFdlYkludGVudFJlcXVlc3Q6OmludGVudCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorICAgIFdlYkludGVudCBpbnRlbnQoKihtX2ludGVudFJxdWVzdC0+aW50ZW50KCkp
KTsKKyAgICByZXR1cm4gaW50ZW50OworI2VuZGlmCisKKyAgICByZXR1cm4gV2ViSW50ZW50KCk7
Cit9CisKK3ZvaWQgV2ViSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChjb25zdCBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUmIGRhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIFJl
ZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZShkYXRh
KTsKKyAgICBtX2ludGVudFJlcXVlc3QtPnBvc3RSZXN1bHQoc2VyaWFsaXplZFZhbHVlLmdldCgp
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkludGVudFJlcXVlc3Q6OnBvc3RGYWlsdXJlKGNvbnN0
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgZGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFZhbHVlKGRhdGEpOworICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdEZhaWx1cmUoc2VyaWFsaXpl
ZFZhbHVlLmdldCgpKTsKKyNlbmRpZgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122445</attachid>
            <date>2012-01-13 10:01:03 -0800</date>
            <delta_ts>2012-01-13 11:33:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120113100102.patch</filename>
            <type>text/plain</type>
            <size>14552</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGI4ZWQyMWE1ODcyZmI3NjVjOWIxOWIwMDQ5OTY5YzJhNGJjODA4Y2IuLjZkZDIzMmQ3NzU4NmU2
OGE1MzdhNzIwZjRkYzU5ZmI1ZDliMGQ2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgzLi44
YWEwZDEyMzRjYTM0MTczNjY5YjBjYzIxYzFhMTVlNmRjYzEwMWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0RXZl
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnQuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJL
aXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCkBAIC01
NzksNiArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudC5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW50
ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYktpdC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAxZDhkYmI3NDE2Y2E2
ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li45M2FmOGQ0MDVkZmM1NzVjNGFlMDBmNzliNzRm
OWJjYTE3YmUyNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNz
IFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKLWNs
YXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2ViSW50
ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViTWVkaWFQ
bGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBAIC0z
ODEsOCArMzgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlKFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50U2VydmljZUluZm8mKSB7IH0KIAogICAg
IC8vIFN0YXJ0IGEgV2ViIEludGVudHMgYWN0aXZpdHkuIFJlcGxpZXMgdG8gdGhpcyByZXF1ZXN0
IHNob3VsZCBiZSBzZW50IHRvCi0gICAgLy8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBhY3Rp
dml0eS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBX
ZWJJbnRlbnQmKSB7IH0KKyAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2aXR5
LiBUaGUgY2FsbGVlIHRha2VzIG93bmVyc2hpcAorICAgIC8vIG9mIHRoaXMgb2JqZWN0IGFuZCBj
YW4gdXNlIGl0IHRvIGNvb3JkaW5hdGUgcmVwbGllcyB0byB0aGUgaW50ZW50CisgICAgLy8gaW52
b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBXZWJJ
bnRlbnRSZXF1ZXN0KikgeyB9CiAKICAgICAvLyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJbnRlbnQuaAppbmRleCA0Y2UwMzQyYjc4N2JiMTI1YzEyMjdlZDJjZmU2
NDFkZTIxM2Q2MWM0Li4wZDUxYmQ2NjhhNTA0NTc0YjU4NzlkYzMyYTJiMDc4NGVlNDY2YWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAtMzIsOCArMzIs
MTUgQEAKICNkZWZpbmUgV2ViSW50ZW50X2gKIAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKIAorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50OyB9CisjZW5k
aWYKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gSG9sZHMgZGF0YSBwYXNzZWQg
dGhyb3VnaCBhIFdlYiBJbnRlbnRzIGludm9jYXRpb24gY2FsbCBmcm9tIHRoZSBKYXZhc2NyaXB0
CkBAIC00NCwyNiArNTEsMjcgQEAgcHVibGljOgogICAgIH5XZWJJbnRlbnQoKSB7IH0KIAogICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGFjdGlvbigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRBY3Rpb24oY29uc3QgV2ViU3RyaW5nJik7Ci0KICAgICBXRUJLSVRfRVhQT1JU
IFdlYlN0cmluZyB0eXBlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFR5cGUo
Y29uc3QgV2ViU3RyaW5nJik7Ci0KICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkYXRhKCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgV2ViU3RyaW5nJik7
CiAKKyAgICAvLyBGSVhNRShnYmlsbG9jayk6IGRlbGV0ZSB0aGlzLgogICAgIFdFQktJVF9FWFBP
UlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRl
bnRpZmllcihpbnQpOwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSW50ZW50
KCk7CisgICAgV2ViSW50ZW50KGNvbnN0IFdlYkludGVudCYpOworICAgIFdlYkludGVudCYgb3Bl
cmF0b3I9KGNvbnN0IFdlYkludGVudCYpOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBl
eHBsaWNpdCBXZWJJbnRlbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4m
KTsKKyNlbmRpZgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV2ViU3RyaW5nIG1fYWN0aW9uOwot
ICAgIFdlYlN0cmluZyBtX3R5cGU7Ci0gICAgV2ViU3RyaW5nIG1fZGF0YTsKLSAgICBpbnQgbV9p
ZGVudGlmaWVyOworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OkludGVudD4gbV9pbnRlbnQ7CisjZW5k
aWYKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJmNWNh
N2ExYTFjMGUwYTYwN2FkMGJjYjZkZGUxODMxNWZkMmE0MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudFJlcXVlc3QuaApAQCAtMCwwICsx
LDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJJbnRlbnRSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViSW50ZW50UmVxdWVz
dF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KKyNlbmRpZgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnRlbnQ7CitjbGFzcyBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CisKKy8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIgSW50ZW50
cyBpbnZvY2F0aW9uIGNhbGwgZnJvbSB0aGUgSmF2YXNjcmlwdAorLy8gSW50ZW50IG9iamVjdC4K
Ky8vIFNlZSBzcGVjIGF0IGh0dHA6Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWdu
LWRvY3VtZW50cy93ZWJpbnRlbnRzYXBpCitjbGFzcyBXZWJJbnRlbnRSZXF1ZXN0IHsKK3B1Ymxp
YzoKKyAgICB+V2ViSW50ZW50UmVxdWVzdCgpIHsgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYp
OworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJJbnRlbnQgaW50ZW50KCk7CisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBXZWJJbnRlbnRSZXF1ZXN0KCk7CisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorICAgIGV4cGxpY2l0IFdlYkludGVudFJlcXVlc3QoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+Jik7CisjZW5kaWYKKyNlbmRpZgorCitwcml2YXRl
OgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+IG1faW50ZW50UmVxdWVzdDsK
KyNlbmRpZgorI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkludGVudFJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNzJlNzFiOTYwODdkYjYxOGZlZDNkMDA5
ZWQ0ODQ5M2VhNmM1ZDkxMS4uZjJjOTg3Yzg4N2E4ODNiY2YxZDYyMDBjMTE5YzQ0YWUxNzRhMTIy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQu
aCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5o
IgorI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlIDxwdWJs
aWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CkBAIC0xNjI5LDQgKzE2MzAsMTEgQEAgYm9vbCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAgICAg
ICBtX3dlYkZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbih0YXJnZXQpLCBXZWJET01NZXNzYWdlRXZl
bnQoZXZlbnQpKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJl
cXVlc3Q+IGludGVudFJlcXVlc3QpCit7CisgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpc3Bh
dGNoSW50ZW50KHdlYkZyYW1lKCksIG5ldyBXZWJJbnRlbnRSZXF1ZXN0KGludGVudFJlcXVlc3Qp
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggYjFiODViYTM1
ODdiMjYxYTViODk5YmJjZjg2NjZhZGExYmYzYzcwMi4uMGJmOTM1ZDZkZDk4MDg5Mjc4NTA0Zjc3
ZTNlOThmZGRmMmVhZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwOCw2ICsyMDgsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVh
dGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNw
YXRjaE1lc3NhZ2VFdmVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdGFyZ2V0LCBXZWJDb3Jl
OjpNZXNzYWdlRXZlbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1
ZXN0PikgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1bWVu
dFZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKaW5kZXgg
MTM1NDBlMTYyMWI4YTNhZmVjODFiYTk0ZWEwOWJkZmYxMGI5ZWNlMy4uYjllNTUzZmY0MzY5MTUx
ZjQzMDZlNDg1YmEyMTUzNmI5ZGQwYmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnRlbnQuY3BwCkBAIC0zMSw0OCArMzEsNjQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJJbnRlbnQuaCIKIAotbmFtZXNwYWNlIFdlYktpdCB7CisjaW5jbHVkZSAiSW50
ZW50LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKLVdlYkludGVudDo6
V2ViSW50ZW50KCkgeyB9CituYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViU3RyaW5nIFdlYkludGVu
dDo6YWN0aW9uKCkgY29uc3QKK1dlYkludGVudDo6V2ViSW50ZW50KCkKIHsKLSAgICByZXR1cm4g
bV9hY3Rpb247CiB9CiAKLXZvaWQgV2ViSW50ZW50OjpzZXRBY3Rpb24oY29uc3QgV2ViU3RyaW5n
JiBhY3Rpb24pCitXZWJJbnRlbnQ6OldlYkludGVudChjb25zdCBXZWJJbnRlbnQmIG90aGVyKQog
ewotICAgIG1fYWN0aW9uID0gYWN0aW9uOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBt
X2ludGVudCA9IG90aGVyLm1faW50ZW50OworI2VuZGlmCiB9CiAKLVdlYlN0cmluZyBXZWJJbnRl
bnQ6OnR5cGUoKSBjb25zdAorV2ViSW50ZW50JiBXZWJJbnRlbnQ6Om9wZXJhdG9yPShjb25zdCBX
ZWJJbnRlbnQmIG90aGVyKQogewotICAgIHJldHVybiBtX3R5cGU7CisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorICAgIG1faW50ZW50ID0gb3RoZXIubV9pbnRlbnQ7CisjZW5kaWYKKyAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLXZvaWQgV2ViSW50ZW50OjpzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYg
dHlwZSkKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitXZWJJbnRlbnQ6OldlYkludGVudChjb25z
dCBQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4mIGludGVudCkKKyAgICA6IG1faW50ZW50KGlu
dGVudCkKIHsKLSAgICBtX3R5cGUgPSB0eXBlOwogfQorI2VuZGlmCiAKLVdlYlN0cmluZyBXZWJJ
bnRlbnQ6OmRhdGEoKSBjb25zdAorV2ViU3RyaW5nIFdlYkludGVudDo6YWN0aW9uKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9kYXRhOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1
cm4gbV9pbnRlbnQtPmFjdGlvbigpOworI2VuZGlmCisgICAgcmV0dXJuIFdlYlN0cmluZygpOwog
fQogCi12b2lkIFdlYkludGVudDo6c2V0RGF0YShjb25zdCBXZWJTdHJpbmcmIGRhdGEpCitXZWJT
dHJpbmcgV2ViSW50ZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBtX2RhdGEgPSBkYXRhOworI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9pbnRlbnQtPnR5cGUoKTsKKyNlbmRp
ZgorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKIH0KIAotaW50IFdlYkludGVudDo6aWRlbnRpZmll
cigpIGNvbnN0CitXZWJTdHJpbmcgV2ViSW50ZW50OjpkYXRhKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pZGVudGlmaWVyOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9p
bnRlbnQtPnR5cGUoKTsKKyNlbmRpZgorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKIH0KIAotdm9p
ZCBXZWJJbnRlbnQ6OnNldElkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCitpbnQgV2ViSW50ZW50
OjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwor
ICAgIHJldHVybiAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM3OGQx
YTlmMjFhODQ0Y2E4ZjRiMWRkOWM1OWU5MGEyMmY4ZmFjOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFJlcXVlc3QuY3BwCkBAIC0wLDAgKzEs
ODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgor
CisjaW5jbHVkZSAiSW50ZW50LmgiCisjaW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgorI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYkludGVudC5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK1dlYkludGVudFJlcXVlc3Q6Oldl
YkludGVudFJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYg
aW50ZW50UmVxdWVzdCkKKyAgICA6IG1faW50ZW50UmVxdWVzdChpbnRlbnRSZXF1ZXN0KQorewor
fQorI2VuZGlmCisKK1dlYkludGVudFJlcXVlc3Q6OldlYkludGVudFJlcXVlc3QoKQoreworfQor
CitXZWJJbnRlbnQgV2ViSW50ZW50UmVxdWVzdDo6aW50ZW50KCkKK3sKKyNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCisgICAgUmVmUHRyPFdlYkNvcmU6OkludGVudD4gaW50ZW50KG1faW50ZW50UmVx
dWVzdC0+aW50ZW50KCkpOworICAgIHJldHVybiBXZWJJbnRlbnQoaW50ZW50KTsKKyNlbmRpZgor
CisgICAgcmV0dXJuIFdlYkludGVudCgpOworfQorCit2b2lkIFdlYkludGVudFJlcXVlc3Q6OnBv
c3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkYXRhKQoreworI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKyAgICAgICAgKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdFJlc3Vs
dChzZXJpYWxpemVkVmFsdWUuZ2V0KCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViSW50ZW50UmVx
dWVzdDo6cG9zdEZhaWx1cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkYXRhKQor
eworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKyAgICAgICAgKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworICAgIG1faW50ZW50UmVxdWVzdC0+
cG9zdEZhaWx1cmUoc2VyaWFsaXplZFZhbHVlLmdldCgpKTsKKyNlbmRpZgorfQorCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122474</attachid>
            <date>2012-01-13 11:33:06 -0800</date>
            <delta_ts>2012-01-13 18:52:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120113113305.patch</filename>
            <type>text/plain</type>
            <size>16139</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGI4ZWQyMWE1ODcyZmI3NjVjOWIxOWIwMDQ5OTY5YzJhNGJjODA4Y2IuLjZkZDIzMmQ3NzU4NmU2
OGE1MzdhNzIwZjRkYzU5ZmI1ZDliMGQ2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgzLi44
YWEwZDEyMzRjYTM0MTczNjY5YjBjYzIxYzFhMTVlNmRjYzEwMWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0RXZl
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnQuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJL
aXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCkBAIC01
NzksNiArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudC5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW50
ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYktpdC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAxZDhkYmI3NDE2Y2E2
ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li5hNjJhNDBiODc4OGIxNGVjMTg2MmJhMDRhZDBk
OWFhY2NlMjUzZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNz
IFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKLWNs
YXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2ViSW50
ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViTWVkaWFQ
bGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBAIC0z
ODEsOCArMzgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlKFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50U2VydmljZUluZm8mKSB7IH0KIAogICAg
IC8vIFN0YXJ0IGEgV2ViIEludGVudHMgYWN0aXZpdHkuIFJlcGxpZXMgdG8gdGhpcyByZXF1ZXN0
IHNob3VsZCBiZSBzZW50IHRvCi0gICAgLy8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBhY3Rp
dml0eS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBX
ZWJJbnRlbnQmKSB7IH0KKyAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2aXR5
LiBUaGUgY2FsbGVlIHVzZXMgdGhpcyBvYmplY3QgdG8KKyAgICAvLyBjb29yZGluYXRlIHJlcGxp
ZXMgdG8gdGhlIGludGVudCBpbnZvY2F0aW9uLiAoSXQgc2hvdWxkIGJlIHJlbGVhc2VkIGFzCisg
ICAgLy8gc29vbiBhcyBwb3NzaWJsZSB3aGVuIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuKQorICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIGNvbnN0IFdlYkludGVudFJl
cXVlc3QmKSB7IH0KIAogICAgIC8vIE1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkludGVudC5oCmluZGV4IDRjZTAzNDJiNzg3YmIxMjVjMTIyN2VkMmNmZTY0MWRlMjEz
ZDYxYzQuLjliYjJjNDhmZWRjNmFmNDU4MDNiZTZjMzE5OGM1Mjc2MzE5ODJkNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oCkBAIC0zMiw4ICszMiwxNSBAQAog
I2RlZmluZSBXZWJJbnRlbnRfaAogCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgogCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KKyNlbmRpZgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBIb2xkcyBkYXRhIHBhc3NlZCB0aHJvdWdo
IGEgV2ViIEludGVudHMgaW52b2NhdGlvbiBjYWxsIGZyb20gdGhlIEphdmFzY3JpcHQKQEAgLTQx
LDI5ICs0OCwzOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFNlZSBzcGVjIGF0IGh0dHA6Ly93
d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWduLWRvY3VtZW50cy93ZWJpbnRlbnRzYXBp
CiBjbGFzcyBXZWJJbnRlbnQgewogcHVibGljOgotICAgIH5XZWJJbnRlbnQoKSB7IH0KKyAgICBX
ZWJJbnRlbnQoKSB7IH0KKyAgICBXZWJJbnRlbnQoY29uc3QgV2ViSW50ZW50JiBpbnRlbnQpIHsg
YXNzaWduKGludGVudCk7IH0KKyAgICB+V2ViSW50ZW50KCkgeyByZXNldCgpOyB9CiAKLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyBhY3Rpb24oKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0QWN0aW9uKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdlYkludGVudCYgb3BlcmF0
b3I9KGNvbnN0IFdlYkludGVudCYgb3RoZXIpCisgICAgeworICAgICAgIGFzc2lnbihvdGhlcik7
CisgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVz
ZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgV0VCS0lU
X0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJJbnRlbnQmKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgYXNzaWduKGNvbnN0IFdlYkludGVudCYpOwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJT
dHJpbmcgYWN0aW9uKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYp
OwotCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZGF0YSgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IFdlYlN0cmluZyYpOwogCisgICAgLy8gRklYTUU6
IGRlbGV0ZSB0aGlzLgogICAgIFdFQktJVF9FWFBPUlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRlbnRpZmllcihpbnQpOwogCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSW50ZW50KCk7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIGV4cGxpY2l0IFdlYkludGVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
SW50ZW50PiYpOworI2VuZGlmCiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJTdHJpbmcgbV9h
Y3Rpb247Ci0gICAgV2ViU3RyaW5nIG1fdHlwZTsKLSAgICBXZWJTdHJpbmcgbV9kYXRhOwotICAg
IGludCBtX2lkZW50aWZpZXI7CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6SW50ZW50PiBtX3ByaXZh
dGU7CisjZW5kaWYKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWVmZmI1M2FjYzE3MzQ4NmQzYTYyMzg2NjFjNjc3MGI3OGYyMzA3ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudFJlcXVlc3QuaApA
QCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnRlbnRSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViSW50
ZW50UmVxdWVzdF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5n
LmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KKyNlbmRpZgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnRlbnQ7CitjbGFzcyBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKKy8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBX
ZWIgSW50ZW50cyBpbnZvY2F0aW9uIGNhbGwgZnJvbSB0aGUgSmF2YXNjcmlwdAorLy8gSW50ZW50
IG9iamVjdC4KKy8vIFNlZSBzcGVjIGF0IGh0dHA6Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3Bl
cnMvZGVzaWduLWRvY3VtZW50cy93ZWJpbnRlbnRzYXBpCitjbGFzcyBXZWJJbnRlbnRSZXF1ZXN0
IHsKK3B1YmxpYzoKKyAgICBXZWJJbnRlbnRSZXF1ZXN0KCkgeyB9CisgICAgV2ViSW50ZW50UmVx
dWVzdChjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBpbnRlbnQpIHsgYXNzaWduKGludGVudCk7IH0K
KyAgICB+V2ViSW50ZW50UmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViSW50ZW50UmVx
dWVzdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVyKQorICAgIHsKKyAg
ICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTnVsbCgp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViSW50ZW50UmVx
dWVzdCYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW50ZW50UmVx
dWVzdCYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RSZXN1bHQoY29uc3QgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RGYWlsdXJl
KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBX
ZWJJbnRlbnQgaW50ZW50KCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgZXhwbGljaXQgV2ViSW50ZW50UmVxdWVzdChjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4mKTsKKyNlbmRpZgorI2VuZGlmCisK
K3ByaXZhdGU6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4gbV9wcml2YXRl
OworI2VuZGlmCisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViSW50ZW50UmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA3MmU3MWI5NjA4N2RiNjE4ZmVkM2Qw
MDllZDQ4NDkzZWE2YzVkOTExLi4yZjUwNWM4OTUwZTcyNWEwNzNlNWIyNjE5OGI0NDE5OTdhNGFk
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBs
LmgiCisjaW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJNaW1lUmVnaXN0cnkuaD4KQEAgLTE2MjksNCArMTYzMCwxMiBAQCBib29sIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoCiAgICAg
ICAgIG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKHRhcmdldCksIFdlYkRPTU1lc3NhZ2VF
dmVudChldmVudCkpOwogfQogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50
UmVxdWVzdD4gaW50ZW50UmVxdWVzdCkKK3sKKyAgICBXZWJJbnRlbnRSZXF1ZXN0IHJlcXVlc3Qo
aW50ZW50UmVxdWVzdCk7CisgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpc3BhdGNoSW50ZW50
KHdlYkZyYW1lKCksIHJlcXVlc3QpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaAppbmRleCBiMWI4NWJhMzU4N2IyNjFhNWI4OTliYmNmODY2NmFkYTFiZjNjNzAyLi4wYmY5
MzVkNmRkOTgwODkyNzg1MDRmNzdlM2U5OGZkZGYyZWFkYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMjA4LDYgKzIw
OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAgICAgdmlydHVhbCBi
b29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiB0YXJnZXQsIFdlYkNvcmU6Ok1lc3NhZ2VFdmVudCopIGNvbnN0OwogCisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChQYXNzUmVmUHRy
PFdlYkNvcmU6OkludGVudFJlcXVlc3Q+KSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIHZvaWQgbWFrZURvY3VtZW50VmlldygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW50ZW50LmNwcAppbmRleCAxMzU0MGUxNjIxYjhhM2FmZWM4MWJhOTRlYTA5YmRmZjEwYjll
Y2UzLi4xNDg1NDVhMWYyYmI3MzgwOTNhYjQ2YjQ0OWVkZTE1MmVkNTk1ODJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKQEAgLTMxLDQ4ICszMSw3NSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkludGVudC5oIgogCisjaW5jbHVkZSAiSW50
ZW50LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1XZWJJbnRlbnQ6OldlYkludGVudCgpIHsgfQorI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKK1dlYkludGVudDo6V2ViSW50ZW50KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50
ZW50PiYgaW50ZW50KQorICAgIDogbV9wcml2YXRlKGludGVudCkKK3sKK30KKyNlbmRpZgogCi1X
ZWJTdHJpbmcgV2ViSW50ZW50OjphY3Rpb24oKSBjb25zdAordm9pZCBXZWJJbnRlbnQ6OnJlc2V0
KCkKIHsKLSAgICByZXR1cm4gbV9hY3Rpb247CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IG1fcHJpdmF0ZS5yZXNldCgpOworI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW50ZW50OjpzZXRBY3Rp
b24oY29uc3QgV2ViU3RyaW5nJiBhY3Rpb24pCitib29sIFdlYkludGVudDo6aXNOdWxsKCkgY29u
c3QKIHsKLSAgICBtX2FjdGlvbiA9IGFjdGlvbjsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwog
fQogCi1XZWJTdHJpbmcgV2ViSW50ZW50Ojp0eXBlKCkgY29uc3QKK2Jvb2wgV2ViSW50ZW50Ojpl
cXVhbHMoY29uc3QgV2ViSW50ZW50JiBvdGhlcikKIHsKLSAgICByZXR1cm4gbV90eXBlOworI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gKG1fcHJpdmF0ZS5nZXQoKSA9PSBvdGhl
ci5tX3ByaXZhdGUuZ2V0KCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
V2ViSW50ZW50OjpzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYgdHlwZSkKK3ZvaWQgV2ViSW50ZW50
Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50JiBvdGhlcikKIHsKLSAgICBtX3R5cGUgPSB0eXBlOwor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7
CisjZW5kaWYKIH0KIAotV2ViU3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CitXZWJTdHJp
bmcgV2ViSW50ZW50OjphY3Rpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGE7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmFjdGlvbigpOworI2Vu
ZGlmCisgICAgcmV0dXJuIFdlYlN0cmluZygpOwogfQogCi12b2lkIFdlYkludGVudDo6c2V0RGF0
YShjb25zdCBXZWJTdHJpbmcmIGRhdGEpCitXZWJTdHJpbmcgV2ViSW50ZW50Ojp0eXBlKCkgY29u
c3QKIHsKLSAgICBtX2RhdGEgPSBkYXRhOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT50eXBlKCk7CisjZW5kaWYKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7
CiB9CiAKLWludCBXZWJJbnRlbnQ6OmlkZW50aWZpZXIoKSBjb25zdAorV2ViU3RyaW5nIFdlYklu
dGVudDo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dHlwZSgpOworI2VuZGlmCisg
ICAgcmV0dXJuIFdlYlN0cmluZygpOwogfQogCi12b2lkIFdlYkludGVudDo6c2V0SWRlbnRpZmll
cihpbnQgaWRlbnRpZmllcikKK2ludCBXZWJJbnRlbnQ6OmlkZW50aWZpZXIoKSBjb25zdAogewot
ICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRl
bnRSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDlkMjYxNjI0NmUyYjEwNzBmZjBlMGNiZGMxNzIz
ZjczMzRjNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW50ZW50UmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgorCisjaW5jbHVkZSAiSW50ZW50LmgiCisj
aW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgIldlYkludGVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKK1dlYkludGVudFJlcXVlc3Q6OldlYkludGVudFJlcXVlc3QoY29uc3QgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYgaW50ZW50UmVxdWVzdCkKKyAgICA6IG1f
cHJpdmF0ZShpbnRlbnRSZXF1ZXN0KQoreworfQorI2VuZGlmCisKK3ZvaWQgV2ViSW50ZW50UmVx
dWVzdDo6cmVzZXQoKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUu
cmVzZXQoKTsKKyNlbmRpZgorfQorCitib29sIFdlYkludGVudFJlcXVlc3Q6OmlzTnVsbCgpIGNv
bnN0Cit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUuaXNO
dWxsKCk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJJbnRlbnRSZXF1
ZXN0OjplcXVhbHMoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCit7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHJldHVybiAobV9wcml2YXRlLmdldCgpID09IG90aGVyLm1fcHJp
dmF0ZS5nZXQoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnRl
bnRSZXF1ZXN0Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCit7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKKyNl
bmRpZgorfQorCitXZWJJbnRlbnQgV2ViSW50ZW50UmVxdWVzdDo6aW50ZW50KCkKK3sKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisgICAgUmVmUHRyPFdlYkNvcmU6OkludGVudD4gaW50ZW50KG1f
cHJpdmF0ZS0+aW50ZW50KCkpOworICAgIHJldHVybiBXZWJJbnRlbnQoaW50ZW50KTsKKyNlbmRp
ZgorCisgICAgcmV0dXJuIFdlYkludGVudCgpOworfQorCit2b2lkIFdlYkludGVudFJlcXVlc3Q6
OnBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkYXRhKQoreworI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKyAgICAgICAgKFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworICAgIG1fcHJpdmF0ZS0+cG9zdFJlc3VsdChz
ZXJpYWxpemVkVmFsdWUuZ2V0KCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViSW50ZW50UmVxdWVz
dDo6cG9zdEZhaWx1cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkYXRhKQorewor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKyAgICAgICAgKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworICAgIG1fcHJpdmF0ZS0+cG9zdEZhaWx1
cmUoc2VyaWFsaXplZFZhbHVlLmdldCgpKTsKKyNlbmRpZgorfQorCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122527</attachid>
            <date>2012-01-13 18:52:41 -0800</date>
            <delta_ts>2012-01-17 12:17:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120113185240.patch</filename>
            <type>text/plain</type>
            <size>16171</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDkwNTg1NjliNDA4ODRlNGFjZTFlOGIwMTJlNjBkMjY2MWI0ZTJhNjAuLjAzZTIzZDQwY2RjMzkz
ODNmY2JiZDNiM2QwYWFiZTFhOTczZjM4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEhXbmREQyBpcyBhIGJldHRlciBuYW1lIHRoYW4gSHduZERDLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCmluZGV4IDJlNTlmOGMxZjY2MTc1MmRhYjkyNWQxZDY1ZjYzMGE0Y2ZlNDJlODMu
LjhhYTBkMTIzNGNhMzQxNzM2NjliMGNjMjFjMWExNWU2ZGNjMTAxZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKQEAgLTE4Nyw2ICsxODcsNyBAQAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSW5wdXRFbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW5wdXRF
dmVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkludGVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkludGVudFJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YktpdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkxhYmVsRWxlbWVudC5oJywKQEAg
LTU3OSw2ICs1ODAsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW50ZW50LmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJ
bnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViS2l0LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IDFkOGRiYjc0MTZj
YTZmMGFjNDdjNzYxNTVlYTU0ODg2ZmJhZWI5ZjcuLmE2MmE0MGI4Nzg4YjE0ZWMxODYyYmEwNGFk
MGQ5YWFjY2UyNTNlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaApAQCAtNTUsOCArNTUsOSBAQCBjbGFzcyBXZWJEYXRhU291cmNlOwogY2xh
c3MgV2ViRE9NRXZlbnQ7CiBjbGFzcyBXZWJGb3JtRWxlbWVudDsKIGNsYXNzIFdlYkZyYW1lOwot
Y2xhc3MgV2ViSW50ZW50U2VydmljZUluZm87CiBjbGFzcyBXZWJJbnRlbnQ7CitjbGFzcyBXZWJJ
bnRlbnRSZXF1ZXN0OworY2xhc3MgV2ViSW50ZW50U2VydmljZUluZm87CiBjbGFzcyBXZWJNZWRp
YVBsYXllcjsKIGNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OwogY2xhc3MgV2ViTm9kZTsKQEAg
LTM4MSw4ICszODIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckludGVu
dFNlcnZpY2UoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyYpIHsgfQogCiAg
ICAgLy8gU3RhcnQgYSBXZWIgSW50ZW50cyBhY3Rpdml0eS4gUmVwbGllcyB0byB0aGlzIHJlcXVl
c3Qgc2hvdWxkIGJlIHNlbnQgdG8KLSAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFj
dGl2aXR5LgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIGNvbnN0
IFdlYkludGVudCYpIHsgfQorICAgIC8vIHRoZSBXZWJGcmFtZSBzdGFydGluZyB0aGUgYWN0aXZp
dHkuIFRoZSBjYWxsZWUgdXNlcyB0aGlzIG9iamVjdCB0bworICAgIC8vIGNvb3JkaW5hdGUgcmVw
bGllcyB0byB0aGUgaW50ZW50IGludm9jYXRpb24uIChJdCBzaG91bGQgYmUgcmVsZWFzZWQgYXMK
KyAgICAvLyBzb29uIGFzIHBvc3NpYmxlIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4pCisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50
UmVxdWVzdCYpIHsgfQogCiAgICAgLy8gTWVzc2FnZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSW50ZW50LmgKaW5kZXggNGNlMDM0MmI3ODdiYjEyNWMxMjI3ZWQyY2ZlNjQxZGUy
MTNkNjFjNC4uOWJiMmM0OGZlZGM2YWY0NTgwM2JlNmMzMTk4YzUyNzYzMTk4MmQ3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmgKQEAgLTMyLDggKzMyLDE1IEBA
CiAjZGVmaW5lIFdlYkludGVudF9oCiAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViU3RyaW5nLmgiCiAKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEludGVudDsgfQorI2VuZGlmCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91
Z2ggYSBXZWIgSW50ZW50cyBpbnZvY2F0aW9uIGNhbGwgZnJvbSB0aGUgSmF2YXNjcmlwdApAQCAt
NDEsMjkgKzQ4LDM5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gU2VlIHNwZWMgYXQgaHR0cDov
L3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNh
cGkKIGNsYXNzIFdlYkludGVudCB7CiBwdWJsaWM6Ci0gICAgfldlYkludGVudCgpIHsgfQorICAg
IFdlYkludGVudCgpIHsgfQorICAgIFdlYkludGVudChjb25zdCBXZWJJbnRlbnQmIGludGVudCkg
eyBhc3NpZ24oaW50ZW50KTsgfQorICAgIH5XZWJJbnRlbnQoKSB7IHJlc2V0KCk7IH0KIAotICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGFjdGlvbigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRBY3Rpb24oY29uc3QgV2ViU3RyaW5nJik7CisgICAgV2ViSW50ZW50JiBvcGVy
YXRvcj0oY29uc3QgV2ViSW50ZW50JiBvdGhlcikKKyAgICB7CisgICAgICAgYXNzaWduKG90aGVy
KTsKKyAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZXNldCgpOworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkludGVudCYpOworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW50ZW50Jik7CiAKKyAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyBhY3Rpb24oKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0eXBl
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFR5cGUoY29uc3QgV2ViU3RyaW5n
Jik7Ci0KICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkYXRhKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgV2ViU3RyaW5nJik7CiAKKyAgICAvLyBGSVhN
RTogZGVsZXRlIHRoaXMuCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgaWRlbnRpZmllcigpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJZGVudGlmaWVyKGludCk7CiAKICNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJbnRlbnQoKTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgZXhwbGljaXQgV2ViSW50ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpJbnRlbnQ+Jik7CisjZW5kaWYKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdlYlN0cmluZyBt
X2FjdGlvbjsKLSAgICBXZWJTdHJpbmcgbV90eXBlOwotICAgIFdlYlN0cmluZyBtX2RhdGE7Ci0g
ICAgaW50IG1faWRlbnRpZmllcjsKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRlbnQ+IG1fcHJp
dmF0ZTsKKyNlbmRpZgorI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudFJlcXVlc3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMzFhOTA5OTdiOTQ5MzA2ODRiYzhhNmVmZTI2Mjc4ZjliY2VkNTMzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5o
CkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkludGVudFJlcXVlc3RfaAorI2RlZmluZSBXZWJJ
bnRlbnRSZXF1ZXN0X2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50UmVxdWVzdDsgfQorI2VuZGlmCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkludGVudDsKK2NsYXNzIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworLy8gSG9sZHMgZGF0YSBwYXNzZWQgdGhyb3VnaCBh
IFdlYiBJbnRlbnRzIGludm9jYXRpb24gY2FsbCBmcm9tIHRoZSBKYXZhc2NyaXB0CisvLyBJbnRl
bnQgb2JqZWN0LgorLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxv
cGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKK2NsYXNzIFdlYkludGVudFJlcXVl
c3QgeworcHVibGljOgorICAgIFdlYkludGVudFJlcXVlc3QoKSB7IH0KKyAgICBXZWJJbnRlbnRS
ZXF1ZXN0KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIGludGVudCkgeyBhc3NpZ24oaW50ZW50KTsg
fQorICAgIH5XZWJJbnRlbnRSZXF1ZXN0KCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJbnRlbnRS
ZXF1ZXN0JiBvcGVyYXRvcj0oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCisgICAgewor
ICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxs
KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJJbnRlbnRS
ZXF1ZXN0Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJbnRlbnRS
ZXF1ZXN0Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcG9zdFJlc3VsdChjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcG9zdEZhaWx1
cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisKKyAgICBXRUJLSVRfRVhQT1JU
IFdlYkludGVudCBpbnRlbnQoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBleHBsaWNpdCBXZWJJbnRlbnRSZXF1ZXN0KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYpOworICAgIG9wZXJh
dG9yIFdlYkNvcmU6OkludGVudFJlcXVlc3QqKCkgY29uc3Q7CisjZW5kaWYKKyNlbmRpZgorCitw
cml2YXRlOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+IG1fcHJpdmF0ZTsK
KyNlbmRpZgorI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkludGVudFJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNzJlNzFiOTYwODdkYjYxOGZlZDNkMDA5
ZWQ0ODQ5M2VhNmM1ZDkxMS4uMmY1MDVjODk1MGU3MjVhMDczZTViMjYxOThiNDQxOTk3YTRhZGQz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQu
aCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5o
IgorI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlIDxwdWJs
aWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CkBAIC0xNjI5LDQgKzE2MzAsMTIgQEAgYm9vbCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAgICAg
ICBtX3dlYkZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbih0YXJnZXQpLCBXZWJET01NZXNzYWdlRXZl
bnQoZXZlbnQpKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJl
cXVlc3Q+IGludGVudFJlcXVlc3QpCit7CisgICAgV2ViSW50ZW50UmVxdWVzdCByZXF1ZXN0KGlu
dGVudFJlcXVlc3QpOworICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaXNwYXRjaEludGVudCh3
ZWJGcmFtZSgpLCByZXF1ZXN0KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgKaW5kZXggYjFiODViYTM1ODdiMjYxYTViODk5YmJjZjg2NjZhZGExYmYzYzcwMi4uMGJmOTM1
ZDZkZDk4MDg5Mjc4NTA0Zjc3ZTNlOThmZGRmMmVhZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwOCw2ICsyMDgs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdv
cmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9v
bCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biogdGFyZ2V0LCBXZWJDb3JlOjpNZXNzYWdlRXZlbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PikgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkludGVudC5jcHAKaW5kZXggMTM1NDBlMTYyMWI4YTNhZmVjODFiYTk0ZWEwOWJkZmYxMGI5ZWNl
My4uOGVkZmYwYWViYzExMTNlMTJmNmJlYTZkODI2NWJlYjIzNDU0YTQ4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMSw0OCArMzEsNzUgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJbnRlbnQuaCIKIAorI2luY2x1ZGUgIkludGVu
dC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotV2ViSW50ZW50OjpXZWJJbnRlbnQoKSB7IH0KKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCitXZWJJbnRlbnQ6OldlYkludGVudChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVu
dD4mIGludGVudCkKKyAgICA6IG1fcHJpdmF0ZShpbnRlbnQpCit7Cit9CisjZW5kaWYKIAotV2Vi
U3RyaW5nIFdlYkludGVudDo6YWN0aW9uKCkgY29uc3QKK3ZvaWQgV2ViSW50ZW50OjpyZXNldCgp
CiB7Ci0gICAgcmV0dXJuIG1fYWN0aW9uOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBt
X3ByaXZhdGUucmVzZXQoKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYkludGVudDo6c2V0QWN0aW9u
KGNvbnN0IFdlYlN0cmluZyYgYWN0aW9uKQorYm9vbCBXZWJJbnRlbnQ6OmlzTnVsbCgpIGNvbnN0
CiB7Ci0gICAgbV9hY3Rpb24gPSBhY3Rpb247CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotV2ViU3RyaW5nIFdlYkludGVudDo6dHlwZSgpIGNvbnN0Citib29sIFdlYkludGVudDo6ZXF1
YWxzKGNvbnN0IFdlYkludGVudCYgb3RoZXIpCiB7Ci0gICAgcmV0dXJuIG1fdHlwZTsKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gb3RoZXIu
bV9wcml2YXRlLmdldCgpKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdl
YkludGVudDo6c2V0VHlwZShjb25zdCBXZWJTdHJpbmcmIHR5cGUpCit2b2lkIFdlYkludGVudDo6
YXNzaWduKGNvbnN0IFdlYkludGVudCYgb3RoZXIpCiB7Ci0gICAgbV90eXBlID0gdHlwZTsKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwor
I2VuZGlmCiB9CiAKLVdlYlN0cmluZyBXZWJJbnRlbnQ6OmRhdGEoKSBjb25zdAorV2ViU3RyaW5n
IFdlYkludGVudDo6YWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhOworI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hY3Rpb24oKTsKKyNlbmRp
ZgorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJJbnRlbnQ6OnNldERhdGEo
Y29uc3QgV2ViU3RyaW5nJiBkYXRhKQorV2ViU3RyaW5nIFdlYkludGVudDo6dHlwZSgpIGNvbnN0
CiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+dHlwZSgpOworI2VuZGlmCisgICAgcmV0dXJuIFdlYlN0cmluZygpOwog
fQogCi1pbnQgV2ViSW50ZW50OjppZGVudGlmaWVyKCkgY29uc3QKK1dlYlN0cmluZyBXZWJJbnRl
bnQ6OmRhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmRhdGEoKS0+dG9XaXJlU3RyaW5n
KCk7CisjZW5kaWYKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiB9CiAKLXZvaWQgV2ViSW50ZW50
OjpzZXRJZGVudGlmaWVyKGludCBpZGVudGlmaWVyKQoraW50IFdlYkludGVudDo6aWRlbnRpZmll
cigpIGNvbnN0CiB7Ci0gICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICByZXR1cm4g
MDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkludGVudFJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ZTRkNDFhNTAyMjFkZGNi
MThlYmYxNWY4MTVmODdlOWVhYzYzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCisKKyNpbmNsdWRl
ICJJbnRlbnQuaCIKKyNpbmNsdWRlICJJbnRlbnRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50LmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorV2ViSW50ZW50UmVxdWVzdDo6V2ViSW50ZW50UmVx
dWVzdChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+JiBpbnRlbnRSZXF1
ZXN0KQorICAgIDogbV9wcml2YXRlKGludGVudFJlcXVlc3QpCit7Cit9CisjZW5kaWYKKwordm9p
ZCBXZWJJbnRlbnRSZXF1ZXN0OjpyZXNldCgpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIG1fcHJpdmF0ZS5yZXNldCgpOworI2VuZGlmCit9CisKK2Jvb2wgV2ViSW50ZW50UmVxdWVz
dDo6aXNOdWxsKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5pc051bGwoKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFdlYkludGVudFJlcXVlc3Q6OmVxdWFscyhjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBvdGhlcikK
K3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkg
PT0gb3RoZXIubV9wcml2YXRlLmdldCgpKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIFdlYkludGVudFJlcXVlc3Q6OmFzc2lnbihjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBv
dGhlcikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgbV9wcml2YXRlID0gb3RoZXIu
bV9wcml2YXRlOworI2VuZGlmCit9CisKK1dlYkludGVudCBXZWJJbnRlbnRSZXF1ZXN0OjppbnRl
bnQoKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gV2ViSW50
ZW50KG1fcHJpdmF0ZS0+aW50ZW50KCkpOworI2VuZGlmCisKKyAgICByZXR1cm4gV2ViSW50ZW50
KCk7Cit9CisKK3ZvaWQgV2ViSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChjb25zdCBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIGRhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9
IAorICAgICAgICAoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KWRh
dGE7CisgICAgbV9wcml2YXRlLT5wb3N0UmVzdWx0KHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIGRhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1
ZSA9IAorICAgICAgICAoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
KWRhdGE7CisgICAgbV9wcml2YXRlLT5wb3N0RmFpbHVyZShzZXJpYWxpemVkVmFsdWUuZ2V0KCkp
OworI2VuZGlmCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122797</attachid>
            <date>2012-01-17 12:17:07 -0800</date>
            <delta_ts>2012-01-17 15:40:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120117121704.patch</filename>
            <type>text/plain</type>
            <size>16439</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU2Y2RiM2Y4ZmIzODVmMmQ3MTY0OTc5MDhkYjU4MWZiOGVjNTE4NmQuLjI1ZTVhMTNhMGUwNGVi
MmY1MjRiODhjMjY0M2NjZmQ1N2JlNmQ3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTYgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENoYW5nZXMgQXNzb2NpYXRlZFVSTExvYWRlciB0byByZW1vdmUgbm9uLXdoaXRlbGlzdGVk
IEhUVFAgcmVzcG9uc2UgaGVhZGVycyBmb3IgQ09SUyByZXF1ZXN0cywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgz
Li44YWEwZDEyMzRjYTM0MTczNjY5YjBjYzIxYzFhMTVlNmRjYzEwMWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0
RXZlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnQuaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJLaXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCkBA
IC01NzksNiArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SW50ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYktpdC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAxZDhkYmI3NDE2
Y2E2ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li5hNjJhNDBiODc4OGIxNGVjMTg2MmJhMDRh
ZDBkOWFhY2NlMjUzZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNs
YXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsK
LWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2Vi
SW50ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViTWVk
aWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBA
IC0zODEsOCArMzgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnRl
bnRTZXJ2aWNlKFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50U2VydmljZUluZm8mKSB7IH0KIAog
ICAgIC8vIFN0YXJ0IGEgV2ViIEludGVudHMgYWN0aXZpdHkuIFJlcGxpZXMgdG8gdGhpcyByZXF1
ZXN0IHNob3VsZCBiZSBzZW50IHRvCi0gICAgLy8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBh
Y3Rpdml0eS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25z
dCBXZWJJbnRlbnQmKSB7IH0KKyAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2
aXR5LiBUaGUgY2FsbGVlIHVzZXMgdGhpcyBvYmplY3QgdG8KKyAgICAvLyBjb29yZGluYXRlIHJl
cGxpZXMgdG8gdGhlIGludGVudCBpbnZvY2F0aW9uLiAoSXQgc2hvdWxkIGJlIHJlbGVhc2VkIGFz
CisgICAgLy8gc29vbiBhcyBwb3NzaWJsZSB3aGVuIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuKQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIGNvbnN0IFdlYkludGVu
dFJlcXVlc3QmKSB7IH0KIAogICAgIC8vIE1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkludGVudC5oCmluZGV4IDRjZTAzNDJiNzg3YmIxMjVjMTIyN2VkMmNmZTY0MWRl
MjEzZDYxYzQuLmJhODhlOGY5ODkzMDIyZWNiMTMyMzMxOGI4MDA5NWVhNGNkMjdjYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oCkBAIC0zMiw4ICszMiwxNSBA
QAogI2RlZmluZSBXZWJJbnRlbnRfaAogCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgogCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KKyNlbmRpZgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBIb2xkcyBkYXRhIHBhc3NlZCB0aHJv
dWdoIGEgV2ViIEludGVudHMgaW52b2NhdGlvbiBjYWxsIGZyb20gdGhlIEphdmFzY3JpcHQKQEAg
LTQxLDI5ICs0OCwzOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFNlZSBzcGVjIGF0IGh0dHA6
Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWduLWRvY3VtZW50cy93ZWJpbnRlbnRz
YXBpCiBjbGFzcyBXZWJJbnRlbnQgewogcHVibGljOgotICAgIH5XZWJJbnRlbnQoKSB7IH0KKyAg
ICBXZWJJbnRlbnQoKTsKKyAgICBXZWJJbnRlbnQoY29uc3QgV2ViSW50ZW50Jik7CisgICAgfldl
YkludGVudCgpIHsgcmVzZXQoKTsgfQogCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgYWN0
aW9uKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFjdGlvbihjb25zdCBXZWJT
dHJpbmcmKTsKKyAgICBXZWJJbnRlbnQmIG9wZXJhdG9yPShjb25zdCBXZWJJbnRlbnQmIG90aGVy
KQorICAgIHsKKyAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCBi
b29sIGlzTnVsbCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3Qg
V2ViSW50ZW50Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJbnRl
bnQmKTsKIAorICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGFjdGlvbigpIGNvbnN0OwogICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0VHlwZShjb25zdCBXZWJTdHJpbmcmKTsKLQogICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIGRhdGEoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGF0YShjb25z
dCBXZWJTdHJpbmcmKTsKIAorICAgIC8vIEZJWE1FOiBkZWxldGUgdGhpcy4KICAgICBXRUJLSVRf
RVhQT1JUIGludCBpZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dElkZW50aWZpZXIoaW50KTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYklu
dGVudCgpOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBleHBsaWNpdCBXZWJJbnRlbnQo
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4mKTsKKyNlbmRpZgogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgV2ViU3RyaW5nIG1fYWN0aW9uOwotICAgIFdlYlN0cmluZyBtX3R5
cGU7Ci0gICAgV2ViU3RyaW5nIG1fZGF0YTsKLSAgICBpbnQgbV9pZGVudGlmaWVyOworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBXZWJQcml2
YXRlUHRyPFdlYkNvcmU6OkludGVudD4gbV9wcml2YXRlOworI2VuZGlmCisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW50ZW50UmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4YjkxMWJiMDAyYzdlMDhjZDQ5NDRj
OGFiMzkwYmQyMzg4MGM0YmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
SW50ZW50UmVxdWVzdF9oCisjZGVmaW5lIFdlYkludGVudFJlcXVlc3RfaAorCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFz
cyBJbnRlbnRSZXF1ZXN0OyB9CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCisv
LyBIb2xkcyBkYXRhIHBhc3NlZCB0aHJvdWdoIGEgV2ViIEludGVudHMgaW52b2NhdGlvbiBjYWxs
IGZyb20gdGhlIEphdmFzY3JpcHQKKy8vIEludGVudCBvYmplY3QuCisvLyBTZWUgc3BlYyBhdCBo
dHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2Rlc2lnbi1kb2N1bWVudHMvd2ViaW50
ZW50c2FwaQorY2xhc3MgV2ViSW50ZW50UmVxdWVzdCB7CitwdWJsaWM6CisgICAgV2ViSW50ZW50
UmVxdWVzdCgpOworICAgIFdlYkludGVudFJlcXVlc3QoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYp
OworICAgIH5XZWJJbnRlbnRSZXF1ZXN0KCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJbnRlbnRS
ZXF1ZXN0JiBvcGVyYXRvcj0oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCisgICAgewor
ICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxs
KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJJbnRlbnRS
ZXF1ZXN0Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJbnRlbnRS
ZXF1ZXN0Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcG9zdFJlc3VsdChjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcG9zdEZhaWx1
cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisKKyAgICBXRUJLSVRfRVhQT1JU
IFdlYkludGVudCBpbnRlbnQoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBleHBsaWNpdCBXZWJJbnRlbnRSZXF1ZXN0KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYpOworI2VuZGlmCisj
ZW5kaWYKKworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBt
X3ByaXZhdGU7CisjZW5kaWYKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJJbnRlbnRSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IDcyZTcxYjk2MDg3ZGI2
MThmZWQzZDAwOWVkNDg0OTNlYTZjNWQ5MTEuLmZlZjVmNjIzYjA5MDkzZDlkMzE2ODBkNGE2NWRi
NTE0ZTU2ODU0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIldlYkZv
cm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJG
cmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5j
bHVkZSA8cHVibGljL1dlYk1pbWVSZWdpc3RyeS5oPgpAQCAtMTYyOSw0ICsxNjMwLDEzIEBAIGJv
b2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVu
dCgKICAgICAgICAgbV93ZWJGcmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9N
TWVzc2FnZUV2ZW50KGV2ZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisvLyBz
dGVuY2ggb2YgZXJyb3IhIFNob3VsZCBiZSBwYXNzIGJ5IGNvbnN0IHJlZj8KK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVu
dFJlcXVlc3Q+IGludGVudFJlcXVlc3QpCit7CisgICAgV2ViSW50ZW50UmVxdWVzdCByZXF1ZXN0
KGludGVudFJlcXVlc3QpOworICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaXNwYXRjaEludGVu
dCh3ZWJGcmFtZSgpLCByZXF1ZXN0KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmgKaW5kZXggYjFiODViYTM1ODdiMjYxYTViODk5YmJjZjg2NjZhZGExYmYzYzcwMi4uMGJm
OTM1ZDZkZDk4MDg5Mjc4NTA0Zjc3ZTNlOThmZGRmMmVhZGMwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwOCw2ICsy
MDgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5l
dHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIHZpcnR1YWwg
Ym9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiogdGFyZ2V0LCBXZWJDb3JlOjpNZXNzYWdlRXZlbnQqKSBjb25zdDsKIAorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PikgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkludGVudC5jcHAKaW5kZXggMTM1NDBlMTYyMWI4YTNhZmVjODFiYTk0ZWEwOWJkZmYxMGI5
ZWNlMy4uZTY1YTBlNmFlNjE4ZGI0YWMxZmZkZTBkNDg3ODBiMThiOTkwOThhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMSw0OCArMzEsODQgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJbnRlbnQuaCIKIAorI2luY2x1ZGUgIklu
dGVudC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotV2ViSW50ZW50OjpXZWJJbnRlbnQoKSB7IH0KKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCitXZWJJbnRlbnQ6OldlYkludGVudChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Oklu
dGVudD4mIGludGVudCkKKyAgICA6IG1fcHJpdmF0ZShpbnRlbnQpCit7Cit9CisjZW5kaWYKIAot
V2ViU3RyaW5nIFdlYkludGVudDo6YWN0aW9uKCkgY29uc3QKK1dlYkludGVudDo6V2ViSW50ZW50
KCkKIHsKLSAgICByZXR1cm4gbV9hY3Rpb247CiB9CiAKLXZvaWQgV2ViSW50ZW50OjpzZXRBY3Rp
b24oY29uc3QgV2ViU3RyaW5nJiBhY3Rpb24pCitXZWJJbnRlbnQ6OldlYkludGVudChjb25zdCBX
ZWJJbnRlbnQmIGludGVudCkKIHsKLSAgICBtX2FjdGlvbiA9IGFjdGlvbjsKKyAgICBhc3NpZ24o
aW50ZW50KTsKIH0KIAotV2ViU3RyaW5nIFdlYkludGVudDo6dHlwZSgpIGNvbnN0Cit2b2lkIFdl
YkludGVudDo6cmVzZXQoKQogewotICAgIHJldHVybiBtX3R5cGU7CisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorICAgIG1fcHJpdmF0ZS5yZXNldCgpOworI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW50
ZW50OjpzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYgdHlwZSkKK2Jvb2wgV2ViSW50ZW50Ojppc051
bGwoKSBjb25zdAogewotICAgIG1fdHlwZSA9IHR5cGU7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotV2ViU3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0Citib29sIFdlYkludGVu
dDo6ZXF1YWxzKGNvbnN0IFdlYkludGVudCYgb3RoZXIpCiB7Ci0gICAgcmV0dXJuIG1fZGF0YTsK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0g
b3RoZXIubV9wcml2YXRlLmdldCgpKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFdlYkludGVudDo6c2V0RGF0YShjb25zdCBXZWJTdHJpbmcmIGRhdGEpCit2b2lkIFdlYklu
dGVudDo6YXNzaWduKGNvbnN0IFdlYkludGVudCYgb3RoZXIpCiB7Ci0gICAgbV9kYXRhID0gZGF0
YTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2
YXRlOworI2VuZGlmCiB9CiAKLWludCBXZWJJbnRlbnQ6OmlkZW50aWZpZXIoKSBjb25zdAorV2Vi
U3RyaW5nIFdlYkludGVudDo6YWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pZGVudGlm
aWVyOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hY3Rp
b24oKTsKKyNlbmRpZgorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJJbnRl
bnQ6OnNldElkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpCitXZWJTdHJpbmcgV2ViSW50ZW50Ojp0
eXBlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+dHlwZSgpOworI2VuZGlmCisgICAgcmV0dXJuIFdlYlN0cmluZygpOworfQorCitXZWJT
dHJpbmcgV2ViSW50ZW50OjpkYXRhKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZGF0YSgpLT50b1dpcmVTdHJpbmcoKTsKKyNlbmRpZgor
ICAgIHJldHVybiBXZWJTdHJpbmcoKTsKK30KKworaW50IFdlYkludGVudDo6aWRlbnRpZmllcigp
IGNvbnN0CiB7Ci0gICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICByZXR1cm4gMDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkludGVudFJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhOGMzZWQwYmMxYmRkMjQ2NTRl
MDlmYzYyNjIzZTFlMzM0OTU3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJJ
bnRlbnQuaCIKKyNpbmNsdWRlICJJbnRlbnRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50LmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorV2ViSW50ZW50UmVxdWVzdDo6V2ViSW50ZW50UmVxdWVz
dChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+JiBpbnRlbnRSZXF1ZXN0
KQorICAgIDogbV9wcml2YXRlKGludGVudFJlcXVlc3QpCit7Cit9CisjZW5kaWYKKworV2ViSW50
ZW50UmVxdWVzdDo6V2ViSW50ZW50UmVxdWVzdCgpCit7Cit9CisKK1dlYkludGVudFJlcXVlc3Q6
OldlYkludGVudFJlcXVlc3QoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgaW50ZW50UmVxdWVzdCkK
K3sKKyAgICBhc3NpZ24oaW50ZW50UmVxdWVzdCk7Cit9CisKK3ZvaWQgV2ViSW50ZW50UmVxdWVz
dDo6cmVzZXQoKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUucmVz
ZXQoKTsKKyNlbmRpZgorfQorCitib29sIFdlYkludGVudFJlcXVlc3Q6OmlzTnVsbCgpIGNvbnN0
Cit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUuaXNOdWxs
KCk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJJbnRlbnRSZXF1ZXN0
OjplcXVhbHMoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCit7CisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorICAgIHJldHVybiAobV9wcml2YXRlLmdldCgpID09IG90aGVyLm1fcHJpdmF0
ZS5nZXQoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnRlbnRS
ZXF1ZXN0Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCit7CisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKKyNlbmRp
ZgorfQorCitXZWJJbnRlbnQgV2ViSW50ZW50UmVxdWVzdDo6aW50ZW50KCkgY29uc3QKK3sKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIFdlYkludGVudChtX3ByaXZhdGUtPmlu
dGVudCgpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFdlYkludGVudCgpOworfQorCit2b2lkIFdl
YkludGVudFJlcXVlc3Q6OnBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBkYXRhKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBSZWZQdHI8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKyAgICAgICAgKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworICAgIG1fcHJpdmF0
ZS0+cG9zdFJlc3VsdChzZXJpYWxpemVkVmFsdWUuZ2V0KCkpOworI2VuZGlmCit9CisKK3ZvaWQg
V2ViSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBkYXRhKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKyAgICAgICAgKFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworICAgIG1fcHJp
dmF0ZS0+cG9zdEZhaWx1cmUoc2VyaWFsaXplZFZhbHVlLmdldCgpKTsKKyNlbmRpZgorfQorCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122827</attachid>
            <date>2012-01-17 15:40:44 -0800</date>
            <delta_ts>2012-01-18 16:50:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120117154043.patch</filename>
            <type>text/plain</type>
            <size>16167</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU2Y2RiM2Y4ZmIzODVmMmQ3MTY0OTc5MDhkYjU4MWZiOGVjNTE4NmQuLjI1ZTVhMTNhMGUwNGVi
MmY1MjRiODhjMjY0M2NjZmQ1N2JlNmQ3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTYgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENoYW5nZXMgQXNzb2NpYXRlZFVSTExvYWRlciB0byByZW1vdmUgbm9uLXdoaXRlbGlzdGVk
IEhUVFAgcmVzcG9uc2UgaGVhZGVycyBmb3IgQ09SUyByZXF1ZXN0cywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgz
Li44YWEwZDEyMzRjYTM0MTczNjY5YjBjYzIxYzFhMTVlNmRjYzEwMWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0
RXZlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnQuaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJLaXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCkBA
IC01NzksNiArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SW50ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYktpdC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAxZDhkYmI3NDE2
Y2E2ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li5hNjJhNDBiODc4OGIxNGVjMTg2MmJhMDRh
ZDBkOWFhY2NlMjUzZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNs
YXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsK
LWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2Vi
SW50ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViTWVk
aWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBA
IC0zODEsOCArMzgyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnRl
bnRTZXJ2aWNlKFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50U2VydmljZUluZm8mKSB7IH0KIAog
ICAgIC8vIFN0YXJ0IGEgV2ViIEludGVudHMgYWN0aXZpdHkuIFJlcGxpZXMgdG8gdGhpcyByZXF1
ZXN0IHNob3VsZCBiZSBzZW50IHRvCi0gICAgLy8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBh
Y3Rpdml0eS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25z
dCBXZWJJbnRlbnQmKSB7IH0KKyAgICAvLyB0aGUgV2ViRnJhbWUgc3RhcnRpbmcgdGhlIGFjdGl2
aXR5LiBUaGUgY2FsbGVlIHVzZXMgdGhpcyBvYmplY3QgdG8KKyAgICAvLyBjb29yZGluYXRlIHJl
cGxpZXMgdG8gdGhlIGludGVudCBpbnZvY2F0aW9uLiAoSXQgc2hvdWxkIGJlIHJlbGVhc2VkIGFz
CisgICAgLy8gc29vbiBhcyBwb3NzaWJsZSB3aGVuIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuKQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChXZWJGcmFtZSosIGNvbnN0IFdlYkludGVu
dFJlcXVlc3QmKSB7IH0KIAogICAgIC8vIE1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkludGVudC5oCmluZGV4IDRjZTAzNDJiNzg3YmIxMjVjMTIyN2VkMmNmZTY0MWRl
MjEzZDYxYzQuLjgwODM2ZDlmZGE0MjdmYmNjYTQ0MDI0MTNjOGEwOGM2ZjMyNWU3MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudC5oCkBAIC0zMiw4ICszMiwxMSBA
QAogI2RlZmluZSBXZWJJbnRlbnRfaAogCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgogCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEludGVudDsgfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gSG9sZHMgZGF0YSBwYXNzZWQgdGhyb3VnaCBhIFdlYiBJ
bnRlbnRzIGludm9jYXRpb24gY2FsbCBmcm9tIHRoZSBKYXZhc2NyaXB0CkBAIC00MSwyOSArNDQs
MzUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBTZWUgc3BlYyBhdCBodHRwOi8vd3d3LmNocm9t
aXVtLm9yZy9kZXZlbG9wZXJzL2Rlc2lnbi1kb2N1bWVudHMvd2ViaW50ZW50c2FwaQogY2xhc3Mg
V2ViSW50ZW50IHsKIHB1YmxpYzoKLSAgICB+V2ViSW50ZW50KCkgeyB9CisgICAgV2ViSW50ZW50
KCk7CisgICAgV2ViSW50ZW50KGNvbnN0IFdlYkludGVudCYpOworICAgIH5XZWJJbnRlbnQoKSB7
IHJlc2V0KCk7IH0KIAotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGFjdGlvbigpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBY3Rpb24oY29uc3QgV2ViU3RyaW5nJik7Cisg
ICAgV2ViSW50ZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViSW50ZW50JiBvdGhlcikKKyAgICB7Cisg
ICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIFdF
QktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc051bGwo
KSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkludGVudCYp
OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW50ZW50Jik7CiAKKyAg
ICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBhY3Rpb24oKSBjb25zdDsKICAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyB0eXBlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFR5
cGUoY29uc3QgV2ViU3RyaW5nJik7Ci0KICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkYXRh
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgV2ViU3RyaW5n
Jik7CiAKKyAgICAvLyBGSVhNRTogZGVsZXRlIHRoaXMuCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQg
aWRlbnRpZmllcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJZGVudGlmaWVy
KGludCk7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJbnRlbnQoKTsKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgZXhwbGljaXQgV2ViSW50ZW50KGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+Jik7CisjZW5kaWYKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIFdlYlN0cmluZyBtX2FjdGlvbjsKLSAgICBXZWJTdHJpbmcgbV90eXBlOwotICAgIFdl
YlN0cmluZyBtX2RhdGE7Ci0gICAgaW50IG1faWRlbnRpZmllcjsKKyAgICBXZWJQcml2YXRlUHRy
PFdlYkNvcmU6OkludGVudD4gbV9wcml2YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTNjNTc4MTEwNzA0YjVlZDlhYWIzYTYwZGExMTA4MzUwOTJmNjA3MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkludGVudFJl
cXVlc3QuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnRlbnRSZXF1ZXN0X2gKKyNkZWZp
bmUgV2ViSW50ZW50UmVxdWVzdF9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW50ZW50UmVxdWVzdDsg
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOworCisvLyBIb2xkcyBkYXRhIHBhc3NlZCB0aHJvdWdoIGEgV2Vi
IEludGVudHMgaW52b2NhdGlvbiBjYWxsIGZyb20gdGhlIEphdmFzY3JpcHQKKy8vIEludGVudCBv
YmplY3QuCisvLyBTZWUgc3BlYyBhdCBodHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJz
L2Rlc2lnbi1kb2N1bWVudHMvd2ViaW50ZW50c2FwaQorY2xhc3MgV2ViSW50ZW50UmVxdWVzdCB7
CitwdWJsaWM6CisgICAgV2ViSW50ZW50UmVxdWVzdCgpOworICAgIFdlYkludGVudFJlcXVlc3Qo
Y29uc3QgV2ViSW50ZW50UmVxdWVzdCYpOworICAgIH5XZWJJbnRlbnRSZXF1ZXN0KCkgeyByZXNl
dCgpOyB9CisKKyAgICBXZWJJbnRlbnRSZXF1ZXN0JiBvcGVyYXRvcj0oY29uc3QgV2ViSW50ZW50
UmVxdWVzdCYgb3RoZXIpCisgICAgeworICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBX
RUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29s
IGVxdWFscyhjb25zdCBXZWJJbnRlbnRSZXF1ZXN0Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGFzc2lnbihjb25zdCBXZWJJbnRlbnRSZXF1ZXN0Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcG9zdFJlc3VsdChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcG9zdEZhaWx1cmUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkludGVudCBpbnRlbnQoKSBjb25zdDsKKworI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBleHBs
aWNpdCBXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0PiYpOworI2VuZGlmCisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRl
UHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSW50ZW50UmVxdWVzdF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA3
MmU3MWI5NjA4N2RiNjE4ZmVkM2QwMDllZDQ4NDkzZWE2YzVkOTExLi5mZWY1ZjYyM2IwOTA5M2Q5
ZDMxNjgwZDRhNjVkYjUxNGU1Njg1NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNp
bmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgog
I2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaD4KQEAgLTE2MjksNCAr
MTYzMCwxMyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6d2lsbENoZWNrQW5kRGlzcGF0
Y2hNZXNzYWdlRXZlbnQoCiAgICAgICAgIG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKHRh
cmdldCksIFdlYkRPTU1lc3NhZ2VFdmVudChldmVudCkpOwogfQogCisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorLy8gc3RlbmNoIG9mIGVycm9yISBTaG91bGQgYmUgcGFzcyBieSBjb25zdCByZWY/
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBpbnRlbnRSZXF1ZXN0KQoreworICAgIFdlYkludGVudFJl
cXVlc3QgcmVxdWVzdChpbnRlbnRSZXF1ZXN0KTsKKyAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+
ZGlzcGF0Y2hJbnRlbnQod2ViRnJhbWUoKSwgcmVxdWVzdCk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IGIxYjg1YmEzNTg3YjI2MWE1Yjg5OWJiY2Y4NjY2YWRh
MWJmM2M3MDIuLjBiZjkzNWQ2ZGQ5ODA4OTI3ODUwNGY3N2UzZTk4ZmRkZjJlYWRjMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CkBAIC0yMDgsNiArMjA4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsK
ICAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4qIHRhcmdldCwgV2ViQ29yZTo6TWVzc2FnZUV2ZW50KikgY29uc3Q7
CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50
ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4pIE9WRVJSSURFOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCmluZGV4IDEzNTQwZTE2MjFiOGEzYWZlYzgxYmE5
NGVhMDliZGZmMTBiOWVjZTMuLmU2NWEwZTZhZTYxOGRiNGFjMWZmZGUwZDQ4NzgwYjE4Yjk5MDk4
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcApAQCAtMzEsNDgg
KzMxLDg0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAK
KyNpbmNsdWRlICJJbnRlbnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkludGVudDo6V2ViSW50ZW50KCkgeyB9CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorV2ViSW50ZW50OjpXZWJJbnRlbnQoY29uc3QgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJbnRlbnQ+JiBpbnRlbnQpCisgICAgOiBtX3ByaXZhdGUoaW50ZW50KQorewor
fQorI2VuZGlmCiAKLVdlYlN0cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CitXZWJJbnRl
bnQ6OldlYkludGVudCgpCiB7Ci0gICAgcmV0dXJuIG1fYWN0aW9uOwogfQogCi12b2lkIFdlYklu
dGVudDo6c2V0QWN0aW9uKGNvbnN0IFdlYlN0cmluZyYgYWN0aW9uKQorV2ViSW50ZW50OjpXZWJJ
bnRlbnQoY29uc3QgV2ViSW50ZW50JiBpbnRlbnQpCiB7Ci0gICAgbV9hY3Rpb24gPSBhY3Rpb247
CisgICAgYXNzaWduKGludGVudCk7CiB9CiAKLVdlYlN0cmluZyBXZWJJbnRlbnQ6OnR5cGUoKSBj
b25zdAordm9pZCBXZWJJbnRlbnQ6OnJlc2V0KCkKIHsKLSAgICByZXR1cm4gbV90eXBlOworI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKKyNlbmRpZgogfQog
Ci12b2lkIFdlYkludGVudDo6c2V0VHlwZShjb25zdCBXZWJTdHJpbmcmIHR5cGUpCitib29sIFdl
YkludGVudDo6aXNOdWxsKCkgY29uc3QKIHsKLSAgICBtX3R5cGUgPSB0eXBlOworI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOworI2VuZGlmCisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLVdlYlN0cmluZyBXZWJJbnRlbnQ6OmRhdGEoKSBjb25zdAor
Ym9vbCBXZWJJbnRlbnQ6OmVxdWFscyhjb25zdCBXZWJJbnRlbnQmIG90aGVyKQogewotICAgIHJl
dHVybiBtX2RhdGE7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiAobV9wcml2
YXRlLmdldCgpID09IG90aGVyLm1fcHJpdmF0ZS5nZXQoKSk7CisjZW5kaWYKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBXZWJJbnRlbnQ6OnNldERhdGEoY29uc3QgV2ViU3RyaW5nJiBkYXRh
KQordm9pZCBXZWJJbnRlbnQ6OmFzc2lnbihjb25zdCBXZWJJbnRlbnQmIG90aGVyKQogewotICAg
IG1fZGF0YSA9IGRhdGE7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIG1fcHJpdmF0ZSA9
IG90aGVyLm1fcHJpdmF0ZTsKKyNlbmRpZgogfQogCi1pbnQgV2ViSW50ZW50OjppZGVudGlmaWVy
KCkgY29uc3QKK1dlYlN0cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1faWRlbnRpZmllcjsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+YWN0aW9uKCk7CisjZW5kaWYKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiB9CiAK
LXZvaWQgV2ViSW50ZW50OjpzZXRJZGVudGlmaWVyKGludCBpZGVudGlmaWVyKQorV2ViU3RyaW5n
IFdlYkludGVudDo6dHlwZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IHJldHVybiBtX3ByaXZhdGUtPnR5cGUoKTsKKyNlbmRpZgorICAgIHJldHVybiBXZWJTdHJpbmco
KTsKK30KKworV2ViU3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmRhdGEoKS0+dG9XaXJlU3RyaW5n
KCk7CisjZW5kaWYKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7Cit9CisKK2ludCBXZWJJbnRlbnQ6
OmlkZW50aWZpZXIoKSBjb25zdAogewotICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYThjM2Vk
MGJjMWJkZDI0NjU0ZTA5ZmM2MjYyM2UxZTMzNDk1N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAKQEAgLTAsMCArMSwx
MTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgor
CisjaW5jbHVkZSAiSW50ZW50LmgiCisjaW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgorI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYkludGVudC5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK1dlYkludGVudFJlcXVlc3Q6Oldl
YkludGVudFJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYg
aW50ZW50UmVxdWVzdCkKKyAgICA6IG1fcHJpdmF0ZShpbnRlbnRSZXF1ZXN0KQoreworfQorI2Vu
ZGlmCisKK1dlYkludGVudFJlcXVlc3Q6OldlYkludGVudFJlcXVlc3QoKQoreworfQorCitXZWJJ
bnRlbnRSZXF1ZXN0OjpXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIGlu
dGVudFJlcXVlc3QpCit7CisgICAgYXNzaWduKGludGVudFJlcXVlc3QpOworfQorCit2b2lkIFdl
YkludGVudFJlcXVlc3Q6OnJlc2V0KCkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
bV9wcml2YXRlLnJlc2V0KCk7CisjZW5kaWYKK30KKworYm9vbCBXZWJJbnRlbnRSZXF1ZXN0Ojpp
c051bGwoKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9w
cml2YXRlLmlzTnVsbCgpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2Vi
SW50ZW50UmVxdWVzdDo6ZXF1YWxzKGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVyKQorewor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gKG1fcHJpdmF0ZS5nZXQoKSA9PSBv
dGhlci5tX3ByaXZhdGUuZ2V0KCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgV2ViSW50ZW50UmVxdWVzdDo6YXNzaWduKGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVy
KQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3By
aXZhdGU7CisjZW5kaWYKK30KKworV2ViSW50ZW50IFdlYkludGVudFJlcXVlc3Q6OmludGVudCgp
IGNvbnN0Cit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBXZWJJbnRlbnQo
bV9wcml2YXRlLT5pbnRlbnQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiBXZWJJbnRlbnQoKTsK
K30KKwordm9pZCBXZWJJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgZGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgUmVm
UHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gCisg
ICAgICAgIChQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pZGF0YTsK
KyAgICBtX3ByaXZhdGUtPnBvc3RSZXN1bHQoc2VyaWFsaXplZFZhbHVlLmdldCgpKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYkludGVudFJlcXVlc3Q6OnBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgZGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0g
CisgICAgICAgIChQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pZGF0
YTsKKyAgICBtX3ByaXZhdGUtPnBvc3RGYWlsdXJlKHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSk7Cisj
ZW5kaWYKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123038</attachid>
            <date>2012-01-18 16:50:13 -0800</date>
            <delta_ts>2012-01-19 07:53:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120118165012.patch</filename>
            <type>text/plain</type>
            <size>16055</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU2Y2RiM2Y4ZmIzODVmMmQ3MTY0OTc5MDhkYjU4MWZiOGVjNTE4NmQuLjI1ZTVhMTNhMGUwNGVi
MmY1MjRiODhjMjY0M2NjZmQ1N2JlNmQ3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTYgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENoYW5nZXMgQXNzb2NpYXRlZFVSTExvYWRlciB0byByZW1vdmUgbm9uLXdoaXRlbGlzdGVk
IEhUVFAgcmVzcG9uc2UgaGVhZGVycyBmb3IgQ09SUyByZXF1ZXN0cywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgz
Li44YWEwZDEyMzRjYTM0MTczNjY5YjBjYzIxYzFhMTVlNmRjYzEwMWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0
RXZlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnQuaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJLaXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCkBA
IC01NzksNiArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SW50ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYktpdC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAxZDhkYmI3NDE2
Y2E2ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li5kMDUwN2UzZDFiNWQyNDYyYmIyNDgxYTg3
MWQzM2Q5YmViMDUwYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNs
YXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsK
LWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2Vi
SW50ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViTWVk
aWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBA
IC0zODAsOSArMzgxLDkgQEAgcHVibGljOgogICAgIC8vIFJlZ2lzdGVyIGEgc2VydmljZSB0byBo
YW5kbGUgV2ViIEludGVudHMuCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW50ZW50U2Vydmlj
ZShXZWJGcmFtZSosIGNvbnN0IFdlYkludGVudFNlcnZpY2VJbmZvJikgeyB9CiAKLSAgICAvLyBT
dGFydCBhIFdlYiBJbnRlbnRzIGFjdGl2aXR5LiBSZXBsaWVzIHRvIHRoaXMgcmVxdWVzdCBzaG91
bGQgYmUgc2VudCB0bwotICAgIC8vIHRoZSBXZWJGcmFtZSBzdGFydGluZyB0aGUgYWN0aXZpdHku
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViSW50
ZW50JikgeyB9CisgICAgLy8gU3RhcnQgYSBXZWIgSW50ZW50cyBhY3Rpdml0eS4gVGhlIGNhbGxl
ZSB1c2VzIHRoZSB8V2ViSW50ZW50UmVxdWVzdHwKKyAgICAvLyBvYmplY3QgdG8gY29vcmRpbmF0
ZSByZXBsaWVzIHRvIHRoZSBpbnRlbnQgaW52b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JikgeyB9CiAKICAg
ICAvLyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApp
bmRleCA0Y2UwMzQyYjc4N2JiMTI1YzEyMjdlZDJjZmU2NDFkZTIxM2Q2MWM0Li4wYWQwZTgzMTNi
NTEyMDY1ZGZkYjkwYTQ4N2YwMDIwMjRmMzQ5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJbnRlbnQuaApAQCAtMzIsOCArMzIsMTEgQEAKICNkZWZpbmUgV2ViSW50ZW50
X2gKIAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IC8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIgSW50ZW50cyBpbnZvY2F0aW9uIGNh
bGwgZnJvbSB0aGUgSmF2YXNjcmlwdApAQCAtNDEsMjkgKzQ0LDMzIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9k
ZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKIGNsYXNzIFdlYkludGVudCB7CiBwdWJsaWM6
Ci0gICAgfldlYkludGVudCgpIHsgfQorICAgIFdlYkludGVudCgpIHsgfQorICAgIFdlYkludGVu
dChjb25zdCBXZWJJbnRlbnQmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViSW50
ZW50KCkgeyByZXNldCgpOyB9CiAKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBhY3Rpb24o
KSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWN0aW9uKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdlYkludGVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYkludGVudCYgb3RoZXIpCisg
ICAgeworICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
aXNOdWxsKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJJ
bnRlbnQmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkludGVudCYp
OwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgYWN0aW9uKCkgY29uc3Q7CiAgICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYpOwotCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJp
bmcgZGF0YSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IFdl
YlN0cmluZyYpOwogCisgICAgLy8gRklYTUU6IGRlbGV0ZSB0aGlzLgogICAgIFdFQktJVF9FWFBP
UlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRl
bnRpZmllcihpbnQpOwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSW50ZW50
KCk7CisgICAgZXhwbGljaXQgV2ViSW50ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpJbnRlbnQ+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJTdHJpbmcgbV9hY3Rpb247
Ci0gICAgV2ViU3RyaW5nIG1fdHlwZTsKLSAgICBXZWJTdHJpbmcgbV9kYXRhOwotICAgIGludCBt
X2lkZW50aWZpZXI7CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRlbnQ+IG1fcHJpdmF0
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzMTlmMmIxYzg2MDU1
MWZmMjEzODMyNmNmYjliNTVlYTBkMTFmODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgKQEAgLTAsMCArMSw3OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViSW50ZW50UmVxdWVzdF9oCisjZGVmaW5lIFdlYkludGVudFJlcXVlc3RfaAorCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJp
dmF0ZVB0ci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkludGVudDsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworLy8g
SG9sZHMgZGF0YSBwYXNzZWQgdGhyb3VnaCBhIFdlYiBJbnRlbnRzIGludm9jYXRpb24gY2FsbCBm
cm9tIHRoZSBKYXZhc2NyaXB0CisvLyBJbnRlbnQgb2JqZWN0LgorLy8gU2VlIHNwZWMgYXQgaHR0
cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVu
dHNhcGkKK2NsYXNzIFdlYkludGVudFJlcXVlc3QgeworcHVibGljOgorICAgIFdlYkludGVudFJl
cXVlc3QoKSB7IH0KKyAgICBXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYkludGVudFJlcXVlc3Qm
IG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViSW50ZW50UmVxdWVzdCgpIHsgcmVz
ZXQoKTsgfQorCisgICAgV2ViSW50ZW50UmVxdWVzdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkludGVu
dFJlcXVlc3QmIG90aGVyKQorICAgIHsKKyAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAg
V0VCS0lUX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9v
bCBlcXVhbHMoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYpOworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJJbnRlbnQgaW50ZW50KCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBleHBsaWNpdCBXZWJJbnRlbnRSZXF1ZXN0KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBtX3By
aXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkludGVu
dFJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNzJlNzFiOTYwODdkYjYxOGZlZDNkMDA5ZWQ0ODQ5M2Vh
NmM1ZDkxMS4uMmY1MDVjODk1MGU3MjVhMDczZTViMjYxOThiNDQxOTk3YTRhZGQzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIKICNpbmNs
dWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1
ZGUgIldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViTWlt
ZVJlZ2lzdHJ5Lmg+CkBAIC0xNjI5LDQgKzE2MzAsMTIgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVu
dEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAgICAgICBtX3dlYkZy
YW1lLCBXZWJTZWN1cml0eU9yaWdpbih0YXJnZXQpLCBXZWJET01NZXNzYWdlRXZlbnQoZXZlbnQp
KTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+IGlu
dGVudFJlcXVlc3QpCit7CisgICAgV2ViSW50ZW50UmVxdWVzdCByZXF1ZXN0KGludGVudFJlcXVl
c3QpOworICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaXNwYXRjaEludGVudCh3ZWJGcmFtZSgp
LCByZXF1ZXN0KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXgg
YjFiODViYTM1ODdiMjYxYTViODk5YmJjZjg2NjZhZGExYmYzYzcwMi4uMGJmOTM1ZDZkZDk4MDg5
Mjc4NTA0Zjc3ZTNlOThmZGRmMmVhZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwOCw2ICsyMDgsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250
ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hl
Y2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdGFyZ2V0
LCBXZWJDb3JlOjpNZXNzYWdlRXZlbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
bnRlbnRSZXF1ZXN0PikgT1ZFUlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIG1h
a2VEb2N1bWVudFZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5j
cHAKaW5kZXggMTM1NDBlMTYyMWI4YTNhZmVjODFiYTk0ZWEwOWJkZmYxMGI5ZWNlMy4uMjRjODA2
ZDlkNTZlMThlNzBmNTUwOGQ5NGI1YWRjYjM2MzUyYmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0zMSw0OCArMzEsODAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJJbnRlbnQuaCIKIAorI2luY2x1ZGUgIkludGVudC5oIgorI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
V2ViSW50ZW50OjpXZWJJbnRlbnQoKSB7IH0KKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitXZWJJ
bnRlbnQ6OldlYkludGVudChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudD4mIGludGVu
dCkKKyAgICA6IG1fcHJpdmF0ZShpbnRlbnQpCit7Cit9CisjZW5kaWYKIAotV2ViU3RyaW5nIFdl
YkludGVudDo6YWN0aW9uKCkgY29uc3QKK3ZvaWQgV2ViSW50ZW50OjpyZXNldCgpCiB7Ci0gICAg
cmV0dXJuIG1fYWN0aW9uOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUu
cmVzZXQoKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYkludGVudDo6c2V0QWN0aW9uKGNvbnN0IFdl
YlN0cmluZyYgYWN0aW9uKQorYm9vbCBXZWJJbnRlbnQ6OmlzTnVsbCgpIGNvbnN0CiB7Ci0gICAg
bV9hY3Rpb24gPSBhY3Rpb247CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBt
X3ByaXZhdGUuaXNOdWxsKCk7CisjZWxzZQorICAgIHJldHVybiB0cnVlOworI2VuZGlmCiB9CiAK
LVdlYlN0cmluZyBXZWJJbnRlbnQ6OnR5cGUoKSBjb25zdAorYm9vbCBXZWJJbnRlbnQ6OmVxdWFs
cyhjb25zdCBXZWJJbnRlbnQmIG90aGVyKQogewotICAgIHJldHVybiBtX3R5cGU7CisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiAobV9wcml2YXRlLmdldCgpID09IG90aGVyLm1f
cHJpdmF0ZS5nZXQoKSk7CisjZWxzZQorICAgIHJldHVybiB0cnVlOworI2VuZGlmCiB9CiAKLXZv
aWQgV2ViSW50ZW50OjpzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYgdHlwZSkKK3ZvaWQgV2ViSW50
ZW50Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50JiBvdGhlcikKIHsKLSAgICBtX3R5cGUgPSB0eXBl
OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZh
dGU7CisjZW5kaWYKIH0KIAotV2ViU3RyaW5nIFdlYkludGVudDo6ZGF0YSgpIGNvbnN0CitXZWJT
dHJpbmcgV2ViSW50ZW50OjphY3Rpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGE7Cisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmFjdGlvbigpOwor
I2Vsc2UKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisjZW5kaWYKIH0KIAotdm9pZCBXZWJJbnRl
bnQ6OnNldERhdGEoY29uc3QgV2ViU3RyaW5nJiBkYXRhKQorV2ViU3RyaW5nIFdlYkludGVudDo6
dHlwZSgpIGNvbnN0CiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dHlwZSgpOworI2Vsc2UKKyAgICByZXR1cm4gV2Vi
U3RyaW5nKCk7CisjZW5kaWYKIH0KIAotaW50IFdlYkludGVudDo6aWRlbnRpZmllcigpIGNvbnN0
CitXZWJTdHJpbmcgV2ViSW50ZW50OjpkYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pZGVu
dGlmaWVyOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9wcml2YXRlLT5k
YXRhKCktPnRvV2lyZVN0cmluZygpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViU3RyaW5nKCk7Cisj
ZW5kaWYKIH0KIAotdm9pZCBXZWJJbnRlbnQ6OnNldElkZW50aWZpZXIoaW50IGlkZW50aWZpZXIp
CitpbnQgV2ViSW50ZW50OjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBtX2lkZW50aWZpZXIg
PSBpZGVudGlmaWVyOworICAgIHJldHVybiAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWRkOTAwZmJkY2RkYjc3ZWU2N2QxMDI4OTlmMmYzMTBiZmM0YWRjZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudFJlcXVlc3Qu
Y3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYklu
dGVudFJlcXVlc3QuaCIKKworI2luY2x1ZGUgIkludGVudC5oIgorI2luY2x1ZGUgIkludGVudFJl
cXVlc3QuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJX
ZWJJbnRlbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitXZWJJ
bnRlbnRSZXF1ZXN0OjpXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6
SW50ZW50UmVxdWVzdD4mIGludGVudFJlcXVlc3QpCisgICAgOiBtX3ByaXZhdGUoaW50ZW50UmVx
dWVzdCkKK3sKK30KKyNlbmRpZgorCit2b2lkIFdlYkludGVudFJlcXVlc3Q6OnJlc2V0KCkKK3sK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgbV9wcml2YXRlLnJlc2V0KCk7CisjZW5kaWYK
K30KKworYm9vbCBXZWJJbnRlbnRSZXF1ZXN0Ojppc051bGwoKSBjb25zdAoreworI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOworI2Vsc2UKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCitib29sIFdlYkludGVudFJlcXVlc3Q6OmVxdWFs
cyhjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBvdGhlcikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gb3RoZXIubV9wcml2YXRlLmdldCgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwordm9pZCBXZWJJbnRlbnRS
ZXF1ZXN0Ojphc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgb3RoZXIpCit7CisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKKyNlbmRp
ZgorfQorCitXZWJJbnRlbnQgV2ViSW50ZW50UmVxdWVzdDo6aW50ZW50KCkgY29uc3QKK3sKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIFdlYkludGVudChtX3ByaXZhdGUtPmlu
dGVudCgpKTsKKyNlbHNlCisgICAgcmV0dXJuIFdlYkludGVudCgpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUmIGRhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorLy8gICAgUmVmUHRyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gCisvLyAgICAg
ICAgKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworLy8g
ICAgbV9wcml2YXRlLT5wb3N0UmVzdWx0KHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSk7CisgICAgbV9w
cml2YXRlLT5wb3N0UmVzdWx0KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPihkYXRhKS5nZXQoKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJJbnRlbnRSZXF1ZXN0Ojpw
b3N0RmFpbHVyZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIGRhdGEpCit7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorLy8gICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gCisvLyAgICAgICAgKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPilkYXRhOworLy8gICAgbV9wcml2YXRlLT5wb3N0RmFp
bHVyZShzZXJpYWxpemVkVmFsdWUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+cG9zdEZhaWx1cmUo
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KGRhdGEpLmdldCgpKTsK
KyNlbmRpZgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123127</attachid>
            <date>2012-01-19 07:54:02 -0800</date>
            <delta_ts>2012-01-19 14:20:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120119075401.patch</filename>
            <type>text/plain</type>
            <size>15997</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU2Y2RiM2Y4ZmIzODVmMmQ3MTY0OTc5MDhkYjU4MWZiOGVjNTE4NmQuLjI1ZTVhMTNhMGUwNGVi
MmY1MjRiODhjMjY0M2NjZmQ1N2JlNmQ3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTYgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENoYW5nZXMgQXNzb2NpYXRlZFVSTExvYWRlciB0byByZW1vdmUgbm9uLXdoaXRlbGlzdGVk
IEhUVFAgcmVzcG9uc2UgaGVhZGVycyBmb3IgQ09SUyByZXF1ZXN0cywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAppbmRleCAyZTU5ZjhjMWY2NjE3NTJkYWI5MjVkMWQ2NWY2MzBhNGNmZTQyZTgz
Li44YWEwZDEyMzRjYTM0MTczNjY5YjBjYzIxYzFhMTVlNmRjYzEwMWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0
RXZlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnQuaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJLaXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCkBA
IC01NzksNiArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVudC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SW50ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYktpdC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAxZDhkYmI3NDE2
Y2E2ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li5kMDUwN2UzZDFiNWQyNDYyYmIyNDgxYTg3
MWQzM2Q5YmViMDUwYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNs
YXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsK
LWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViSW50ZW50OworY2xhc3MgV2Vi
SW50ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViTWVk
aWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CkBA
IC0zODAsOSArMzgxLDkgQEAgcHVibGljOgogICAgIC8vIFJlZ2lzdGVyIGEgc2VydmljZSB0byBo
YW5kbGUgV2ViIEludGVudHMuCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW50ZW50U2Vydmlj
ZShXZWJGcmFtZSosIGNvbnN0IFdlYkludGVudFNlcnZpY2VJbmZvJikgeyB9CiAKLSAgICAvLyBT
dGFydCBhIFdlYiBJbnRlbnRzIGFjdGl2aXR5LiBSZXBsaWVzIHRvIHRoaXMgcmVxdWVzdCBzaG91
bGQgYmUgc2VudCB0bwotICAgIC8vIHRoZSBXZWJGcmFtZSBzdGFydGluZyB0aGUgYWN0aXZpdHku
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViSW50
ZW50JikgeyB9CisgICAgLy8gU3RhcnQgYSBXZWIgSW50ZW50cyBhY3Rpdml0eS4gVGhlIGNhbGxl
ZSB1c2VzIHRoZSB8V2ViSW50ZW50UmVxdWVzdHwKKyAgICAvLyBvYmplY3QgdG8gY29vcmRpbmF0
ZSByZXBsaWVzIHRvIHRoZSBpbnRlbnQgaW52b2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JikgeyB9CiAKICAg
ICAvLyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApp
bmRleCA0Y2UwMzQyYjc4N2JiMTI1YzEyMjdlZDJjZmU2NDFkZTIxM2Q2MWM0Li4zN2E3OTI2ZDk0
MmU0Y2QxZDBkNzdiYjIyYjU2NTc2NDdjZTcyODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJbnRlbnQuaApAQCAtMzIsOCArMzIsMTEgQEAKICNkZWZpbmUgV2ViSW50ZW50
X2gKIAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IC8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIgSW50ZW50cyBpbnZvY2F0aW9uIGNh
bGwgZnJvbSB0aGUgSmF2YXNjcmlwdApAQCAtNDEsMjkgKzQ0LDMzIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9k
ZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKIGNsYXNzIFdlYkludGVudCB7CiBwdWJsaWM6
Ci0gICAgfldlYkludGVudCgpIHsgfQorICAgIFdlYkludGVudCgpIHsgfQorICAgIFdlYkludGVu
dChjb25zdCBXZWJJbnRlbnQmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViSW50
ZW50KCkgeyByZXNldCgpOyB9CiAKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBhY3Rpb24o
KSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWN0aW9uKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdlYkludGVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYkludGVudCYgb3RoZXIpCisg
ICAgeworICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
aXNOdWxsKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJJ
bnRlbnQmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkludGVudCYp
OwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgYWN0aW9uKCkgY29uc3Q7CiAgICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYpOwotCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJp
bmcgZGF0YSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IFdl
YlN0cmluZyYpOwogCisgICAgLy8gRklYTUU6IGRlbGV0ZSB0aGlzLgogICAgIFdFQktJVF9FWFBP
UlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRl
bnRpZmllcihpbnQpOwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSW50ZW50
KCk7CisgICAgV2ViSW50ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+
Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJTdHJpbmcgbV9hY3Rpb247Ci0gICAgV2Vi
U3RyaW5nIG1fdHlwZTsKLSAgICBXZWJTdHJpbmcgbV9kYXRhOwotICAgIGludCBtX2lkZW50aWZp
ZXI7CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRlbnQ+IG1fcHJpdmF0ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW50ZW50UmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzYzBlMGE5MDgyOWRlNDZjYjQyZDI4
OGI5NTgyZTMyM2IyYzYyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
SW50ZW50UmVxdWVzdF9oCisjZGVmaW5lIFdlYkludGVudFJlcXVlc3RfaAorCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkludGVudDsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworLy8gSG9sZHMgZGF0
YSBwYXNzZWQgdGhyb3VnaCBhIFdlYiBJbnRlbnRzIGludm9jYXRpb24gY2FsbCBmcm9tIHRoZSBK
YXZhc2NyaXB0CisvLyBJbnRlbnQgb2JqZWN0LgorLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5j
aHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKK2Ns
YXNzIFdlYkludGVudFJlcXVlc3QgeworcHVibGljOgorICAgIFdlYkludGVudFJlcXVlc3QoKSB7
IH0KKyAgICBXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVyKSB7
IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViSW50ZW50UmVxdWVzdCgpIHsgcmVzZXQoKTsgfQor
CisgICAgV2ViSW50ZW50UmVxdWVzdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkludGVudFJlcXVlc3Qm
IG90aGVyKQorICAgIHsKKyAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VY
UE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMo
Y29uc3QgV2ViSW50ZW50UmVxdWVzdCYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24o
Y29uc3QgV2ViSW50ZW50UmVxdWVzdCYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RS
ZXN1bHQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7CisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworCisg
ICAgV0VCS0lUX0VYUE9SVCBXZWJJbnRlbnQgaW50ZW50KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2Vi
UHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBtX3ByaXZhdGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkludGVudFJlcXVlc3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAK
aW5kZXggNzJlNzFiOTYwODdkYjYxOGZlZDNkMDA5ZWQ0ODQ5M2VhNmM1ZDkxMS4uYWVjMjhjNWQ5
OGM5NTg4MWY3MWU4NDUxOTJlYjFjYWQ5NTc4N2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBAIC02Niw2ICs2Niw3
IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkludGVudFJlcXVl
c3QuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CkBAIC0x
NjI5LDQgKzE2MzAsMTEgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVja0Fu
ZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAgICAgICBtX3dlYkZyYW1lLCBXZWJTZWN1cml0eU9y
aWdpbih0YXJnZXQpLCBXZWJET01NZXNzYWdlRXZlbnQoZXZlbnQpKTsKIH0KIAorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVu
dChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+IGludGVudFJlcXVlc3QpCit7Cisg
ICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpc3BhdGNoSW50ZW50KHdlYkZyYW1lKCksIGludGVu
dFJlcXVlc3QpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCBi
MWI4NWJhMzU4N2IyNjFhNWI4OTliYmNmODY2NmFkYTFiZjNjNzAyLi4wYmY5MzVkNmRkOTgwODky
Nzg1MDRmNzdlM2U5OGZkZGYyZWFkYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMjA4LDYgKzIwOCwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxDaGVj
a0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0YXJnZXQs
IFdlYkNvcmU6Ok1lc3NhZ2VFdmVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6Oklu
dGVudFJlcXVlc3Q+KSBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgbWFr
ZURvY3VtZW50VmlldygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNw
cAppbmRleCAxMzU0MGUxNjIxYjhhM2FmZWM4MWJhOTRlYTA5YmRmZjEwYjllY2UzLi4yNGM4MDZk
OWQ1NmUxOGU3MGY1NTA4ZDk0YjVhZGNiMzYzNTJiZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkludGVudC5jcHAKQEAgLTMxLDQ4ICszMSw4MCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYkludGVudC5oIgogCisjaW5jbHVkZSAiSW50ZW50LmgiCisjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1X
ZWJJbnRlbnQ6OldlYkludGVudCgpIHsgfQorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK1dlYklu
dGVudDo6V2ViSW50ZW50KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiYgaW50ZW50
KQorICAgIDogbV9wcml2YXRlKGludGVudCkKK3sKK30KKyNlbmRpZgogCi1XZWJTdHJpbmcgV2Vi
SW50ZW50OjphY3Rpb24oKSBjb25zdAordm9pZCBXZWJJbnRlbnQ6OnJlc2V0KCkKIHsKLSAgICBy
ZXR1cm4gbV9hY3Rpb247CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIG1fcHJpdmF0ZS5y
ZXNldCgpOworI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW50ZW50OjpzZXRBY3Rpb24oY29uc3QgV2Vi
U3RyaW5nJiBhY3Rpb24pCitib29sIFdlYkludGVudDo6aXNOdWxsKCkgY29uc3QKIHsKLSAgICBt
X2FjdGlvbiA9IGFjdGlvbjsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5pc051bGwoKTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KIAot
V2ViU3RyaW5nIFdlYkludGVudDo6dHlwZSgpIGNvbnN0Citib29sIFdlYkludGVudDo6ZXF1YWxz
KGNvbnN0IFdlYkludGVudCYgb3RoZXIpCiB7Ci0gICAgcmV0dXJuIG1fdHlwZTsKKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gb3RoZXIubV9w
cml2YXRlLmdldCgpKTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KIAotdm9p
ZCBXZWJJbnRlbnQ6OnNldFR5cGUoY29uc3QgV2ViU3RyaW5nJiB0eXBlKQordm9pZCBXZWJJbnRl
bnQ6OmFzc2lnbihjb25zdCBXZWJJbnRlbnQmIG90aGVyKQogewotICAgIG1fdHlwZSA9IHR5cGU7
CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0
ZTsKKyNlbmRpZgogfQogCi1XZWJTdHJpbmcgV2ViSW50ZW50OjpkYXRhKCkgY29uc3QKK1dlYlN0
cmluZyBXZWJJbnRlbnQ6OmFjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YTsKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWN0aW9uKCk7Cisj
ZWxzZQorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYkludGVu
dDo6c2V0RGF0YShjb25zdCBXZWJTdHJpbmcmIGRhdGEpCitXZWJTdHJpbmcgV2ViSW50ZW50Ojp0
eXBlKCkgY29uc3QKIHsKLSAgICBtX2RhdGEgPSBkYXRhOworI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICByZXR1cm4gbV9wcml2YXRlLT50eXBlKCk7CisjZWxzZQorICAgIHJldHVybiBXZWJT
dHJpbmcoKTsKKyNlbmRpZgogfQogCi1pbnQgV2ViSW50ZW50OjppZGVudGlmaWVyKCkgY29uc3QK
K1dlYlN0cmluZyBXZWJJbnRlbnQ6OmRhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX2lkZW50
aWZpZXI7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmRh
dGEoKS0+dG9XaXJlU3RyaW5nKCk7CisjZWxzZQorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyNl
bmRpZgogfQogCi12b2lkIFdlYkludGVudDo6c2V0SWRlbnRpZmllcihpbnQgaWRlbnRpZmllcikK
K2ludCBXZWJJbnRlbnQ6OmlkZW50aWZpZXIoKSBjb25zdAogewotICAgIG1faWRlbnRpZmllciA9
IGlkZW50aWZpZXI7CisgICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZGQ5MDBmYmRjZGRiNzdlZTY3ZDEwMjg5OWYyZjMxMGJmYzRhZGNmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5j
cHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW50
ZW50UmVxdWVzdC5oIgorCisjaW5jbHVkZSAiSW50ZW50LmgiCisjaW5jbHVkZSAiSW50ZW50UmVx
dWVzdC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldl
YkludGVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK1dlYklu
dGVudFJlcXVlc3Q6OldlYkludGVudFJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
bnRlbnRSZXF1ZXN0PiYgaW50ZW50UmVxdWVzdCkKKyAgICA6IG1fcHJpdmF0ZShpbnRlbnRSZXF1
ZXN0KQoreworfQorI2VuZGlmCisKK3ZvaWQgV2ViSW50ZW50UmVxdWVzdDo6cmVzZXQoKQorewor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKKyNlbmRpZgor
fQorCitib29sIFdlYkludGVudFJlcXVlc3Q6OmlzTnVsbCgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7CisjZWxzZQorICAg
IHJldHVybiB0cnVlOworI2VuZGlmCit9CisKK2Jvb2wgV2ViSW50ZW50UmVxdWVzdDo6ZXF1YWxz
KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVyKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICByZXR1cm4gKG1fcHJpdmF0ZS5nZXQoKSA9PSBvdGhlci5tX3ByaXZhdGUuZ2V0KCkp
OworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkludGVudFJl
cXVlc3Q6OmFzc2lnbihjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBvdGhlcikKK3sKKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworI2VuZGlm
Cit9CisKK1dlYkludGVudCBXZWJJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAoreworI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gV2ViSW50ZW50KG1fcHJpdmF0ZS0+aW50
ZW50KCkpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViSW50ZW50KCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYgZGF0YSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisvLyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKy8vICAgICAg
ICAoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KWRhdGE7CisvLyAg
ICBtX3ByaXZhdGUtPnBvc3RSZXN1bHQoc2VyaWFsaXplZFZhbHVlLmdldCgpKTsKKyAgICBtX3By
aXZhdGUtPnBvc3RSZXN1bHQoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KGRhdGEpLmdldCgpKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkludGVudFJlcXVlc3Q6OnBv
c3RGYWlsdXJlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgZGF0YSkKK3sKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisvLyAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSAKKy8vICAgICAgICAoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KWRhdGE7CisvLyAgICBtX3ByaXZhdGUtPnBvc3RGYWls
dXJlKHNlcmlhbGl6ZWRWYWx1ZS5nZXQoKSk7CisgICAgbV9wcml2YXRlLT5wb3N0RmFpbHVyZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oZGF0YSkuZ2V0KCkpOwor
I2VuZGlmCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123196</attachid>
            <date>2012-01-19 14:20:31 -0800</date>
            <delta_ts>2012-01-19 18:04:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76014-20120119142030.patch</filename>
            <type>text/plain</type>
            <size>15626</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU2NDQ4ZWY1YmY0MjY1ZTQwYmQwZjBjNTg0NzE3NDkxNGFjYmIzZGUuLjc5MGNkNmRlMGI5Yjhh
ZTljYjdhZjNhMzFjOTcyNjA3MGQ0ZDI2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDEtMTAgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgV2ViIEludGVudHMgY2hyb21pdW0gQVBJIG1vZGlmaWNhdGlvbnMg
dG8gdHJhY2sgSW50ZW50UmVxdWVzdCBpbnZvY2F0aW9uIG1ldGhvZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJbnRlbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW50ZW50UmVx
dWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudCk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJJbnRlbnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcDogQWRkZWQu
CisKIDIwMTItMDEtMTggIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUGFzcyBjb250ZW50LXNlY3VyaXR5LXBvbGljeSBkaXJlY3RpdmUgaW50byBzaGFyZWQgd29y
a2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA1YzEyNTRhNmVkNDgyZmQ3MTFl
ZDZkMGYxN2YxODU1NDJiZWRjNTgzLi5jY2E0ZjY5NjIxOGRlZmQ3NmIwMTM5ZTYwYTQ0NDA4MmNl
ZDZhZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xODcsNiArMTg3LDcgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklucHV0RWxlbWVudC5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYklucHV0RXZlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJbnRlbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0Lmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW50ZW50U2VydmljZUluZm8uaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJLaXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJMYWJlbEVsZW1lbnQuaCcsCkBAIC01NzgsNiArNTc5LDcgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkludGVu
dC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViSW50ZW50U2VydmljZUluZm8uY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYktpdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGFiZWxFbGVt
ZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGll
bnQuaAppbmRleCAxZDhkYmI3NDE2Y2E2ZjBhYzQ3Yzc2MTU1ZWE1NDg4NmZiYWViOWY3Li5kMDUw
N2UzZDFiNWQyNDYyYmIyNDgxYTg3MWQzM2Q5YmViMDUwYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTU1LDggKzU1LDkgQEAgY2xh
c3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1l
bnQ7CiBjbGFzcyBXZWJGcmFtZTsKLWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3Mg
V2ViSW50ZW50OworY2xhc3MgV2ViSW50ZW50UmVxdWVzdDsKK2NsYXNzIFdlYkludGVudFNlcnZp
Y2VJbmZvOwogY2xhc3MgV2ViTWVkaWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVu
dDsKIGNsYXNzIFdlYk5vZGU7CkBAIC0zODAsOSArMzgxLDkgQEAgcHVibGljOgogICAgIC8vIFJl
Z2lzdGVyIGEgc2VydmljZSB0byBoYW5kbGUgV2ViIEludGVudHMuCiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVySW50ZW50U2VydmljZShXZWJGcmFtZSosIGNvbnN0IFdlYkludGVudFNlcnZpY2VJ
bmZvJikgeyB9CiAKLSAgICAvLyBTdGFydCBhIFdlYiBJbnRlbnRzIGFjdGl2aXR5LiBSZXBsaWVz
IHRvIHRoaXMgcmVxdWVzdCBzaG91bGQgYmUgc2VudCB0bwotICAgIC8vIHRoZSBXZWJGcmFtZSBz
dGFydGluZyB0aGUgYWN0aXZpdHkuCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFdl
YkZyYW1lKiwgY29uc3QgV2ViSW50ZW50JikgeyB9CisgICAgLy8gU3RhcnQgYSBXZWIgSW50ZW50
cyBhY3Rpdml0eS4gVGhlIGNhbGxlZSB1c2VzIHRoZSB8V2ViSW50ZW50UmVxdWVzdHwKKyAgICAv
LyBvYmplY3QgdG8gY29vcmRpbmF0ZSByZXBsaWVzIHRvIHRoZSBpbnRlbnQgaW52b2NhdGlvbi4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRl
bnRSZXF1ZXN0JikgeyB9CiAKICAgICAvLyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJbnRlbnQuaAppbmRleCA0Y2UwMzQyYjc4N2JiMTI1YzEyMjdlZDJjZmU2NDFk
ZTIxM2Q2MWM0Li5hNjRlN2VlOTZkNzg5NTI0ZWI5M2JjZTcwYjk2N2IyNTBkMzJmOWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnQuaApAQCAtMzIsOCArMzIsMTEg
QEAKICNkZWZpbmUgV2ViSW50ZW50X2gKIAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTdHJpbmcuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbnRlbnQ7IH0KKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIEhvbGRzIGRhdGEgcGFzc2VkIHRocm91Z2ggYSBXZWIg
SW50ZW50cyBpbnZvY2F0aW9uIGNhbGwgZnJvbSB0aGUgSmF2YXNjcmlwdApAQCAtNDEsMjkgKzQ0
LDMzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJv
bWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24tZG9jdW1lbnRzL3dlYmludGVudHNhcGkKIGNsYXNz
IFdlYkludGVudCB7CiBwdWJsaWM6Ci0gICAgfldlYkludGVudCgpIHsgfQorICAgIFdlYkludGVu
dCgpIHsgfQorICAgIFdlYkludGVudChjb25zdCBXZWJJbnRlbnQmIG90aGVyKSB7IGFzc2lnbihv
dGhlcik7IH0KKyAgICB+V2ViSW50ZW50KCkgeyByZXNldCgpOyB9CiAKLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyBhY3Rpb24oKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
QWN0aW9uKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdlYkludGVudCYgb3BlcmF0b3I9KGNvbnN0
IFdlYkludGVudCYgb3RoZXIpCisgICAgeworICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBi
b29sIGVxdWFscyhjb25zdCBXZWJJbnRlbnQmKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYkludGVudCYpOwogCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJp
bmcgYWN0aW9uKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUeXBlKGNvbnN0IFdlYlN0cmluZyYpOwot
CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZGF0YSgpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IFdlYlN0cmluZyYpOwogCisgICAgLy8gRklYTUU6IGRl
bGV0ZSB0aGlzLgogICAgIFdFQktJVF9FWFBPUlQgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRlbnRpZmllcihpbnQpOwogCiAjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV2ViSW50ZW50KCk7CisgICAgV2ViSW50ZW50KGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBX
ZWJTdHJpbmcgbV9hY3Rpb247Ci0gICAgV2ViU3RyaW5nIG1fdHlwZTsKLSAgICBXZWJTdHJpbmcg
bV9kYXRhOwotICAgIGludCBtX2lkZW50aWZpZXI7CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpJbnRlbnQ+IG1fcHJpdmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW50ZW50UmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc5MzRmMTMyNzUxOWM1MmEwYzMzODE0NTNlNWM1YTE3MTEwOWE2MDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnRlbnRSZXF1ZXN0LmgK
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50ZW50UmVxdWVzdF9oCisjZGVmaW5lIFdlYklu
dGVudFJlcXVlc3RfaAorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEludGVudFJlcXVlc3Q7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkludGVudDsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKKworLy8gSG9sZHMgZGF0YSBwYXNzZWQgdGhyb3VnaCBhIFdlYiBJbnRlbnRz
IGludm9jYXRpb24gY2FsbCBmcm9tIHRoZSBKYXZhc2NyaXB0CisvLyBJbnRlbnQgb2JqZWN0Lgor
Ly8gU2VlIHNwZWMgYXQgaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9kZXNpZ24t
ZG9jdW1lbnRzL3dlYmludGVudHNhcGkKK2NsYXNzIFdlYkludGVudFJlcXVlc3QgeworcHVibGlj
OgorICAgIFdlYkludGVudFJlcXVlc3QoKSB7IH0KKyAgICBXZWJJbnRlbnRSZXF1ZXN0KGNvbnN0
IFdlYkludGVudFJlcXVlc3QmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViSW50
ZW50UmVxdWVzdCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViSW50ZW50UmVxdWVzdCYgb3BlcmF0
b3I9KGNvbnN0IFdlYkludGVudFJlcXVlc3QmIG90aGVyKQorICAgIHsKKyAgICAgICBhc3NpZ24o
b3RoZXIpOworICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OworICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViSW50ZW50UmVxdWVzdCYpIGNvbnN0
OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW50ZW50UmVxdWVzdCYp
OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RSZXN1bHQoY29uc3QgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBvc3RGYWlsdXJlKGNvbnN0
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJJbnRl
bnQgaW50ZW50KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJ
bnRlbnRSZXF1ZXN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0
PiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0PiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYkludGVudFJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNzJlNzFiOTYwODdkYjYxOGZl
ZDNkMDA5ZWQ0ODQ5M2VhNmM1ZDkxMS4uYWVjMjhjNWQ5OGM5NTg4MWY3MWU4NDUxOTJlYjFjYWQ5
NTc4N2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiV2ViRm9ybUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1l
SW1wbC5oIgorI2luY2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJLaXQu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRl
IDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CkBAIC0xNjI5LDQgKzE2MzAsMTEgQEAgYm9vbCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAog
ICAgICAgICBtX3dlYkZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbih0YXJnZXQpLCBXZWJET01NZXNz
YWdlRXZlbnQoZXZlbnQpKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6Oklu
dGVudFJlcXVlc3Q+IGludGVudFJlcXVlc3QpCit7CisgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpc3BhdGNoSW50ZW50KHdlYkZyYW1lKCksIGludGVudFJlcXVlc3QpOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCBiMWI4NWJhMzU4N2IyNjFhNWI4OTliYmNm
ODY2NmFkYTFiZjNjNzAyLi4wYmY5MzVkNmRkOTgwODkyNzg1MDRmNzdlM2U5OGZkZGYyZWFkYzAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaApAQCAtMjA4LDYgKzIwOCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250
ZXh0KCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIFdlYkNvcmU6Ok1lc3NhZ2VFdmVudCop
IGNvbnN0OwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+KSBPVkVSUklERTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgbWFrZURvY3VtZW50VmlldygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcAppbmRleCAxMzU0MGUxNjIxYjhhM2Fm
ZWM4MWJhOTRlYTA5YmRmZjEwYjllY2UzLi4yMzU4YmZhNmEwMGNlNTExMDU0NGYyYzkwYTdjYWIx
OTE1MDQxNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKQEAg
LTMxLDQ4ICszMSw4MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkludGVu
dC5oIgogCisjaW5jbHVkZSAiSW50ZW50LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJbnRlbnQ6OldlYkludGVudCgpIHsg
fQorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK1dlYkludGVudDo6V2ViSW50ZW50KGNvbnN0IFBh
c3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiYgaW50ZW50KQorICAgIDogbV9wcml2YXRlKGludGVu
dCkKK3sKK30KKyNlbmRpZgogCi1XZWJTdHJpbmcgV2ViSW50ZW50OjphY3Rpb24oKSBjb25zdAor
dm9pZCBXZWJJbnRlbnQ6OnJlc2V0KCkKIHsKLSAgICByZXR1cm4gbV9hY3Rpb247CisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorICAgIG1fcHJpdmF0ZS5yZXNldCgpOworI2VuZGlmCiB9CiAKLXZv
aWQgV2ViSW50ZW50OjpzZXRBY3Rpb24oY29uc3QgV2ViU3RyaW5nJiBhY3Rpb24pCitib29sIFdl
YkludGVudDo6aXNOdWxsKCkgY29uc3QKIHsKLSAgICBtX2FjdGlvbiA9IGFjdGlvbjsKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsKKyNlbHNl
CisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KIAotV2ViU3RyaW5nIFdlYkludGVudDo6dHlw
ZSgpIGNvbnN0Citib29sIFdlYkludGVudDo6ZXF1YWxzKGNvbnN0IFdlYkludGVudCYgb3RoZXIp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisg
ICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gb3RoZXIubV9wcml2YXRlLmdldCgpKTsKKyNl
bHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KIAotdm9pZCBXZWJJbnRlbnQ6OnNldFR5
cGUoY29uc3QgV2ViU3RyaW5nJiB0eXBlKQordm9pZCBXZWJJbnRlbnQ6OmFzc2lnbihjb25zdCBX
ZWJJbnRlbnQmIG90aGVyKQogewotICAgIG1fdHlwZSA9IHR5cGU7CisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKKyNlbmRpZgogfQogCi1X
ZWJTdHJpbmcgV2ViSW50ZW50OjpkYXRhKCkgY29uc3QKK1dlYlN0cmluZyBXZWJJbnRlbnQ6OmFj
dGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWN0aW9uKCk7CisjZWxzZQorICAgIHJldHVybiBX
ZWJTdHJpbmcoKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYkludGVudDo6c2V0RGF0YShjb25zdCBX
ZWJTdHJpbmcmIGRhdGEpCitXZWJTdHJpbmcgV2ViSW50ZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gbV9w
cml2YXRlLT50eXBlKCk7CisjZWxzZQorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyNlbmRpZgog
fQogCi1pbnQgV2ViSW50ZW50OjppZGVudGlmaWVyKCkgY29uc3QKK1dlYlN0cmluZyBXZWJJbnRl
bnQ6OmRhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHJldHVybiBtX3ByaXZhdGUtPmRhdGEoKS0+dG9XaXJlU3RyaW5n
KCk7CisjZWxzZQorICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyNlbmRpZgogfQogCi12b2lkIFdl
YkludGVudDo6c2V0SWRlbnRpZmllcihpbnQgaWRlbnRpZmllcikKK2ludCBXZWJJbnRlbnQ6Omlk
ZW50aWZpZXIoKSBjb25zdAogewotICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAg
cmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnRlbnRSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGQzNDEyMTdk
YThhZTY4YWE0NjFlMzIwMWMwYTgxYzYwNjc1ODRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50UmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxMDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgorCisj
aW5jbHVkZSAiSW50ZW50LmgiCisjaW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgorI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYkludGVudC5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK1dlYkludGVudFJlcXVlc3Q6OldlYklu
dGVudFJlcXVlc3QoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiYgaW50
ZW50UmVxdWVzdCkKKyAgICA6IG1fcHJpdmF0ZShpbnRlbnRSZXF1ZXN0KQoreworfQorI2VuZGlm
CisKK3ZvaWQgV2ViSW50ZW50UmVxdWVzdDo6cmVzZXQoKQoreworI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKKyNlbmRpZgorfQorCitib29sIFdlYkludGVu
dFJlcXVlc3Q6OmlzTnVsbCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7CisjZWxzZQorICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCit9CisKK2Jvb2wgV2ViSW50ZW50UmVxdWVzdDo6ZXF1YWxzKGNvbnN0IFdlYkludGVudFJl
cXVlc3QmIG90aGVyKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1
cm4gKG1fcHJpdmF0ZS5nZXQoKSA9PSBvdGhlci5tX3ByaXZhdGUuZ2V0KCkpOworI2Vsc2UKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkludGVudFJlcXVlc3Q6OmFzc2ln
bihjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBvdGhlcikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworI2VuZGlmCit9CisKK1dlYklu
dGVudCBXZWJJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyAgICByZXR1cm4gV2ViSW50ZW50KG1fcHJpdmF0ZS0+aW50ZW50KCkpOworI2Vs
c2UKKyAgICByZXR1cm4gV2ViSW50ZW50KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJJbnRlbnRS
ZXF1ZXN0Ojpwb3N0UmVzdWx0KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgZGF0YSkK
K3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgbV9wcml2YXRlLT5wb3N0UmVzdWx0KFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPihkYXRhKS5nZXQoKSk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIGRhdGEpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIG1fcHJpdmF0ZS0+cG9zdEZhaWx1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KGRhdGEpLmdldCgpKTsKKyNlbmRpZgorfQorCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>