<?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>71757</bug_id>
          
          <creation_ts>2011-11-07 18:10:14 -0800</creation_ts>
          <short_desc>WebWorkerRunLoop wrapper around WorkerRunLoop</short_desc>
          <delta_ts>2011-11-28 23:59:46 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>fishd</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497646</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-07 18:10:14 -0800</bug_when>
    <thetext>beginning of WebWorkerRunLoop wrapper around WorkerRunLoop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497651</commentid>
    <comment_count>1</comment_count>
      <attachid>113971</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-07 18:12:20 -0800</bug_when>
    <thetext>Created attachment 113971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497652</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-07 18:16:01 -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>497654</commentid>
    <comment_count>3</comment_count>
      <attachid>113971</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-07 18:19:34 -0800</bug_when>
    <thetext>Comment on attachment 113971
Patch

Attachment 113971 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10338834</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497660</commentid>
    <comment_count>4</comment_count>
      <attachid>113973</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-07 18:29:19 -0800</bug_when>
    <thetext>Created attachment 113973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497662</commentid>
    <comment_count>5</comment_count>
      <attachid>113973</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-07 18:39:30 -0800</bug_when>
    <thetext>Comment on attachment 113973
Patch

Attachment 113973 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10337976</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497667</commentid>
    <comment_count>6</comment_count>
      <attachid>113974</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-07 18:43:44 -0800</bug_when>
    <thetext>Created attachment 113974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497668</commentid>
    <comment_count>7</comment_count>
      <attachid>113974</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-07 18:45:20 -0800</bug_when>
    <thetext>Comment on attachment 113974
Patch

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

Michael, this isn&apos;t ready to be submitted, it doesn&apos;t do any task posting, just some minimal runloop tracking.  I&apos;m adding the meat of the tracking (maps from ids to MessageLoops) to the chromium code.

Could you take a look to ensure that this is approximately what you were expecting?

&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:33
&gt; +    static WebWorkerRunLoop* current();

I still might change this to return the &quot;id&quot;, which is just the WebCore::WorkerRunLoop* casted to a uintptr_t.  Depending on how the chrome changes go, the id might be more convenient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497670</commentid>
    <comment_count>8</comment_count>
      <attachid>113974</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-07 18:50:08 -0800</bug_when>
    <thetext>Comment on attachment 113974
Patch

Attachment 113974 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10338841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497676</commentid>
    <comment_count>9</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-07 19:00:31 -0800</bug_when>
    <thetext>Also welcome are testing suggestions.

I&apos;d like to supply a Mock WebKitPlatformSupport, start a few workers and check that workerRunLoopStarted and workerRunLoopStopped are called the right number of times in the right order.  None of the classes of tests that I&apos;m aware of would easily allow for that.  Though I&apos;m only familiar with ui, py_auto, browser, layout and unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497809</commentid>
    <comment_count>10</comment_count>
      <attachid>113974</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-08 00:47:13 -0800</bug_when>
    <thetext>Comment on attachment 113974
Patch

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

&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:30
&gt; +class WebWorkerRunLoop {

We already have WebThread and WebThread::Task.  We also have WebKitPlatformSupport::currentThread.

Could that be useful here?  I&apos;m not clear on what a WebWorkerRunLoop is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497985</commentid>
    <comment_count>11</comment_count>
      <attachid>113974</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-08 05:45:28 -0800</bug_when>
    <thetext>Comment on attachment 113974
Patch

Attachment 113974 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10376063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498247</commentid>
    <comment_count>12</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-08 10:44:38 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; We already have WebThread and WebThread::Task.  We also have WebKitPlatformSupport::currentThread.
&gt; 
&gt; Could that be useful here?  I&apos;m not clear on what a WebWorkerRunLoop is.

WebThread and WebKitPlatformSupport::currentThread give webkit access to threads created by chromium.

WebWorkerRunLoop gives chromium access to the message loops belonging to worker threads created in WebCore, specifically WebCore::WorkerRunLoop - http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/workers/WorkerRunLoop.h

We could theoretically reuse the WebThread interface, but would need a different way to access the current thread that makes it clear that chromium is looking for a webcore-created thread.  And the meaning of WebThread (&quot;Provides an interface to an embedder-defined thread implementation.&quot;) would have to change.


(As always, let me know if I&apos;ve misunderstood something.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498257</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-08 10:56:49 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; We could theoretically reuse the WebThread interface, but would need a different way to access the current thread that makes it clear that chromium is looking for a webcore-created thread.  And the meaning of WebThread (&quot;Provides an interface to an embedder-defined thread implementation.&quot;) would have to change.

Perhaps it is reasonable to have either the embedder or WebKit implement WebThread.  Perhaps it is reasonable to assign a WebThread created by WebKit to the current thread, so that WebKitPlatformSupport::currentThread() can work.

I think I need to better understand what you are trying to accomplish with this change though.  I don&apos;t understand the purpose of the workerRunLoop{Started,Stopping} events.  I don&apos;t see how those are intended to be used, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498325</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-08 12:14:03 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; We could theoretically reuse the WebThread interface, but would need a different way to access the current thread that makes it clear that chromium is looking for a webcore-created thread.  And the meaning of WebThread (&quot;Provides an interface to an embedder-defined thread implementation.&quot;) would have to change.
&gt; 
&gt; Perhaps it is reasonable to have either the embedder or WebKit implement WebThread.  Perhaps it is reasonable to assign a WebThread created by WebKit to the current thread, so that WebKitPlatformSupport::currentThread() can work.

It might reasonable to reuse this same interface webcore created and embedder created threads, but there are differences with delete semantics and with the ability to post delayed tasks. Not clear that we should reuse it? The approach taken was to not do so.

&gt; I think I need to better understand what you are trying to accomplish with this change though.  I don&apos;t understand the purpose of the workerRunLoop{Started,Stopping} events.  I don&apos;t see how those are intended to be used, etc.

Those are there so the embedder knows when the webcore created worker thread start/stop and to provide an interface for scheduling &apos;tasks&apos; directly on that thread. If we resuse WebThread as an interface for chrome to poke at webcore created worker threads, i think we&apos;d still need api in this vien to know of there existence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500172</commentid>
    <comment_count>15</comment_count>
      <attachid>113974</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-10 13:01:51 -0800</bug_when>
    <thetext>Comment on attachment 113974
Patch

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

&gt; Source/WebCore/workers/WorkerRunLoop.cpp:119
&gt; +        PlatformSupport::workerRunLoopStarted(&amp;m_runLoop);

To ensure this only gets called once per instance, this would need to be in the if (!nested) condition.

&gt; Source/WebCore/workers/WorkerRunLoop.cpp:127
&gt; +        PlatformSupport::workerRunLoopStopping(&amp;m_runLoop);

Similarly, this would need to be in the if (!nested) condition.

&gt; Source/WebKit/chromium/public/WebKitPlatformSupport.h:332
&gt; +    virtual void workerRunLoopStopped(uintptr_t id) { }

Do the &apos;id&apos; parameters need to be here? Assuming the embedded maintains a map of workers, it can assign ids on its own, and lookup one from the other. I think we just need notification of starting/stopping and the &apos;loop&apos; instance ptr.

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:1061
&gt; +    RefPtr&lt;WebWorkerRunLoopImpl&gt; webWorkerRunLoop = WebWorkerRunLoopImpl::create(loop);

Why refcounted? In the webkit API, this class should have a protected dtor so the embedded cannot delete it. An instance gets created here, and deleted in the following method (after calling out to workerRunLoopStopped()).

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:1062
&gt; +    webKitPlatformSupport()-&gt;workerRunLoopStarted(reinterpret_cast&lt;uintptr_t&gt;(loop), webWorkerRunLoop.get());

WebCore::WorkerRunLoop instance ptrs values may not be unique &apos;id&apos; values over the life of the process.

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:59
&gt; +        m_currentLoop = new WTF::ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;;

Is this a thread safe usage of a WTF::ThreadSpecific&lt;&gt; ctor, or do we need to construct the TLS slot in another way?

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:64
&gt; +

Should the dtor clear the &apos;current&apos; value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500209</commentid>
    <comment_count>16</comment_count>
      <attachid>113974</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-10 13:28:19 -0800</bug_when>
    <thetext>Comment on attachment 113974
Patch

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

Thanks a lot for the feedback, responses inline.

&gt;&gt; Source/WebCore/workers/WorkerRunLoop.cpp:119
&gt;&gt; +        PlatformSupport::workerRunLoopStarted(&amp;m_runLoop);
&gt; 
&gt; To ensure this only gets called once per instance, this would need to be in the if (!nested) condition.

You&apos;re right, will do.

&gt;&gt; Source/WebKit/chromium/public/WebKitPlatformSupport.h:332
&gt;&gt; +    virtual void workerRunLoopStopped(uintptr_t id) { }
&gt; 
&gt; Do the &apos;id&apos; parameters need to be here? Assuming the embedded maintains a map of workers, it can assign ids on its own, and lookup one from the other. I think we just need notification of starting/stopping and the &apos;loop&apos; instance ptr.

Without the ids, PlatformSupport would have to maintain a static Map of WorkerRunLoop -&gt; WebWorkerRunLoop so that it can pass the same WebWorkerRunLoop* to WebKitPlatforumSupport on start and stop.  I didn&apos;t see any other data structures in Source/WebKit/chromium/src/PlatformSupport.cpp so guessed that they should be avoided.

If a static Map in PlatformSupport is not a big deal then the ids can go.

&gt;&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:1061
&gt;&gt; +    RefPtr&lt;WebWorkerRunLoopImpl&gt; webWorkerRunLoop = WebWorkerRunLoopImpl::create(loop);
&gt; 
&gt; Why refcounted? In the webkit API, this class should have a protected dtor so the embedded cannot delete it. An instance gets created here, and deleted in the following method (after calling out to workerRunLoopStopped()).

Ah yes, this is broken as it stands now. webWorkerRunLoop will be deleted when the method exits, and the embedder will have an invalid memory address.

&gt;&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:1062
&gt;&gt; +    webKitPlatformSupport()-&gt;workerRunLoopStarted(reinterpret_cast&lt;uintptr_t&gt;(loop), webWorkerRunLoop.get());
&gt; 
&gt; WebCore::WorkerRunLoop instance ptrs values may not be unique &apos;id&apos; values over the life of the process.

But two values won&apos;t be in use simultaneously, right?  Though if ids get tossed in favor of a HashMap the point is moot.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:59
&gt;&gt; +        m_currentLoop = new WTF::ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;;
&gt; 
&gt; Is this a thread safe usage of a WTF::ThreadSpecific&lt;&gt; ctor, or do we need to construct the TLS slot in another way?

I&apos;ll look further into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500230</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-10 13:42:55 -0800</bug_when>
    <thetext>&gt; &gt; Do the &apos;id&apos; parameters need to be here? Assuming the embedded maintains a map of workers, it can assign ids on its own, and lookup one from the other. I think we just need notification of starting/stopping and the &apos;loop&apos; instance ptr.
&gt; 
&gt; Without the ids, PlatformSupport would have to maintain a static Map of WorkerRunLoop -&gt; WebWorkerRunLoop so that it can pass the same WebWorkerRunLoop* to WebKitPlatforumSupport on start and stop.  I didn&apos;t see any other data structures in Source/WebKit/chromium/src/PlatformSupport.cpp so guessed that they should be avoided.
&gt; 
&gt; If a static Map in PlatformSupport is not a big deal then the ids can go.

We could just use WebWorkerRunLoop::current(), it will return the instance pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505122</commentid>
    <comment_count>18</comment_count>
      <attachid>115660</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-17 12:52:22 -0800</bug_when>
    <thetext>Created attachment 115660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505134</commentid>
    <comment_count>19</comment_count>
      <attachid>115660</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-17 13:12:13 -0800</bug_when>
    <thetext>Comment on attachment 115660
Patch

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

&gt; Source/WebCore/workers/WorkerRunLoop.cpp:148
&gt; +        PlatformSupport::workerRunLoopStopping(this);

I had to move workerRunLoopStopping from ~RunLoopSetup.

runInMode is called to load resources but the runloop is stopped before the worker script is evaluated.  If workerRunLoopStopping remained in ~RunLoopSetup, there would be no WebWorkerRunLoop for chrome to associate with outgoing indexeddb messages sent during the initial script evaluation.

Putting workerRunLoopStopping here smells like I&apos;m missing a better scheme.  If it survives, I&apos;ll have to add a WorkerRunLoop::DeathObserver so that workerRunLoopStopping will be called even if the thread is killed before this main run() method executes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507211</commentid>
    <comment_count>20</comment_count>
      <attachid>115660</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-21 14:28:43 -0800</bug_when>
    <thetext>Comment on attachment 115660
Patch

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

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:81
&gt; +    ASSERT(**m_currentLoop);

This ASSERT is just wrong.  I&apos;ve deleted it locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507387</commentid>
    <comment_count>21</comment_count>
      <attachid>115660</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-21 19:52:23 -0800</bug_when>
    <thetext>Comment on attachment 115660
Patch

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

&gt;&gt; Source/WebCore/workers/WorkerRunLoop.cpp:148
&gt;&gt; +        PlatformSupport::workerRunLoopStopping(this);
&gt; 
&gt; I had to move workerRunLoopStopping from ~RunLoopSetup.
&gt; 
&gt; runInMode is called to load resources but the runloop is stopped before the worker script is evaluated.  If workerRunLoopStopping remained in ~RunLoopSetup, there would be no WebWorkerRunLoop for chrome to associate with outgoing indexeddb messages sent during the initial script evaluation.
&gt; 
&gt; Putting workerRunLoopStopping here smells like I&apos;m missing a better scheme.  If it survives, I&apos;ll have to add a WorkerRunLoop::DeathObserver so that workerRunLoopStopping will be called even if the thread is killed before this main run() method executes.

It might make sense to make these calls to starting/stopping within the WorkerThread::workerThread() method. Having them balanced in an obvious way would be good, that and it would make it more clear that &apos;starting&apos; needs to be called prior to eval&apos;ing the workerscript.

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:1071
&gt; +      ASSERT(loop == WebWorkerRunLoopImpl::current()-&gt;m_workerRunLoop);

Could we ASSERT(!WebWorkerRunLoopImpl::current()) here instead?

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:32
&gt; +WTF::ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;* WebWorkerRunLoopImpl::m_currentLoop;

Seems like the &lt;T&gt; template parameter should be just WebWorkerRunLoopImpl... w/o the *? Is there a reason to put a ptr to a ptr as the TLS value?

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:43
&gt; +        DEFINE_STATIC_LOCAL(WTF::Mutex, m_threadSpecificMutex, ());

I don&apos;t see where this will buy you any thread safety since DEFINE_STATIC_LOCAL is not thread safe? Also the m_ prefixing is confusing since this isn&apos;t defining a data member.

static ThreadSpecific&lt;WebWorkerRunLoopImpl&gt;&amp; currentLoopTLS()
{
    AtomicallyInitializedStatic(ThreadSpecific&lt;WebWorkerRunLoopImpl&gt;*, currentLoopTLS = new ThreadSpecific&lt;WebWorkerRunLoopImpl&gt;);
    return *currentLoopTLS;
}

WebWorkerRunLoopImpl::WebWorkerRunLoopImpl(...)
{
   ASSERT(!currentLoopTLS().isSet());
   currentLoopTLS().set(this);
}

WebWorkerRunLoopImpl::~WebWorkerRunLoopImpl(...)
{
   ASSERT(currentLoopTLS().get() == this);
   currentLoopTLS().set(0);
   // Oh... i see, WTF::ThreadSpecific does let you change the value once set.
   // Not sure why that would be but i guess it does explain the ptr to a ptr thing.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507779</commentid>
    <comment_count>22</comment_count>
      <attachid>116266</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 13:09:36 -0800</bug_when>
    <thetext>Created attachment 116266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507786</commentid>
    <comment_count>23</comment_count>
      <attachid>116266</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-22 13:13:58 -0800</bug_when>
    <thetext>Comment on attachment 116266
Patch

Attachment 116266 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10587004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507790</commentid>
    <comment_count>24</comment_count>
      <attachid>115660</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 13:19:15 -0800</bug_when>
    <thetext>Comment on attachment 115660
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/WorkerRunLoop.cpp:148
&gt;&gt;&gt; +        PlatformSupport::workerRunLoopStopping(this);
&gt;&gt; 
&gt;&gt; I had to move workerRunLoopStopping from ~RunLoopSetup.
&gt;&gt; 
&gt;&gt; runInMode is called to load resources but the runloop is stopped before the worker script is evaluated.  If workerRunLoopStopping remained in ~RunLoopSetup, there would be no WebWorkerRunLoop for chrome to associate with outgoing indexeddb messages sent during the initial script evaluation.
&gt;&gt; 
&gt;&gt; Putting workerRunLoopStopping here smells like I&apos;m missing a better scheme.  If it survives, I&apos;ll have to add a WorkerRunLoop::DeathObserver so that workerRunLoopStopping will be called even if the thread is killed before this main run() method executes.
&gt; 
&gt; It might make sense to make these calls to starting/stopping within the WorkerThread::workerThread() method. Having them balanced in an obvious way would be good, that and it would make it more clear that &apos;starting&apos; needs to be called prior to eval&apos;ing the workerscript.

Good suggestion, moved them.

&gt;&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:1071
&gt;&gt; +      ASSERT(loop == WebWorkerRunLoopImpl::current()-&gt;m_workerRunLoop);
&gt; 
&gt; Could we ASSERT(!WebWorkerRunLoopImpl::current()) here instead?

After the the stop/start move to WorkerThread::workerThread, yes.  Changed.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:43

&gt; 
&gt; I don&apos;t see where this will buy you any thread safety since DEFINE_STATIC_LOCAL is not thread safe? Also the m_ prefixing is confusing since this isn&apos;t defining a data member.
&gt; 
&gt; static ThreadSpecific&lt;WebWorkerRunLoopImpl&gt;&amp; currentLoopTLS()
&gt; {
&gt;     AtomicallyInitializedStatic(ThreadSpecific&lt;WebWorkerRunLoopImpl&gt;*, currentLoopTLS = new ThreadSpecific&lt;WebWorkerRunLoopImpl&gt;);
&gt;     return *currentLoopTLS;
&gt; }
&gt; 
&gt; WebWorkerRunLoopImpl::WebWorkerRunLoopImpl(...)
&gt; {
&gt;    ASSERT(!currentLoopTLS().isSet());
&gt;    currentLoopTLS().set(this);
&gt; }
&gt; 
&gt; WebWorkerRunLoopImpl::~WebWorkerRunLoopImpl(...)
&gt; {
&gt;    ASSERT(currentLoopTLS().get() == this);
&gt;    currentLoopTLS().set(0);
&gt;    // Oh... i see, WTF::ThreadSpecific does let you change the value once set.
&gt;    // Not sure why that would be but i guess it does explain the ptr to a ptr thing.
&gt; }

Moved to the single static function that initializes with AtomicallyInitializedStatic.  Let me know if you still have reservations about the ptr to ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507808</commentid>
    <comment_count>25</comment_count>
      <attachid>116266</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-22 14:03:14 -0800</bug_when>
    <thetext>Comment on attachment 116266
Patch

Attachment 116266 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10595001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507817</commentid>
    <comment_count>26</comment_count>
      <attachid>116276</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 14:24:56 -0800</bug_when>
    <thetext>Created attachment 116276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507833</commentid>
    <comment_count>27</comment_count>
      <attachid>116276</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-22 15:09:21 -0800</bug_when>
    <thetext>Comment on attachment 116276
Patch

The latest snapshot looks good to me.

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

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:57
&gt; +class TaskForwarder : public ScriptExecutionContext::Task {

maybe put this class and the currentLoopTLS() function in an anon namespace?

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:67
&gt; +    virtual ~TaskForwarder() { }

is the empty dtor needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507838</commentid>
    <comment_count>28</comment_count>
      <attachid>116276</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 15:23:47 -0800</bug_when>
    <thetext>Comment on attachment 116276
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:57
&gt;&gt; +class TaskForwarder : public ScriptExecutionContext::Task {
&gt; 
&gt; maybe put this class and the currentLoopTLS() function in an anon namespace?

Done.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:67
&gt;&gt; +    virtual ~TaskForwarder() { }
&gt; 
&gt; is the empty dtor needed?

Nope. Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507839</commentid>
    <comment_count>29</comment_count>
      <attachid>116282</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 15:29:34 -0800</bug_when>
    <thetext>Created attachment 116282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507842</commentid>
    <comment_count>30</comment_count>
      <attachid>116276</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-22 15:37:33 -0800</bug_when>
    <thetext>Comment on attachment 116276
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:9
&gt; +

You changelog should ideally indicate what you are doing in each function. A short explanation suffices.

&gt; Source/WebCore/workers/WorkerRunLoop.cpp:36
&gt; +

All changes in this file are unrelated to &quot;WebWorkerRunLoop wrapper around WorkerRunLoop&quot;. Ideally they would be done in a separate change.

&gt; Source/WebKit/chromium/public/WebKitPlatformSupport.h:338
&gt; +    virtual void workerRunLoopStarted(WebWorkerRunLoop* runLoop) { }

No need for runLoop here and in fact, it will likely give you an error on some platforms due to it not being used.

&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:2
&gt; + * Copyright (C) 2011, Google Inc. All rights reserved.

No comma after the year.

&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:7
&gt; + * 1.  Redistributions of source code must retain the above copyright

This looks odd with this extra space on the first line.

&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:33
&gt; +     public:

Your indentation is off.

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:40
&gt; +    AtomicallyInitializedStatic(ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;*, currentLoopTLS = new ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;);

Ideally this would be initialized on the main thread before any worker threads start and then you could avoid the AromicallyInitializedStatic which takes a lock every time this line is hit (and makes the function much slower than needed).

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:58
&gt; + public:

Wrong indentation.

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:59
&gt; +    TaskForwarder(WebWorkerRunLoop::Task* task)

This should take a PassOwnPtr&lt;WebWorkerRunLoop::Task&gt;

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:62
&gt; +    }

Add blank line.

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:66
&gt; +    }

Ditto.

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:74
&gt; +    m_workerRunLoop-&gt;postTask(adoptPtr(new TaskForwarder(task)));

TaskForwarder should expose a create method which looks like this:

PassOwnPtr&lt;TaskForwarder&gt; create(PassOwnPtr&lt;WebWorkerRunLoop::Task&gt; task)
{
    return adoptPtr(new TaskForwarder(task));
}

the constructor should be private.

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.h:47
&gt; +    virtual void postTask(Task*);

It should be a PassOwnPtr and then no comment is needed about &quot;task ownership is transferred&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507843</commentid>
    <comment_count>31</comment_count>
      <attachid>116282</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-22 15:38:39 -0800</bug_when>
    <thetext>Comment on attachment 116282
Patch

See comments above (which were for the previous patch but many still apply).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507844</commentid>
    <comment_count>32</comment_count>
      <attachid>116282</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-22 15:43:14 -0800</bug_when>
    <thetext>Comment on attachment 116282
Patch

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

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.h:32
&gt; +#include &lt;wtf/ThreadSpecific.h&gt;

A lot of these doesn&apos;t appear to be needed. Please do a pass and remove the unnecessary ones. Please so fwd decl when possible.

&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.h:40
&gt; +class WebWorkerRunLoopImpl : public ThreadSafeRefCounted&lt;WebWorkerRunLoopImpl&gt;,

It doesn&apos;t make sense that this is ThreadSafeRefCounted when it is new/deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507897</commentid>
    <comment_count>33</comment_count>
      <attachid>116276</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 18:37:03 -0800</bug_when>
    <thetext>Comment on attachment 116276
Patch

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

&gt;&gt; Source/WebCore/workers/WorkerRunLoop.cpp:36

&gt; 
&gt; All changes in this file are unrelated to &quot;WebWorkerRunLoop wrapper around WorkerRunLoop&quot;. Ideally they would be done in a separate change.

Removed these changes.

&gt;&gt; Source/WebKit/chromium/public/WebKitPlatformSupport.h:338
&gt;&gt; +    virtual void workerRunLoopStarted(WebWorkerRunLoop* runLoop) { }
&gt; 
&gt; No need for runLoop here and in fact, it will likely give you an error on some platforms due to it not being used.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:2
&gt;&gt; + * Copyright (C) 2011, Google Inc. All rights reserved.
&gt; 
&gt; No comma after the year.

Done

&gt;&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:7
&gt;&gt; + * 1.  Redistributions of source code must retain the above copyright
&gt; 
&gt; This looks odd with this extra space on the first line.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:33
&gt;&gt; +     public:
&gt; 
&gt; Your indentation is off.

Fixed.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:40
&gt;&gt; +    AtomicallyInitializedStatic(ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;*, currentLoopTLS = new ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;);
&gt; 
&gt; Ideally this would be initialized on the main thread before any worker threads start and then you could avoid the AromicallyInitializedStatic which takes a lock every time this line is hit (and makes the function much slower than needed).

I can change this to a DEFINE_STATIC_LOCAL and then call WebKit::WebWorkerRunLoop:current() from the main thread in chromium but I feel like that&apos;s a bit brittle.

Alternatively, I could make ThreadGlobalData call a new PlatformSupport::perThreadInit(), which would call WebWorkerRunLoopImpl::current, but that feels intrusive.

Is there an easier way?  If not, which of these would you recommend?

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:58
&gt;&gt; + public:
&gt; 
&gt; Wrong indentation.

Fixed.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:59
&gt;&gt; +    TaskForwarder(WebWorkerRunLoop::Task* task)
&gt; 
&gt; This should take a PassOwnPtr&lt;WebWorkerRunLoop::Task&gt;

Done.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:62
&gt;&gt; +    }
&gt; 
&gt; Add blank line.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:66
&gt;&gt; +    }
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:74

&gt; 
&gt; TaskForwarder should expose a create method which looks like this:
&gt; 
&gt; PassOwnPtr&lt;TaskForwarder&gt; create(PassOwnPtr&lt;WebWorkerRunLoop::Task&gt; task)
&gt; {
&gt;     return adoptPtr(new TaskForwarder(task));
&gt; }
&gt; 
&gt; the constructor should be private.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.h:47
&gt;&gt; +    virtual void postTask(Task*);
&gt; 
&gt; It should be a PassOwnPtr and then no comment is needed about &quot;task ownership is transferred&quot;.

I don&apos;t think I can make this a PassOwnPtr because that would mean changing WebWorkerRunLoop&apos;s corresponding method signature, exposing WTF::PassOwnPtr to embedders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507898</commentid>
    <comment_count>34</comment_count>
      <attachid>116305</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 18:39:32 -0800</bug_when>
    <thetext>Created attachment 116305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507899</commentid>
    <comment_count>35</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-22 18:41:53 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 116276 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116276&amp;action=review
&gt; 


&gt; &gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.cpp:40
&gt; &gt;&gt; +    AtomicallyInitializedStatic(ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;*, currentLoopTLS = new ThreadSpecific&lt;WebWorkerRunLoopImpl*&gt;);
&gt; &gt; 
&gt; &gt; Ideally this would be initialized on the main thread before any worker threads start and then you could avoid the AromicallyInitializedStatic which takes a lock every time this line is hit (and makes the function much slower than needed).
&gt; 
&gt; I can change this to a DEFINE_STATIC_LOCAL and then call WebKit::WebWorkerRunLoop:current() from the main thread in chromium but I feel like that&apos;s a bit brittle.
&gt; 
&gt; Alternatively, I could make ThreadGlobalData call a new PlatformSupport::perThreadInit(), which would call WebWorkerRunLoopImpl::current, but that feels intrusive.
&gt; 
&gt; Is there an easier way?  If not, which of these would you recommend?

I would make an init function creates it and call the init function only from the main thread.

Do assert(isMainThread()) in the init function.

Avoid using DEFINE_STATIC_LOCAL which will work even if someone doesn&apos;t call it on the main thread first.

Does that make sense?


&gt; &gt;&gt; Source/WebKit/chromium/src/WebWorkerRunLoopImpl.h:47
&gt; &gt;&gt; +    virtual void postTask(Task*);
&gt; &gt; 
&gt; &gt; It should be a PassOwnPtr and then no comment is needed about &quot;task ownership is transferred&quot;.
&gt; 
&gt; I don&apos;t think I can make this a PassOwnPtr because that would mean changing WebWorkerRunLoop&apos;s corresponding method signature, exposing WTF::PassOwnPtr to embedders.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507901</commentid>
    <comment_count>36</comment_count>
      <attachid>116305</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-22 18:46:19 -0800</bug_when>
    <thetext>Comment on attachment 116305
Patch

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

Just address that one thing about initialization an we&apos;re good. Or you could tell me why you think it is ok to take a lock there everytime. (I&apos;m hesitant to have that because I had to clear up something similar in wtf and it is much harder to clean up later than it is to address it right now.)

&gt; Source/WebKit/chromium/ChangeLog:35
&gt; +        WebWorkerRunLoop TLS to |this|.

Inits WebWorkerRunLoop TLS.

I don&apos;t care if you change this. Just showing how it could even be more concise to minimize your typing :).

&gt; Source/WebKit/chromium/ChangeLog:37
&gt; +        WebWorkerRunLoop TLS to 0.

Clears WebWorkerRunLoop TLS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507942</commentid>
    <comment_count>37</comment_count>
      <attachid>116319</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-22 22:38:21 -0800</bug_when>
    <thetext>Created attachment 116319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507956</commentid>
    <comment_count>38</comment_count>
      <attachid>116319</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-22 23:22:15 -0800</bug_when>
    <thetext>Comment on attachment 116319
Patch

I&apos;m r+&apos;ing but &quot;Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507957</commentid>
    <comment_count>39</comment_count>
      <attachid>116319</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-22 23:22:43 -0800</bug_when>
    <thetext>Comment on attachment 116319
Patch

cq- pending ok from Darin Fisher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508169</commentid>
    <comment_count>40</comment_count>
      <attachid>116319</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-23 08:46:57 -0800</bug_when>
    <thetext>Comment on attachment 116319
Patch

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

&gt; Source/WebKit/chromium/public/WebKitPlatformSupport.h:338
&gt; +    virtual void workerRunLoopStarted(WebWorkerRunLoop*) { }

Sorry, I should have mentioned this earlier, but for notifications like this, we normally
prefix them with either &quot;will&quot; or &quot;did&quot;...

workerRunLoopStarted -&gt; didStartWorkerRunLoop

I have a question about workerRunLoopStopped.  On PlatformSupport.h, you call the
method workerRunLoopStopping, which suggests that the run loop hasn&apos;t stopped yet,
but soon will.  However, workerRunLoopStopped says that the run loop has already
stopped.  Clearly, these are not consistent.  Assuming, &quot;will stop&quot; is what you mean,
then I&apos;d call this function &quot;willStopWorkerRunLoop&quot;.

&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:38
&gt; +    static WebWorkerRunLoop* current();

Static functions like this need to be marked up with WEBKIT_EXPORT, or else you
will break the component=shared_library build.

Can you say more about why you need &apos;current&apos; to be implemented in the WebKit
layer, where it is apparently not needed by WebCore?  If it is only needed by
the embedder, then it seems like the embedder can maintain the TLS entry itself
based on the notifications didStartWorkerRunLoop and willStopWorkerRunLoop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508173</commentid>
    <comment_count>41</comment_count>
      <attachid>116319</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-23 09:00:43 -0800</bug_when>
    <thetext>Comment on attachment 116319
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:38
&gt;&gt; +    static WebWorkerRunLoop* current();
&gt; 
&gt; Static functions like this need to be marked up with WEBKIT_EXPORT, or else you
&gt; will break the component=shared_library build.
&gt; 
&gt; Can you say more about why you need &apos;current&apos; to be implemented in the WebKit
&gt; layer, where it is apparently not needed by WebCore?  If it is only needed by
&gt; the embedder, then it seems like the embedder can maintain the TLS entry itself
&gt; based on the notifications didStartWorkerRunLoop and willStopWorkerRunLoop.

having the embedder maintain the TLS value would work too, in which case the embedder would have to be be responsible for deletion too so the dtor would need to be public

this would minimize the API on the class, but not sure it&apos;s an improvement since the caller will have to delete them and could not choose to ignore the didStart(loop) willStop(/*no param since the caller tracks current*/) methods

6 one way, half-dozen the other</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508223</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-23 10:36:45 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; having the embedder maintain the TLS value would work too, in which case the embedder would have to be be responsible for deletion too so the dtor would need to be public
&gt; 
&gt; this would minimize the API on the class, but not sure it&apos;s an improvement since the caller will have to delete them and could not choose to ignore the didStart(loop) willStop(/*no param since the caller tracks current*/) methods
&gt; 
&gt; 6 one way, half-dozen the other

[I met up with Michael, and we chatted about this a bit.  Here&apos;s an alternative proposal.]

We don&apos;t need TLS in WebKit, and we don&apos;t need to heap allocate WebWorkerRunLoop.  Instead, WebWorkerRunLoop can just be a very simple concrete class that wraps a WebCore::WorkerRunLoop pointer.

  class WebWorkerRunLoop {
  public:
      class Task {
          ...
      };
      WEBKIT_EXPORT void postTask(Task*);
  private:
      WebCore::WorkerRunLoop* m_private;
  };

  class WebKitPlatformSupport {
  public:
      ...
      virtual void didStartWorkerRunLoop(const WebWorkerRunLoop&amp;) { }
      virtual void willStopWorkerRunLoop(const WebWorkerRunLoop&amp;) { }
  };

What the above does is give us a way to convey a &quot;handle&quot; to a WebCore::WorkerRunLoop without having the embedder actually have to see the WebCore type.  The handle is only valid until willStopWorkerRunLoop is called.

This accomplishes the goal (that I have) of keeping the WebKit layer very thin.  It just isolates Chromium from WebCore.  It also pushes all of the logic about retaining references to WebWorkerRunLoop instances to the Chromium side.  The Chromium side needs to store WebWorkerRunLoop instances in TLS so that function calls made on a worker thread can find its run loop, and Chromium also needs to store WebWorkerRunLoop instances in &quot;hash maps&quot; that can be used by other threads in Chromium that wish to communicate (postTask) back to the worker thread.  It seems ideal if all of this lifetime tracking code only had to live on the Chromium side.

-Darin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508237</commentid>
    <comment_count>43</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-23 10:59:20 -0800</bug_when>
    <thetext>That looks pretty good to me too, nice lack of virtual methods and webcore TLS busywork :) A couple of details to work thru...

- does the willStop() method need the loop argument, what would the caller do with it?
- should the class have comparison/equality operators associated with it (that compare the m_private ptr value), to facilitate using instances in std collections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508312</commentid>
    <comment_count>44</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-23 12:44:52 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; That looks pretty good to me too, nice lack of virtual methods and webcore TLS busywork :) A couple of details to work thru...
&gt; 
&gt; - does the willStop() method need the loop argument, what would the caller do with it?

Not strictly necessary, but suppose the embedder didn&apos;t use TLS but instead used only a hashmap.  They&apos;d need a way to find the same object in such a container so they can remove it from the container.


&gt; - should the class have comparison/equality operators associated with it (that compare the m_private ptr value), to facilitate using instances in std collections.

Yes, probably a good idea.  Those operators are only required when using WebWorkerRunLoop as a key to a STL container though, right?  Is that needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510175</commentid>
    <comment_count>45</comment_count>
      <attachid>116819</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-28 14:27:38 -0800</bug_when>
    <thetext>Created attachment 116819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510192</commentid>
    <comment_count>46</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-28 14:43:44 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; (In reply to comment #43)
&gt; &gt; - should the class have comparison/equality operators associated with it (that compare the m_private ptr value), to facilitate using instances in std collections.
&gt; 
&gt; Yes, probably a good idea.  Those operators are only required when using WebWorkerRunLoop as a key to a STL container though, right?  Is that needed?

The WebWorkerRunLoops are going to be stored in a TLS and a non-TLS map.  I&apos;m not yet sure if they are going to be keys or values, but given how trivial those operator implementations are, I added them to keep the flexibility.

I don&apos;t know when WEBKIT_EXPORT is needed.  Does any symbol used by the embedder need it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510196</commentid>
    <comment_count>47</comment_count>
      <attachid>116819</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-28 14:45:11 -0800</bug_when>
    <thetext>Comment on attachment 116819
Patch

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

&gt; Source/WebKit/chromium/public/WebWorkerRunLoop.h:38
&gt; +    WebWorkerRunLoop(WebCore::WorkerRunLoop*);

Any public, non-inline function that is not guarded by WEBKIT_IMPLEMENTATION
needs to be annotated with WEBKIT_EXPORT.

However, this constructor should probably be wrapped with #if WEBKIT_IMPLEMENTATION
since it is only callable by WebKit.

What is the purpose of exposing operator&lt; and operator==?  Normally, we do not
export operators.  We instead create an &quot;equals&quot; or &quot;compare&quot; function, and then
provide those operators as inline helper functions (at the WebKit namespace
level).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510201</commentid>
    <comment_count>48</comment_count>
      <attachid>116819</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-28 14:47:40 -0800</bug_when>
    <thetext>Comment on attachment 116819
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:33
&gt; +        stored WorkerRunLoops.

That is obvious but the ideal thing to put here would be why this is even here. It looks rather odd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510239</commentid>
    <comment_count>49</comment_count>
      <attachid>116832</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-28 15:07:34 -0800</bug_when>
    <thetext>Created attachment 116832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510245</commentid>
    <comment_count>50</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-28 15:09:58 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; What is the purpose of exposing operator&lt; and operator==?  Normally, we do not
&gt; export operators.  We instead create an &quot;equals&quot; or &quot;compare&quot; function, and then
&gt; provide those operators as inline helper functions (at the WebKit namespace
&gt; level).

Got it, changed.  Why do we not export operators?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510406</commentid>
    <comment_count>51</comment_count>
      <attachid>116869</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-28 19:14:57 -0800</bug_when>
    <thetext>Created attachment 116869
updated changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510425</commentid>
    <comment_count>52</comment_count>
      <attachid>116874</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-28 19:48:57 -0800</bug_when>
    <thetext>Created attachment 116874
including missing function defs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510447</commentid>
    <comment_count>53</comment_count>
      <attachid>116874</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-28 20:38:11 -0800</bug_when>
    <thetext>Comment on attachment 116874
including missing function defs

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510516</commentid>
    <comment_count>54</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-28 22:52:01 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; (In reply to comment #47)
&gt; &gt; What is the purpose of exposing operator&lt; and operator==?  Normally, we do not
&gt; &gt; export operators.  We instead create an &quot;equals&quot; or &quot;compare&quot; function, and then
&gt; &gt; provide those operators as inline helper functions (at the WebKit namespace
&gt; &gt; level).
&gt; 
&gt; Got it, changed.  Why do we not export operators?

There&apos;s no technical problem with exporting operators.  It is more of a convention actually.

However, there&apos;s a concrete benefit to the way we structure things, which leads us to the convention:

 -- It is always preferable to define operator== and operator&lt; at global scope.  That way, you can support type coercion on either the left-hand or right-hand arguments.  (This really only matters if a class has a subclass, which is not the case for WebWorkerRunLoop.  However, consistency is still a good thing.)

 -- Making operator== and operator&lt; global would require that they be friends of the class, but instead we just give said class an equals or compare method.  This leads to implementing operator== and operator&lt; inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510547</commentid>
    <comment_count>55</comment_count>
      <attachid>116874</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 23:59:39 -0800</bug_when>
    <thetext>Comment on attachment 116874
including missing function defs

Clearing flags on attachment: 116874

Committed r101335: &lt;http://trac.webkit.org/changeset/101335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510548</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 23:59:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113971</attachid>
            <date>2011-11-07 18:12:20 -0800</date>
            <delta_ts>2011-11-07 18:29:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111107181219.patch</filename>
            <type>text/plain</type>
            <size>14117</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk0NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzA1MmVjNmJhOTA2MTA0
YTYzYjYyYWI4MmMyMzg0MGIxYzU2NWYxLi40OTY2NjdmYjE5YTk4MmRlMDBhMWI2ZGVmNDIxZGU3
MTEzZGRmMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTEtMDcgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGJlZ2lubmluZyBvZiBX
ZWJXb3JrZXJSdW5Mb29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9v
cFNldHVwOjpSdW5Mb29wU2V0dXApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcFNldHVwOjp+
UnVuTG9vcFNldHVwKToKKwogMjAxMS0xMS0wNyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRG9uJ3QgdXNlIENTU09NJ3MgQ1NTVmFsdWUuY3NzVmFsdWVUeXBl
IGludGVybmFsbHkgaW4gV2ViQ29yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGMw
YmI2ZmU1NDZhZTEwZDcwYzRhMDQ2ZjJlODA3MGU3NDljNWNjMi4uNDU0ZGRjZGFlNzUyMzhkM2Uw
ODdhNDc5Y2ExOTNhOTQzODRhYTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMS0xMS0wNyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgYmVnaW5uaW5nIG9mIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91
bmQgV29ya2VyUnVuTG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1
bkxvb3BTdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojp3
b3JrZXJSdW5Mb29wU3RvcHBlZCk6CisgICAgICAgICogcHVibGljL1dlYldvcmtlclJ1bkxvb3Au
aDogQWRkZWQuCisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
clJ1bkxvb3BJbXBsOjpjdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9v
cEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpw
b3N0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3Jr
ZXJSdW5Mb29wSW1wbCk6CisgICAgICAgICogc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wSW1wbDo6fldlYldvcmtlclJ1
bkxvb3BJbXBsKToKKwogMjAxMS0xMS0wNyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbmFtZSBXZWJWaWV3OjpzY2FsZVBhZ2UgdG8g
V2ViVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIG1hdGNoIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNzI1
NzAxMTMxZGY5MDE5N2EwYTRhNGQ0YzE5MDFmYTVlYWQ1ZDI4MC4uMDA2Yjk3ZTM1MGQ1ZDRmMjAz
NDY0N2U5NTNhODUzMWFkMzM3OWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBX
aWRnZXQ7CitjbGFzcyBXb3JrZXJSdW5Mb29wOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IEZv
bnRSZW5kZXJTdHlsZTsKQEAgLTQwOSw2ICs0MTAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExp
bmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgS1VSTCYgYmFzZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHN0YXRpYyBib29sIGlzTGlu
a1Zpc2l0ZWQoTGlua0hhc2gpOworCisgICAgc3RhdGljIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0
ZWQoV29ya2VyUnVuTG9vcCopOworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1bkxvb3BTdG9wcGlu
ZyhXb3JrZXJSdW5Mb29wKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBmYzE1ZjJiMzg2ZTI2MDgyOWMy
MTZhMTY2NWE0NDU4MzM4NTU0NDhkLi40MTA3NzU2NzI0NzU3ZDdjZWRjZWU5ZTM3ZTVlYTg2MzFi
NzVmOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTEx
NCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9ydW5Mb29wLm1fbmVzdGVkQ291
bnQpCiAgICAgICAgICAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2V0U2hh
cmVkVGltZXIobV9ydW5Mb29wLm1fc2hhcmVkVGltZXIuZ2V0KCkpOwogICAgICAgICBtX3J1bkxv
b3AubV9uZXN0ZWRDb3VudCsrOworICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxv
b3BTdGFydGVkKCZtX3J1bkxvb3ApOwogICAgIH0KIAogICAgIH5SdW5Mb29wU2V0dXAoKQpAQCAt
MTIxLDYgKzEyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ydW5Mb29wLm1fbmVzdGVkQ291bnQt
LTsKICAgICAgICAgaWYgKCFtX3J1bkxvb3AubV9uZXN0ZWRDb3VudCkKICAgICAgICAgICAgIHRo
cmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcigwKTsKKyAgICAg
ICAgUGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBpbmcoJm1fcnVuTG9vcCk7CiAg
ICAgfQogcHJpdmF0ZToKICAgICBXb3JrZXJSdW5Mb29wJiBtX3J1bkxvb3A7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggNWQ4M2M4NGIwMmI2M2IyMTU0M2VkN2Y5MDUxMDJiNmJjYjg3
OTgyOC4uNDNmNGUyMTdiZDI5YmQyNzcxNDhhZmY1ODY1ODQwMjU1YzU4MGJjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzI0LDYgKzMyNCw3IEBACiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJX
b3JrZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaCcsCisg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNjMxLDYgKzYzMiw4IEBACiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViV29ya2VySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2Vy
SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CmluZGV4IDUyODE0Nzk0ZDlkMjE0YWNiYzNlOGMxNzI0YTIzZTA1YTE3ZWUyYWIuLjdiODc4ZGRh
ZTliMzg3OGYwZGI1OWM0OGY5YWVkYTJjODIzMmE5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5j
bHVkZSAiV2ViVmVjdG9yLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcC5oIgogCiAjaW5j
bHVkZSA8dGltZS5oPgogCkBAIC0zMjcsNiArMzI4LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9uSGFuZGxlcihX
ZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0ZWQodWludHB0cl90IGlkLCBXZWJXb3JrZXJSdW5M
b29wKiBydW5Mb29wKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd29ya2VyUnVuTG9vcFN0b3BwZWQo
dWludHB0cl90IGlkKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJXb3JrZXJSdW5Mb29wLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3Jr
ZXJSdW5Mb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJjNjI3Y2ZlYTMxZWUyNGMzNDU2MWRlZGI0MmZiNDJk
NDJlNThmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldvcmtlclJ1bkxvb3AuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJXb3JrZXJSdW5Mb29wX2gKKyNkZWZpbmUgV2ViV29ya2VyUnVuTG9vcF9oCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJXb3JrZXJSdW5Mb29wIHsKK3B1YmxpYzoKKyAgICBj
bGFzcyBUYXNrOworICAgIHN0YXRpYyBXZWJXb3JrZXJSdW5Mb29wKiBjdXJyZW50KCk7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAKaW5kZXggMmYyYzJhN2VjYzIwOWZkNDRjZTNmOTU4MWZjNGNmZTAyMDM1YjJhMi4u
MDY5ZmNiZDYwYmQ4YTIxMGYxNTBhMDkxZDg0ZWE4NzRmMWI3ZDVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC02MSw2ICs2MSw3IEBA
CiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYldvcmtlclJ1bkxv
b3BJbXBsLmgiCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4
dC5oPgpAQCAtMTA1NSw2ICsxMDU2LDE3IEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0Ojpwb3B1cHNB
bGxvd2VkKE5QUCBucHApCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFBsYXRmb3JtU3Vw
cG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0ZWQoV29ya2VyUnVuTG9vcCogbG9vcCkKK3sKKyAgICBS
ZWZQdHI8V2ViV29ya2VyUnVuTG9vcEltcGw+IHdlYldvcmtlclJ1bkxvb3AgPSBXZWJXb3JrZXJS
dW5Mb29wSW1wbDo6Y3JlYXRlKGxvb3ApOworICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT53
b3JrZXJSdW5Mb29wU3RhcnRlZChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obG9vcCksIHdl
YldvcmtlclJ1bkxvb3AuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6d29ya2Vy
UnVuTG9vcFN0b3BwaW5nKFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KCktPndvcmtlclJ1bkxvb3BTdG9wcGVkKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihsb29wKSk7Cit9CisKICNpZiBFTkFCTEUoV09SS0VSUykKIFdvcmtlckNvbnRleHRQcm94
eSogV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUoV29ya2VyKiB3b3JrZXIpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDc2Y2JmODliZWIxM2MwODY1NDIzOWU5M2UxYTA3ZjQyMzU0OTdlYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJ
bXBsLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYldvcmtlclJ1bkxvb3BJbXBsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV1RGOjpUaHJlYWRTcGVjaWZpYzxXZWJX
b3JrZXJSdW5Mb29wSW1wbCo+KiBXZWJXb3JrZXJSdW5Mb29wSW1wbDo6bV9jdXJyZW50TG9vcDsK
KworV2ViV29ya2VyUnVuTG9vcCogV2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCgpCit7CisgICAg
cmV0dXJuIFdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJyZW50KCk7Cit9CisKK1dlYldvcmtlclJ1
bkxvb3BJbXBsKiBXZWJXb3JrZXJSdW5Mb29wSW1wbDo6Y3VycmVudCgpCit7CisgICAgaWYgKCFt
X2N1cnJlbnRMb29wKQorICAgICAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQoKiptX2N1cnJlbnRM
b29wKTsKKyAgICByZXR1cm4gKiptX2N1cnJlbnRMb29wOworfQorCitQYXNzUmVmUHRyPFdlYldv
cmtlclJ1bkxvb3BJbXBsPiBXZWJXb3JrZXJSdW5Mb29wSW1wbDo6Y3JlYXRlKFdvcmtlclJ1bkxv
b3AqIGxvb3ApCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJXb3JrZXJSdW5Mb29wSW1w
bChsb29wKSk7Cit9CisKK3ZvaWQgV2ViV29ya2VyUnVuTG9vcEltcGw6OnBvc3RUYXNrKFRhc2sq
IHRhc2spIHsgfQorCisKK1dlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3JrZXJSdW5Mb29wSW1w
bChXb3JrZXJSdW5Mb29wKiB3b3JrZXJSdW5Mb29wKQorICAgIDogbV93b3JrZXJSdW5Mb29wKHdv
cmtlclJ1bkxvb3ApCit7CisgICAgaWYgKCFtX2N1cnJlbnRMb29wKQorICAgICAgICBtX2N1cnJl
bnRMb29wID0gbmV3IFdURjo6VGhyZWFkU3BlY2lmaWM8V2ViV29ya2VyUnVuTG9vcEltcGwqPjsK
KyAgICAvLyBXaGVuIGEgbmVzdGVkIGxvb3AgaXMgc3RhcnRlZCwgZG9uJ3QgYmxvdyBhd2F5IHRo
ZSBjdXJyZW50IGxvb3AuCisgICAgaWYgKCEqKm1fY3VycmVudExvb3ApCisgICAgICAgICoqbV9j
dXJyZW50TG9vcCA9IHRoaXM7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxM2JjMzY4NmNiNDUyZDdk
NmI3NDQzN2IzOGRmOTI4NTk4Njc0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYldvcmtlclJ1bkxvb3BJbXBsX2gKKyNkZWZpbmUgV2ViV29y
a2VyUnVuTG9vcEltcGxfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2Vi
V29ya2VyUnVuTG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgV29ya2VyUnVuTG9vcDsgfQorbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYldvcmtlclJ1bkxvb3BJbXBsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFdlYldvcmtlclJ1bkxvb3BJbXBsPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFdlYldvcmtlclJ1bkxvb3AgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YldvcmtlclJ1bkxvb3BJbXBsPiBjcmVhdGUoV2ViQ29yZTo6V29ya2VyUnVuTG9vcCopOworICAg
IHZpcnR1YWwgfldlYldvcmtlclJ1bkxvb3BJbXBsKCkgeyB9CisgICAgLy8gQ2FsbGFibGUgZnJv
bSBhbnkgdGhyZWFkLCB0YXNrIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZC4KKyAgICB2aXJ0dWFs
IHZvaWQgcG9zdFRhc2soVGFzayopOworICAgIHN0YXRpYyBXZWJXb3JrZXJSdW5Mb29wSW1wbCog
Y3VycmVudCgpOworcHJpdmF0ZToKKyAgICBXZWJXb3JrZXJSdW5Mb29wSW1wbChXZWJDb3JlOjpX
b3JrZXJSdW5Mb29wKik7CisgICAgV2ViQ29yZTo6V29ya2VyUnVuTG9vcCogbV93b3JrZXJSdW5M
b29wOworICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxvb3BJbXBs
Kj4qIG1fY3VycmVudExvb3A7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113973</attachid>
            <date>2011-11-07 18:29:19 -0800</date>
            <delta_ts>2011-11-07 18:43:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111107182918.patch</filename>
            <type>text/plain</type>
            <size>14653</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk0NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzA1MmVjNmJhOTA2MTA0
YTYzYjYyYWI4MmMyMzg0MGIxYzU2NWYxLi40OTY2NjdmYjE5YTk4MmRlMDBhMWI2ZGVmNDIxZGU3
MTEzZGRmMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTEtMDcgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGJlZ2lubmluZyBvZiBX
ZWJXb3JrZXJSdW5Mb29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9v
cFNldHVwOjpSdW5Mb29wU2V0dXApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcFNldHVwOjp+
UnVuTG9vcFNldHVwKToKKwogMjAxMS0xMS0wNyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRG9uJ3QgdXNlIENTU09NJ3MgQ1NTVmFsdWUuY3NzVmFsdWVUeXBl
IGludGVybmFsbHkgaW4gV2ViQ29yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGMw
YmI2ZmU1NDZhZTEwZDcwYzRhMDQ2ZjJlODA3MGU3NDljNWNjMi4uNDU0ZGRjZGFlNzUyMzhkM2Uw
ODdhNDc5Y2ExOTNhOTQzODRhYTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMS0xMS0wNyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgYmVnaW5uaW5nIG9mIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91
bmQgV29ya2VyUnVuTG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1
bkxvb3BTdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojp3
b3JrZXJSdW5Mb29wU3RvcHBlZCk6CisgICAgICAgICogcHVibGljL1dlYldvcmtlclJ1bkxvb3Au
aDogQWRkZWQuCisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
clJ1bkxvb3BJbXBsOjpjdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9v
cEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpw
b3N0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3Jr
ZXJSdW5Mb29wSW1wbCk6CisgICAgICAgICogc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wSW1wbDo6fldlYldvcmtlclJ1
bkxvb3BJbXBsKToKKwogMjAxMS0xMS0wNyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbmFtZSBXZWJWaWV3OjpzY2FsZVBhZ2UgdG8g
V2ViVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIG1hdGNoIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNzI1
NzAxMTMxZGY5MDE5N2EwYTRhNGQ0YzE5MDFmYTVlYWQ1ZDI4MC4uMDA2Yjk3ZTM1MGQ1ZDRmMjAz
NDY0N2U5NTNhODUzMWFkMzM3OWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBX
aWRnZXQ7CitjbGFzcyBXb3JrZXJSdW5Mb29wOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IEZv
bnRSZW5kZXJTdHlsZTsKQEAgLTQwOSw2ICs0MTAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExp
bmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgS1VSTCYgYmFzZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHN0YXRpYyBib29sIGlzTGlu
a1Zpc2l0ZWQoTGlua0hhc2gpOworCisgICAgc3RhdGljIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0
ZWQoV29ya2VyUnVuTG9vcCopOworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1bkxvb3BTdG9wcGlu
ZyhXb3JrZXJSdW5Mb29wKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBmYzE1ZjJiMzg2ZTI2MDgyOWMy
MTZhMTY2NWE0NDU4MzM4NTU0NDhkLi42MmY4MTQ5OWNjZTFjNmI2ODUyMGYzNGEwMTEwMjM3ZDAy
ZGJmZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTI3
LDE2ICsyNywxNyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0gCi0j
aW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKworI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTaGFyZWRUaW1lci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRl
ICJUaHJlYWRUaW1lcnMuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAi
V29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgpAQCAtMTE0LDYgKzExNSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFtX3J1bkxvb3AubV9uZXN0ZWRDb3VudCkKICAgICAgICAgICAgIHRocmVhZEdsb2JhbERhdGEo
KS50aHJlYWRUaW1lcnMoKS5zZXRTaGFyZWRUaW1lcihtX3J1bkxvb3AubV9zaGFyZWRUaW1lci5n
ZXQoKSk7CiAgICAgICAgIG1fcnVuTG9vcC5tX25lc3RlZENvdW50Kys7CisgICAgICAgIFBsYXRm
b3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0ZWQoJm1fcnVuTG9vcCk7CiAgICAgfQogCiAg
ICAgflJ1bkxvb3BTZXR1cCgpCkBAIC0xMjEsNiArMTIzLDcgQEAgcHVibGljOgogICAgICAgICBt
X3J1bkxvb3AubV9uZXN0ZWRDb3VudC0tOwogICAgICAgICBpZiAoIW1fcnVuTG9vcC5tX25lc3Rl
ZENvdW50KQogICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNl
dFNoYXJlZFRpbWVyKDApOworICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BT
dG9wcGluZygmbV9ydW5Mb29wKTsKICAgICB9CiBwcml2YXRlOgogICAgIFdvcmtlclJ1bkxvb3Am
IG1fcnVuTG9vcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA1ZDgzYzg0YjAyYjYz
YjIxNTQzZWQ3ZjkwNTEwMmI2YmNiODc5ODI4Li40M2Y0ZTIxN2JkMjliZDI3NzE0OGFmZjU4NjU4
NDAyNTVjNTgwYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zMjQsNiArMzI0
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYldpZGdldENsaWVudC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYldvcmtlci5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYldvcmtlckNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYldvcmtlclJ1
bkxvb3AuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViSW5wdXRFdmVudEZhY3Rv
cnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCkBA
IC02MzEsNiArNjMyLDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckNsaWVudElt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
V29ya2VyUnVuTG9vcEltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1
bkxvb3BJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNTI4MTQ3OTRkOWQyMTRhY2JjM2U4YzE3MjRh
MjNlMDVhMTdlZTJhYi4uN2I4NzhkZGFlOWIzODc4ZjBkYjU5YzQ4ZjlhZWRhMmM4MjMyYTlmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNp
bmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJX
b3JrZXJSdW5Mb29wLmgiCiAKICNpbmNsdWRlIDx0aW1lLmg+CiAKQEAgLTMyNyw2ICszMjgsOSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlciogY3JlYXRl
UGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopIHsg
cmV0dXJuIDA7IH0KIAorICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJSdW5Mb29wU3RhcnRlZCh1aW50
cHRyX3QgaWQsIFdlYldvcmtlclJ1bkxvb3AqIHJ1bkxvb3ApIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB3b3JrZXJSdW5Mb29wU3RvcHBlZCh1aW50cHRyX3QgaWQpIHsgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgfldlYktpdFBsYXRmb3JtU3VwcG9ydCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlclJ1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYldvcmtlclJ1bkxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmM2MjdjZmVh
MzFlZTI0YzM0NTYxZGVkYjQyZmI0MmQ0MmU1OGYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYldvcmtlclJ1bkxvb3BfaAorI2RlZmluZSBXZWJX
b3JrZXJSdW5Mb29wX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldvcmtlclJ1
bkxvb3AgeworcHVibGljOgorICAgIGNsYXNzIFRhc2s7CisgICAgc3RhdGljIFdlYldvcmtlclJ1
bkxvb3AqIGN1cnJlbnQoKTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCAyZjJjMmE3ZWNjMjA5ZmQ0NGNl
M2Y5NTgxZmM0Y2ZlMDIwMzViMmEyLi4wNjlmY2JkNjBiZDhhMjEwZjE1MGEwOTFkODRlYTg3NGYx
YjdkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnRJbXBsLmgiCisj
aW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcEltcGwuaCIKIAogI2lmIFVTRShDRykKICNpbmNsdWRl
IDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+CkBAIC0xMDU1LDYgKzEwNTYsMTcgQEAgYm9vbCBQ
bGF0Zm9ybVN1cHBvcnQ6OnBvcHVwc0FsbG93ZWQoTlBQIG5wcCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZChXb3JrZXJS
dW5Mb29wKiBsb29wKQoreworICAgIFJlZlB0cjxXZWJXb3JrZXJSdW5Mb29wSW1wbD4gd2ViV29y
a2VyUnVuTG9vcCA9IFdlYldvcmtlclJ1bkxvb3BJbXBsOjpjcmVhdGUobG9vcCk7CisgICAgd2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPndvcmtlclJ1bkxvb3BTdGFydGVkKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pihsb29wKSwgd2ViV29ya2VyUnVuTG9vcC5nZXQoKSk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBpbmcoV29ya2VyUnVuTG9vcCogbG9v
cCkKK3sKKyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+d29ya2VyUnVuTG9vcFN0b3BwZWQo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxvb3ApKTsKK30KKwogI2lmIEVOQUJMRShXT1JL
RVJTKQogV29ya2VyQ29udGV4dFByb3h5KiBXb3JrZXJDb250ZXh0UHJveHk6OmNyZWF0ZShXb3Jr
ZXIqIHdvcmtlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlclJ1bkxvb3BJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlclJ1bkxvb3BJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzZjYmY4OWJlYjEzYzA4NjU0MjM5ZTkz
ZTFhMDdmNDIzNTQ5N2VhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcEltcGwu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
VEY6OlRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxvb3BJbXBsKj4qIFdlYldvcmtlclJ1bkxv
b3BJbXBsOjptX2N1cnJlbnRMb29wOworCitXZWJXb3JrZXJSdW5Mb29wKiBXZWJXb3JrZXJSdW5M
b29wOjpjdXJyZW50KCkKK3sKKyAgICByZXR1cm4gV2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJl
bnQoKTsKK30KKworV2ViV29ya2VyUnVuTG9vcEltcGwqIFdlYldvcmtlclJ1bkxvb3BJbXBsOjpj
dXJyZW50KCkKK3sKKyAgICBpZiAoIW1fY3VycmVudExvb3ApCisgICAgICAgIHJldHVybiAwOwor
ICAgIEFTU0VSVCgqKm1fY3VycmVudExvb3ApOworICAgIHJldHVybiAqKm1fY3VycmVudExvb3A7
Cit9CisKK1Bhc3NSZWZQdHI8V2ViV29ya2VyUnVuTG9vcEltcGw+IFdlYldvcmtlclJ1bkxvb3BJ
bXBsOjpjcmVhdGUoV29ya2VyUnVuTG9vcCogbG9vcCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYldvcmtlclJ1bkxvb3BJbXBsKGxvb3ApKTsKK30KKwordm9pZCBXZWJXb3JrZXJSdW5M
b29wSW1wbDo6cG9zdFRhc2soVGFzayogdGFzaykgeyB9CisKKworV2ViV29ya2VyUnVuTG9vcElt
cGw6OldlYldvcmtlclJ1bkxvb3BJbXBsKFdvcmtlclJ1bkxvb3AqIHdvcmtlclJ1bkxvb3ApCisg
ICAgOiBtX3dvcmtlclJ1bkxvb3Aod29ya2VyUnVuTG9vcCkKK3sKKyAgICBpZiAoIW1fY3VycmVu
dExvb3ApCisgICAgICAgIG1fY3VycmVudExvb3AgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzxX
ZWJXb3JrZXJSdW5Mb29wSW1wbCo+OworICAgIC8vIFdoZW4gYSBuZXN0ZWQgbG9vcCBpcyBzdGFy
dGVkLCBkb24ndCBibG93IGF3YXkgdGhlIGN1cnJlbnQgbG9vcC4KKyAgICBpZiAoISoqbV9jdXJy
ZW50TG9vcCkKKyAgICAgICAgKiptX2N1cnJlbnRMb29wID0gdGhpczsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTEzYmMzNjg2Y2I0NTJkN2Q2Yjc0NDM3YjM4ZGY5Mjg1OTg2NzQ3MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBs
LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViV29ya2VyUnVuTG9v
cEltcGxfaAorI2RlZmluZSBXZWJXb3JrZXJSdW5Mb29wSW1wbF9oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wLmgiCisjaW5jbHVkZSAiV29ya2Vy
UnVuTG9vcC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBXb3JrZXJSdW5Mb29wOyB9
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV29ya2VyUnVuTG9vcEltcGwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViV29ya2VyUnVuTG9vcEltcGw+LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViV29ya2VyUnVuTG9vcCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViV29ya2VyUnVuTG9vcEltcGw+IGNyZWF0ZShXZWJDb3Jl
OjpXb3JrZXJSdW5Mb29wKik7CisgICAgdmlydHVhbCB+V2ViV29ya2VyUnVuTG9vcEltcGwoKSB7
IH0KKyAgICAvLyBDYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQsIHRhc2sgb3duZXJzaGlwIGlzIHRy
YW5zZmVycmVkLgorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKik7CisgICAgc3RhdGlj
IFdlYldvcmtlclJ1bkxvb3BJbXBsKiBjdXJyZW50KCk7Citwcml2YXRlOgorICAgIFdlYldvcmtl
clJ1bkxvb3BJbXBsKFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqKTsKKyAgICBXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wKiBtX3dvcmtlclJ1bkxvb3A7CisgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lm
aWM8V2ViV29ya2VyUnVuTG9vcEltcGwqPiogbV9jdXJyZW50TG9vcDsKK307CisKK30KKworI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113974</attachid>
            <date>2011-11-07 18:43:44 -0800</date>
            <delta_ts>2011-11-17 12:52:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111107184343.patch</filename>
            <type>text/plain</type>
            <size>14634</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk0NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzA1MmVjNmJhOTA2MTA0
YTYzYjYyYWI4MmMyMzg0MGIxYzU2NWYxLi40OTY2NjdmYjE5YTk4MmRlMDBhMWI2ZGVmNDIxZGU3
MTEzZGRmMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTEtMDcgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGJlZ2lubmluZyBvZiBX
ZWJXb3JrZXJSdW5Mb29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9v
cFNldHVwOjpSdW5Mb29wU2V0dXApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcFNldHVwOjp+
UnVuTG9vcFNldHVwKToKKwogMjAxMS0xMS0wNyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRG9uJ3QgdXNlIENTU09NJ3MgQ1NTVmFsdWUuY3NzVmFsdWVUeXBl
IGludGVybmFsbHkgaW4gV2ViQ29yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGMw
YmI2ZmU1NDZhZTEwZDcwYzRhMDQ2ZjJlODA3MGU3NDljNWNjMi4uNDU0ZGRjZGFlNzUyMzhkM2Uw
ODdhNDc5Y2ExOTNhOTQzODRhYTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMS0xMS0wNyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgYmVnaW5uaW5nIG9mIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91
bmQgV29ya2VyUnVuTG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1
bkxvb3BTdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojp3
b3JrZXJSdW5Mb29wU3RvcHBlZCk6CisgICAgICAgICogcHVibGljL1dlYldvcmtlclJ1bkxvb3Au
aDogQWRkZWQuCisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
clJ1bkxvb3BJbXBsOjpjdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9v
cEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpw
b3N0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3Jr
ZXJSdW5Mb29wSW1wbCk6CisgICAgICAgICogc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wSW1wbDo6fldlYldvcmtlclJ1
bkxvb3BJbXBsKToKKwogMjAxMS0xMS0wNyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbmFtZSBXZWJWaWV3OjpzY2FsZVBhZ2UgdG8g
V2ViVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yIHRvIG1hdGNoIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNzI1
NzAxMTMxZGY5MDE5N2EwYTRhNGQ0YzE5MDFmYTVlYWQ1ZDI4MC4uMDA2Yjk3ZTM1MGQ1ZDRmMjAz
NDY0N2U5NTNhODUzMWFkMzM3OWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBX
aWRnZXQ7CitjbGFzcyBXb3JrZXJSdW5Mb29wOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IEZv
bnRSZW5kZXJTdHlsZTsKQEAgLTQwOSw2ICs0MTAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExp
bmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgS1VSTCYgYmFzZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHN0YXRpYyBib29sIGlzTGlu
a1Zpc2l0ZWQoTGlua0hhc2gpOworCisgICAgc3RhdGljIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0
ZWQoV29ya2VyUnVuTG9vcCopOworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1bkxvb3BTdG9wcGlu
ZyhXb3JrZXJSdW5Mb29wKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBmYzE1ZjJiMzg2ZTI2MDgyOWMy
MTZhMTY2NWE0NDU4MzM4NTU0NDhkLi42MWRlMmFlMDIwMDMyMmQ5NmFhN2VjYmMwNzdjMmRjZWFh
MjhiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTI3
LDE2ICsyNywxOCBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0gCisK
ICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCisjaW5jbHVkZSAi
V29ya2VyUnVuTG9vcC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCiAj
aW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIlRocmVhZFRpbWVycy5oIgot
I2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBA
IC0xMTQsNiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fcnVuTG9vcC5tX25lc3Rl
ZENvdW50KQogICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNl
dFNoYXJlZFRpbWVyKG1fcnVuTG9vcC5tX3NoYXJlZFRpbWVyLmdldCgpKTsKICAgICAgICAgbV9y
dW5Mb29wLm1fbmVzdGVkQ291bnQrKzsKKyAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJS
dW5Mb29wU3RhcnRlZCgmbV9ydW5Mb29wKTsKICAgICB9CiAKICAgICB+UnVuTG9vcFNldHVwKCkK
QEAgLTEyMSw2ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcnVuTG9vcC5tX25lc3RlZENv
dW50LS07CiAgICAgICAgIGlmICghbV9ydW5Mb29wLm1fbmVzdGVkQ291bnQpCiAgICAgICAgICAg
ICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2V0U2hhcmVkVGltZXIoMCk7Cisg
ICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKCZtX3J1bkxvb3Ap
OwogICAgIH0KIHByaXZhdGU6CiAgICAgV29ya2VyUnVuTG9vcCYgbV9ydW5Mb29wOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDVkODNjODRiMDJiNjNiMjE1NDNlZDdmOTA1MTAyYjZi
Y2I4Nzk4MjguLjQzZjRlMjE3YmQyOWJkMjc3MTQ4YWZmNTg2NTg0MDI1NWM1ODBiY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMyNCw2ICszMjQsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViV29ya2VyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViV29ya2VyQ2xpZW50Lmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL3dpbi9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL3dpbi9XZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL3dpbi9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oJywKQEAgLTYzMSw2ICs2MzIsOCBAQAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYldvcmtlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYldv
cmtlckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5j
cHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaAppbmRleCA1MjgxNDc5NGQ5ZDIxNGFjYmMzZThjMTcyNGEyM2UwNWExN2VlMmFiLi43Yjg3
OGRkYWU5YjM4NzhmMGRiNTljNDhmOWFlZGEyYzgyMzJhOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgog
I2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2luY2x1ZGUgIldlYldvcmtlclJ1bkxvb3AuaCIKIAog
I2luY2x1ZGUgPHRpbWUuaD4KIApAQCAtMzI3LDYgKzMyOCw5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCisgICAg
dmlydHVhbCB2b2lkIHdvcmtlclJ1bkxvb3BTdGFydGVkKHVpbnRwdHJfdCBpZCwgV2ViV29ya2Vy
UnVuTG9vcCogcnVuTG9vcCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdvcmtlclJ1bkxvb3BTdG9w
cGVkKHVpbnRwdHJfdCBpZCkgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV29ya2VyUnVuTG9vcC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
V29ya2VyUnVuTG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiYzYyN2NmZWEzMWVlMjRjMzQ1NjFkZWRiNDJm
YjQyZDQyZTU4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViV29ya2VyUnVuTG9vcF9oCisjZGVmaW5lIFdlYldvcmtlclJ1bkxvb3BfaAorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV29ya2VyUnVuTG9vcCB7CitwdWJsaWM6Cisg
ICAgY2xhc3MgVGFzazsKKyAgICBzdGF0aWMgV2ViV29ya2VyUnVuTG9vcCogY3VycmVudCgpOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwCmluZGV4IDJmMmMyYTdlY2MyMDlmZDQ0Y2UzZjk1ODFmYzRjZmUwMjAzNWIy
YTIuLjA2OWZjYmQ2MGJkOGEyMTBmMTUwYTA5MWQ4NGVhODc0ZjFiN2Q1ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtNjEsNiArNjEs
NyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5o
IgogI2luY2x1ZGUgIldlYldvcmtlckNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJS
dW5Mb29wSW1wbC5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0Nv
bnRleHQuaD4KQEAgLTEwNTUsNiArMTA1NiwxNyBAQCBib29sIFBsYXRmb3JtU3VwcG9ydDo6cG9w
dXBzQWxsb3dlZChOUFAgbnBwKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBQbGF0Zm9y
bVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7Cisg
ICAgUmVmUHRyPFdlYldvcmtlclJ1bkxvb3BJbXBsPiB3ZWJXb3JrZXJSdW5Mb29wID0gV2ViV29y
a2VyUnVuTG9vcEltcGw6OmNyZWF0ZShsb29wKTsKKyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQo
KS0+d29ya2VyUnVuTG9vcFN0YXJ0ZWQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxvb3Ap
LCB3ZWJXb3JrZXJSdW5Mb29wLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6Ondv
cmtlclJ1bkxvb3BTdG9wcGluZyhXb3JrZXJSdW5Mb29wKiBsb29wKQoreworICAgIHdlYktpdFBs
YXRmb3JtU3VwcG9ydCgpLT53b3JrZXJSdW5Mb29wU3RvcHBlZChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4obG9vcCkpOworfQorCiAjaWYgRU5BQkxFKFdPUktFUlMpCiBXb3JrZXJDb250ZXh0
UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtlciogd29ya2VyKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ3NmNiZjg5YmViMTNjMDg2NTQyMzllOTNlMWEwN2Y0MjM1NDk3ZWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5M
b29wSW1wbC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wSW1wbC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dURjo6VGhyZWFkU3BlY2lmaWM8
V2ViV29ya2VyUnVuTG9vcEltcGwqPiogV2ViV29ya2VyUnVuTG9vcEltcGw6Om1fY3VycmVudExv
b3A7CisKK1dlYldvcmtlclJ1bkxvb3AqIFdlYldvcmtlclJ1bkxvb3A6OmN1cnJlbnQoKQorewor
ICAgIHJldHVybiBXZWJXb3JrZXJSdW5Mb29wSW1wbDo6Y3VycmVudCgpOworfQorCitXZWJXb3Jr
ZXJSdW5Mb29wSW1wbCogV2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQoKQoreworICAgIGlm
ICghbV9jdXJyZW50TG9vcCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQVNTRVJUKCoqbV9jdXJy
ZW50TG9vcCk7CisgICAgcmV0dXJuICoqbV9jdXJyZW50TG9vcDsKK30KKworUGFzc1JlZlB0cjxX
ZWJXb3JrZXJSdW5Mb29wSW1wbD4gV2ViV29ya2VyUnVuTG9vcEltcGw6OmNyZWF0ZShXb3JrZXJS
dW5Mb29wKiBsb29wKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViV29ya2VyUnVuTG9v
cEltcGwobG9vcCkpOworfQorCit2b2lkIFdlYldvcmtlclJ1bkxvb3BJbXBsOjpwb3N0VGFzayhU
YXNrKiB0YXNrKSB7IH0KKworCitXZWJXb3JrZXJSdW5Mb29wSW1wbDo6V2ViV29ya2VyUnVuTG9v
cEltcGwoV29ya2VyUnVuTG9vcCogd29ya2VyUnVuTG9vcCkKKyAgICA6IG1fd29ya2VyUnVuTG9v
cCh3b3JrZXJSdW5Mb29wKQoreworICAgIGlmICghbV9jdXJyZW50TG9vcCkKKyAgICAgICAgbV9j
dXJyZW50TG9vcCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxvb3BJbXBs
Kj47CisgICAgLy8gV2hlbiBhIG5lc3RlZCBsb29wIGlzIHN0YXJ0ZWQsIGRvbid0IGJsb3cgYXdh
eSB0aGUgY3VycmVudCBsb29wLgorICAgIGlmICghKiptX2N1cnJlbnRMb29wKQorICAgICAgICAq
Km1fY3VycmVudExvb3AgPSB0aGlzOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTNiYzM2ODZjYjQ1
MmQ3ZDZiNzQ0MzdiMzhkZjkyODU5ODY3NDcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXb3JrZXJSdW5Mb29wSW1wbF9oCisjZGVmaW5lIFdl
YldvcmtlclJ1bkxvb3BJbXBsX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7IGNsYXNzIFdvcmtlclJ1bkxvb3A7IH0KK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJXb3JrZXJSdW5Mb29wSW1wbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxXZWJXb3JrZXJSdW5Mb29wSW1wbD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBXZWJXb3JrZXJSdW5Mb29wIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJXb3JrZXJSdW5Mb29wSW1wbD4gY3JlYXRlKFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqKTsK
KyAgICB2aXJ0dWFsIH5XZWJXb3JrZXJSdW5Mb29wSW1wbCgpIHsgfQorICAgIC8vIENhbGxhYmxl
IGZyb20gYW55IHRocmVhZCwgdGFzayBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQuCisgICAgdmly
dHVhbCB2b2lkIHBvc3RUYXNrKFRhc2sqKTsKKyAgICBzdGF0aWMgV2ViV29ya2VyUnVuTG9vcElt
cGwqIGN1cnJlbnQoKTsKK3ByaXZhdGU6CisgICAgV2ViV29ya2VyUnVuTG9vcEltcGwoV2ViQ29y
ZTo6V29ya2VyUnVuTG9vcCopOworICAgIFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqIG1fd29ya2Vy
UnVuTG9vcDsKKyAgICBzdGF0aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzxXZWJXb3JrZXJSdW5Mb29w
SW1wbCo+KiBtX2N1cnJlbnRMb29wOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115660</attachid>
            <date>2011-11-17 12:52:22 -0800</date>
            <delta_ts>2011-11-22 13:19:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111117125221.patch</filename>
            <type>text/plain</type>
            <size>16089</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA1YTBjZjU0ZjZhMDZl
OTBmZTRhZjU4ZWZjNTdiMWQ4MTQ3MTMxMC4uN2NlYzU3MTZmZmNiMzZiOTZhYjlmMTAwZDNmNjUz
NzQ5YjNlZmE0OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTE3ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIFRlc3Rpbmcgc3VnZ2VzdGlv
bnMgd2VsY29tZS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSdW5Mb29wU2V0dXA6OlJ1bkxvb3BTZXR1cCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wOjpydW4pOgorCiAyMDExLTExLTA5ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IG91dGxpbmUtY29sb3ItKiB0ZXN0
cyBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgzYTZmZDIzYWU4NDdlNDMxOTU3
NzNkN2YyMjU0NzNlNzRiZDYzYTMuLjU3YzlkOTdlMjU5YzFmNGRmMmIyMTRmZTZlY2RhMmFjMDFm
NDE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEt
MTEtMTcgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91bmQgV29ya2VyUnVuTG9vcAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTcKKworICAgICAgICBUaGlz
IGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gcG9zdCB0YXNrcyB0byB3ZWJjb3JlLWNyZWF0ZWQgd29y
a2VyIHRocmVhZHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5M
b29wU3RhcnRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6d29y
a2VyUnVuTG9vcFN0b3BwZWQpOgorICAgICAgICAqIHB1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6
CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6On5XZWJXb3JrZXJSdW5Mb29wKToK
KyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBpbmcpOgorICAgICAgICAqIHNyYy9X
ZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3Jr
ZXJSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcElt
cGw6OldlYldvcmtlclJ1bkxvb3BJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVu
TG9vcEltcGw6On5XZWJXb3JrZXJSdW5Mb29wSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlRhc2tG
b3J3YXJkZXI6OlRhc2tGb3J3YXJkZXIpOgorICAgICAgICAoV2ViS2l0OjpUYXNrRm9yd2FyZGVy
OjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlRhc2tGb3J3YXJkZXI6On5UYXNrRm9y
d2FyZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6OnBvc3RUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQpOgorICAg
ICAgICAqIHNyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oOiBBZGRlZC4KKwogMjAxMS0xMS0xNyAg
VnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSZW1vdmUgb25saW5lRGV0ZWN0aW9uRW5hYmxlZCBmcm9tIFByZWZlcmVuY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5o
CmluZGV4IDY4YmE3OTRiZTEwYzVhMTVhZDM2ZTMzNTAzY2JmM2MwZmQ4YTA5MWEuLmMyYzM0ZTJj
NDJkMzA3YzdjMDZjMDVlYmYyNmMxMmIzZjE0ZTVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04MSw2ICs4MSw3IEBA
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwogY2xhc3MgV2lkZ2V0OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tpZTsK
IHN0cnVjdCBGb250UmVuZGVyU3R5bGU7CkBAIC00MTUsNiArNDE2LDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtV
UkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0aWMg
Ym9vbCBpc0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1
bkxvb3BTdGFydGVkKFdvcmtlclJ1bkxvb3AqKTsKKyAgICBzdGF0aWMgdm9pZCB3b3JrZXJSdW5M
b29wU3RvcHBpbmcoV29ya2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggZmMxNWYyYjM4
NmUyNjA4MjljMjE2YTE2NjVhNDQ1ODMzODU1NDQ4ZC4uMmNhMTg2ZGFiZWZmZjc5MGI4NjIyMjEx
MDE0Njc4YjAxNzY3Y2FhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCkBAIC0yNywyMCArMjcsMjUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAor
I2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKwogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2Jh
bERhdGEuaCIKICNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5M
b29wLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVh
ZC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCisjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciA6IHB1YmxpYyBTaGFyZWRUaW1lciB7
CkBAIC0xMTEsOCArMTE2LDEyIEBAIHB1YmxpYzoKICAgICBSdW5Mb29wU2V0dXAoV29ya2VyUnVu
TG9vcCYgcnVuTG9vcCkKICAgICAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKICAgICB7Ci0gICAg
ICAgIGlmICghbV9ydW5Mb29wLm1fbmVzdGVkQ291bnQpCisgICAgICAgIGlmICghbV9ydW5Mb29w
Lm1fbmVzdGVkQ291bnQpIHsKICAgICAgICAgICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRU
aW1lcnMoKS5zZXRTaGFyZWRUaW1lcihtX3J1bkxvb3AubV9zaGFyZWRUaW1lci5nZXQoKSk7Cisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Ondvcmtl
clJ1bkxvb3BTdGFydGVkKCZtX3J1bkxvb3ApOworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAg
bV9ydW5Mb29wLm1fbmVzdGVkQ291bnQrKzsKICAgICB9CiAKQEAgLTEzNCw2ICsxNDMsMTAgQEAg
dm9pZCBXb3JrZXJSdW5Mb29wOjpydW4oV29ya2VyQ29udGV4dCogY29udGV4dCkKICAgICBkbyB7
CiAgICAgICAgIHJlc3VsdCA9IHJ1bkluTW9kZShjb250ZXh0LCBtb2RlUHJlZGljYXRlKTsKICAg
ICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCk7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgaWYgKG1fbmVzdGVkQ291bnQgPT0gMSkKKyAgICAgICAgUGxhdGZv
cm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBpbmcodGhpcyk7CisjZW5kaWYKIH0KIAogTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IGJhODU0ZWFiY2Q2YWY4NzQ1YjcxYWFiOWMxNzY1MjNjMTBlOTkyNDkuLjAyOGM3MmYz
MTVmOThmZmI2ZjFiMTlhNzZiMmZhNGEwMWE1NjAzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTMyOCw2ICszMjgsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViV2lk
Z2V0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViV29ya2VyLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViV29ya2VyQ2xpZW50LmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3dp
bi9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3dpbi9X
ZWJTYW5kYm94U3VwcG9ydC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3dpbi9XZWJTY3Jl
ZW5JbmZvRmFjdG9yeS5oJywKQEAgLTYzNSw2ICs2MzYsOCBAQAogICAgICAgICAgICAgICAgICdz
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtl
ckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckltcGwuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
b3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
b3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBhODc5YWJk
NzNmZDRiYmQ1ZTI5OTQ3YWJhOTkzODFkMDA1MGRiNjVhLi5kOWM3YWI1MWVhNDIwYmM4MzdkZWYy
Y2Q3NzY1NWQyODkzYzhkYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZlY3Rv
ci5oIgorI2luY2x1ZGUgIldlYldvcmtlclJ1bkxvb3AuaCIKIAogI2luY2x1ZGUgPHRpbWUuaD4K
IApAQCAtMzM0LDYgKzMzNSw5IEBAIHB1YmxpYzoKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYg
V2ViUlRDIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2YgcmVzb3VyY2Vz
LgogICAgIHZpcnR1YWwgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVyQ29ubmVj
dGlvbkhhbmRsZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1cm4gMDsg
fQogCisgICAgdmlydHVhbCB2b2lkIHdvcmtlclJ1bkxvb3BTdGFydGVkKFdlYldvcmtlclJ1bkxv
b3AqIHJ1bkxvb3ApIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJSdW5Mb29wU3RvcHBlZChX
ZWJXb3JrZXJSdW5Mb29wKiBydW5Mb29wKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVkNmQyN2UwODRkODhkZGJlNjk1
NDVkN2NkOGQ2ODM5NDc0NGExYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldvcmtlclJ1bkxvb3AuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJXb3JrZXJSdW5Mb29wX2gKKyNkZWZpbmUgV2ViV29ya2VyUnVuTG9v
cF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJXb3JrZXJSdW5Mb29wIHsKK3B1
YmxpYzoKKyAgICBjbGFzcyBUYXNrIHsKKyAgICAgcHVibGljOgorICAgICAgdmlydHVhbCB+VGFz
aygpIHsgfQorICAgICAgdmlydHVhbCB2b2lkIFJ1bigpID0gMDsKKyAgICB9OworICAgIHZpcnR1
YWwgdm9pZCBwb3N0VGFzayhUYXNrKikgPSAwOworICAgIHN0YXRpYyBXZWJXb3JrZXJSdW5Mb29w
KiBjdXJyZW50KCk7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2ViV29ya2VyUnVuTG9vcCgp
IHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IDdlZDc1Y2NjOTI3N2QwMzA0MjQ4NTJhOWY0OTI3NTEy
NzBkZTllYzkuLjdmM2VjYjhkMzZiZDU3ZGRhNTM1NmVlODI5ZjFhYmZhYTUxYjQ2ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtNjEs
NiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3
SW1wbC5oIgogI2luY2x1ZGUgIldlYldvcmtlckNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJX
b3JrZXJSdW5Mb29wSW1wbC5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9DR0NvbnRleHQuaD4KQEAgLTEwNjQsNiArMTA2NSwyMSBAQCBib29sIFBsYXRmb3JtU3VwcG9y
dDo6cG9wdXBzQWxsb3dlZChOUFAgbnBwKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBQ
bGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKFdvcmtlclJ1bkxvb3AqIGxvb3Ap
Cit7CisgICAgaWYgKFdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJyZW50KCkpIHsKKyAgICAgIEFT
U0VSVChsb29wID09IFdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJyZW50KCktPm1fd29ya2VyUnVu
TG9vcCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgp
LT53b3JrZXJSdW5Mb29wU3RhcnRlZChuZXcgV2ViV29ya2VyUnVuTG9vcEltcGwobG9vcCkpOwor
fQorCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKFdvcmtlclJ1
bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPndvcmtlclJ1bkxv
b3BTdG9wcGVkKFdlYldvcmtlclJ1bkxvb3A6OmN1cnJlbnQoKSk7CisgICAgZGVsZXRlIHN0YXRp
Y19jYXN0PFdlYldvcmtlclJ1bkxvb3BJbXBsKj4oV2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCgp
KTsKK30KKwogI2lmIEVOQUJMRShXT1JLRVJTKQogV29ya2VyQ29udGV4dFByb3h5KiBXb3JrZXJD
b250ZXh0UHJveHk6OmNyZWF0ZShXb3JrZXIqIHdvcmtlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YjYxNWQxMDc5OWM2NGZlMDY1MmQxMzZmOTI0MDk1NzljZWUzYzI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwCkBA
IC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViV29ya2VyUnVuTG9vcEltcGwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXVEY6OlRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxv
b3BJbXBsKj4qIFdlYldvcmtlclJ1bkxvb3BJbXBsOjptX2N1cnJlbnRMb29wOworCitXZWJXb3Jr
ZXJSdW5Mb29wKiBXZWJXb3JrZXJSdW5Mb29wOjpjdXJyZW50KCkKK3sKKyAgICByZXR1cm4gV2Vi
V29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQoKTsKK30KKworV2ViV29ya2VyUnVuTG9vcEltcGw6
OldlYldvcmtlclJ1bkxvb3BJbXBsKFdvcmtlclJ1bkxvb3AqIHdvcmtlclJ1bkxvb3ApCisgICAg
OiBtX3dvcmtlclJ1bkxvb3Aod29ya2VyUnVuTG9vcCkKK3sKKyAgICBpZiAoIW1fY3VycmVudExv
b3ApIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6Ok11dGV4LCBtX3RocmVhZFNw
ZWNpZmljTXV0ZXgsICgpKTsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGhyZWFkU3Bl
Y2lmaWNNdXRleCk7CisgICAgICAgIG1fY3VycmVudExvb3AgPSBuZXcgV1RGOjpUaHJlYWRTcGVj
aWZpYzxXZWJXb3JrZXJSdW5Mb29wSW1wbCo+OworICAgIH0KKyAgICBBU1NFUlQoISoqbV9jdXJy
ZW50TG9vcCk7CisgICAgKiptX2N1cnJlbnRMb29wID0gdGhpczsKK30KKworV2ViV29ya2VyUnVu
TG9vcEltcGw6On5XZWJXb3JrZXJSdW5Mb29wSW1wbCgpCit7CisgICAgKiptX2N1cnJlbnRMb29w
ID0gMDsKK30KKworY2xhc3MgVGFza0ZvcndhcmRlciA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKKyBwdWJsaWM6CisgICAgVGFza0ZvcndhcmRlcihXZWJXb3JrZXJSdW5M
b29wOjpUYXNrKiB0YXNrKQorICAgICAgICA6IG1fdGFzayhhZG9wdFB0cih0YXNrKSkKKyAgICB7
CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKKyAgICB7CisgICAgICAgIG1fdGFzay0+UnVuKCk7CisgICAgfQorICAgIHZpcnR1YWwg
flRhc2tGb3J3YXJkZXIoKSB7IH0KKyBwcml2YXRlOgorICAgIE93blB0cjxXZWJXb3JrZXJSdW5M
b29wOjpUYXNrPiBtX3Rhc2s7Cit9OworCit2b2lkIFdlYldvcmtlclJ1bkxvb3BJbXBsOjpwb3N0
VGFzayhUYXNrKiB0YXNrKQoreworICAgIG1fd29ya2VyUnVuTG9vcC0+cG9zdFRhc2soYWRvcHRQ
dHIobmV3IFRhc2tGb3J3YXJkZXIodGFzaykpKTsKK30KKworV2ViV29ya2VyUnVuTG9vcEltcGwq
IFdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJyZW50KCkKK3sKKyAgICAvLyBSZXR1cm4gMCBpZiB3
ZSBhcmUgY2FsbGVkIG9uIGEgbm9uLXdvcmtlciB0aHJlYWQuCisgICAgaWYgKCFtX2N1cnJlbnRM
b29wKQorICAgICAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQoKiptX2N1cnJlbnRMb29wKTsKKyAg
ICByZXR1cm4gKiptX2N1cnJlbnRMb29wOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzU5MjY0NzE4
M2FhYzA2YmFkN2FjZWRmNGYyNjhiZDE5MTQyNzAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXb3JrZXJSdW5Mb29wSW1wbF9oCisjZGVmaW5l
IFdlYldvcmtlclJ1bkxvb3BJbXBsX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1
ZGUgIldlYldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9ybVN1cHBvcnQ7CitjbGFzcyBXb3JrZXJS
dW5Mb29wOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV29ya2VyUnVuTG9v
cEltcGwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViV29ya2VyUnVuTG9vcEltcGw+
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViV29ya2VyUnVuTG9vcCB7
CitwdWJsaWM6CisgICAgV2ViV29ya2VyUnVuTG9vcEltcGwoV2ViQ29yZTo6V29ya2VyUnVuTG9v
cCopOworICAgIHZpcnR1YWwgfldlYldvcmtlclJ1bkxvb3BJbXBsKCk7CisKKyAgICAvLyBDYWxs
YWJsZSBmcm9tIGFueSB0aHJlYWQsIHRhc2sgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkLgorICAg
IHZpcnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKik7CisKKyAgICBzdGF0aWMgV2ViV29ya2VyUnVu
TG9vcEltcGwqIGN1cnJlbnQoKTsKKworcHJpdmF0ZToKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDsKKyNlbmRpZgorICAgIFdl
YkNvcmU6OldvcmtlclJ1bkxvb3AqIG1fd29ya2VyUnVuTG9vcDsKKyAgICBzdGF0aWMgV1RGOjpU
aHJlYWRTcGVjaWZpYzxXZWJXb3JrZXJSdW5Mb29wSW1wbCo+KiBtX2N1cnJlbnRMb29wOworfTsK
KworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116266</attachid>
            <date>2011-11-22 13:09:36 -0800</date>
            <delta_ts>2011-11-22 14:24:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111122130935.patch</filename>
            <type>text/plain</type>
            <size>15508</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uZmNjOTZmNGYxM2U5NDdmM2Q5OTZmY2Y4YWE2ODg4
MTlmYzg2NmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTE3ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIEluZGV4ZWREQiB0ZXN0cyBm
b3J0aGNvbWluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSdW5Mb29wU2V0dXA6OlJ1bkxvb3BTZXR1cCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wOjpydW4pOgorCiAyMDExLTExLTIyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVjdG9yL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9ucy1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGZjYzgwODk3ODgyMTQ1NzljNjVlODJjZTg3ZmM3NzdiY2M3NGE0N2EuLjVhNWVm
YTM4MzMxMGYzMzdiNmZkYzVkMGQ1YTRlYjBhNGI3MWQyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTEtMTcgIERhdmlkIEdyb2dhbiAgPGRncm9n
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91
bmQgV29ya2VyUnVuTG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE3NTcKKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gcG9z
dCB0YXNrcyB0byB3ZWJjb3JlLWNyZWF0ZWQgd29ya2VyIHRocmVhZHMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIHB1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwZWQpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
clJ1bkxvb3A6On5XZWJXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9v
cFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5M
b29wU3RvcHBpbmcpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpjdXJyZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6OldlYldvcmtlclJ1bkxvb3BJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6On5XZWJXb3JrZXJSdW5Mb29w
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlRhc2tGb3J3YXJkZXI6OlRhc2tGb3J3YXJkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpUYXNrRm9yd2FyZGVyOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChX
ZWJLaXQ6OlRhc2tGb3J3YXJkZXI6On5UYXNrRm9yd2FyZGVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyUnVuTG9vcEltcGw6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VyUnVuTG9vcEltcGw6OmN1cnJlbnQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5Mb29w
SW1wbC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMiAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1bSBERVBTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGE4YTQyYzA0
YjIzNzcwZTI3ZmE0NzJlZDg0NTdmOTU2ZjJhZThiYWIuLjgzNDkyYjBlMmU4NDU4Y2IzMzRiOTAw
Mzg2NjI2MjVhYTM0ODgwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV2lkZ2V0
OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBGb250UmVu
ZGVyU3R5bGU7CkBAIC00MTYsNiArNDE3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBMaW5rSGFz
aCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0aWMgYm9vbCBpc0xpbmtWaXNp
dGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1bkxvb3BTdGFydGVkKFdv
cmtlclJ1bkxvb3AqKTsKKyAgICBzdGF0aWMgdm9pZCB3b3JrZXJSdW5Mb29wU3RvcHBpbmcoV29y
a2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggZmMxNWYyYjM4NmUyNjA4MjljMjE2YTE2
NjVhNDQ1ODMzODU1NDQ4ZC4uNTAxOTdlZmJlOWQ1OTBhNDEwZGYyZjRlMGEzZjc1ZGMwMjhmOWRh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0yNywxNiAr
MjcsMTcgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1ZGUgIldvcmtl
clJ1bkxvb3AuaCIKKwogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJTaGFyZWRUaW1lci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNs
dWRlICJUaHJlYWRUaW1lcnMuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVk
ZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
CmluZGV4IDkyNzZjMjdkOTg0ZmFjMDE5OGVjZTNmN2NkNGJlMTUxYzQxYzIzZWEuLjUwMjEyNmJj
ODEyZDI3YjQ2NzMzZDliZDM1YzdmNTRlZDkwYzVmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKQEAgLTEzNiw2ICsxMzYsNyBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6
OndvcmtlclRocmVhZCgpCiAgICAgICAgICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZv
cmJpZEV4ZWN1dGlvbigpOwogICAgICAgICB9CiAgICAgfQorICAgIFBsYXRmb3JtU3VwcG9ydDo6
d29ya2VyUnVuTG9vcFN0YXJ0ZWQoJm1fcnVuTG9vcCk7CiAKICAgICBXb3JrZXJTY3JpcHRDb250
cm9sbGVyKiBzY3JpcHQgPSBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpOwogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCkBAIC0xNDgsNiArMTQ5LDcgQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQoKQogICAgIG1fc3RhcnR1cERhdGEuY2xlYXIoKTsKIAogICAgIHJ1bkV2ZW50TG9vcCgp
OworICAgIFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKCZtX3J1bkxvb3Ap
OwogCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9IG1fdGhyZWFkSUQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxMjEwODk0NjZmNTY5ODRkNWQ0N2Q5ZmMxNjc5YzE3
MDYzMzM2NTI2Li5mYzI0Y2NlZWRjNzNmYWMzYWYxODk2OWMwMzA5ZTliMjA3ODJiM2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zMzIsNiArMzMyLDcgQEAKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYldpZGdldENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYldvcmtlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYldvcmtlckNsaWVudC5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYldvcmtlclJ1bkxvb3AuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy93aW4vV2ViSW5wdXRFdmVudEZhY3RvcnkuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCkBAIC02NDMsNiArNjQ0LDggQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckNsaWVudEltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJX
b3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VyUnVuTG9vcEltcGwu
Y3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgKaW5kZXggYTg3OWFiZDczZmQ0YmJkNWUyOTk0N2FiYTk5MzgxZDAwNTBkYjY1YS4uZDlj
N2FiNTFlYTQyMGJjODM3ZGVmMmNkNzc2NTVkMjg5M2M4ZGFiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIK
ICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wLmgiCiAK
ICNpbmNsdWRlIDx0aW1lLmg+CiAKQEAgLTMzNCw2ICszMzUsOSBAQCBwdWJsaWM6CiAgICAgLy8g
TWF5IHJldHVybiBudWxsIGlmIFdlYlJUQyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFsaWFibGUg
b3Igb3V0IG9mIHJlc291cmNlcy4KICAgICB2aXJ0dWFsIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxl
ciogY3JlYXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudCopIHsgcmV0dXJuIDA7IH0KIAorICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJSdW5Mb29wU3Rh
cnRlZChXZWJXb3JrZXJSdW5Mb29wKiBydW5Mb29wKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd29y
a2VyUnVuTG9vcFN0b3BwZWQoV2ViV29ya2VyUnVuTG9vcCogcnVuTG9vcCkgeyB9CisKIHByb3Rl
Y3RlZDoKICAgICB+V2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZDZkMjdlMDg0ZDg4ZGRiZTY5NTQ1ZDdjZDhkNjgzOTQ3NDRhMWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViV29ya2VyUnVuTG9vcF9oCisjZGVm
aW5lIFdlYldvcmtlclJ1bkxvb3BfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
V29ya2VyUnVuTG9vcCB7CitwdWJsaWM6CisgICAgY2xhc3MgVGFzayB7CisgICAgIHB1YmxpYzoK
KyAgICAgIHZpcnR1YWwgflRhc2soKSB7IH0KKyAgICAgIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7
CisgICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soVGFzayopID0gMDsKKyAgICBzdGF0
aWMgV2ViV29ya2VyUnVuTG9vcCogY3VycmVudCgpOworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
fldlYldvcmtlclJ1bkxvb3AoKSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBlMDU4YTkzNjQ3MWUy
MjdmNzQ1ZThjMzMwMzlhZWIzYTc3MzUzOGExLi4yYTg3YzFmODUyYmY5MzY4ODBmNzU1Mzg5MWNj
MWMxMjFiYjA5YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnRJbXBs
LmgiCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcEltcGwuaCIKIAogI2lmIFVTRShDRykKICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+CkBAIC0xMDcyLDYgKzEwNzMsMTggQEAg
Ym9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnBvcHVwc0FsbG93ZWQoTlBQIG5wcCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3ZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZChX
b3JrZXJSdW5Mb29wKiBsb29wKQoreworICAgIEFTU0VSVCghV2ViV29ya2VyUnVuTG9vcEltcGw6
OmN1cnJlbnQoKSk7CisgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPndvcmtlclJ1bkxvb3BT
dGFydGVkKG5ldyBXZWJXb3JrZXJSdW5Mb29wSW1wbChsb29wKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBpbmcoV29ya2VyUnVuTG9vcCogbG9vcCkKK3sK
KyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+d29ya2VyUnVuTG9vcFN0b3BwZWQoV2ViV29y
a2VyUnVuTG9vcDo6Y3VycmVudCgpKTsKKyAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V2ViV29ya2Vy
UnVuTG9vcEltcGwqPihXZWJXb3JrZXJSdW5Mb29wOjpjdXJyZW50KCkpOworfQorCiAjaWYgRU5B
QkxFKFdPUktFUlMpCiBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3Jl
YXRlKFdvcmtlciogd29ya2VyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNzA3MWMyM2ExNzgzZDRh
ZDczMDk0N2NlMTVkYzcwMTdjODg0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHAKQEAgLTAsMCArMSw4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5M
b29wSW1wbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIFdURjo6VGhyZWFk
U3BlY2lmaWM7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJXb3JrZXJSdW5Mb29wKiBXZWJX
b3JrZXJSdW5Mb29wOjpjdXJyZW50KCkKK3sKKyAgICByZXR1cm4gV2ViV29ya2VyUnVuTG9vcElt
cGw6OmN1cnJlbnQoKTsKK30KKworc3RhdGljIFRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxv
b3BJbXBsKj4mIGN1cnJlbnRMb29wVExTKCkKK3sKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRT
dGF0aWMoVGhyZWFkU3BlY2lmaWM8V2ViV29ya2VyUnVuTG9vcEltcGwqPiosIGN1cnJlbnRMb29w
VExTID0gbmV3IFRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxvb3BJbXBsKj4pOworICAgIHJl
dHVybiAqY3VycmVudExvb3BUTFM7Cit9CisKK1dlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3Jr
ZXJSdW5Mb29wSW1wbChXb3JrZXJSdW5Mb29wKiB3b3JrZXJSdW5Mb29wKQorICAgIDogbV93b3Jr
ZXJSdW5Mb29wKHdvcmtlclJ1bkxvb3ApCit7CisgICAgQVNTRVJUKCFjdXJyZW50TG9vcFRMUygp
LmlzU2V0KCkpOworICAgICpjdXJyZW50TG9vcFRMUygpID0gdGhpczsKK30KKworV2ViV29ya2Vy
UnVuTG9vcEltcGw6On5XZWJXb3JrZXJSdW5Mb29wSW1wbCgpCit7CisgICAgKmN1cnJlbnRMb29w
VExTKCkgPSAwOworfQorCitjbGFzcyBUYXNrRm9yd2FyZGVyIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgeworIHB1YmxpYzoKKyAgICBUYXNrRm9yd2FyZGVyKFdlYldvcmtl
clJ1bkxvb3A6OlRhc2sqIHRhc2spCisgICAgICAgIDogbV90YXNrKGFkb3B0UHRyKHRhc2spKQor
ICAgIHsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgbV90YXNrLT5SdW4oKTsKKyAgICB9CisgICAgdmly
dHVhbCB+VGFza0ZvcndhcmRlcigpIHsgfQorIHByaXZhdGU6CisgICAgT3duUHRyPFdlYldvcmtl
clJ1bkxvb3A6OlRhc2s+IG1fdGFzazsKK307CisKK3ZvaWQgV2ViV29ya2VyUnVuTG9vcEltcGw6
OnBvc3RUYXNrKFRhc2sqIHRhc2spCit7CisgICAgbV93b3JrZXJSdW5Mb29wLT5wb3N0VGFzayhh
ZG9wdFB0cihuZXcgVGFza0ZvcndhcmRlcih0YXNrKSkpOworfQorCitXZWJXb3JrZXJSdW5Mb29w
SW1wbCogV2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQoKQoreworICAgIGlmICghY3VycmVu
dExvb3BUTFMoKS5pc1NldCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gKmN1cnJl
bnRMb29wVExTKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJSdW5Mb29wSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwM2ZhY2RmYmQ0NjNkMmExN2NmMDQ1
MzdhY2EyODA0YTJkOGM1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYldvcmtlclJ1bkxvb3BJbXBsX2gKKyNkZWZpbmUgV2ViV29ya2VyUnVu
TG9vcEltcGxfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViV29ya2Vy
UnVuTG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFdvcmtlclJ1bkxvb3A7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJXb3JrZXJSdW5Mb29wSW1wbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxX
ZWJXb3JrZXJSdW5Mb29wSW1wbD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBXZWJXb3JrZXJSdW5Mb29wIHsKK3B1YmxpYzoKKyAgICBXZWJXb3JrZXJSdW5Mb29wSW1wbChX
ZWJDb3JlOjpXb3JrZXJSdW5Mb29wKik7CisgICAgdmlydHVhbCB+V2ViV29ya2VyUnVuTG9vcElt
cGwoKTsKKworICAgIC8vIENhbGxhYmxlIGZyb20gYW55IHRocmVhZCwgdGFzayBvd25lcnNoaXAg
aXMgdHJhbnNmZXJyZWQuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFRhc2sqKTsKKworICAg
IHN0YXRpYyBXZWJXb3JrZXJSdW5Mb29wSW1wbCogY3VycmVudCgpOworCitwcml2YXRlOgorICAg
IFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqIG1fd29ya2VyUnVuTG9vcDsKK307CisKK30KKworI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116276</attachid>
            <date>2011-11-22 14:24:56 -0800</date>
            <delta_ts>2011-11-22 18:37:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111122142455.patch</filename>
            <type>text/plain</type>
            <size>15630</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uZmNjOTZmNGYxM2U5NDdmM2Q5OTZmY2Y4YWE2ODg4
MTlmYzg2NmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTE3ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIEluZGV4ZWREQiB0ZXN0cyBm
b3J0aGNvbWluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSdW5Mb29wU2V0dXA6OlJ1bkxvb3BTZXR1cCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wOjpydW4pOgorCiAyMDExLTExLTIyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVjdG9yL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9ucy1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGZjYzgwODk3ODgyMTQ1NzljNjVlODJjZTg3ZmM3NzdiY2M3NGE0N2EuLjVhNWVm
YTM4MzMxMGYzMzdiNmZkYzVkMGQ1YTRlYjBhNGI3MWQyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTEtMTcgIERhdmlkIEdyb2dhbiAgPGRncm9n
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91
bmQgV29ya2VyUnVuTG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE3NTcKKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gcG9z
dCB0YXNrcyB0byB3ZWJjb3JlLWNyZWF0ZWQgd29ya2VyIHRocmVhZHMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIHB1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwZWQpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
clJ1bkxvb3A6On5XZWJXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9v
cFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5M
b29wU3RvcHBpbmcpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpjdXJyZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6OldlYldvcmtlclJ1bkxvb3BJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6On5XZWJXb3JrZXJSdW5Mb29w
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlRhc2tGb3J3YXJkZXI6OlRhc2tGb3J3YXJkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpUYXNrRm9yd2FyZGVyOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChX
ZWJLaXQ6OlRhc2tGb3J3YXJkZXI6On5UYXNrRm9yd2FyZGVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyUnVuTG9vcEltcGw6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VyUnVuTG9vcEltcGw6OmN1cnJlbnQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5Mb29w
SW1wbC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMiAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1bSBERVBTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGE4YTQyYzA0
YjIzNzcwZTI3ZmE0NzJlZDg0NTdmOTU2ZjJhZThiYWIuLjgzNDkyYjBlMmU4NDU4Y2IzMzRiOTAw
Mzg2NjI2MjVhYTM0ODgwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV2lkZ2V0
OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBGb250UmVu
ZGVyU3R5bGU7CkBAIC00MTYsNiArNDE3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBMaW5rSGFz
aCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0aWMgYm9vbCBpc0xpbmtWaXNp
dGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1bkxvb3BTdGFydGVkKFdv
cmtlclJ1bkxvb3AqKTsKKyAgICBzdGF0aWMgdm9pZCB3b3JrZXJSdW5Mb29wU3RvcHBpbmcoV29y
a2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggZmMxNWYyYjM4NmUyNjA4MjljMjE2YTE2
NjVhNDQ1ODMzODU1NDQ4ZC4uNTAxOTdlZmJlOWQ1OTBhNDEwZGYyZjRlMGEzZjc1ZGMwMjhmOWRh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0yNywxNiAr
MjcsMTcgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1ZGUgIldvcmtl
clJ1bkxvb3AuaCIKKwogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJTaGFyZWRUaW1lci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNs
dWRlICJUaHJlYWRUaW1lcnMuaCIKLSNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVk
ZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
CmluZGV4IDkyNzZjMjdkOTg0ZmFjMDE5OGVjZTNmN2NkNGJlMTUxYzQxYzIzZWEuLjJiYjc4MTE3
ODhiYTgwYTlkMmZiN2EyZTNkZDU1MWVmNTg0NjFiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKQEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6
OndvcmtlclRocmVhZCgpCiAgICAgICAgICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZv
cmJpZEV4ZWN1dGlvbigpOwogICAgICAgICB9CiAgICAgfQorI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorICAgIFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0ZWQoJm1fcnVuTG9vcCk7
CisjZW5kaWYKIAogICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IG1fd29ya2Vy
Q29udGV4dC0+c2NyaXB0KCk7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTE0OSw2ICsxNTIs
MTAgQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgcnVuRXZlbnRM
b29wKCk7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6Ondv
cmtlclJ1bkxvb3BTdG9wcGluZygmbV9ydW5Mb29wKTsKKyNlbmRpZgorCiAgICAgVGhyZWFkSWRl
bnRpZmllciB0aHJlYWRJRCA9IG1fdGhyZWFkSUQ7CiAKICAgICBBU1NFUlQobV93b3JrZXJDb250
ZXh0LT5oYXNPbmVSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMTIxMDg5
NDY2ZjU2OTg0ZDVkNDdkOWZjMTY3OWMxNzA2MzMzNjUyNi4uZmMyNGNjZWVkYzczZmFjM2FmMTg5
NjljMDMwOWU5YjIwNzgyYjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzMy
LDYgKzMzMiw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJX
b3JrZXJSdW5Mb29wLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvd2luL1dlYklucHV0RXZl
bnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvd2luL1dlYlNhbmRib3hTdXBw
b3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5
LmgnLApAQCAtNjQzLDYgKzY0NCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5oJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJX
b3JrZXJSdW5Mb29wSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmls
ZVN5c3RlbUNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmls
ZVdyaXRlckNocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGE4NzlhYmQ3M2ZkNGJiZDVlMjk5
NDdhYmE5OTM4MWQwMDUwZGI2NWEuLmQ5YzdhYjUxZWE0MjBiYzgzN2RlZjJjZDc3NjU1ZDI4OTNj
OGRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBs
YXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktp
dFBsYXRmb3JtU3VwcG9ydC5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViU3RyaW5n
LmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisjaW5jbHVk
ZSAiV2ViV29ya2VyUnVuTG9vcC5oIgogCiAjaW5jbHVkZSA8dGltZS5oPgogCkBAIC0zMzQsNiAr
MzM1LDkgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBXZWJSVEMgZnVuY3Rp
b25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNvdXJjZXMuCiAgICAgdmlydHVh
bCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9uSGFuZGxlcihX
ZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0ZWQoV2ViV29ya2VyUnVuTG9vcCogcnVuTG9vcCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHdvcmtlclJ1bkxvb3BTdG9wcGVkKFdlYldvcmtlclJ1bkxv
b3AqIHJ1bkxvb3ApIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYktpdFBsYXRmb3JtU3VwcG9y
dCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldvcmtlclJ1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtl
clJ1bkxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWQ2ZDI3ZTA4NGQ4OGRkYmU2OTU0NWQ3Y2Q4ZDY4Mzk0
NzQ0YTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV29ya2VyUnVuTG9vcC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYldvcmtlclJ1bkxvb3BfaAorI2RlZmluZSBXZWJXb3JrZXJSdW5Mb29wX2gKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldvcmtlclJ1bkxvb3AgeworcHVibGljOgorICAgIGNs
YXNzIFRhc2sgeworICAgICBwdWJsaWM6CisgICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9CisgICAg
ICB2aXJ0dWFsIHZvaWQgUnVuKCkgPSAwOworICAgIH07CisgICAgdmlydHVhbCB2b2lkIHBvc3RU
YXNrKFRhc2sqKSA9IDA7CisgICAgc3RhdGljIFdlYldvcmtlclJ1bkxvb3AqIGN1cnJlbnQoKTsK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJXb3JrZXJSdW5Mb29wKCkgeyB9Cit9OworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHAKaW5kZXggZTA1OGE5MzY0NzFlMjI3Zjc0NWU4YzMzMDM5YWViM2E3NzM1MzhhMS4uMmE4
N2MxZjg1MmJmOTM2ODgwZjc1NTM4OTFjYzFjMTIxYmIwOWFlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC02MSw2ICs2MSw3IEBACiAj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViV29ya2VyQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYldvcmtlclJ1bkxvb3BJ
bXBsLmgiCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5o
PgpAQCAtMTA3Miw2ICsxMDczLDE4IEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0Ojpwb3B1cHNBbGxv
d2VkKE5QUCBucHApCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFBsYXRmb3JtU3VwcG9y
dDo6d29ya2VyUnVuTG9vcFN0YXJ0ZWQoV29ya2VyUnVuTG9vcCogbG9vcCkKK3sKKyAgICBBU1NF
UlQoIVdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJyZW50KCkpOworICAgIHdlYktpdFBsYXRmb3Jt
U3VwcG9ydCgpLT53b3JrZXJSdW5Mb29wU3RhcnRlZChuZXcgV2ViV29ya2VyUnVuTG9vcEltcGwo
bG9vcCkpOworfQorCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5n
KFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPndv
cmtlclJ1bkxvb3BTdG9wcGVkKFdlYldvcmtlclJ1bkxvb3A6OmN1cnJlbnQoKSk7CisgICAgZGVs
ZXRlIHN0YXRpY19jYXN0PFdlYldvcmtlclJ1bkxvb3BJbXBsKj4oV2ViV29ya2VyUnVuTG9vcDo6
Y3VycmVudCgpKTsKK30KKwogI2lmIEVOQUJMRShXT1JLRVJTKQogV29ya2VyQ29udGV4dFByb3h5
KiBXb3JrZXJDb250ZXh0UHJveHk6OmNyZWF0ZShXb3JrZXIqIHdvcmtlcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YzcxNGJmZTQ1ZmVhM2I4NTA0MzQ3ZTQxOTI5MGI3ODBiMGRjNzhiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcElt
cGwuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcEltcGwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Cit1c2luZyBXVEY6OlRocmVhZFNwZWNpZmljOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViV29ya2VyUnVuTG9vcCogV2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCgpCit7CisgICAg
cmV0dXJuIFdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJyZW50KCk7Cit9CisKK3N0YXRpYyBUaHJl
YWRTcGVjaWZpYzxXZWJXb3JrZXJSdW5Mb29wSW1wbCo+JiBjdXJyZW50TG9vcFRMUygpCit7Cisg
ICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKFRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1
bkxvb3BJbXBsKj4qLCBjdXJyZW50TG9vcFRMUyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxXZWJXb3Jr
ZXJSdW5Mb29wSW1wbCo+KTsKKyAgICByZXR1cm4gKmN1cnJlbnRMb29wVExTOworfQorCitXZWJX
b3JrZXJSdW5Mb29wSW1wbDo6V2ViV29ya2VyUnVuTG9vcEltcGwoV29ya2VyUnVuTG9vcCogd29y
a2VyUnVuTG9vcCkKKyAgICA6IG1fd29ya2VyUnVuTG9vcCh3b3JrZXJSdW5Mb29wKQoreworICAg
IEFTU0VSVCghY3VycmVudExvb3BUTFMoKS5pc1NldCgpKTsKKyAgICAqY3VycmVudExvb3BUTFMo
KSA9IHRoaXM7Cit9CisKK1dlYldvcmtlclJ1bkxvb3BJbXBsOjp+V2ViV29ya2VyUnVuTG9vcElt
cGwoKQoreworICAgIEFTU0VSVCgqY3VycmVudExvb3BUTFMoKSA9PSB0aGlzKTsKKyAgICAqY3Vy
cmVudExvb3BUTFMoKSA9IDA7Cit9CisKK2NsYXNzIFRhc2tGb3J3YXJkZXIgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CisgcHVibGljOgorICAgIFRhc2tGb3J3YXJkZXIo
V2ViV29ya2VyUnVuTG9vcDo6VGFzayogdGFzaykKKyAgICAgICAgOiBtX3Rhc2soYWRvcHRQdHIo
dGFzaykpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworICAgICAgICBtX3Rhc2stPlJ1bigpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5UYXNrRm9yd2FyZGVyKCkgeyB9CisgcHJpdmF0ZToKKyAgICBPd25QdHI8
V2ViV29ya2VyUnVuTG9vcDo6VGFzaz4gbV90YXNrOworfTsKKwordm9pZCBXZWJXb3JrZXJSdW5M
b29wSW1wbDo6cG9zdFRhc2soVGFzayogdGFzaykKK3sKKyAgICBtX3dvcmtlclJ1bkxvb3AtPnBv
c3RUYXNrKGFkb3B0UHRyKG5ldyBUYXNrRm9yd2FyZGVyKHRhc2spKSk7Cit9CisKK1dlYldvcmtl
clJ1bkxvb3BJbXBsKiBXZWJXb3JrZXJSdW5Mb29wSW1wbDo6Y3VycmVudCgpCit7CisgICAgaWYg
KCFjdXJyZW50TG9vcFRMUygpLmlzU2V0KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biAqY3VycmVudExvb3BUTFMoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAzZmFjZGZiZDQ2M2Qy
YTE3Y2YwNDUzN2FjYTI4MDRhMmQ4YzVkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViV29ya2VyUnVuTG9vcEltcGxfaAorI2RlZmluZSBXZWJX
b3JrZXJSdW5Mb29wSW1wbF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJX
ZWJXb3JrZXJSdW5Mb29wLmgiCisjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2VyUnVuTG9vcDsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYldvcmtlclJ1bkxvb3BJbXBsIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFdlYldvcmtlclJ1bkxvb3BJbXBsPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFdlYldvcmtlclJ1bkxvb3AgeworcHVibGljOgorICAgIFdlYldvcmtlclJ1bkxv
b3BJbXBsKFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqKTsKKyAgICB2aXJ0dWFsIH5XZWJXb3JrZXJS
dW5Mb29wSW1wbCgpOworCisgICAgLy8gQ2FsbGFibGUgZnJvbSBhbnkgdGhyZWFkLCB0YXNrIG93
bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soVGFzayop
OworCisgICAgc3RhdGljIFdlYldvcmtlclJ1bkxvb3BJbXBsKiBjdXJyZW50KCk7CisKK3ByaXZh
dGU6CisgICAgV2ViQ29yZTo6V29ya2VyUnVuTG9vcCogbV93b3JrZXJSdW5Mb29wOworfTsKKwor
fQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116282</attachid>
            <date>2011-11-22 15:29:34 -0800</date>
            <delta_ts>2011-11-22 18:39:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111122152933.patch</filename>
            <type>text/plain</type>
            <size>14842</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uZmNjOTZmNGYxM2U5NDdmM2Q5OTZmY2Y4YWE2ODg4
MTlmYzg2NmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTE3ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIEluZGV4ZWREQiB0ZXN0cyBm
b3J0aGNvbWluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSdW5Mb29wU2V0dXA6OlJ1bkxvb3BTZXR1cCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wOjpydW4pOgorCiAyMDExLTExLTIyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVjdG9yL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9ucy1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGZjYzgwODk3ODgyMTQ1NzljNjVlODJjZTg3ZmM3NzdiY2M3NGE0N2EuLjVhNWVm
YTM4MzMxMGYzMzdiNmZkYzVkMGQ1YTRlYjBhNGI3MWQyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTEtMTcgIERhdmlkIEdyb2dhbiAgPGRncm9n
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91
bmQgV29ya2VyUnVuTG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE3NTcKKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gcG9z
dCB0YXNrcyB0byB3ZWJjb3JlLWNyZWF0ZWQgd29ya2VyIHRocmVhZHMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIHB1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwZWQpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
clJ1bkxvb3A6On5XZWJXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9v
cFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5M
b29wU3RvcHBpbmcpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpjdXJyZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6OldlYldvcmtlclJ1bkxvb3BJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6On5XZWJXb3JrZXJSdW5Mb29w
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlRhc2tGb3J3YXJkZXI6OlRhc2tGb3J3YXJkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpUYXNrRm9yd2FyZGVyOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChX
ZWJLaXQ6OlRhc2tGb3J3YXJkZXI6On5UYXNrRm9yd2FyZGVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyUnVuTG9vcEltcGw6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29y
a2VyUnVuTG9vcEltcGw6OmN1cnJlbnQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5Mb29w
SW1wbC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMiAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1bSBERVBTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGE4YTQyYzA0
YjIzNzcwZTI3ZmE0NzJlZDg0NTdmOTU2ZjJhZThiYWIuLjgzNDkyYjBlMmU4NDU4Y2IzMzRiOTAw
Mzg2NjI2MjVhYTM0ODgwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV2lkZ2V0
OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBGb250UmVu
ZGVyU3R5bGU7CkBAIC00MTYsNiArNDE3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBMaW5rSGFz
aCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0aWMgYm9vbCBpc0xpbmtWaXNp
dGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1bkxvb3BTdGFydGVkKFdv
cmtlclJ1bkxvb3AqKTsKKyAgICBzdGF0aWMgdm9pZCB3b3JrZXJSdW5Mb29wU3RvcHBpbmcoV29y
a2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDkyNzZjMjdkOTg0ZmFjMDE5OGVjZTNmN2Nk
NGJlMTUxYzQxYzIzZWEuLjJiYjc4MTE3ODhiYTgwYTlkMmZiN2EyZTNkZDU1MWVmNTg0NjFiZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTEzNiw2ICsxMzYs
OSBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAgICAgICAgICAgIG1fd29y
a2VyQ29udGV4dC0+c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOwogICAgICAgICB9CiAgICAg
fQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVu
TG9vcFN0YXJ0ZWQoJm1fcnVuTG9vcCk7CisjZW5kaWYKIAogICAgIFdvcmtlclNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdCA9IG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCk7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKQEAgLTE0OSw2ICsxNTIsMTAgQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQoKQogCiAgICAgcnVuRXZlbnRMb29wKCk7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
KyAgICBQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdG9wcGluZygmbV9ydW5Mb29wKTsK
KyNlbmRpZgorCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9IG1fdGhyZWFkSUQ7CiAK
ICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5oYXNPbmVSZWYoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggMTIxMDg5NDY2ZjU2OTg0ZDVkNDdkOWZjMTY3OWMxNzA2MzMzNjUy
Ni4uZmMyNGNjZWVkYzczZmFjM2FmMTg5NjljMDMwOWU5YjIwNzgyYjNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cApAQCAtMzMyLDYgKzMzMiw3IEBACiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3Jr
ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaCcsCisgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
d2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNjQzLDYgKzY0NCw4IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViV29ya2VySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VySW1w
bC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmlu
ZGV4IGE4NzlhYmQ3M2ZkNGJiZDVlMjk5NDdhYmE5OTM4MWQwMDUwZGI2NWEuLmQ5YzdhYjUxZWE0
MjBiYzgzN2RlZjJjZDc3NjU1ZDI4OTNjOGRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVk
ZSAiV2ViVmVjdG9yLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcC5oIgogCiAjaW5jbHVk
ZSA8dGltZS5oPgogCkBAIC0zMzQsNiArMzM1LDkgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1
cm4gbnVsbCBpZiBXZWJSVEMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBv
ZiByZXNvdXJjZXMuCiAgICAgdmlydHVhbCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0
ZVBlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7
IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0ZWQoV2Vi
V29ya2VyUnVuTG9vcCogcnVuTG9vcCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdvcmtlclJ1bkxv
b3BTdG9wcGVkKFdlYldvcmtlclJ1bkxvb3AqIHJ1bkxvb3ApIHsgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgfldlYktpdFBsYXRmb3JtU3VwcG9ydCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlclJ1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYldvcmtlclJ1bkxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWQ2ZDI3ZTA4
NGQ4OGRkYmU2OTU0NWQ3Y2Q4ZDY4Mzk0NzQ0YTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYldvcmtlclJ1bkxvb3BfaAorI2RlZmluZSBXZWJX
b3JrZXJSdW5Mb29wX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldvcmtlclJ1
bkxvb3AgeworcHVibGljOgorICAgIGNsYXNzIFRhc2sgeworICAgICBwdWJsaWM6CisgICAgICB2
aXJ0dWFsIH5UYXNrKCkgeyB9CisgICAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgPSAwOworICAgIH07
CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFRhc2sqKSA9IDA7CisgICAgc3RhdGljIFdlYldv
cmtlclJ1bkxvb3AqIGN1cnJlbnQoKTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5XZWJXb3Jr
ZXJSdW5Mb29wKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggZTA1OGE5MzY0NzFlMjI3Zjc0NWU4
YzMzMDM5YWViM2E3NzM1MzhhMS4uMmE4N2MxZjg1MmJmOTM2ODgwZjc1NTM4OTFjYzFjMTIxYmIw
OWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1
ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50SW1wbC5oIgorI2lu
Y2x1ZGUgIldlYldvcmtlclJ1bkxvb3BJbXBsLmgiCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMTA3Miw2ICsxMDczLDE4IEBAIGJvb2wgUGxh
dGZvcm1TdXBwb3J0Ojpwb3B1cHNBbGxvd2VkKE5QUCBucHApCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0ZWQoV29ya2VyUnVu
TG9vcCogbG9vcCkKK3sKKyAgICBBU1NFUlQoIVdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJyZW50
KCkpOworICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT53b3JrZXJSdW5Mb29wU3RhcnRlZChu
ZXcgV2ViV29ya2VyUnVuTG9vcEltcGwobG9vcCkpOworfQorCit2b2lkIFBsYXRmb3JtU3VwcG9y
dDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPndvcmtlclJ1bkxvb3BTdG9wcGVkKFdlYldvcmtlclJ1bkxv
b3A6OmN1cnJlbnQoKSk7CisgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdlYldvcmtlclJ1bkxvb3BJ
bXBsKj4oV2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCgpKTsKK30KKwogI2lmIEVOQUJMRShXT1JL
RVJTKQogV29ya2VyQ29udGV4dFByb3h5KiBXb3JrZXJDb250ZXh0UHJveHk6OmNyZWF0ZShXb3Jr
ZXIqIHdvcmtlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlclJ1bkxvb3BJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlclJ1bkxvb3BJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjZiNzljN2UzNDBlY2NhZTQ5NWIzYjUz
OGUxNmE4ZjA5YzVhODYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcEltcGwu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBXVEY6OlRocmVhZFNwZWNpZmlj
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGFza0Zvcndh
cmRlciA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyBwdWJsaWM6Cisg
ICAgVGFza0ZvcndhcmRlcihXZWJXb3JrZXJSdW5Mb29wOjpUYXNrKiB0YXNrKQorICAgICAgICA6
IG1fdGFzayhhZG9wdFB0cih0YXNrKSkKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIG1fdGFz
ay0+UnVuKCk7CisgICAgfQorIHByaXZhdGU6CisgICAgT3duUHRyPFdlYldvcmtlclJ1bkxvb3A6
OlRhc2s+IG1fdGFzazsKK307CisKK3N0YXRpYyBUaHJlYWRTcGVjaWZpYzxXZWJXb3JrZXJSdW5M
b29wSW1wbCo+JiBjdXJyZW50TG9vcFRMUygpCit7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVk
U3RhdGljKFRocmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxvb3BJbXBsKj4qLCBjdXJyZW50TG9v
cFRMUyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxXZWJXb3JrZXJSdW5Mb29wSW1wbCo+KTsKKyAgICBy
ZXR1cm4gKmN1cnJlbnRMb29wVExTOworfQorCit9CisKK1dlYldvcmtlclJ1bkxvb3AqIFdlYldv
cmtlclJ1bkxvb3A6OmN1cnJlbnQoKQoreworICAgIHJldHVybiBXZWJXb3JrZXJSdW5Mb29wSW1w
bDo6Y3VycmVudCgpOworfQorCitXZWJXb3JrZXJSdW5Mb29wSW1wbDo6V2ViV29ya2VyUnVuTG9v
cEltcGwoV29ya2VyUnVuTG9vcCogd29ya2VyUnVuTG9vcCkKKyAgICA6IG1fd29ya2VyUnVuTG9v
cCh3b3JrZXJSdW5Mb29wKQoreworICAgIEFTU0VSVCghY3VycmVudExvb3BUTFMoKS5pc1NldCgp
KTsKKyAgICAqY3VycmVudExvb3BUTFMoKSA9IHRoaXM7Cit9CisKK1dlYldvcmtlclJ1bkxvb3BJ
bXBsOjp+V2ViV29ya2VyUnVuTG9vcEltcGwoKQoreworICAgIEFTU0VSVCgqY3VycmVudExvb3BU
TFMoKSA9PSB0aGlzKTsKKyAgICAqY3VycmVudExvb3BUTFMoKSA9IDA7Cit9CisKK3ZvaWQgV2Vi
V29ya2VyUnVuTG9vcEltcGw6OnBvc3RUYXNrKFRhc2sqIHRhc2spCit7CisgICAgbV93b3JrZXJS
dW5Mb29wLT5wb3N0VGFzayhhZG9wdFB0cihuZXcgVGFza0ZvcndhcmRlcih0YXNrKSkpOworfQor
CitXZWJXb3JrZXJSdW5Mb29wSW1wbCogV2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQoKQor
eworICAgIGlmICghY3VycmVudExvb3BUTFMoKS5pc1NldCgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gKmN1cnJlbnRMb29wVExTKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwM2Zh
Y2RmYmQ0NjNkMmExN2NmMDQ1MzdhY2EyODA0YTJkOGM1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYldvcmtlclJ1bkxvb3BJbXBsX2gKKyNk
ZWZpbmUgV2ViV29ya2VyUnVuTG9vcEltcGxfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdvcmtlclJ1bkxvb3A7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJXb3JrZXJSdW5Mb29wSW1wbCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxXZWJXb3JrZXJSdW5Mb29wSW1wbD4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBXZWJXb3JrZXJSdW5Mb29wIHsKK3B1YmxpYzoKKyAgICBXZWJX
b3JrZXJSdW5Mb29wSW1wbChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wKik7CisgICAgdmlydHVhbCB+
V2ViV29ya2VyUnVuTG9vcEltcGwoKTsKKworICAgIC8vIENhbGxhYmxlIGZyb20gYW55IHRocmVh
ZCwgdGFzayBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQuCisgICAgdmlydHVhbCB2b2lkIHBvc3RU
YXNrKFRhc2sqKTsKKworICAgIHN0YXRpYyBXZWJXb3JrZXJSdW5Mb29wSW1wbCogY3VycmVudCgp
OworCitwcml2YXRlOgorICAgIFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqIG1fd29ya2VyUnVuTG9v
cDsKK307CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116305</attachid>
            <date>2011-11-22 18:39:32 -0800</date>
            <delta_ts>2011-11-22 22:38:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111122183931.patch</filename>
            <type>text/plain</type>
            <size>15620</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uNGU2YzM0NjJiODU2ZWE1ZWEzMzAwY2U4YzBiYmNi
N2Y0YTNiNzc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTIyICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIEluZGV4ZWREQiB0ZXN0cyBm
b3J0aGNvbWluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOiBBZGQgdHdvIG1ldGhvZHMgdGhhdCBhbGxvdworICAgICAgICBXZWJDb3JlIHRvIG5vdGlm
eSBjaHJvbWl1bSB3aGVuIHdvcmtlcnMgc3RhcnQgYW5kIHN0b3AuCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3Jr
ZXJUaHJlYWQpOiBDYWxsIGludG8gUGxhdGZvcm1TdXBwb3J0IHdoZW4KKyAgICAgICAgdGhlIHdv
cmtlcidzIHJ1bmxvb3AgaXMgc3RhcnRlZCBhbmQgc3RvcHBlZC4KKwogMjAxMS0xMS0yMiAgQW5k
cmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExheW91dCBUZXN0
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXZlbnRzLmh0bWwgaXMgdGltaW5nIG91
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmY2M4MDg5Nzg4MjE0NTc5YzY1ZTgyY2U4
N2ZjNzc3YmNjNzRhNDdhLi4wYzBiZmMxN2I5N2Q5ZDFlMzJhMjQzNzgzZjkzZTUzMjJjMmI0OWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTExLTIy
ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3Jr
ZXJSdW5Mb29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgVGhpcyBhbGxv
d3MgdGhlIGVtYmVkZGVyIHRvIHBvc3QgdGFza3MgdG8gd2ViY29yZS1jcmVhdGVkIHdvcmtlcgor
ICAgICAgICB0aHJlYWRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViS2l0Lmd5cDogQWRkZWQgV2ViV29ya2VyUnVuTG9vcC5oLCBXZWJXb3Jr
ZXJSdW5Mb29wSW1wbC57Y3BwLGh9CisKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0UGxhdGZvcm1T
dXBwb3J0Lmg6IFN0dWJzIGZvciB0aGUgZW1iZWRkZXIgdG8gaW1wbGVtZW50LgorICAgICAgICAo
V2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBl
ZCk6CisKKyAgICAgICAgKiBwdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oOiBBZGRlZC4gSW50ZXJm
YWNlIHRoZSBlbWJlZGRlciB3aWxsIHVzZSB0bworICAgICAgICBwb3N0IFRhc2tzIHRvIHdvcmtl
ciB0aHJlYWRzIGNyZWF0ZWQgaW4gV2ViQ29yZS4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
UnVuTG9vcDo6VGFzazo6flRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29w
Ojp+V2ViV29ya2VyUnVuTG9vcCk6CisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0
ZWQpOiBXcmFwIGluY29taW5nCisgICAgICAgIFdvcmtlclJ1bkxvb3Agb2JqZWN0cyBpbiBXZWJX
b3JrZXJSdW5Mb29wSW1wbCBvYmplY3RzLCBmb3J3YXJkIHRoZW0gdG8KKyAgICAgICAgV2ViS2l0
UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZAorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBpbmcpOiBDYWxsCisgICAgICAgIFdl
YktpdFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwZWQgd2l0aCB0aGUgY3VycmVu
dAorICAgICAgICBXZWJXb3JrZXJSdW5Mb29wLgorCisgICAgICAgICogc3JjL1dlYldvcmtlclJ1
bkxvb3BJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6
OmN1cnJlbnQpOiBSZXR1cm4gcG9pbnRlciB0bworICAgICAgICBXZWJXb3JrZXJSdW5Mb29wIGlu
c3RhbmNlIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCB3b3JrZXIncyBtZXNzYWdlCisgICAg
ICAgIGxvb3AuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3Jr
ZXJSdW5Mb29wSW1wbCk6IFNldCBjdXJyZW50CisgICAgICAgIFdlYldvcmtlclJ1bkxvb3AgVExT
IHRvIHx0aGlzfC4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6On5XZWJX
b3JrZXJSdW5Mb29wSW1wbCk6IFNldCBjdXJyZW50CisgICAgICAgIFdlYldvcmtlclJ1bkxvb3Ag
VExTIHRvIDAuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpwb3N0VGFz
ayk6IFdyYXAgaW5jb21pbmcgVGFzayBpbgorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrLCBwb3N0IHRvIFdvcmtlclJ1bkxvb3AsIHRvIGV4ZWN1dGUgaW4KKyAgICAgICAgY3Vy
cmVudCBXb3JrZXJDb250ZXh0LgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wSW1w
bDo6Y3VycmVudCk6CisgICAgICAgICogc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmg6IEFkZGVk
LgorCiAyMDExLTExLTIyICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSb2xsIENocm9taXVtIERFUFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggYThhNDJjMDRiMjM3NzBlMjdmYTQ3
MmVkODQ1N2Y5NTZmMmFlOGJhYi4uODM0OTJiMGUyZTg0NThjYjMzNGI5MDAzODY2MjYyNWFhMzQ4
ODAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TdXBwb3J0LmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEtVUkw7
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBXaWRnZXQ7CitjbGFzcyBXb3Jr
ZXJSdW5Mb29wOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IEZvbnRSZW5kZXJTdHlsZTsKQEAg
LTQxNiw2ICs0MTcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExpbmtIYXNoIHZpc2l0ZWRMaW5r
SGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBMaW5r
SGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVVUkwpOwogICAgIHN0YXRpYyBib29sIGlzTGlua1Zpc2l0ZWQoTGlua0hhc2gp
OworCisgICAgc3RhdGljIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0ZWQoV29ya2VyUnVuTG9vcCop
OworICAgIHN0YXRpYyB2b2lkIHdvcmtlclJ1bkxvb3BTdG9wcGluZyhXb3JrZXJSdW5Mb29wKik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKaW5kZXggOTI3NmMyN2Q5ODRmYWMwMTk4ZWNlM2Y3Y2Q0YmUxNTFjNDFjMjNl
YS4uMmJiNzgxMTc4OGJhODBhOWQyZmI3YTJlM2RkNTUxZWY1ODQ2MWJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTM2LDYgKzEzNiw5IEBAIHZvaWQqIFdv
cmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKICAgICAgICAgICAgbV93b3JrZXJDb250ZXh0LT5z
Y3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIH0KICAgICB9CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgUGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZCgm
bV9ydW5Mb29wKTsKKyNlbmRpZgogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0
ID0gbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAt
MTQ5LDYgKzE1MiwxMCBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAKICAg
ICBydW5FdmVudExvb3AoKTsKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFBsYXRmb3Jt
U3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwaW5nKCZtX3J1bkxvb3ApOworI2VuZGlmCisKICAg
ICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEID0gbV90aHJlYWRJRDsKIAogICAgIEFTU0VSVCht
X3dvcmtlckNvbnRleHQtPmhhc09uZVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCAxMjEwODk0NjZmNTY5ODRkNWQ0N2Q5ZmMxNjc5YzE3MDYzMzM2NTI2Li5mYzI0Y2NlZWRj
NzNmYWMzYWYxODk2OWMwMzA5ZTliMjA3ODJiM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0zMzIsNiArMzMyLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYldpZGdl
dENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYldvcmtlci5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYldvcmtlckNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAn
cHVibGljL1dlYldvcmtlclJ1bkxvb3AuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4v
V2ViSW5wdXRFdmVudEZhY3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2Vi
U2FuZGJveFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVu
SW5mb0ZhY3RvcnkuaCcsCkBAIC02NDMsNiArNjQ0LDggQEAKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYldvcmtlckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJJbXBsLmgnLAorICAgICAg
ICAgICAgICAgICdzcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV29y
a2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggYTg3OWFiZDcz
ZmQ0YmJkNWUyOTk0N2FiYTk5MzgxZDAwNTBkYjY1YS4uOTViMzY0MjQ1MzJmNTJmNDliYTg2Njkz
YTRkOGM5OTI2ODRjZGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgV2Vi
U3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlRoZW1lRW5naW5lOwogY2xhc3MgV2ViVGhyZWFk
OwogY2xhc3MgV2ViVVJMTG9hZGVyOworY2xhc3MgV2ViV29ya2VyUnVuTG9vcDsKIAogY2xhc3Mg
V2ViS2l0UGxhdGZvcm1TdXBwb3J0IHsKIHB1YmxpYzoKQEAgLTMzNCw2ICszMzUsOSBAQCBwdWJs
aWM6CiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIFdlYlJUQyBmdW5jdGlvbmFsaXR5IGlzIG5v
dCBhdmFsaWFibGUgb3Igb3V0IG9mIHJlc291cmNlcy4KICAgICB2aXJ0dWFsIFdlYlBlZXJDb25u
ZWN0aW9uSGFuZGxlciogY3JlYXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlBlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudCopIHsgcmV0dXJuIDA7IH0KIAorICAgIHZpcnR1YWwgdm9pZCB3b3Jr
ZXJSdW5Mb29wU3RhcnRlZChXZWJXb3JrZXJSdW5Mb29wKikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHdvcmtlclJ1bkxvb3BTdG9wcGVkKFdlYldvcmtlclJ1bkxvb3AqKSB7IH0KKwogcHJvdGVjdGVk
OgogICAgIH5XZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBlNjA0
NGQ0ZjNmZjhkNDhlOWY1ODRiNzc1M2ExZTNlMmE0ZGM3OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlclJ1bkxvb3AuaApAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXb3JrZXJSdW5Mb29wX2gKKyNkZWZpbmUgV2Vi
V29ya2VyUnVuTG9vcF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJXb3JrZXJS
dW5Mb29wIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBUYXNrIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHZpcnR1YWwgflRhc2soKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIFJ1bigpID0gMDsKKyAg
ICB9OworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKikgPSAwOworICAgIHN0YXRpYyBX
ZWJXb3JrZXJSdW5Mb29wKiBjdXJyZW50KCk7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2Vi
V29ya2VyUnVuTG9vcCgpIHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IGUwNThhOTM2NDcxZTIyN2Y3
NDVlOGMzMzAzOWFlYjNhNzczNTM4YTEuLjJhODdjMWY4NTJiZjkzNjg4MGY3NTUzODkxY2MxYzEy
MWJiMDlhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNp
bmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldlYldvcmtlckNsaWVudEltcGwuaCIK
KyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wSW1wbC5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4KQEAgLTEwNzIsNiArMTA3MywxOCBAQCBib29s
IFBsYXRmb3JtU3VwcG9ydDo6cG9wdXBzQWxsb3dlZChOUFAgbnBwKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKFdvcmtl
clJ1bkxvb3AqIGxvb3ApCit7CisgICAgQVNTRVJUKCFXZWJXb3JrZXJSdW5Mb29wSW1wbDo6Y3Vy
cmVudCgpKTsKKyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+d29ya2VyUnVuTG9vcFN0YXJ0
ZWQobmV3IFdlYldvcmtlclJ1bkxvb3BJbXBsKGxvb3ApKTsKK30KKwordm9pZCBQbGF0Zm9ybVN1
cHBvcnQ6OndvcmtlclJ1bkxvb3BTdG9wcGluZyhXb3JrZXJSdW5Mb29wKiBsb29wKQoreworICAg
IHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT53b3JrZXJSdW5Mb29wU3RvcHBlZChXZWJXb3JrZXJS
dW5Mb29wOjpjdXJyZW50KCkpOworICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJSdW5M
b29wSW1wbCo+KFdlYldvcmtlclJ1bkxvb3A6OmN1cnJlbnQoKSk7Cit9CisKICNpZiBFTkFCTEUo
V09SS0VSUykKIFdvcmtlckNvbnRleHRQcm94eSogV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUo
V29ya2VyKiB3b3JrZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTIxMzg5NTJiMGMyNjkzMzY2ZjJm
MjQ5ZTU0MDYzN2FjMjFjM2EyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYldvcmtlclJ1bkxvb3BJbXBs
LmgiCisKKyNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZFNw
ZWNpZmljLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV1RGOjpUaHJlYWRT
cGVjaWZpYzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFRh
c2tGb3J3YXJkZXIgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8VGFza0ZvcndhcmRlcj4gY3JlYXRlKFBhc3NPd25Q
dHI8V2ViV29ya2VyUnVuTG9vcDo6VGFzaz4gdGFzaykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVGFza0ZvcndhcmRlcih0YXNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAg
bV90YXNrLT5SdW4oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGFza0ZvcndhcmRlcihQYXNz
T3duUHRyPFdlYldvcmtlclJ1bkxvb3A6OlRhc2s+IHRhc2spCisgICAgICAgIDogbV90YXNrKHRh
c2spCisgICAgeworICAgIH0KKworICAgIE93blB0cjxXZWJXb3JrZXJSdW5Mb29wOjpUYXNrPiBt
X3Rhc2s7Cit9OworCitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8V2ViV29ya2VyUnVuTG9vcEltcGwq
PiYgY3VycmVudExvb3BUTFMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGhyZWFkU3Bl
Y2lmaWM8V2ViV29ya2VyUnVuTG9vcEltcGwqPiwgY3VycmVudExvb3BUTFMsICgpKTsKKyAgICBy
ZXR1cm4gY3VycmVudExvb3BUTFM7Cit9CisKK30KKworV2ViV29ya2VyUnVuTG9vcCogV2ViV29y
a2VyUnVuTG9vcDo6Y3VycmVudCgpCit7CisgICAgcmV0dXJuIFdlYldvcmtlclJ1bkxvb3BJbXBs
OjpjdXJyZW50KCk7Cit9CisKK1dlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3JrZXJSdW5Mb29w
SW1wbChXb3JrZXJSdW5Mb29wKiB3b3JrZXJSdW5Mb29wKQorICAgIDogbV93b3JrZXJSdW5Mb29w
KHdvcmtlclJ1bkxvb3ApCit7CisgICAgQVNTRVJUKCFjdXJyZW50TG9vcFRMUygpLmlzU2V0KCkp
OworICAgICpjdXJyZW50TG9vcFRMUygpID0gdGhpczsKK30KKworV2ViV29ya2VyUnVuTG9vcElt
cGw6On5XZWJXb3JrZXJSdW5Mb29wSW1wbCgpCit7CisgICAgQVNTRVJUKCpjdXJyZW50TG9vcFRM
UygpID09IHRoaXMpOworICAgICpjdXJyZW50TG9vcFRMUygpID0gMDsKK30KKwordm9pZCBXZWJX
b3JrZXJSdW5Mb29wSW1wbDo6cG9zdFRhc2soVGFzayogdGFzaykKK3sKKyAgICBtX3dvcmtlclJ1
bkxvb3AtPnBvc3RUYXNrKFRhc2tGb3J3YXJkZXI6OmNyZWF0ZShhZG9wdFB0cih0YXNrKSkpOwor
fQorCitXZWJXb3JrZXJSdW5Mb29wSW1wbCogV2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQo
KQoreworICAgIGlmICghY3VycmVudExvb3BUTFMoKS5pc1NldCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gKmN1cnJlbnRMb29wVExTKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlclJ1bkxvb3BJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
MTRiODdlZTc5NTQ1OGQzOTdhYzdkNmVjZjc1OGFhMGNhYjQ4ZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYldvcmtlclJ1bkxvb3BJbXBsX2gKKyNk
ZWZpbmUgV2ViV29ya2VyUnVuTG9vcEltcGxfaAorCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9v
cC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXb3JrZXJSdW5Mb29wOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV29ya2VyUnVuTG9vcEltcGwgOiBwdWJsaWMg
V2ViV29ya2VyUnVuTG9vcCB7CitwdWJsaWM6CisgICAgV2ViV29ya2VyUnVuTG9vcEltcGwoV2Vi
Q29yZTo6V29ya2VyUnVuTG9vcCopOworICAgIHZpcnR1YWwgfldlYldvcmtlclJ1bkxvb3BJbXBs
KCk7CisKKyAgICAvLyBDYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQsIHRhc2sgb3duZXJzaGlwIGlz
IHRyYW5zZmVycmVkLgorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKik7CisKKyAgICBz
dGF0aWMgV2ViV29ya2VyUnVuTG9vcEltcGwqIGN1cnJlbnQoKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpXb3JrZXJSdW5Mb29wKiBtX3dvcmtlclJ1bkxvb3A7Cit9OworCit9CisKKyNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116319</attachid>
            <date>2011-11-22 22:38:21 -0800</date>
            <delta_ts>2011-11-28 14:27:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111122223820.patch</filename>
            <type>text/plain</type>
            <size>16904</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uNGU2YzM0NjJiODU2ZWE1ZWEzMzAwY2U4YzBiYmNi
N2Y0YTNiNzc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTIyICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIEluZGV4ZWREQiB0ZXN0cyBm
b3J0aGNvbWluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOiBBZGQgdHdvIG1ldGhvZHMgdGhhdCBhbGxvdworICAgICAgICBXZWJDb3JlIHRvIG5vdGlm
eSBjaHJvbWl1bSB3aGVuIHdvcmtlcnMgc3RhcnQgYW5kIHN0b3AuCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3Jr
ZXJUaHJlYWQpOiBDYWxsIGludG8gUGxhdGZvcm1TdXBwb3J0IHdoZW4KKyAgICAgICAgdGhlIHdv
cmtlcidzIHJ1bmxvb3AgaXMgc3RhcnRlZCBhbmQgc3RvcHBlZC4KKwogMjAxMS0xMS0yMiAgQW5k
cmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExheW91dCBUZXN0
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXZlbnRzLmh0bWwgaXMgdGltaW5nIG91
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmY2M4MDg5Nzg4MjE0NTc5YzY1ZTgyY2U4
N2ZjNzc3YmNjNzRhNDdhLi5hZTFhZDliZThhM2VmZWJiMTZlMjgxMzY0YjRkYzc2YjVjNDZjNGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTExLTIy
ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3Jr
ZXJSdW5Mb29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgVGhpcyBhbGxv
d3MgdGhlIGVtYmVkZGVyIHRvIHBvc3QgdGFza3MgdG8gd2ViY29yZS1jcmVhdGVkIHdvcmtlcgor
ICAgICAgICB0aHJlYWRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViS2l0Lmd5cDogQWRkZWQgV2ViV29ya2VyUnVuTG9vcC5oLCBXZWJXb3Jr
ZXJSdW5Mb29wSW1wbC57Y3BwLGh9CisKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0UGxhdGZvcm1T
dXBwb3J0Lmg6IFN0dWJzIGZvciB0aGUgZW1iZWRkZXIgdG8gaW1wbGVtZW50LgorICAgICAgICAo
V2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdGFydGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBl
ZCk6CisKKyAgICAgICAgKiBwdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oOiBBZGRlZC4gSW50ZXJm
YWNlIHRoZSBlbWJlZGRlciB3aWxsIHVzZSB0bworICAgICAgICBwb3N0IFRhc2tzIHRvIHdvcmtl
ciB0aHJlYWRzIGNyZWF0ZWQgaW4gV2ViQ29yZS4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
UnVuTG9vcDo6VGFzazo6flRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29w
Ojp+V2ViV29ya2VyUnVuTG9vcCk6CisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0
ZWQpOiBXcmFwIGluY29taW5nCisgICAgICAgIFdvcmtlclJ1bkxvb3Agb2JqZWN0cyBpbiBXZWJX
b3JrZXJSdW5Mb29wSW1wbCBvYmplY3RzLCBmb3J3YXJkIHRoZW0gdG8KKyAgICAgICAgV2ViS2l0
UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZAorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBpbmcpOiBDYWxsCisgICAgICAgIFdl
YktpdFBsYXRmb3JtU3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0b3BwZWQgd2l0aCB0aGUgY3VycmVu
dAorICAgICAgICBXZWJXb3JrZXJSdW5Mb29wLgorCisgICAgICAgICogc3JjL1dlYldvcmtlclJ1
bkxvb3BJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6
OmN1cnJlbnQpOiBSZXR1cm4gcG9pbnRlciB0bworICAgICAgICBXZWJXb3JrZXJSdW5Mb29wIGlu
c3RhbmNlIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCB3b3JrZXIncyBtZXNzYWdlCisgICAg
ICAgIGxvb3AuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3Jr
ZXJSdW5Mb29wSW1wbCk6IEluaXRzCisgICAgICAgIFdlYldvcmtlclJ1bkxvb3AgVExTLgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wSW1wbDo6fldlYldvcmtlclJ1bkxvb3BJbXBs
KTogQ2xlYXJzCisgICAgICAgIFdlYldvcmtlclJ1bkxvb3AgVExTLgorICAgICAgICAoV2ViS2l0
OjpXZWJXb3JrZXJSdW5Mb29wSW1wbDo6cG9zdFRhc2spOiBXcmFwIGluY29taW5nIFRhc2sgaW4K
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaywgcG9zdCB0byBXb3JrZXJSdW5M
b29wLCB0byBleGVjdXRlIGluCisgICAgICAgIGN1cnJlbnQgV29ya2VyQ29udGV4dC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQpOgorICAgICAgICAqIHNy
Yy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMiAgU2NvdHQgR3Jh
aGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1bSBERVBT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oCmluZGV4IGE4YTQyYzA0YjIzNzcwZTI3ZmE0NzJlZDg0NTdmOTU2ZjJhZThiYWIuLjgzNDky
YjBlMmU4NDU4Y2IzMzRiOTAwMzg2NjI2MjVhYTM0ODgwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04MSw2ICs4MSw3
IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwogY2xhc3MgV2lkZ2V0OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tp
ZTsKIHN0cnVjdCBGb250UmVuZGVyU3R5bGU7CkBAIC00MTYsNiArNDE3LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0
IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0
aWMgYm9vbCBpc0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIHdvcmtl
clJ1bkxvb3BTdGFydGVkKFdvcmtlclJ1bkxvb3AqKTsKKyAgICBzdGF0aWMgdm9pZCB3b3JrZXJS
dW5Mb29wU3RvcHBpbmcoV29ya2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDkyNzZjMjdk
OTg0ZmFjMDE5OGVjZTNmN2NkNGJlMTUxYzQxYzIzZWEuLjJiYjc4MTE3ODhiYTgwYTlkMmZiN2Ey
ZTNkZDU1MWVmNTg0NjFiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKQEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgp
CiAgICAgICAgICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigp
OwogICAgICAgICB9CiAgICAgfQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFBsYXRmb3Jt
U3VwcG9ydDo6d29ya2VyUnVuTG9vcFN0YXJ0ZWQoJm1fcnVuTG9vcCk7CisjZW5kaWYKIAogICAg
IFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IG1fd29ya2VyQ29udGV4dC0+c2NyaXB0
KCk7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTE0OSw2ICsxNTIsMTAgQEAgdm9pZCogV29y
a2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgcnVuRXZlbnRMb29wKCk7CiAKKyNpZiBQ
TEFURk9STShDSFJPTUlVTSkKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OndvcmtlclJ1bkxvb3BTdG9w
cGluZygmbV9ydW5Mb29wKTsKKyNlbmRpZgorCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJ
RCA9IG1fdGhyZWFkSUQ7CiAKICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5oYXNPbmVSZWYo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMTIxMDg5NDY2ZjU2OTg0ZDVkNDdk
OWZjMTY3OWMxNzA2MzMzNjUyNi4uZmMyNGNjZWVkYzczZmFjM2FmMTg5NjljMDMwOWU5YjIwNzgy
YjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzMyLDYgKzMzMiw3IEBACiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJXb3JrZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3Jr
ZXJDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNjQzLDYg
KzY0NCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViV29ya2VySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1
bkxvb3BJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVt
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBs
YXRmb3JtU3VwcG9ydC5oCmluZGV4IGE4NzlhYmQ3M2ZkNGJiZDVlMjk5NDdhYmE5OTM4MWQwMDUw
ZGI2NWEuLjk1YjM2NDI0NTMyZjUyZjQ5YmE4NjY5M2E0ZDhjOTkyNjg0Y2RkNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBX
ZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlVSTExvYWRlcjsKK2Ns
YXNzIFdlYldvcmtlclJ1bkxvb3A7CiAKIGNsYXNzIFdlYktpdFBsYXRmb3JtU3VwcG9ydCB7CiBw
dWJsaWM6CkBAIC0zMzQsNiArMzM1LDkgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVs
bCBpZiBXZWJSVEMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNv
dXJjZXMuCiAgICAgdmlydHVhbCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJD
b25uZWN0aW9uSGFuZGxlcihXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVy
biAwOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd29ya2VyUnVuTG9vcFN0YXJ0ZWQoV2ViV29ya2Vy
UnVuTG9vcCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJSdW5Mb29wU3RvcHBlZChXZWJX
b3JrZXJSdW5Mb29wKikgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV29ya2VyUnVuTG9vcC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29y
a2VyUnVuTG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZTYwNDRkNGYzZmY4ZDQ4ZTlmNTg0Yjc3NTNhMWUz
ZTJhNGRjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXb3JrZXJSdW5Mb29wLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViV29ya2VyUnVuTG9vcF9oCisjZGVmaW5lIFdlYldvcmtlclJ1bkxvb3BfaAorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV29ya2VyUnVuTG9vcCB7CitwdWJsaWM6CisgICAgY2xh
c3MgVGFzayB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7CisgICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dFRhc2soVGFzayopID0gMDsKKyAgICBzdGF0aWMgV2ViV29ya2VyUnVuTG9vcCogY3VycmVudCgp
OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfldlYldvcmtlclJ1bkxvb3AoKSB7IH0KK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcAppbmRleCBlMDU4YTkzNjQ3MWUyMjdmNzQ1ZThjMzMwMzlhZWIzYTc3MzUzOGExLi4y
YTg3YzFmODUyYmY5MzY4ODBmNzU1Mzg5MWNjMWMxMjFiYjA5YWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTYxLDYgKzYxLDcgQEAK
ICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNp
bmNsdWRlICJXZWJXb3JrZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9v
cEltcGwuaCIKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0
Lmg+CkBAIC0xMDcyLDYgKzEwNzMsMTggQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnBvcHVwc0Fs
bG93ZWQoTlBQIG5wcCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUGxhdGZvcm1TdXBw
b3J0Ojp3b3JrZXJSdW5Mb29wU3RhcnRlZChXb3JrZXJSdW5Mb29wKiBsb29wKQoreworICAgIEFT
U0VSVCghV2ViV29ya2VyUnVuTG9vcEltcGw6OmN1cnJlbnQoKSk7CisgICAgd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KCktPndvcmtlclJ1bkxvb3BTdGFydGVkKG5ldyBXZWJXb3JrZXJSdW5Mb29wSW1w
bChsb29wKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp3b3JrZXJSdW5Mb29wU3RvcHBp
bmcoV29ya2VyUnVuTG9vcCogbG9vcCkKK3sKKyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+
d29ya2VyUnVuTG9vcFN0b3BwZWQoV2ViV29ya2VyUnVuTG9vcDo6Y3VycmVudCgpKTsKKyAgICBk
ZWxldGUgc3RhdGljX2Nhc3Q8V2ViV29ya2VyUnVuTG9vcEltcGwqPihXZWJXb3JrZXJSdW5Mb29w
OjpjdXJyZW50KCkpOworfQorCiAjaWYgRU5BQkxFKFdPUktFUlMpCiBXb3JrZXJDb250ZXh0UHJv
eHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtlciogd29ya2VyKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXggN2JjZDljZjIzOWE1MWNkNTJiNDI5N2Y1
ZWRjMjAwODc0OWEwNmUxZi4uOWY2NzA3NGM4ZjYxNjUxMzc1YWY5MzUyMjkyODFhOWMxMTMwYzQw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2Vi
V29ya2VyUnVuTG9vcEltcGwuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHkuaCIKICNpbmNsdWRlICJ2OC5oIgogCkBAIC0xMDAsNiArMTAxLDggQEAgdm9pZCBpbml0aWFs
aXplV2l0aG91dFY4KFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1TdXBwb3J0
KQogICAgIFdlYkNvcmU6OlVURjhFbmNvZGluZygpOwogCiAgICAgV2ViQ29yZTo6Q0NQcm94eTo6
c2V0TWFpblRocmVhZChDQ1RocmVhZEltcGw6OmNyZWF0ZSh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQt
PmN1cnJlbnRUaHJlYWQoKSkubGVha1B0cigpKTsKKworICAgIFdlYldvcmtlclJ1bkxvb3BJbXBs
Ojppbml0KCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VyUnVuTG9vcEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
V29ya2VyUnVuTG9vcEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NjczM2M0NDRjMDMwNDZhMjI0OTc3
MmI3NGFjNjBkYjU0Y2FjYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcEltcGwu
aCIKKworI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK3VzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCituYW1lc3BhY2UgeworCitjbGFzcyBUYXNrRm9yd2FyZGVyIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRh
c2tGb3J3YXJkZXI+IGNyZWF0ZShQYXNzT3duUHRyPFdlYldvcmtlclJ1bkxvb3A6OlRhc2s+IHRh
c2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRhc2tGb3J3YXJkZXIodGFz
aykpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikKKyAgICB7CisgICAgICAgIG1fdGFzay0+UnVuKCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFRhc2tGb3J3YXJkZXIoUGFzc093blB0cjxXZWJXb3JrZXJSdW5Mb29wOjpUYXNr
PiB0YXNrKQorICAgICAgICA6IG1fdGFzayh0YXNrKQorICAgIHsKKyAgICB9CisKKyAgICBPd25Q
dHI8V2ViV29ya2VyUnVuTG9vcDo6VGFzaz4gbV90YXNrOworfTsKKworfQorCitXZWJXb3JrZXJS
dW5Mb29wKiBXZWJXb3JrZXJSdW5Mb29wOjpjdXJyZW50KCkKK3sKKyAgICByZXR1cm4gV2ViV29y
a2VyUnVuTG9vcEltcGw6OmN1cnJlbnQoKTsKK30KKworVGhyZWFkU3BlY2lmaWM8V2ViV29ya2Vy
UnVuTG9vcEltcGwqPiogV2ViV29ya2VyUnVuTG9vcEltcGw6Om1fY3VycmVudExvb3A7CisKK1Ro
cmVhZFNwZWNpZmljPFdlYldvcmtlclJ1bkxvb3BJbXBsKj4mIFdlYldvcmtlclJ1bkxvb3BJbXBs
OjpjdXJyZW50TG9vcFRMUygpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRM
b29wLCAiV29ya2VyUnVuTG9vcEltcGw6OmluaXQoKSBtdXN0IGJlIGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQgYmVmb3JlIHVzZS4iKTsKKyAgICByZXR1cm4gKm1fY3VycmVudExvb3A7Cit9CisK
K1dlYldvcmtlclJ1bkxvb3BJbXBsOjpXZWJXb3JrZXJSdW5Mb29wSW1wbChXb3JrZXJSdW5Mb29w
KiB3b3JrZXJSdW5Mb29wKQorICAgIDogbV93b3JrZXJSdW5Mb29wKHdvcmtlclJ1bkxvb3ApCit7
CisgICAgQVNTRVJUKCFjdXJyZW50TG9vcFRMUygpLmlzU2V0KCkpOworICAgICpjdXJyZW50TG9v
cFRMUygpID0gdGhpczsKK30KKworV2ViV29ya2VyUnVuTG9vcEltcGw6On5XZWJXb3JrZXJSdW5M
b29wSW1wbCgpCit7CisgICAgQVNTRVJUKCpjdXJyZW50TG9vcFRMUygpID09IHRoaXMpOworICAg
ICpjdXJyZW50TG9vcFRMUygpID0gMDsKK30KKwordm9pZCBXZWJXb3JrZXJSdW5Mb29wSW1wbDo6
cG9zdFRhc2soVGFzayogdGFzaykKK3sKKyAgICBtX3dvcmtlclJ1bkxvb3AtPnBvc3RUYXNrKFRh
c2tGb3J3YXJkZXI6OmNyZWF0ZShhZG9wdFB0cih0YXNrKSkpOworfQorCit2b2lkIFdlYldvcmtl
clJ1bkxvb3BJbXBsOjppbml0KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IG1fY3VycmVudExvb3AgPSBuZXcgVGhyZWFkU3BlY2lmaWM8V2ViV29ya2VyUnVuTG9vcEltcGwq
PjsKK30KKworV2ViV29ya2VyUnVuTG9vcEltcGwqIFdlYldvcmtlclJ1bkxvb3BJbXBsOjpjdXJy
ZW50KCkKK3sKKyAgICBpZiAoIWN1cnJlbnRMb29wVExTKCkuaXNTZXQoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuICpjdXJyZW50TG9vcFRMUygpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wSW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NDVmOWFlOTFkNzdkODc5ODk0NDk2ODE2NzY0MDU1Mzk5ZjQ2NDVhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcEltcGwuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXb3JrZXJSdW5Mb29wSW1wbF9o
CisjZGVmaW5lIFdlYldvcmtlclJ1bkxvb3BJbXBsX2gKKworI2luY2x1ZGUgIldlYldvcmtlclJ1
bkxvb3AuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2VyUnVuTG9vcDsKK30K
KworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgVGhyZWFkU3BlY2lm
aWM7Cit9CisKK3VzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJXb3JrZXJSdW5Mb29wSW1wbCA6IHB1YmxpYyBXZWJXb3JrZXJSdW5Mb29w
IHsKK3B1YmxpYzoKKyAgICBXZWJXb3JrZXJSdW5Mb29wSW1wbChXZWJDb3JlOjpXb3JrZXJSdW5M
b29wKik7CisgICAgdmlydHVhbCB+V2ViV29ya2VyUnVuTG9vcEltcGwoKTsKKworICAgIC8vIENh
bGxhYmxlIGZyb20gYW55IHRocmVhZCwgdGFzayBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQuCisg
ICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFRhc2sqKTsKKworICAgIHN0YXRpYyB2b2lkIGluaXQo
KTsKKyAgICBzdGF0aWMgV2ViV29ya2VyUnVuTG9vcEltcGwqIGN1cnJlbnQoKTsKKworcHJpdmF0
ZToKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8V2ViV29ya2VyUnVuTG9vcEltcGwqPiYgY3Vy
cmVudExvb3BUTFMoKTsKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8V2ViV29ya2VyUnVuTG9v
cEltcGwqPiogbV9jdXJyZW50TG9vcDsKKyAgICBXZWJDb3JlOjpXb3JrZXJSdW5Mb29wKiBtX3dv
cmtlclJ1bkxvb3A7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116819</attachid>
            <date>2011-11-28 14:27:38 -0800</date>
            <delta_ts>2011-11-28 15:07:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111128142737.patch</filename>
            <type>text/plain</type>
            <size>12583</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJiNDQ3MmEwNjdmMmFh
NWE3NzM2MWFiZjgyOGQ2OGNkYzM1MjFiNS4uMTY0ZGZlZTU4ZmQ2YTI0OWU4YzA3OThiZDA5Mjcx
NmMyZjQ1ZDU4YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTI4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIEluZGV4ZWREQiB0ZXN0cyBm
b3J0aGNvbWluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOiBBZGQgdHdvIG1ldGhvZHMgdGhhdCBhbGxvdworICAgICAgICBXZWJDb3JlIHRvIG5vdGlm
eSBjaHJvbWl1bSB3aGVuIHdvcmtlcnMgc3RhcnQgYW5kIHN0b3AuCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3Jr
ZXJUaHJlYWQpOiBDYWxsIGludG8gUGxhdGZvcm1TdXBwb3J0IHdoZW4KKyAgICAgICAgdGhlIHdv
cmtlcidzIHJ1bmxvb3AgaXMgc3RhcnRlZCBhbmQgc3RvcHBlZC4KKwogMjAxMS0xMS0yOCAgRmFk
eSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggQXNwZWN0IFJh
dGlvIFByb3BlcnR5IEluaGVyaXRhbmNlIEFuZCBNYWtlIHRoZSBDb21wdXRlZCBWYWx1ZSBFcXVh
bCB0aGUgU3BlY2lmaWVkIFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDIxM2Rm
ZmRiN2U1ZjBiOWFkYzFjMzM1OWNiMjhiMjAxZTM4NmYxZDYuLmY1NjZlNjgyOTk1YWRkMWVjNWNh
NTZhMTdlM2ZkMWMxMDNkYzJkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzggQEAKKzIwMTEtMTEtMjggIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91bmQgV29ya2VyUnVuTG9v
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTcK
KworICAgICAgICBUaGlzIGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gcG9zdCB0YXNrcyB0byB3ZWJj
b3JlLWNyZWF0ZWQgd29ya2VyCisgICAgICAgIHRocmVhZHMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOiBBZGRlZCBXZWJXb3Jr
ZXJSdW5Mb29wLntjcHAsaH0KKworICAgICAgICAqIHB1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmg6
IEFkZGVkLiBJbnRlcmZhY2UgdGhlIGVtYmVkZGVyIHdpbGwgdXNlIHRvCisgICAgICAgIHBvc3Qg
VGFza3MgdG8gd29ya2VyIHRocmVhZHMgY3JlYXRlZCBpbiBXZWJDb3JlLgorICAgICAgICAoV2Vi
S2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6CisKKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6IFN0dWJzIGZvciB0aGUgZW1iZWRkZXIg
dG8KKyAgICAgICAgaW1wbGVtZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQ6OmRpZFN0YXJ0V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBs
YXRmb3JtU3VwcG9ydDo6ZGlkU3RvcFdvcmtlclJ1bkxvb3ApOgorCisgICAgICAgICogc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHA6IFdyYXAgaW5jb21pbmcgV29ya2VyUnVuTG9vcCBvYmplY3RzIGlu
CisgICAgICAgIFdlYldvcmtlclJ1bkxvb3BJbXBsIG9iamVjdHMsIGZvcndhcmQgdGhlbSB0byBX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6
OmRpZFN0YXJ0V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBv
cnQ6OmRpZFN0b3BXb3JrZXJSdW5Mb29wKToKKworICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5M
b29wLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6OldlYldv
cmtlclJ1bkxvb3ApOiBTdG9yZSBpbmNvbWluZworICAgICAgICBXb3JrZXJSdW5Mb29wIHBvaW50
ZXIuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKTogV3JhcCBp
bmNvbWluZyBUYXNrIGluCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2ssIHBv
c3QgdG8gc3RvcmVkIFdvcmtlclJ1bkxvb3AuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1
bkxvb3A6Om9wZXJhdG9yPCk6IEZvcndhcmQgY29tcGFyaXNvbiB0bworICAgICAgICBzdG9yZWQg
V29ya2VyUnVuTG9vcHMuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6Om9wZXJh
dG9yPT0pOiBEaXR0by4KKwogMjAxMS0xMS0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMTI3
My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBw
b3J0LmgKaW5kZXggYTk3M2E3NTdhNzk2YmQ4YThlN2ZkM2NhN2Q3M2M0ZTZmMjVkMzhhZC4uNDA3
NDgwNDkyNGM5MTMwZDU2NmRhYTI4NTUxZTMwNzQ0YTFhMDM4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTgyLDYgKzgy
LDcgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CiBjbGFzcyBXaWRnZXQ7CitjbGFzcyBXb3JrZXJSdW5Mb29wOwogCiBzdHJ1Y3QgQ29v
a2llOwogc3RydWN0IEZvbnRSZW5kZXJTdHlsZTsKQEAgLTQyMCw2ICs0MjEsOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29u
c3QgS1VSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHN0
YXRpYyBib29sIGlzTGlua1Zpc2l0ZWQoTGlua0hhc2gpOworCisgICAgc3RhdGljIHZvaWQgZGlk
U3RhcnRXb3JrZXJSdW5Mb29wKFdvcmtlclJ1bkxvb3AqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRT
dG9wV29ya2VyUnVuTG9vcChXb3JrZXJSdW5Mb29wKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggOTI3NmMy
N2Q5ODRmYWMwMTk4ZWNlM2Y3Y2Q0YmUxNTFjNDFjMjNlYS4uZmY1ZGY2NjZjNmE1YzY3MzViMThh
YWU0ZTdjNGU3YWMzOTk2YjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcApAQCAtMTM2LDYgKzEzNiw5IEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFk
KCkKICAgICAgICAgICAgbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9u
KCk7CiAgICAgICAgIH0KICAgICB9CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgUGxhdGZv
cm1TdXBwb3J0OjpkaWRTdGFydFdvcmtlclJ1bkxvb3AoJm1fcnVuTG9vcCk7CisjZW5kaWYKIAog
ICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IG1fd29ya2VyQ29udGV4dC0+c2Ny
aXB0KCk7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTE0OSw2ICsxNTIsMTAgQEAgdm9pZCog
V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgcnVuRXZlbnRMb29wKCk7CiAKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OmRpZFN0b3BXb3JrZXJS
dW5Mb29wKCZtX3J1bkxvb3ApOworI2VuZGlmCisKICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVh
ZElEID0gbV90aHJlYWRJRDsKIAogICAgIEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmhhc09uZVJl
ZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA4YjAzZTRhMGNjMTI0ODhiMjFh
Y2YxNzAyZWUzOThmMjdhZDBjMzY1Li5mZGYwNDJhYTA4ZTY0OTM4ZTEzMTQyZWZjOTVhMzk5Y2Iw
NzllY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zMzYsNiArMzM2LDcgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYldpZGdldENsaWVudC5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYldvcmtlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYldv
cmtlckNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYldvcmtlclJ1bkxvb3Au
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViSW5wdXRFdmVudEZhY3RvcnkuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaCcsCkBAIC02NDgs
NiArNjQ5LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlckNsaWVudEltcGwuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJXb3JrZXJJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2Vy
UnVuTG9vcC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldvcmtlclJ1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldv
cmtlclJ1bkxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGZiY2Q0ZGE3MDAyMTZjNzE4ZDljZmI2MjMzZjU4
NmNiNDFjNDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV29ya2VyUnVuTG9vcC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYldvcmtlclJ1bkxvb3BfaAorI2RlZmluZSBXZWJXb3JrZXJSdW5Mb29wX2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXb3JrZXJSdW5M
b29wOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV29ya2VyUnVuTG9vcCB7
CitwdWJsaWM6CisgICAgV2ViV29ya2VyUnVuTG9vcChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wKik7
CisgICAgY2xhc3MgVGFzayB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UYXNrKCkg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7CisgICAgfTsKKyAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgcG9zdFRhc2soVGFzayopOworICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFdl
YldvcmtlclJ1bkxvb3AmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViV29y
a2VyUnVuTG9vcCYpIGNvbnN0OworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
KiBtX3dvcmtlclJ1bkxvb3A7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaAppbmRleCAwMjMyODkyZTVhNTBkNzZlZWVkNGJkNWI4Yjg3ZWUwN2M0ZWE4NjVhLi42
YzBlNzRmMTI5NzJjN2YzNzQ2MzQwYWZmNjliMzEyZGMyNWNhMWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNl
OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYlRoZW1l
RW5naW5lOwogY2xhc3MgV2ViVGhyZWFkOwogY2xhc3MgV2ViVVJMTG9hZGVyOworY2xhc3MgV2Vi
V29ya2VyUnVuTG9vcDsKIAogY2xhc3MgV2ViS2l0UGxhdGZvcm1TdXBwb3J0IHsKIHB1YmxpYzoK
QEAgLTMzNCw2ICszMzUsOSBAQCBwdWJsaWM6CiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIFdl
YlJUQyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFsaWFibGUgb3Igb3V0IG9mIHJlc291cmNlcy4K
ICAgICB2aXJ0dWFsIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlciogY3JlYXRlUGVlckNvbm5lY3Rp
b25IYW5kbGVyKFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopIHsgcmV0dXJuIDA7IH0K
IAorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFdvcmtlclJ1bkxvb3AoY29uc3QgV2ViV29ya2Vy
UnVuTG9vcCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wV29ya2VyUnVuTG9vcChjb25z
dCBXZWJXb3JrZXJSdW5Mb29wJikgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViS2l0UGxhdGZv
cm1TdXBwb3J0KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAKaW5kZXggMTY1ODM0MWJlYWI1YmQ1M2EyZmVjYTVhNTYzNWJiYzZhMjll
OWI1Ny4uNzhhOTRjNzI2ZDUyYWZjNjJiZTg3YmI4ZDhmZGFjZDA1NjVkMTZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC02MSw2ICs2
MSw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBs
LmgiCiAjaW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYldvcmtl
clJ1bkxvb3AuaCIKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250
ZXh0Lmg+CkBAIC0xMDk5LDYgKzExMDAsMTYgQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnBvcHVw
c0FsbG93ZWQoTlBQIG5wcCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUGxhdGZvcm1T
dXBwb3J0OjpkaWRTdGFydFdvcmtlclJ1bkxvb3AoV29ya2VyUnVuTG9vcCogbG9vcCkKK3sKKyAg
ICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKFdlYldvcmtl
clJ1bkxvb3AobG9vcCkpOworfQorCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6ZGlkU3RvcFdvcmtl
clJ1bkxvb3AoV29ya2VyUnVuTG9vcCogbG9vcCkKK3sKKyAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQoKS0+ZGlkU3RvcFdvcmtlclJ1bkxvb3AoV2ViV29ya2VyUnVuTG9vcChsb29wKSk7Cit9CisK
ICNpZiBFTkFCTEUoV09SS0VSUykKIFdvcmtlckNvbnRleHRQcm94eSogV29ya2VyQ29udGV4dFBy
b3h5OjpjcmVhdGUoV29ya2VyKiB3b3JrZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlclJ1bkxvb3AuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNmE0ZWZmMDg3NWE0YjYy
ODQ4Yzg4MjRlNjBmMDczMWUzNDhhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJSdW5Mb29wLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYldvcmtlclJ1bkxvb3AuaCIK
KworI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgeworCitjbGFzcyBUYXNrRm9yd2Fy
ZGVyIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPFRhc2tGb3J3YXJkZXI+IGNyZWF0ZShQYXNzT3duUHRyPFdlYldv
cmtlclJ1bkxvb3A6OlRhc2s+IHRhc2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRhc2tGb3J3YXJkZXIodGFzaykpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIG1fdGFzay0+
UnVuKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFRhc2tGb3J3YXJkZXIoUGFzc093blB0cjxX
ZWJXb3JrZXJSdW5Mb29wOjpUYXNrPiB0YXNrKQorICAgICAgICA6IG1fdGFzayh0YXNrKQorICAg
IHsKKyAgICB9CisKKyAgICBPd25QdHI8V2ViV29ya2VyUnVuTG9vcDo6VGFzaz4gbV90YXNrOwor
fTsKKworfQorCitXZWJXb3JrZXJSdW5Mb29wOjpXZWJXb3JrZXJSdW5Mb29wKFdvcmtlclJ1bkxv
b3AqIHdvcmtlclJ1bkxvb3ApCisgICAgOiBtX3dvcmtlclJ1bkxvb3Aod29ya2VyUnVuTG9vcCkK
K3sKK30KKwordm9pZCBXZWJXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhUYXNrKiB0YXNrKQorewor
ICAgIG1fd29ya2VyUnVuTG9vcC0+cG9zdFRhc2soVGFza0ZvcndhcmRlcjo6Y3JlYXRlKGFkb3B0
UHRyKHRhc2spKSk7Cit9CisKK2Jvb2wgV2ViV29ya2VyUnVuTG9vcDo6b3BlcmF0b3I8KGNvbnN0
IFdlYldvcmtlclJ1bkxvb3AmIG8pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyUnVuTG9v
cCA8IG8ubV93b3JrZXJSdW5Mb29wOworfQorCitib29sIFdlYldvcmtlclJ1bkxvb3A6Om9wZXJh
dG9yPT0oY29uc3QgV2ViV29ya2VyUnVuTG9vcCYgbykgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
b3JrZXJSdW5Mb29wID09IG8ubV93b3JrZXJSdW5Mb29wOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116832</attachid>
            <date>2011-11-28 15:07:34 -0800</date>
            <delta_ts>2011-11-28 19:14:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71757-20111128150733.patch</filename>
            <type>text/plain</type>
            <size>12613</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJiNDQ3MmEwNjdmMmFh
NWE3NzM2MWFiZjgyOGQ2OGNkYzM1MjFiNS4uMTY0ZGZlZTU4ZmQ2YTI0OWU4YzA3OThiZDA5Mjcx
NmMyZjQ1ZDU4YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTI4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAtIEluZGV4ZWREQiB0ZXN0cyBm
b3J0aGNvbWluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9y
dC5oOiBBZGQgdHdvIG1ldGhvZHMgdGhhdCBhbGxvdworICAgICAgICBXZWJDb3JlIHRvIG5vdGlm
eSBjaHJvbWl1bSB3aGVuIHdvcmtlcnMgc3RhcnQgYW5kIHN0b3AuCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3Jr
ZXJUaHJlYWQpOiBDYWxsIGludG8gUGxhdGZvcm1TdXBwb3J0IHdoZW4KKyAgICAgICAgdGhlIHdv
cmtlcidzIHJ1bmxvb3AgaXMgc3RhcnRlZCBhbmQgc3RvcHBlZC4KKwogMjAxMS0xMS0yOCAgRmFk
eSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggQXNwZWN0IFJh
dGlvIFByb3BlcnR5IEluaGVyaXRhbmNlIEFuZCBNYWtlIHRoZSBDb21wdXRlZCBWYWx1ZSBFcXVh
bCB0aGUgU3BlY2lmaWVkIFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDIxM2Rm
ZmRiN2U1ZjBiOWFkYzFjMzM1OWNiMjhiMjAxZTM4NmYxZDYuLjY2MzJhMWE4MzIzMWI1MTQ4YWUw
ODQwNmNmNjliMDVmMDRjZmU3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzggQEAKKzIwMTEtMTEtMjggIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYldvcmtlclJ1bkxvb3Agd3JhcHBlciBhcm91bmQgV29ya2VyUnVuTG9v
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTcK
KworICAgICAgICBUaGlzIGFsbG93cyB0aGUgZW1iZWRkZXIgdG8gcG9zdCB0YXNrcyB0byB3ZWJj
b3JlLWNyZWF0ZWQgd29ya2VyCisgICAgICAgIHRocmVhZHMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOiBBZGRlZCBXZWJXb3Jr
ZXJSdW5Mb29wLntjcHAsaH0KKworICAgICAgICAqIHB1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmg6
IEFkZGVkLiBJbnRlcmZhY2UgdGhlIGVtYmVkZGVyIHdpbGwgdXNlIHRvCisgICAgICAgIHBvc3Qg
VGFza3MgdG8gd29ya2VyIHRocmVhZHMgY3JlYXRlZCBpbiBXZWJDb3JlLgorICAgICAgICAoV2Vi
S2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6CisKKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6IFN0dWJzIGZvciB0aGUgZW1iZWRkZXIg
dG8KKyAgICAgICAgaW1wbGVtZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQ6OmRpZFN0YXJ0V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBs
YXRmb3JtU3VwcG9ydDo6ZGlkU3RvcFdvcmtlclJ1bkxvb3ApOgorCisgICAgICAgICogc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHA6IFdyYXAgaW5jb21pbmcgV29ya2VyUnVuTG9vcCBvYmplY3RzIGlu
CisgICAgICAgIFdlYldvcmtlclJ1bkxvb3BJbXBsIG9iamVjdHMsIGZvcndhcmQgdGhlbSB0byBX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6
OmRpZFN0YXJ0V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBv
cnQ6OmRpZFN0b3BXb3JrZXJSdW5Mb29wKToKKworICAgICAgICAqIHNyYy9XZWJXb3JrZXJSdW5M
b29wLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6OldlYldv
cmtlclJ1bkxvb3ApOiBTdG9yZSBpbmNvbWluZworICAgICAgICBXb3JrZXJSdW5Mb29wIHBvaW50
ZXIuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKTogV3JhcCBp
bmNvbWluZyBUYXNrIGluCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2ssIHBv
c3QgdG8gc3RvcmVkIFdvcmtlclJ1bkxvb3AuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1
bkxvb3A6OmVxdWFscyk6IEZvcndhcmQgY29tcGFyaXNvbiB0bworICAgICAgICBzdG9yZWQgV29y
a2VyUnVuTG9vcHMuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6Omxlc3NUaGFu
KTogRGl0dG8uCisKIDIwMTEtMTEtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDEyNzMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5o
CmluZGV4IGE5NzNhNzU3YTc5NmJkOGE4ZTdmZDNjYTdkNzNjNGU2ZjI1ZDM4YWQuLjQwNzQ4MDQ5
MjRjOTEzMGQ1NjZkYWEyODU1MWUzMDc0NGExYTAzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04Miw2ICs4Miw3IEBA
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OwogY2xhc3MgV2lkZ2V0OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tpZTsK
IHN0cnVjdCBGb250UmVuZGVyU3R5bGU7CkBAIC00MjAsNiArNDIxLDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtV
UkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0aWMg
Ym9vbCBpc0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0
V29ya2VyUnVuTG9vcChXb3JrZXJSdW5Mb29wKik7CisgICAgc3RhdGljIHZvaWQgZGlkU3RvcFdv
cmtlclJ1bkxvb3AoV29ya2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDkyNzZjMjdkOTg0
ZmFjMDE5OGVjZTNmN2NkNGJlMTUxYzQxYzIzZWEuLmZmNWRmNjY2YzZhNWM2NzM1YjE4YWFlNGU3
YzRlN2FjMzk5NmIzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
QEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAg
ICAgICAgICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOwog
ICAgICAgICB9CiAgICAgfQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFBsYXRmb3JtU3Vw
cG9ydDo6ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKCZtX3J1bkxvb3ApOworI2VuZGlmCiAKICAgICBX
b3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgp
OwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xNDksNiArMTUyLDEwIEBAIHZvaWQqIFdvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkKCkKIAogICAgIHJ1bkV2ZW50TG9vcCgpOwogCisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisgICAgUGxhdGZvcm1TdXBwb3J0OjpkaWRTdG9wV29ya2VyUnVuTG9v
cCgmbV9ydW5Mb29wKTsKKyNlbmRpZgorCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9
IG1fdGhyZWFkSUQ7CiAKICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5oYXNPbmVSZWYoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOGIwM2U0YTBjYzEyNDg4YjIxYWNmMTcw
MmVlMzk4ZjI3YWQwYzM2NS4uZmRmMDQyYWEwOGU2NDkzOGUxMzE0MmVmYzk1YTM5OWNiMDc5ZWNk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJXb3JrZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJD
bGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNjQ4LDYgKzY0
OSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViV29ya2VySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1bkxv
b3AuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9t
aXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJX
b3JrZXJSdW5Mb29wLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJS
dW5Mb29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY5NjU3MWZhZTIzNzY3ZGYzNGI2ODk3N2MyNDdiZjBmYWI1
OGY5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldvcmtlclJ1bkxvb3AuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJX
b3JrZXJSdW5Mb29wX2gKKyNkZWZpbmUgV2ViV29ya2VyUnVuTG9vcF9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2VyUnVuTG9vcDsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldvcmtlclJ1bkxvb3AgeworcHVi
bGljOgorICAgIGNsYXNzIFRhc2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGFz
aygpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgPSAwOworICAgIH07CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHBvc3RUYXNrKFRhc2sqKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
ZXF1YWxzKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgbGVzc1RoYW4oY29uc3QgV2ViV29ya2VyUnVuTG9vcCYpIGNvbnN0OworCisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViV29ya2VyUnVuTG9vcChXZWJDb3JlOjpXb3JrZXJS
dW5Mb29wKik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
KiBtX3dvcmtlclJ1bkxvb3A7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdl
YldvcmtlclJ1bkxvb3AmIGEsIGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmIGIpCit7CisgICAgcmV0
dXJuIGEuZXF1YWxzKGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViV29y
a2VyUnVuTG9vcCYgYSwgY29uc3QgV2ViV29ya2VyUnVuTG9vcCYgYikKK3sKKyAgICByZXR1cm4g
YS5sZXNzVGhhbihiKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgKaW5kZXggMDIzMjg5MmU1YTUwZDc2ZWVlZDRiZDViOGI4N2VlMDdjNGVhODY1YS4uNmMwZTc0
ZjEyOTcyYzdmMzc0NjM0MGFmZjY5YjMxMmRjMjVjYTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsgLy8g
RklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJUaGVtZUVuZ2lu
ZTsKIGNsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlVSTExvYWRlcjsKK2NsYXNzIFdlYldvcmtl
clJ1bkxvb3A7CiAKIGNsYXNzIFdlYktpdFBsYXRmb3JtU3VwcG9ydCB7CiBwdWJsaWM6CkBAIC0z
MzQsNiArMzM1LDkgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBXZWJSVEMg
ZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNvdXJjZXMuCiAgICAg
dmlydHVhbCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9uSGFu
ZGxlcihXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxv
b3AmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFdvcmtlclJ1bkxvb3AoY29uc3QgV2Vi
V29ya2VyUnVuTG9vcCYpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYktpdFBsYXRmb3JtU3Vw
cG9ydCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCmluZGV4IDE2NTgzNDFiZWFiNWJkNTNhMmZlY2E1YTU2MzViYmM2YTI5ZTliNTcu
Ljc4YTk0YzcyNmQ1MmFmYzYyYmU4N2JiOGQ4ZmRhY2QwNTY1ZDE2YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtNjEsNiArNjEsNyBA
QAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgog
I2luY2x1ZGUgIldlYldvcmtlckNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5M
b29wLmgiCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5o
PgpAQCAtMTA5OSw2ICsxMTAwLDE2IEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0Ojpwb3B1cHNBbGxv
d2VkKE5QUCBucHApCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFBsYXRmb3JtU3VwcG9y
dDo6ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPmRpZFN0YXJ0V29ya2VyUnVuTG9vcChXZWJXb3JrZXJSdW5M
b29wKGxvb3ApKTsKK30KKwordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmRpZFN0b3BXb3JrZXJSdW5M
b29wKFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkt
PmRpZFN0b3BXb3JrZXJSdW5Mb29wKFdlYldvcmtlclJ1bkxvb3AobG9vcCkpOworfQorCiAjaWYg
RU5BQkxFKFdPUktFUlMpCiBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6
Y3JlYXRlKFdvcmtlciogd29ya2VyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJSdW5Mb29wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTE4NjA0NzMwOGM2ZjA5MTk1ODc3
Njc5ZjdmMmE5MDc2YmVjMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyUnVuTG9vcC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wLmgiCisKKyNp
bmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGFza0ZvcndhcmRlciA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxUYXNrRm9yd2FyZGVyPiBjcmVhdGUoUGFzc093blB0cjxXZWJXb3JrZXJS
dW5Mb29wOjpUYXNrPiB0YXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
YXNrRm9yd2FyZGVyKHRhc2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworICAgICAgICBtX3Rhc2stPlJ1bigp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUYXNrRm9yd2FyZGVyKFBhc3NPd25QdHI8V2ViV29y
a2VyUnVuTG9vcDo6VGFzaz4gdGFzaykKKyAgICAgICAgOiBtX3Rhc2sodGFzaykKKyAgICB7Cisg
ICAgfQorCisgICAgT3duUHRyPFdlYldvcmtlclJ1bkxvb3A6OlRhc2s+IG1fdGFzazsKK307CisK
K30KKworV2ViV29ya2VyUnVuTG9vcDo6V2ViV29ya2VyUnVuTG9vcChXb3JrZXJSdW5Mb29wKiB3
b3JrZXJSdW5Mb29wKQorICAgIDogbV93b3JrZXJSdW5Mb29wKHdvcmtlclJ1bkxvb3ApCit7Cit9
CisKK3ZvaWQgV2ViV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soVGFzayogdGFzaykKK3sKKyAgICBt
X3dvcmtlclJ1bkxvb3AtPnBvc3RUYXNrKFRhc2tGb3J3YXJkZXI6OmNyZWF0ZShhZG9wdFB0cih0
YXNrKSkpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116869</attachid>
            <date>2011-11-28 19:14:57 -0800</date>
            <delta_ts>2011-11-28 19:48:52 -0800</delta_ts>
            <desc>updated changelogs</desc>
            <filename>bug-71757-20111128191456.patch</filename>
            <type>text/plain</type>
            <size>13006</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJiNDQ3MmEwNjdmMmFh
NWE3NzM2MWFiZjgyOGQ2OGNkYzM1MjFiNS4uZDU3MDJjODM3ODgxNTVlYzMzYTJiZjhlMmY1ZWEx
MTJiOWI1OGM5YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTI4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0gSW5kZXhlZERCIHRlc3RzIGZv
cnRoY29taW5nLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
Lmg6IEFkZCB0d28gbWV0aG9kcyB0aGF0IGFsbG93CisgICAgICAgIFdlYkNvcmUgdG8gbm90aWZ5
IGNocm9taXVtIHdoZW4gd29ya2VycyBzdGFydCBhbmQgc3RvcC4KKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6Ondvcmtl
clRocmVhZCk6IENhbGwgaW50byBQbGF0Zm9ybVN1cHBvcnQgd2hlbgorICAgICAgICB0aGUgd29y
a2VyJ3MgcnVubG9vcCBpcyBzdGFydGVkIGFuZCBzdG9wcGVkLgorCiAyMDExLTExLTI4ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBBc3BlY3QgUmF0
aW8gUHJvcGVydHkgSW5oZXJpdGFuY2UgQW5kIE1ha2UgdGhlIENvbXB1dGVkIFZhbHVlIEVxdWFs
IHRoZSBTcGVjaWZpZWQgVmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjEzZGZm
ZGI3ZTVmMGI5YWRjMWMzMzU5Y2IyOGIyMDFlMzg2ZjFkNi4uZDQ4MzZmOTUyYzk3YTVjNzcxNjBh
NWNjZjlmYmFhYjMyZDAwOThmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0MyBAQAorMjAxMS0xMS0yOCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViV29ya2VyUnVuTG9vcCB3cmFwcGVyIGFyb3VuZCBXb3JrZXJSdW5Mb29w
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1Nwor
CisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBlbWJlZGRlciB0byBwb3N0IHRhc2tzIHRvIHdlYmNv
cmUtY3JlYXRlZCB3b3JrZXIKKyAgICAgICAgdGhyZWFkcy4gIFdlYldvcmtlclJ1bkxvb3AgaXMg
YSB0aGluIHdyYXBwZXIgdGhhdCBqdXN0IGhvbGRzIGEKKyAgICAgICAgV29ya2VyUnVuTG9vcCou
ICBBcyBzdWNoLCBpdCBpcyBub3QgaGVhcCBhbGxvY2F0ZWQgYW5kIGNhbiBiZSBjb3BpZWQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOiBBZGRlZCBXZWJXb3JrZXJSdW5Mb29wLntjcHAsaH0KKworICAgICAgICAqIHB1YmxpYy9X
ZWJXb3JrZXJSdW5Mb29wLmg6IEFkZGVkLiBJbnRlcmZhY2UgdGhlIGVtYmVkZGVyIHdpbGwgdXNl
IHRvCisgICAgICAgIHBvc3QgVGFza3MgdG8gd29ya2VyIHRocmVhZHMgY3JlYXRlZCBpbiBXZWJD
b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOiBUaGVzZSBhcmUgdGhlIG9wZXJhdG9ycyBuZWNl
c3NhcnkgdG8gYWxsb3cKKyAgICAgICAgV2ViV29ya2VyUnVuTG9vcCB0byBiZSB1c2VkIGFzIGEg
a2V5IGluIGEgc3RkOjptYXAgdXNpbmcgdGhlIHZhbHVlIG9mCisgICAgICAgIHRoZSB1bmRlcmx5
aW5nIFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqIGZvciB0aGUgbWVhbmluZ2Z1bCBjb21wYXJpc29u
cy4KKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8KToKKworICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDogU3R1YnMgZm9yIHRoZSBlbWJlZGRlciB0bwor
ICAgICAgICBpbXBsZW1lbnQuCisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9y
dDo6ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZv
cm1TdXBwb3J0OjpkaWRTdG9wV29ya2VyUnVuTG9vcCk6CisKKyAgICAgICAgKiBzcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcDogV3JhcCBpbmNvbWluZyBXb3JrZXJSdW5Mb29wIG9iamVjdHMgaW4KKyAg
ICAgICAgV2ViV29ya2VyUnVuTG9vcEltcGwgb2JqZWN0cywgZm9yd2FyZCB0aGVtIHRvIFdlYktp
dFBsYXRmb3JtU3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6ZGlk
U3RhcnRXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6
ZGlkU3RvcFdvcmtlclJ1bkxvb3ApOgorCisgICAgICAgICogc3JjL1dlYldvcmtlclJ1bkxvb3Au
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcDo6V2ViV29ya2Vy
UnVuTG9vcCk6IFN0b3JlIGluY29taW5nCisgICAgICAgIFdvcmtlclJ1bkxvb3AgcG9pbnRlci4K
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcDo6cG9zdFRhc2spOiBXcmFwIGluY29t
aW5nIFRhc2sgaW4KKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaywgcG9zdCB0
byBzdG9yZWQgV29ya2VyUnVuTG9vcC4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9v
cDo6ZXF1YWxzKTogU3VwcG9ydCBmb3IgdGhlIG9wZXJhdG9ycyBtZW50aW9uZWQKKyAgICAgICAg
YWJvdmUuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6Omxlc3NUaGFuKTogRGl0
dG8uCisKIDIwMTEtMTEtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDEyNzMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4
IGE5NzNhNzU3YTc5NmJkOGE4ZTdmZDNjYTdkNzNjNGU2ZjI1ZDM4YWQuLjQwNzQ4MDQ5MjRjOTEz
MGQ1NjZkYWEyODU1MWUzMDc0NGExYTAzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xh
c3MgV2lkZ2V0OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tpZTsKIHN0cnVj
dCBGb250UmVuZGVyU3R5bGU7CkBAIC00MjAsNiArNDIxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVu
Z3RoKTsKICAgICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJh
c2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0aWMgYm9vbCBp
c0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0V29ya2Vy
UnVuTG9vcChXb3JrZXJSdW5Mb29wKik7CisgICAgc3RhdGljIHZvaWQgZGlkU3RvcFdvcmtlclJ1
bkxvb3AoV29ya2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDkyNzZjMjdkOTg0ZmFjMDE5
OGVjZTNmN2NkNGJlMTUxYzQxYzIzZWEuLmZmNWRmNjY2YzZhNWM2NzM1YjE4YWFlNGU3YzRlN2Fj
Mzk5NmIzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTEz
Niw2ICsxMzYsOSBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAgICAgICAg
ICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOwogICAgICAg
ICB9CiAgICAgfQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFBsYXRmb3JtU3VwcG9ydDo6
ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKCZtX3J1bkxvb3ApOworI2VuZGlmCiAKICAgICBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpOwogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xNDksNiArMTUyLDEwIEBAIHZvaWQqIFdvcmtlclRocmVh
ZDo6d29ya2VyVGhyZWFkKCkKIAogICAgIHJ1bkV2ZW50TG9vcCgpOwogCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisgICAgUGxhdGZvcm1TdXBwb3J0OjpkaWRTdG9wV29ya2VyUnVuTG9vcCgmbV9y
dW5Mb29wKTsKKyNlbmRpZgorCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9IG1fdGhy
ZWFkSUQ7CiAKICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5oYXNPbmVSZWYoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOGIwM2U0YTBjYzEyNDg4YjIxYWNmMTcwMmVlMzk4
ZjI3YWQwYzM2NS4uZmRmMDQyYWEwOGU2NDkzOGUxMzE0MmVmYzk1YTM5OWNiMDc5ZWNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJXb3JrZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJDbGllbnQu
aCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNjQ4LDYgKzY0OSw3IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
V29ya2VySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1bkxvb3AuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJS
dW5Mb29wLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29w
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWY5NjU3MWZhZTIzNzY3ZGYzNGI2ODk3N2MyNDdiZjBmYWI1OGY5YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtl
clJ1bkxvb3AuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXb3JrZXJS
dW5Mb29wX2gKKyNkZWZpbmUgV2ViV29ya2VyUnVuTG9vcF9oCisKKyNpbmNsdWRlICJXZWJDb21t
b24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2VyUnVuTG9vcDsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldvcmtlclJ1bkxvb3AgeworcHVibGljOgor
ICAgIGNsYXNzIFRhc2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGFzaygpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgPSAwOworICAgIH07CisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHBvc3RUYXNrKFRhc2sqKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxz
KGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
bGVzc1RoYW4oY29uc3QgV2ViV29ya2VyUnVuTG9vcCYpIGNvbnN0OworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgV2ViV29ya2VyUnVuTG9vcChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
Kik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpXb3JrZXJSdW5Mb29wKiBtX3dv
cmtlclJ1bkxvb3A7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYldvcmtl
clJ1bkxvb3AmIGEsIGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmIGIpCit7CisgICAgcmV0dXJuIGEu
ZXF1YWxzKGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViV29ya2VyUnVu
TG9vcCYgYSwgY29uc3QgV2ViV29ya2VyUnVuTG9vcCYgYikKK3sKKyAgICByZXR1cm4gYS5sZXNz
VGhhbihiKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5k
ZXggMDIzMjg5MmU1YTUwZDc2ZWVlZDRiZDViOGI4N2VlMDdjNGVhODY1YS4uNmMwZTc0ZjEyOTcy
YzdmMzc0NjM0MGFmZjY5YjMxMmRjMjVjYTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsgLy8gRklYTUU6
IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNs
YXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlVSTExvYWRlcjsKK2NsYXNzIFdlYldvcmtlclJ1bkxv
b3A7CiAKIGNsYXNzIFdlYktpdFBsYXRmb3JtU3VwcG9ydCB7CiBwdWJsaWM6CkBAIC0zMzQsNiAr
MzM1LDkgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBXZWJSVEMgZnVuY3Rp
b25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNvdXJjZXMuCiAgICAgdmlydHVh
bCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9uSGFuZGxlcihX
ZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFdvcmtlclJ1bkxvb3AoY29uc3QgV2ViV29ya2Vy
UnVuTG9vcCYpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYktpdFBsYXRmb3JtU3VwcG9ydCgp
IHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCmluZGV4IDE2NTgzNDFiZWFiNWJkNTNhMmZlY2E1YTU2MzViYmM2YTI5ZTliNTcuLjc4YTk0
YzcyNmQ1MmFmYzYyYmU4N2JiOGQ4ZmRhY2QwNTY1ZDE2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1
ZGUgIldlYldvcmtlckNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wLmgi
CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAt
MTA5OSw2ICsxMTAwLDE2IEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0Ojpwb3B1cHNBbGxvd2VkKE5Q
UCBucHApCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6ZGlk
U3RhcnRXb3JrZXJSdW5Mb29wKFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxh
dGZvcm1TdXBwb3J0KCktPmRpZFN0YXJ0V29ya2VyUnVuTG9vcChXZWJXb3JrZXJSdW5Mb29wKGxv
b3ApKTsKK30KKwordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmRpZFN0b3BXb3JrZXJSdW5Mb29wKFdv
cmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmRpZFN0
b3BXb3JrZXJSdW5Mb29wKFdlYldvcmtlclJ1bkxvb3AobG9vcCkpOworfQorCiAjaWYgRU5BQkxF
KFdPUktFUlMpCiBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRl
KFdvcmtlciogd29ya2VyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJX
b3JrZXJSdW5Mb29wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTE4NjA0NzMwOGM2ZjA5MTk1ODc3Njc5Zjdm
MmE5MDc2YmVjMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyUnVuTG9vcC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wLmgiCisKKyNpbmNsdWRl
ICJXb3JrZXJSdW5Mb29wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGFza0ZvcndhcmRlciA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxUYXNrRm9yd2FyZGVyPiBjcmVhdGUoUGFzc093blB0cjxXZWJXb3JrZXJSdW5Mb29w
OjpUYXNrPiB0YXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUYXNrRm9y
d2FyZGVyKHRhc2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworICAgICAgICBtX3Rhc2stPlJ1bigpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBUYXNrRm9yd2FyZGVyKFBhc3NPd25QdHI8V2ViV29ya2VyUnVu
TG9vcDo6VGFzaz4gdGFzaykKKyAgICAgICAgOiBtX3Rhc2sodGFzaykKKyAgICB7CisgICAgfQor
CisgICAgT3duUHRyPFdlYldvcmtlclJ1bkxvb3A6OlRhc2s+IG1fdGFzazsKK307CisKK30KKwor
V2ViV29ya2VyUnVuTG9vcDo6V2ViV29ya2VyUnVuTG9vcChXb3JrZXJSdW5Mb29wKiB3b3JrZXJS
dW5Mb29wKQorICAgIDogbV93b3JrZXJSdW5Mb29wKHdvcmtlclJ1bkxvb3ApCit7Cit9CisKK3Zv
aWQgV2ViV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soVGFzayogdGFzaykKK3sKKyAgICBtX3dvcmtl
clJ1bkxvb3AtPnBvc3RUYXNrKFRhc2tGb3J3YXJkZXI6OmNyZWF0ZShhZG9wdFB0cih0YXNrKSkp
OworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116874</attachid>
            <date>2011-11-28 19:48:57 -0800</date>
            <delta_ts>2011-11-28 23:59:39 -0800</delta_ts>
            <desc>including missing function defs</desc>
            <filename>bug-71757-20111128194856.patch</filename>
            <type>text/plain</type>
            <size>13251</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJiNDQ3MmEwNjdmMmFh
NWE3NzM2MWFiZjgyOGQ2OGNkYzM1MjFiNS4uZDU3MDJjODM3ODgxNTVlYzMzYTJiZjhlMmY1ZWEx
MTJiOWI1OGM5YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTI4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJXb3JrZXJSdW5M
b29wIHdyYXBwZXIgYXJvdW5kIFdvcmtlclJ1bkxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0gSW5kZXhlZERCIHRlc3RzIGZv
cnRoY29taW5nLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
Lmg6IEFkZCB0d28gbWV0aG9kcyB0aGF0IGFsbG93CisgICAgICAgIFdlYkNvcmUgdG8gbm90aWZ5
IGNocm9taXVtIHdoZW4gd29ya2VycyBzdGFydCBhbmQgc3RvcC4KKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6Ondvcmtl
clRocmVhZCk6IENhbGwgaW50byBQbGF0Zm9ybVN1cHBvcnQgd2hlbgorICAgICAgICB0aGUgd29y
a2VyJ3MgcnVubG9vcCBpcyBzdGFydGVkIGFuZCBzdG9wcGVkLgorCiAyMDExLTExLTI4ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBBc3BlY3QgUmF0
aW8gUHJvcGVydHkgSW5oZXJpdGFuY2UgQW5kIE1ha2UgdGhlIENvbXB1dGVkIFZhbHVlIEVxdWFs
IHRoZSBTcGVjaWZpZWQgVmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjEzZGZm
ZGI3ZTVmMGI5YWRjMWMzMzU5Y2IyOGIyMDFlMzg2ZjFkNi4uZDQ4MzZmOTUyYzk3YTVjNzcxNjBh
NWNjZjlmYmFhYjMyZDAwOThmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0MyBAQAorMjAxMS0xMS0yOCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViV29ya2VyUnVuTG9vcCB3cmFwcGVyIGFyb3VuZCBXb3JrZXJSdW5Mb29w
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1Nwor
CisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBlbWJlZGRlciB0byBwb3N0IHRhc2tzIHRvIHdlYmNv
cmUtY3JlYXRlZCB3b3JrZXIKKyAgICAgICAgdGhyZWFkcy4gIFdlYldvcmtlclJ1bkxvb3AgaXMg
YSB0aGluIHdyYXBwZXIgdGhhdCBqdXN0IGhvbGRzIGEKKyAgICAgICAgV29ya2VyUnVuTG9vcCou
ICBBcyBzdWNoLCBpdCBpcyBub3QgaGVhcCBhbGxvY2F0ZWQgYW5kIGNhbiBiZSBjb3BpZWQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOiBBZGRlZCBXZWJXb3JrZXJSdW5Mb29wLntjcHAsaH0KKworICAgICAgICAqIHB1YmxpYy9X
ZWJXb3JrZXJSdW5Mb29wLmg6IEFkZGVkLiBJbnRlcmZhY2UgdGhlIGVtYmVkZGVyIHdpbGwgdXNl
IHRvCisgICAgICAgIHBvc3QgVGFza3MgdG8gd29ya2VyIHRocmVhZHMgY3JlYXRlZCBpbiBXZWJD
b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJSdW5Mb29wOjpUYXNrOjp+VGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPT0pOiBUaGVzZSBhcmUgdGhlIG9wZXJhdG9ycyBuZWNl
c3NhcnkgdG8gYWxsb3cKKyAgICAgICAgV2ViV29ya2VyUnVuTG9vcCB0byBiZSB1c2VkIGFzIGEg
a2V5IGluIGEgc3RkOjptYXAgdXNpbmcgdGhlIHZhbHVlIG9mCisgICAgICAgIHRoZSB1bmRlcmx5
aW5nIFdlYkNvcmU6OldvcmtlclJ1bkxvb3AqIGZvciB0aGUgbWVhbmluZ2Z1bCBjb21wYXJpc29u
cy4KKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8KToKKworICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDogU3R1YnMgZm9yIHRoZSBlbWJlZGRlciB0bwor
ICAgICAgICBpbXBsZW1lbnQuCisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9y
dDo6ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZv
cm1TdXBwb3J0OjpkaWRTdG9wV29ya2VyUnVuTG9vcCk6CisKKyAgICAgICAgKiBzcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcDogV3JhcCBpbmNvbWluZyBXb3JrZXJSdW5Mb29wIG9iamVjdHMgaW4KKyAg
ICAgICAgV2ViV29ya2VyUnVuTG9vcEltcGwgb2JqZWN0cywgZm9yd2FyZCB0aGVtIHRvIFdlYktp
dFBsYXRmb3JtU3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6ZGlk
U3RhcnRXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6
ZGlkU3RvcFdvcmtlclJ1bkxvb3ApOgorCisgICAgICAgICogc3JjL1dlYldvcmtlclJ1bkxvb3Au
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcDo6V2ViV29ya2Vy
UnVuTG9vcCk6IFN0b3JlIGluY29taW5nCisgICAgICAgIFdvcmtlclJ1bkxvb3AgcG9pbnRlci4K
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9vcDo6cG9zdFRhc2spOiBXcmFwIGluY29t
aW5nIFRhc2sgaW4KKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaywgcG9zdCB0
byBzdG9yZWQgV29ya2VyUnVuTG9vcC4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyUnVuTG9v
cDo6ZXF1YWxzKTogU3VwcG9ydCBmb3IgdGhlIG9wZXJhdG9ycyBtZW50aW9uZWQKKyAgICAgICAg
YWJvdmUuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3A6Omxlc3NUaGFuKTogRGl0
dG8uCisKIDIwMTEtMTEtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDEyNzMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4
IGE5NzNhNzU3YTc5NmJkOGE4ZTdmZDNjYTdkNzNjNGU2ZjI1ZDM4YWQuLjQwNzQ4MDQ5MjRjOTEz
MGQ1NjZkYWEyODU1MWUzMDc0NGExYTAzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBLVVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xh
c3MgV2lkZ2V0OworY2xhc3MgV29ya2VyUnVuTG9vcDsKIAogc3RydWN0IENvb2tpZTsKIHN0cnVj
dCBGb250UmVuZGVyU3R5bGU7CkBAIC00MjAsNiArNDIxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVu
Z3RoKTsKICAgICBzdGF0aWMgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJh
c2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICBzdGF0aWMgYm9vbCBp
c0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKKworICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0V29ya2Vy
UnVuTG9vcChXb3JrZXJSdW5Mb29wKik7CisgICAgc3RhdGljIHZvaWQgZGlkU3RvcFdvcmtlclJ1
bkxvb3AoV29ya2VyUnVuTG9vcCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDkyNzZjMjdkOTg0ZmFjMDE5
OGVjZTNmN2NkNGJlMTUxYzQxYzIzZWEuLmZmNWRmNjY2YzZhNWM2NzM1YjE4YWFlNGU3YzRlN2Fj
Mzk5NmIzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTEz
Niw2ICsxMzYsOSBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAgICAgICAg
ICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOwogICAgICAg
ICB9CiAgICAgfQorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFBsYXRmb3JtU3VwcG9ydDo6
ZGlkU3RhcnRXb3JrZXJSdW5Mb29wKCZtX3J1bkxvb3ApOworI2VuZGlmCiAKICAgICBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpOwogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xNDksNiArMTUyLDEwIEBAIHZvaWQqIFdvcmtlclRocmVh
ZDo6d29ya2VyVGhyZWFkKCkKIAogICAgIHJ1bkV2ZW50TG9vcCgpOwogCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisgICAgUGxhdGZvcm1TdXBwb3J0OjpkaWRTdG9wV29ya2VyUnVuTG9vcCgmbV9y
dW5Mb29wKTsKKyNlbmRpZgorCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9IG1fdGhy
ZWFkSUQ7CiAKICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5oYXNPbmVSZWYoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOGIwM2U0YTBjYzEyNDg4YjIxYWNmMTcwMmVlMzk4
ZjI3YWQwYzM2NS4uZmRmMDQyYWEwOGU2NDkzOGUxMzE0MmVmYzk1YTM5OWNiMDc5ZWNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJXb3JrZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJDbGllbnQu
aCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmgnLApAQCAtNjQ4LDYgKzY0OSw3IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
V29ya2VySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYldvcmtlclJ1bkxvb3AuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJS
dW5Mb29wLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29w
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWY5NjU3MWZhZTIzNzY3ZGYzNGI2ODk3N2MyNDdiZjBmYWI1OGY5YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtl
clJ1bkxvb3AuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJXb3JrZXJS
dW5Mb29wX2gKKyNkZWZpbmUgV2ViV29ya2VyUnVuTG9vcF9oCisKKyNpbmNsdWRlICJXZWJDb21t
b24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV29ya2VyUnVuTG9vcDsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldvcmtlclJ1bkxvb3AgeworcHVibGljOgor
ICAgIGNsYXNzIFRhc2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGFzaygpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgPSAwOworICAgIH07CisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHBvc3RUYXNrKFRhc2sqKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxz
KGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
bGVzc1RoYW4oY29uc3QgV2ViV29ya2VyUnVuTG9vcCYpIGNvbnN0OworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgV2ViV29ya2VyUnVuTG9vcChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
Kik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpXb3JrZXJSdW5Mb29wKiBtX3dv
cmtlclJ1bkxvb3A7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYldvcmtl
clJ1bkxvb3AmIGEsIGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmIGIpCit7CisgICAgcmV0dXJuIGEu
ZXF1YWxzKGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViV29ya2VyUnVu
TG9vcCYgYSwgY29uc3QgV2ViV29ya2VyUnVuTG9vcCYgYikKK3sKKyAgICByZXR1cm4gYS5sZXNz
VGhhbihiKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5k
ZXggMDIzMjg5MmU1YTUwZDc2ZWVlZDRiZDViOGI4N2VlMDdjNGVhODY1YS4uNmMwZTc0ZjEyOTcy
YzdmMzc0NjM0MGFmZjY5YjMxMmRjMjVjYTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsgLy8gRklYTUU6
IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNs
YXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlVSTExvYWRlcjsKK2NsYXNzIFdlYldvcmtlclJ1bkxv
b3A7CiAKIGNsYXNzIFdlYktpdFBsYXRmb3JtU3VwcG9ydCB7CiBwdWJsaWM6CkBAIC0zMzQsNiAr
MzM1LDkgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBXZWJSVEMgZnVuY3Rp
b25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNvdXJjZXMuCiAgICAgdmlydHVh
bCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9uSGFuZGxlcihX
ZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRXb3JrZXJSdW5Mb29wKGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFdvcmtlclJ1bkxvb3AoY29uc3QgV2ViV29ya2Vy
UnVuTG9vcCYpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYktpdFBsYXRmb3JtU3VwcG9ydCgp
IHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCmluZGV4IDE2NTgzNDFiZWFiNWJkNTNhMmZlY2E1YTU2MzViYmM2YTI5ZTliNTcuLjc4YTk0
YzcyNmQ1MmFmYzYyYmU4N2JiOGQ4ZmRhY2QwNTY1ZDE2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1
ZGUgIldlYldvcmtlckNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wLmgi
CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAt
MTA5OSw2ICsxMTAwLDE2IEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0Ojpwb3B1cHNBbGxvd2VkKE5Q
UCBucHApCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6ZGlk
U3RhcnRXb3JrZXJSdW5Mb29wKFdvcmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxh
dGZvcm1TdXBwb3J0KCktPmRpZFN0YXJ0V29ya2VyUnVuTG9vcChXZWJXb3JrZXJSdW5Mb29wKGxv
b3ApKTsKK30KKwordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmRpZFN0b3BXb3JrZXJSdW5Mb29wKFdv
cmtlclJ1bkxvb3AqIGxvb3ApCit7CisgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmRpZFN0
b3BXb3JrZXJSdW5Mb29wKFdlYldvcmtlclJ1bkxvb3AobG9vcCkpOworfQorCiAjaWYgRU5BQkxF
KFdPUktFUlMpCiBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRl
KFdvcmtlciogd29ya2VyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJX
b3JrZXJSdW5Mb29wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWJlOTQ3NzY4MWVlYjkyYjdkNDNkMzNhZGMz
YWRjODZiMjVlZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyUnVuTG9vcC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJSdW5Mb29wLmgiCisKKyNpbmNsdWRl
ICJXb3JrZXJSdW5Mb29wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGFza0ZvcndhcmRlciA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxUYXNrRm9yd2FyZGVyPiBjcmVhdGUoUGFzc093blB0cjxXZWJXb3JrZXJSdW5Mb29w
OjpUYXNrPiB0YXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUYXNrRm9y
d2FyZGVyKHRhc2spKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworICAgICAgICBtX3Rhc2stPlJ1bigpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBUYXNrRm9yd2FyZGVyKFBhc3NPd25QdHI8V2ViV29ya2VyUnVu
TG9vcDo6VGFzaz4gdGFzaykKKyAgICAgICAgOiBtX3Rhc2sodGFzaykKKyAgICB7CisgICAgfQor
CisgICAgT3duUHRyPFdlYldvcmtlclJ1bkxvb3A6OlRhc2s+IG1fdGFzazsKK307CisKK30KKwor
V2ViV29ya2VyUnVuTG9vcDo6V2ViV29ya2VyUnVuTG9vcChXb3JrZXJSdW5Mb29wKiB3b3JrZXJS
dW5Mb29wKQorICAgIDogbV93b3JrZXJSdW5Mb29wKHdvcmtlclJ1bkxvb3ApCit7Cit9CisKK3Zv
aWQgV2ViV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soVGFzayogdGFzaykKK3sKKyAgICBtX3dvcmtl
clJ1bkxvb3AtPnBvc3RUYXNrKFRhc2tGb3J3YXJkZXI6OmNyZWF0ZShhZG9wdFB0cih0YXNrKSkp
OworfQorCitib29sIFdlYldvcmtlclJ1bkxvb3A6OmVxdWFscyhjb25zdCBXZWJXb3JrZXJSdW5M
b29wJiBvKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlclJ1bkxvb3AgPT0gby5tX3dvcmtl
clJ1bkxvb3A7Cit9CisKK2Jvb2wgV2ViV29ya2VyUnVuTG9vcDo6bGVzc1RoYW4oY29uc3QgV2Vi
V29ya2VyUnVuTG9vcCYgbykgY29uc3QKK3sKKyAgICByZXR1cm4gbV93b3JrZXJSdW5Mb29wIDwg
by5tX3dvcmtlclJ1bkxvb3A7Cit9CisKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>