<?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>22720</bug_id>
          
          <creation_ts>2008-12-07 03:18:32 -0800</creation_ts>
          <short_desc>Make XMLHttpRequest work in Workers</short_desc>
          <delta_ts>2009-03-04 07:48:10 -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>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>23175</dependson>
    
    <dependson>23599</dependson>
    
    <dependson>23618</dependson>
    
    <dependson>23636</dependson>
    
    <dependson>23688</dependson>
    
    <dependson>24088</dependson>
    
    <dependson>24089</dependson>
    
    <dependson>24090</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>jchaffraix</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101725</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:18:32 -0800</bug_when>
    <thetext>This bug tracks work necessary to make XMLHttpRequest available to code running in Web Workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101734</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:55:47 -0800</bug_when>
    <thetext>There is no goal to make responseXML work yet though - per draft spec, it just returns null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101737</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:58:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/6425806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102652</commentid>
    <comment_count>3</comment_count>
      <attachid>26050</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2008-12-16 04:47:11 -0800</bug_when>
    <thetext>Created attachment 26050
Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp

This is my 1st time using git for one of these patches, so my apologies if I made a mistake with the format of the diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102958</commentid>
    <comment_count>4</comment_count>
      <attachid>26138</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2008-12-18 20:46:36 -0800</bug_when>
    <thetext>Created attachment 26138
Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp

Modified the previous patch by not sending some messages when the inspector isn&apos;t enabled and a few more document() clean-ups in XHR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102993</commentid>
    <comment_count>5</comment_count>
      <attachid>26144</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2008-12-19 09:39:34 -0800</bug_when>
    <thetext>Created attachment 26144
Preliminary work for making async load available for workers.

This attachment isn&apos;t intended as a patch yet.  I&apos;ve attached it simply to get any feedback on the shape of what I&apos;m doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103361</commentid>
    <comment_count>6</comment_count>
      <attachid>26138</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-24 07:01:01 -0800</bug_when>
    <thetext>Comment on attachment 26138
Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp

What is the big reason to post ScriptStrings across thread boundaries? XHR has ScriptString as data member to avoid copying - but passing data across threads involves copying anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103367</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2008-12-24 10:34:37 -0800</bug_when>
    <thetext>&gt; What is the big reason to post ScriptStrings across thread boundaries? 
I don&apos;t understand the tradeoffs regarding why one should do something else.

For example, one alternative that I can think of would be to create a String but this would involve two copies.  One copy from the UString to the String, then another from the String to a UString when calling
InspectorController::resourceRetrievedByXMLHttpRequest.

Another alternative would be just to allocate space for the string and do a memcpy.  Then before calling InspectorController::resourceRetrievedByXMLHttpRequest construct a UString take takes ownership of the space.  This involves one copy (but I think it still involves another export from JavaScriptCore to export to UString constructor that takes ownership as well as a change to ScriptString to expose it).
 

So I see two copies or a different export from JavaScriptCore as alternatives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103371</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-24 11:55:08 -0800</bug_when>
    <thetext>I think that Vector&lt;UChar&gt; may be more appropriate for passing XHR data between threads. This isn&apos;t about scripting, so UString/ScriptString seem out of place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103403</commentid>
    <comment_count>9</comment_count>
      <attachid>26246</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2008-12-25 01:11:27 -0800</bug_when>
    <thetext>Created attachment 26246
Addressed ap&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103410</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-25 03:40:37 -0800</bug_when>
    <thetext>-#include &quot;PlatformString.h&quot;

I don&apos;t see why this include can be removed from ScriptString.h - operator+=(const String&amp; s) uses the definition of String class.

+        bool inspectorEnabled = document()-&gt;page() ? document()-&gt;page()-&gt;inspectorController()-&gt;enabled() : false;
+        RefPtr&lt;WorkerThread&gt; thread = WorkerThread::create(m_scriptURL, userAgent, m_cachedScript-&gt;script(), inspectorEnabled, m_messagingProxy);

So, Inspector will only be notified of XHR loads only if it was open when the thread was created, not if it is open when load finishes?

+    , m_startupData(new WorkerThreadStartupData(scriptURL, userAgent, sourceCode, inspectorEnabled))

It would be slightly nicer if WorkerThreadStartupData exposed a static create() method instead of a constructor, so that you wouldn&apos;t have to call &quot;new&quot; explicitly.

All threading-related changes look good to me, but I don&apos;t know what the expected behavior for console logging and Inspector is (more specifically, when it is OK to omit notifications, and which messages should be inspectorOnly). I doubt that &quot;inspector was open when the thread started&quot; is a good check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106232</commentid>
    <comment_count>11</comment_count>
      <attachid>26838</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-18 18:18:01 -0800</bug_when>
    <thetext>Created attachment 26838
Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106248</commentid>
    <comment_count>12</comment_count>
      <attachid>26838</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-19 09:33:31 -0800</bug_when>
    <thetext>Comment on attachment 26838
Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp

&gt; +        Provde a generic class to handle the pattern of task callbacks across worker/parent threads.  It

Typo: Provde.

&gt; -#include &quot;PlatformString.h&quot;

I still don&apos;t see why it&apos;s ok to remove this include.

&gt; +void Document::addMessageToConsole(MessageSource source, MessageLevel level, const String&amp; message, unsigned lineNumber, const String&amp; sourceURL, bool inspectorOnly)

We&apos;re becoming more and more passionate about preferring named enums to boolean constants.

&gt; +#include &quot;wtf/PassRefPtr.h&quot;

This should be a &quot;&lt;&gt;&quot; include.

&gt; +        bool isCallbackAllowed()

There is no &quot;callback&quot; in this context, so the name is not ideal. Maybe canPerformTask()?

&gt; +    PassRefPtr&lt;GenericWorkerTask6&lt;P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP6&gt; &gt; createCallbackTask(
&gt; +        WorkerMessagingProxy* messagingProxy,
&gt; +        void (*method)(ScriptExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6),

I think there is a typedef for this type (Method) that you could use here. Same for return type.

In general, this class is almost a generic wrapper for method invocation, having it all just for workers may be sub-optimal. I&apos;m not requesting that you do anything about this now.

&gt; +static void AddMessageToConsoleCallback(ScriptExecutionContext* context, MessageSource source, MessageLevel level, const String&amp; message, unsigned lineNumber, const String&amp; sourceURL, bool inspectorOnly)

Please fix this to use a lower case &quot;a&quot; in &quot;add&quot;.

&gt; +void WorkerContext::addMessageToConsole(MessageSource source, MessageLevel level, const String&amp; message, unsigned lineNumber, const String&amp; sourceURL, bool inspectorOnly)
&gt; +{
&gt; +    PassRefPtr&lt;Task&gt; task;

This should be RefPtr. PassRefPtr is just for passing function arguments and return values (and something that we will replace with C++0x move semantics one day in far, far future).

&gt; +    // TODO(levin): The implementation is pending the fixes in https://bugs.webkit.org/show_bug.cgi?id=23175
&gt; +    ASSERT(0);

We use FIXME, not TODO, and don&apos;t add commenter&apos;s name (svn blame to the rescue). You could also use notImplemented() macro, or ASSERT_NOT_REACHED().

&gt; +        void postTaskToParentContext(PassRefPtr&lt;Task&gt; task); // Executes the task on the parent&apos;s context&apos;s thread asynchronously.

I think that you may have too many &quot;&apos;s&quot; here.

&gt; +    context-&gt;addMessageToConsole(JSMessageSource, ErrorMessageLevel, message, 1, String(), false);

Here is the reason why we prefer named enumerations - it&apos;s not obvious at all what &quot;false&quot; means here.

This is almost ready to land, but there are more minor nitpicks than it is practical to correct when landing, so I&apos;ll ask for one more quick round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106249</commentid>
    <comment_count>13</comment_count>
      <attachid>26842</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-19 09:34:02 -0800</bug_when>
    <thetext>Created attachment 26842
Two changes from the previous patch: Added back the PlatformString.h include and changed a method name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106266</commentid>
    <comment_count>14</comment_count>
      <attachid>26846</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-19 11:44:40 -0800</bug_when>
    <thetext>Created attachment 26846
Addressed comments form last patch.

&gt; &gt; +    PassRefPtr&lt;GenericWorkerTask6&lt;P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP6&gt; &gt; createCallbackTask(
&gt; &gt; +        WorkerMessagingProxy* messagingProxy,
&gt; &gt; +        void (*method)(ScriptExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6),

&gt; I think there is a typedef for this type (Method) that you could use here. Same
&gt; for return type.
Only within the template class.  The reason why this function isn&apos;t part of the class is because C++ doesn&apos;t seem to allow the types to be inferred (without being stated explicitly).  afaik, this is possible within a class.  (All template parameter would be have to be stated explicitily).


&gt; In general, this class is almost a generic wrapper for method invocation,
&gt; having it all just for workers may be sub-optimal. I&apos;m not requesting that you
&gt; do anything about this now.
I see what you mean.  I&apos;ll think about this but I may not get to it right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106269</commentid>
    <comment_count>15</comment_count>
      <attachid>26847</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-19 11:49:37 -0800</bug_when>
    <thetext>Created attachment 26847
Addressed comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106271</commentid>
    <comment_count>16</comment_count>
      <attachid>26847</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-19 12:19:49 -0800</bug_when>
    <thetext>Comment on attachment 26847
Addressed comments.

+    switch (destination) {
+    case InspectorControllerDestination:

We indent cases deeper. Also, it will be slightly beneficial to replace break statements with return ones, and to add ASSERT_NOT_REACHED (gcc checks for forgotten cases, but only at compile time, not runtime).

+    RefPtr&lt;Task&gt; task;
+    {
+        String messageCopy = message.copy();
+        String sourceURLCopy = sourceURL.copy();
+        task = createCallbackTask(m_thread-&gt;messagingProxy(), &amp;addMessageTask, destination, source, level, messageCopy, lineNumber, sourceURLCopy);
+    }
+    postTaskToParentContext(task.release());

I think this needs a comment explaining that we&apos;re avoiding a race condition with this construct. As discussed on IRC, this can probably be simplified if you change createCallbackTask to take const references - but you still need an explanatory comment.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106274</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-19 12:33:01 -0800</bug_when>
    <thetext>&gt; We indent cases deeper.

Dave pointed out that I was wrong. Oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106275</commentid>
    <comment_count>18</comment_count>
      <attachid>26848</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-19 12:35:28 -0800</bug_when>
    <thetext>Created attachment 26848
Addressed comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106278</commentid>
    <comment_count>19</comment_count>
      <attachid>26850</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-19 13:29:08 -0800</bug_when>
    <thetext>Created attachment 26850
Remove a few more document() from xhr code (with comments addressed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106279</commentid>
    <comment_count>20</comment_count>
      <attachid>26850</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-19 13:34:59 -0800</bug_when>
    <thetext>Comment on attachment 26850
Remove a few more document() from xhr code (with comments addressed).

r=me

+    // gets called after postTaskToParentContext which causes a race condition.)  TODO: Even better would be to have
+    // adapters for the parameters to do copies of them as appropriate, and this would also fix this issue.

We don&apos;t use TODO (I&apos;d omit this part of the comment, as it doesn&apos;t describe any bug, just a random idea we had when discussing the code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106280</commentid>
    <comment_count>21</comment_count>
      <attachid>26851</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-19 13:38:29 -0800</bug_when>
    <thetext>Created attachment 26851
same as above but removed TODO from comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106283</commentid>
    <comment_count>22</comment_count>
      <attachid>26851</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-19 14:10:07 -0800</bug_when>
    <thetext>Comment on attachment 26851
same as above but removed TODO from comment.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/ScriptString.h
	M	WebCore/dom/Document.cpp
	M	WebCore/dom/Document.h
	M	WebCore/dom/ScriptExecutionContext.h
	M	WebCore/dom/WorkerContext.cpp
	M	WebCore/dom/WorkerContext.h
	M	WebCore/dom/WorkerMessagingProxy.cpp
	M	WebCore/dom/WorkerMessagingProxy.h
	M	WebCore/dom/WorkerThread.h
	M	WebCore/xml/XMLHttpRequest.cpp
	M	WebCore/xml/XMLHttpRequest.h
Committed r40037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106284</commentid>
    <comment_count>23</comment_count>
      <attachid>26850</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-19 14:10:34 -0800</bug_when>
    <thetext>Comment on attachment 26850
Remove a few more document() from xhr code (with comments addressed).

clearing review flag now this is landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106285</commentid>
    <comment_count>24</comment_count>
      <attachid>26851</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-19 14:10:50 -0800</bug_when>
    <thetext>Comment on attachment 26851
same as above but removed TODO from comment.

obsolete as this is landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106311</commentid>
    <comment_count>25</comment_count>
      <attachid>26855</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-20 00:35:52 -0800</bug_when>
    <thetext>Created attachment 26855
Part 2: More work on cleaning up instances of document in the XMLHttpRequest class.

Some things that you may want to note:
1. I didn&apos;t make the files that I added to the xcode project &quot;private&quot;.  Some files are and some aren&apos;t and I didn&apos;t get the distinction to understand what to do.
2. didFail() got split into two methods, but the original didFail() picked up a call to internalAbort();  As far as I could tell this is all fine, but it was needed to mimic the old behavior of willSendRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106325</commentid>
    <comment_count>26</comment_count>
      <attachid>26855</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-20 04:49:35 -0800</bug_when>
    <thetext>Comment on attachment 26855
Part 2: More work on cleaning up instances of document in the XMLHttpRequest class.

+    PassRefPtr&lt;DocumentXMLHttpRequestLoader&gt; loader = adoptRef(new DocumentXMLHttpRequestLoader(document, client, request, callbacksSetting, contentSniff));

Local variables should use RefPtr, not PassRefPtr.

+    ASSERT(document &amp;&amp; client);

This assertion combines two checks, so if it fails, one won&apos;t know from the printed error message which part failed. It&apos;s better to split it in two.

+    if (!m_loader)
+        return;
+    m_loader-&gt;clearClient();

I think that this would look better with negated check: if (m_loader) m_loader-&gt;clearClient().

+    enum LoadCallbacks {
+        NoLoadCallbacks,
+        DoLoadCallbacks
+    };

I think that names closer to original ones could be better (maybe SendLoadCallbacks/DoNotSendLoadCallbacks?)

+    class XMLHttpRequestLoader : Noncopyable {
+    public:
+        static PassRefPtr&lt;XMLHttpRequestLoader&gt; create(ScriptExecutionContext*, XMLHttpRequestLoaderClient*, const ResourceRequest&amp;, LoadCallbacks, ContentSniff);

How can this (using PassRefPtr with a non-RefCountable class) work?

As discussed on IRC, XMLHttpRequestLoader needs some refactoring, or at least renaming, to be more suitable for importScripts() use in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106326</commentid>
    <comment_count>27</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-20 05:00:38 -0800</bug_when>
    <thetext>&gt;  I didn&apos;t make the files that I added to the xcode project &quot;private&quot;.  Some
&gt; files are and some aren&apos;t and I didn&apos;t get the distinction to understand what
&gt; to do.

Private headers are copied to WebCore.framework&apos;s PrivateHeaders directory, so they are available when building WebKit. If &quot;project&quot; didn&apos;t result in WebKit build failures, then it is the correct option to use.

&gt; didFail() got split into two methods, but the original didFail() picked up a
&gt; call to internalAbort();

I didn&apos;t quite understand this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106445</commentid>
    <comment_count>28</comment_count>
      <attachid>26888</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-20 23:43:56 -0800</bug_when>
    <thetext>Created attachment 26888
Part 2: More work on cleaning up instances of document in the XMLHttpRequest class.

&gt; As discussed on IRC, XMLHttpRequestLoader needs some refactoring, or at least
&gt; renaming, to be more suitable for importScripts() use in the future.
After discussion with Maciej on irc, we (really he suggested) decided upon ThreadableLoader because the key distinguishing thing about this loader is that it can be used on threads (other than the main one).

&gt; How can this (using PassRefPtr with a non-RefCountable class) work? [for ThreadableLoader]
It exposes ref()/deref() methods which is all that RefPtr/PassRefPtr templates rely on.

&gt;&gt; didFail() got split into two methods, but the original didFail() picked up a
&gt;&gt; call to internalAbort();

&gt; I didn&apos;t quite understand this.
XHR::didFail used to look like this:

void XMLHttpRequest::didFail(SubresourceLoader*, const ResourceError&amp; error)
{
    // If we are already in an error state, for instance we called abort(), bail out early.
    if (m_error)
        return;

    if (error.isCancellation()) {
        abortError();
        return;
    }

    networkError();
    return;
}

But the cancel case has been moved into its own method, so the code should look like this:

void XMLHttpRequest::didFail(const ResourceError&amp; error)
{
    // If we are already in an error state, for instance we called abort(), bail out early.
    if (m_error)
        return;

    networkError();
}

However, the willSendRequest callback has been moved into the loader to avoid bouncing between threads for this simple check.  (It probably will be made an extensibility point due to importScript using the same loader.) 

If the willSendRequest check in the loader fails, then XMLHttpRequest::didFail is called. In order, to retain the old behavior of XMLHttpRequest::willSendRequest a call to internalAbort() is now in XHR::didFail().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106456</commentid>
    <comment_count>29</comment_count>
      <attachid>26888</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-21 08:02:34 -0800</bug_when>
    <thetext>Comment on attachment 26888
Part 2: More work on cleaning up instances of document in the XMLHttpRequest class.

+        * Abstracted away the sync and async requests behind the ThreadableLoader class, which
+          will get an implementation for Workers.  It follows the same model as SubresourceLoader, since
+          it is a thin wrapper around it.

I don&apos;t think this is quite accurate - DocumentThreadableLoader is a wrapper around SubresourceLoader, but ThreadableLoader is not.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106478</commentid>
    <comment_count>30</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-21 11:44:14 -0800</bug_when>
    <thetext>ap is correct about the comment in the ChangeLog.

Alternative text for the ChangeLog: 
        * Abstracted away the sync and async requests behind the ThreadableLoader class, which
          will get an implementation for Workers.  ThreadableLoader follows the same model as SubresourceLoader
          because DocumentThreadableLoader is a thin wrapper around SubresourceLoader.
          Also, WorkerThreadableLoader (coming soon) will use DocumentThreadableLoader to get things done.

I could put up a patch with this change if that works better for the lander.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106549</commentid>
    <comment_count>31</comment_count>
      <attachid>26888</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-21 17:31:04 -0800</bug_when>
    <thetext>Comment on attachment 26888
Part 2: More work on cleaning up instances of document in the XMLHttpRequest class.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.scons
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/WebCoreSources.bkl
	A	WebCore/loader/DocumentThreadableLoader.cpp
	A	WebCore/loader/DocumentThreadableLoader.h
	M	WebCore/loader/SubresourceLoaderClient.h
	A	WebCore/loader/ThreadableLoader.cpp
	A	WebCore/loader/ThreadableLoader.h
	A	WebCore/loader/ThreadableLoaderClient.h
	M	WebCore/xml/XMLHttpRequest.cpp
	M	WebCore/xml/XMLHttpRequest.h
Committed r40103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106583</commentid>
    <comment_count>32</comment_count>
      <attachid>26925</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-22 00:32:22 -0800</bug_when>
    <thetext>Created attachment 26925
Part 3: Add ability for HTTPHeaderMap to be transfered across threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106585</commentid>
    <comment_count>33</comment_count>
      <attachid>26925</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-22 00:37:34 -0800</bug_when>
    <thetext>Comment on attachment 26925
Part 3: Add ability for HTTPHeaderMap to be transfered across threads.

&gt; +using std::auto_ptr;
&gt; +using std::make_pair;
&gt; +using std::pair;

We usually just use &quot;using std&quot;, unless there are conflicts.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106586</commentid>
    <comment_count>34</comment_count>
      <attachid>26925</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-22 00:58:44 -0800</bug_when>
    <thetext>Comment on attachment 26925
Part 3: Add ability for HTTPHeaderMap to be transfered across threads.

Committed revision 40123, clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106603</commentid>
    <comment_count>35</comment_count>
      <attachid>26927</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-22 09:21:29 -0800</bug_when>
    <thetext>Created attachment 26927
Part 4: Add ability for ResourceRequest/ResourceResponse to be transfered across threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106609</commentid>
    <comment_count>36</comment_count>
      <attachid>26927</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-22 10:00:23 -0800</bug_when>
    <thetext>Comment on attachment 26927
Part 4: Add ability for ResourceRequest/ResourceResponse to be transfered across threads.

&gt; + * Copyright (C) 2009, Google Inc. All rights reserved.

An extra comma here and in other modified files.

What is the big difference between ResourceResponseBase and ResourceResponseData (ditto for request counterparts)? Why are separate classes necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106613</commentid>
    <comment_count>37</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-22 10:17:18 -0800</bug_when>
    <thetext>&gt; An extra comma here and in other modified files.
Working on it.


&gt; What is the big difference between ResourceResponseBase and
&gt; ResourceResponseData (ditto for request counterparts)? Why are separate classes
&gt; necessary?

HTTPHeaderMap became OwnPtr&lt;HTTPHeaderMapData&gt;.  HTTPHeaderMap can&apos;t be copied across thread due to its use of AtomicString.

Perhaps I could make a common base class that both derive from with all of the data that can be copied using the same data type across threads. (I have a hard time thinking of a name for it.  Perhaps ThreadableResourceResponseBase?)  

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106729</commentid>
    <comment_count>38</comment_count>
      <attachid>26965</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-23 02:11:53 -0800</bug_when>
    <thetext>Created attachment 26965
Part 4: Add ability for ResourceRequest/ResourceResponse to be transfered across threads.

Addressed all comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106733</commentid>
    <comment_count>39</comment_count>
      <attachid>26965</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-23 02:18:37 -0800</bug_when>
    <thetext>Comment on attachment 26965
Part 4: Add ability for ResourceRequest/ResourceResponse to be transfered across threads.

Looks good, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106753</commentid>
    <comment_count>40</comment_count>
      <attachid>26965</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-23 08:08:02 -0800</bug_when>
    <thetext>Comment on attachment 26965
Part 4: Add ability for ResourceRequest/ResourceResponse to be transfered across threads.

Committed revision 40162.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106795</commentid>
    <comment_count>41</comment_count>
      <attachid>26981</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-23 13:53:53 -0800</bug_when>
    <thetext>Created attachment 26981
Part 5: Add a Worker implementation for the async portion of ThreadableLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106903</commentid>
    <comment_count>42</comment_count>
      <attachid>27006</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-24 21:51:51 -0800</bug_when>
    <thetext>Created attachment 27006
Part 6: Small adjustments to the ThreadableLoader::loadResourceSynchronously to make it easier to implement for Workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107023</commentid>
    <comment_count>43</comment_count>
      <attachid>26981</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-26 00:27:09 -0800</bug_when>
    <thetext>Comment on attachment 26981
Part 5: Add a Worker implementation for the async portion of ThreadableLoader.

+        for that ar to be used on another thread.

Typo: &quot;ar&quot;.

 #include &quot;ScriptExecutionContext.h&quot;
+#include &quot;PlatformString.h&quot;

Please order includes alphabetically.

+            return !m_messagingProxy || !m_messagingProxy-&gt;askedToTerminate();

As discussed on IRC, I think that this can be make proxy/task lifetime unclear to someone reading the code (at a first glance, I certainly thought that you were changing it). For tasks that do not need MessageProxy to operate, it&apos;s better not to have it in the structure at all.

+    template&lt;typename T&gt; struct CrossThreadAdapter { static T&amp; adapt(T&amp; parameter) { return parameter; } };
+    template&lt;&gt; struct CrossThreadAdapter&lt;String&gt; { static String adapt(String&amp; parameter) { return parameter.copy(); } };

Can this be made to fail on unknown types? I think you&apos;d need specializations for all integral types that can be copied directly, but there aren&apos;t too many in C++.

+void WorkerThreadableLoader::createLoader(ScriptExecutionContext* context, WorkerThreadableLoader* workerLoader, auto_ptr&lt;CrossThreadResourceRequestData&gt; requestData, LoadCallbacks callbacksSetting, ContentSniff contentSniff)

This function runs on the main thread, correct? I think it would be nice to ASSERT(isMainThread()) to make it clear.

+        workerContext-&gt;postTaskToParentContext(createCallbackTask(NULL, &amp;WorkerThreadableLoader::doFinalDeref, this));

We use 0 in C++ code, not NULL.

Will this code (and other code that posts to parent context) fail for nested workers? I think that marking such spots with FIXMEs could be helpful.

+void WorkerThreadableLoader::tellClientDidReceiveData(ScriptExecutionContext*, WorkerThreadableLoader* workerLoader, char* copiedData, int lengthReceived)
+{
+    if (!workerLoader-&gt;messagingProxy()-&gt;askedToTerminate() &amp;&amp; workerLoader-&gt;m_client)

Why is the askedToTerminate() check only necessary in didReceiveData?

What guarantees that the worker thread and context still exist when loader callbacks are sent from main thread? Maybe I didn&apos;t spend enough time thinking about it, but the loader lifetime is not clear to me.

Most of the above are just questions and concerns, but there are at least a few changes to code to be made, so r- for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107024</commentid>
    <comment_count>44</comment_count>
      <attachid>27006</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-26 00:32:49 -0800</bug_when>
    <thetext>Comment on attachment 27006
Part 6: Small adjustments to the ThreadableLoader::loadResourceSynchronously to make it easier to implement for Workers

I don&apos;t understand why it is desired or acceptable to lose most of the information in ResourceError, reducing it to an enum.

+    auto_ptr&lt;ResourceResponse&gt; response;

We use auto_ptr for passing function arguments and results, and OwnPtr for variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107173</commentid>
    <comment_count>45</comment_count>
      <attachid>27070</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-27 02:29:07 -0800</bug_when>
    <thetext>Created attachment 27070
Part 5a: Add the GenericWorkTask infrastructure needed for WorkerThreadableLoader.

Addressed these comments from part 5:

&gt; &gt; +            return !m_messagingProxy || !m_messagingProxy-&gt;askedToTerminate();
&gt; For tasks that do not need MessageProxy to operate, it&apos;s better not to have it in the structure at all.

&gt; &gt; +    template&lt;typename T&gt; struct CrossThreadAdapter { static T&amp; adapt(T&amp;
parameter) { return parameter; } };
&gt; &gt; +    template&lt;&gt; struct CrossThreadAdapter&lt;String&gt; { static String adapt(String&amp;
parameter) { return parameter.copy(); } };

&gt; Can this be made to fail on unknown types? I think you&apos;d need specializations
&gt; for all integral types that can be copied directly, but there aren&apos;t too many
&gt; in C++.

I wish I had is_enum.  I couldn&apos;t figure out any easy way to do it -- (fwiw, boost has one so it is possible).  Without is_enum, I had to include files that had enum&apos;s and create specializations for each enum that are used.

In order to make the copying just work, I had to be able to modify the type being returned from adapt (due to ResourceRequest becoming auto_ptr&lt;CrossThreadresourceRequestData&gt;).

Along these same lines, different type needed to be treated differently in the static create constructor.  Ideally they could all be const T&amp; but that doesn&apos;t work for auto_ptr which needs to avoid const, but T&amp; doesn&apos;t work for returned types (from adapt), so auto_ptr&lt;&gt; needs to be passed in as a auto_ptr&lt;&gt;.

Similar things happened for other types with the goal being to avoid doing an expensive/complex copy during this process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107175</commentid>
    <comment_count>46</comment_count>
      <attachid>27071</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-27 03:34:32 -0800</bug_when>
    <thetext>Created attachment 27071
Part 6: Small adjustments to the ThreadableLoader::loadResourceSynchronously to make it easier to implement for Workers

For Part6: 
&gt; I don&apos;t understand why it is desired or acceptable to lose most of the
&gt; information in ResourceError, reducing it to an enum.

ResourceError would need a ::copy method due to contained strings.  In addition to the overhead of this (both in code writing/maintainence/perf/etc.), XHR doesn&apos;t use any of the info (except for what is in the enum) so nothing would be testing this code at all. 

If anything needs more than this enum, it wouldn&apos;t be very hard to remove this enum and do the work to copy ResourceError.


&gt; +    auto_ptr&lt;ResourceResponse&gt; response;
Changed to OwnPtr. I&apos;m not sure which one is desired here because this does get passed in as a function param but I think OwnPtr makes the most since since it is passed in as a OwnPtr&lt;&gt;&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107314</commentid>
    <comment_count>47</comment_count>
      <attachid>27101</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-28 04:53:52 -0800</bug_when>
    <thetext>Created attachment 27101
Part 5b: Add a Worker implementation for the async portion of ThreadableLoader.

This is the 2nd half of what was part 5.  All comments have been been directly addressed.

I believe there was a lifetime issue in the code before and this has been fixed along with a comment in the code to explain how the lifetime works.

It may have been fairly confusing before what methods were being used on each thread so I split the WorkerThreadableLoader into two classes with each class being used mostly on one thread to make it more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107323</commentid>
    <comment_count>48</comment_count>
      <attachid>27070</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-28 07:16:15 -0800</bug_when>
    <thetext>Comment on attachment 27070
Part 5a: Add the GenericWorkTask infrastructure needed for WorkerThreadableLoader.

I don&apos;t think that relying on IsInteger is the right approach - e.g. it unnecessarily omits floating point values. I&apos;ll e-mail you some ideas to discuss.

+	WebCore/dom/CrossThreadAdapter.h \

The name CrossThreadAdapter is not sufficiently descriptive, it says nothing about the purpose or behavior of this class (not to mention that it does not match Adapter pattern).

+++ b/WebCore/dom/CrossThreadAdapter.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.

I don&apos;t see any old Apple code here. Also, did you use LGPL intentionally? I think that for other submissions, you used a BSD license.

+        typedef typename ComplexCopyAvoider&lt;P1&gt;::Type InParam1;

AFAIK, &quot;Avoider&quot; is not a word. But I&apos;m also not sure how this is different from CrossThreadAdapter::ReturnType - can these be merged?

+    template&lt;typename T&gt; struct ComplexCopyAvoider&lt;T*&gt; : public PtrType&lt;T*&gt; {
+    };
+    template&lt;typename T&gt; struct ComplexCopyAvoider&lt;T* const&gt; : public PtrType&lt;T*&gt; {

As you are removing const, you could also remove volative, as in &lt;http://www.boost.org/doc/libs/1_37_0/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html&gt;.

I think that behavior-wise, this is great, but the C++ magic needs another iteration or two to get it in a more maintainable shape.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107324</commentid>
    <comment_count>49</comment_count>
      <attachid>27071</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-28 07:33:56 -0800</bug_when>
    <thetext>Comment on attachment 27071
Part 6: Small adjustments to the ThreadableLoader::loadResourceSynchronously to make it easier to implement for Workers

You may be right, but I&apos;m not convinced yet. We don&apos;t have special versions of ResourceRequest and ResourceResponse for the threadable loader, so it feels strange to have a special version of ResourceError. In fact, ResourceError is a relatively new class, as we used to have multiple ad hoc error reporting mechanisms similar to the one proposed here - and subtle mismatches between the meanings of errors were an issue.

Our XMLHttpRequest implementation is not sufficiently mature when it comes to error handling (see bug 17426, bug 13075 and some others), so it is quite likely that more information from ResourceError will be needed.

I think that the names are not sufficiently descriptive - e.g. when you write &quot;if (!document-&gt;frame()) errorType = FailedLoaderError;&quot; it seems that the problem is that there is no loader, so I&apos;d expect to see &quot;NoLoaderError&quot; here. But that&apos;s not what NoLoaderError means!

r-, due to at least the names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107575</commentid>
    <comment_count>50</comment_count>
      <attachid>27101</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-29 13:50:42 -0800</bug_when>
    <thetext>Comment on attachment 27101
Part 5b: Add a Worker implementation for the async portion of ThreadableLoader.

Discussed this on IRC, there are some changes to be made to the lifetime model here. r- to get it out of review queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107602</commentid>
    <comment_count>51</comment_count>
      <attachid>27070</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-29 15:35:49 -0800</bug_when>
    <thetext>Comment on attachment 27070
Part 5a: Add the GenericWorkTask infrastructure needed for WorkerThreadableLoader.

Replaced by  https://bugs.webkit.org/show_bug.cgi?id=23618</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107648</commentid>
    <comment_count>52</comment_count>
      <attachid>27101</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-29 23:48:20 -0800</bug_when>
    <thetext>Comment on attachment 27101
Part 5b: Add a Worker implementation for the async portion of ThreadableLoader.

Replaced by Bug 23636: Make the async api of ThreadableLoader functional for the worker context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109620</commentid>
    <comment_count>53</comment_count>
      <attachid>27071</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-12 21:51:56 -0800</bug_when>
    <thetext>Comment on attachment 27071
Part 6: Small adjustments to the ThreadableLoader::loadResourceSynchronously to make it easier to implement for Workers

Replaced by https://bugs.webkit.org/show_bug.cgi?id=23688</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112178</commentid>
    <comment_count>54</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-04 03:44:38 -0800</bug_when>
    <thetext>There is one blocker left, which is basically about Web Inspector support. It is important, but not really a reason to say that we don&apos;t support XHR in Workers. Is there anything else that needs to be done to consider this resolved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112199</commentid>
    <comment_count>55</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-04 07:48:10 -0800</bug_when>
    <thetext>This is in the build and working.

Layout tests are being added and bugs being fixed.

The one bug that this depends on is about exposing the xhr result to the inspector.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26050</attachid>
            <date>2008-12-16 04:47:11 -0800</date>
            <delta_ts>2008-12-18 20:46:36 -0800</delta_ts>
            <desc>Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp</desc>
            <filename>xhr_easy_proxy.txt</filename>
            <type>text/plain</type>
            <size>19939</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBmMmIwMmYxLi44MTc4ZTVhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMDgtMTItMTYgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMAorICAgICAgICBBZGQgY29weSBmdW5jdGlv
bmFsaXR5IHRvIFVTdHJpbmcgYW5kIGV4cG9zZSBpdC4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpV
U3RyaW5nOjpjb3B5KToKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDoKKwogMjAwOC0xMi0x
NSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgKiBpbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaDogVHdlYWsgaW5jbHVkZSBmb3JtYXR0aW5nLgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCmluZGV4IGExNTE0NTEuLmNhMGM3MmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKQEAgLTMzNCw2ICszMzQsNyBAQCBfX1pOSzNKU0M3SlNWYWx1ZTd0b0Zsb2F0RVBO
U185RXhlY1N0YXRlRQogX19aTkszSlNDN0pTVmFsdWU5dG9JbnRlZ2VyRVBOU185RXhlY1N0YXRl
RQogX19aTkszSlNDN1VTdHJpbmcxMFVURjhTdHJpbmdFYgogX19aTkszSlNDN1VTdHJpbmcxNHRv
U3RyaWN0VUludDMyRVBiCitfX1pOSzNKU0M3VVN0cmluZzRjb3B5RXYKIF9fWk5LM0pTQzdVU3Ry
aW5nNWFzY2lpRXYKIF9fWk5LM0pTQzdVU3RyaW5nNmlzOEJpdEV2CiBfX1pOSzNKU0M3VVN0cmlu
ZzZzdWJzdHJFaWkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCmluZGV4IDQ1ZGYyNDguLmJl
ZDY3NzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcApAQCAtNTQyLDYgKzU0MiwxMSBA
QCBVU3RyaW5nOjpVU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGJ1ZmZlcikKICAgICAgICAg
bV9yZXAgPSBSZXA6OmNyZWF0ZUNvcHlpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiB9CiAKK1VTdHJpbmcgVVN0cmluZzo6Y29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFVTdHJp
bmcoUmVwOjpjcmVhdGVDb3B5aW5nKGRhdGEoKSwgc2l6ZSgpKSk7Cit9CisKIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBjb25jYXRlbmF0ZShQYXNzUmVmUHRy
PFVTdHJpbmc6OlJlcD4gciwgY29uc3QgVUNoYXIqIHREYXRhLCBpbnQgdFNpemUpCiB7CiAgICAg
UmVmUHRyPFVTdHJpbmc6OlJlcD4gcmVwID0gcjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVVN0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKaW5k
ZXggZmE4ODk4Yy4uMWZkZGYwNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
U3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKQEAgLTE1Miw2
ICsxNTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAg
ICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNl
IGEgVVN0cmluZyBvbiBhbm90aGVyIHRocmVhZC4KKyAgICAgICAgLy8gT3RoZXJ3aXNlIHVzZSBV
U3RyaW5nKGNvbnN0IFVTdHJpbmcmKS4KKyAgICAgICAgVVN0cmluZyBjb3B5KCkgY29uc3Q7CisK
ICAgICAgICAgc3RhdGljIFVTdHJpbmcgZnJvbShpbnQpOwogICAgICAgICBzdGF0aWMgVVN0cmlu
ZyBmcm9tKHVuc2lnbmVkIGludCk7CiAgICAgICAgIHN0YXRpYyBVU3RyaW5nIGZyb20obG9uZyk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGY3Y2QzNDYuLjNhZjFiOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMDgtMTItMTYgIERhdmlkIExldmlu
ICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcyMAorICAgICAgICBNb3ZlIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCB0byBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICBBZGQgYWRkTWVzc2FnZVRvQ29uc29sZSB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICBVc2UgdGhlc2UgbWV0aG9kcyBmcm9t
IFhNTEh0dHBSZXF1ZXN0LgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2
aW9yLCBzbyBubyB0ZXN0LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6OmNvcHkpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTWVzc2FnZVRvQ29u
c29sZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vV29ya2VyQ29udGV4dC5oOgorICAgICAgICAq
IGRvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdlVG9Db25zb2xlVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1l
c3NhZ2VUb0NvbnNvbGVUYXNrOjpXb3JrZXJNZXNzYWdlVG9Db25zb2xlVGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlVG9Db25zb2xlVGFzazo6cGVyZm9ybVRhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyUmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0VGFz
azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJlc291cmNlUmV0cmlldmVkQnlY
TUxIdHRwUmVxdWVzdFRhc2s6OldvcmtlclJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVz
c2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0UmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAwOC0xMi0xNSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RyaW5nLmgKaW5kZXggM2VmYTE2MC4uOWJhMmRmZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0cmluZy5oCkBAIC00NSw2ICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0
U3RyaW5nKGNvbnN0IGNoYXIqIHMpIDogbV9zdHIocykge30KICAgICBTY3JpcHRTdHJpbmcoY29u
c3QgSlNDOjpVU3RyaW5nJiBzKSA6IG1fc3RyKHMpIHt9CiAKKyAgICAvLyBNYWtlcyBhIGRlZXAg
Y29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFNjcmlwdFN0cmluZyBvbiBh
bm90aGVyIHRocmVhZC4KKyAgICAvLyBJZiB5b3UgYXJlbid0IHVzaW5nIG11bHRpcGxlIHRocmVh
ZHMsIHRoZW4gdXNlIFNjcmlwdFN0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcmKS4KKyAgICBTY3Jp
cHRTdHJpbmcgY29weSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gU2NyaXB0U3RyaW5n
KG1fc3RyLmNvcHkoKSk7CisgICAgfQorCiAgICAgb3BlcmF0b3IgSlNDOjpVU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHI7IH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
bV9zdHIuaXNOdWxsKCk7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3Mzg5NWVkLi44ZjU3MDAzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXIuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKQEAgLTQyODksNiAr
NDI5MCwyMSBAQCB2b2lkIERvY3VtZW50OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdAogICAgICAgICB3aW5kb3ctPmNvbnNv
bGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KQoreworICAgIGlmIChpbnNwZWN0b3JP
bmx5KSB7CisgICAgICAgIGlmIChwYWdlKCkpCisgICAgICAgICAgICBwYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIGxldmVsLCBtZXNzYWdl
LCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0gZWxzZSBpZiAoRE9NV2luZG93KiB3aW5k
b3cgPSBkb21XaW5kb3coKSkKKyAgICAgICAgd2luZG93LT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
c291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9p
ZCBEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpCit7CisgICAg
aWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwor
fQorCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1RpbWVyIDogcHVibGljIFRpbWVy
QmFzZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tUaW1lcihQYXNz
UmVmUHRyPERvY3VtZW50PiBjb250ZXh0LCBQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IHRhc2spCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNTJjNDI4Li4wZGE2YTBmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTc3
Niw2ICs3NzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZUROU1ByZWZldGNoQ29udHJvbEhl
YWRlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24o
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0
aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAgICAgdm9pZCBh
ZGRUaW1lb3V0KGludCB0aW1lb3V0SWQsIERPTVRpbWVyKik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggNjE1Mzg1Yi4uMDczODlhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0X2gKICNkZWZpbmUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dF9oCiAKKyNpbmNsdWRlICJD
b25zb2xlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0zNyw2ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBY3RpdmVET01PYmplY3Q7CiAgICAgY2xhc3MgTWVz
c2FnZVBvcnQ7CiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAgICAg
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU3RyaW5nOwogCkBAIC01Myw2ICs1NSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIGJvb2wgaW5zcGVjdG9yT25seSkgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpID0gMDsKIAogICAg
ICAgICAvLyBBY3RpdmUgb2JqZWN0cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYg
aW5hY2Nlc3NpYmxlLCBlLmcuIGJlY2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBj
YWxsYmFja3MgYmVpbmcgaW52b2tlZC4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9N
T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5jcHAgYi9X
ZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCAxMTViNzE0Li5kY2JjMmFkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9X
b3JrZXJDb250ZXh0LmNwcApAQCAtMTA0LDYgKzEwNCwxNiBAQCB2b2lkIFdvcmtlckNvbnRleHQ6
OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsCiAgICAgbV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCktPnBvc3RXb3JrZXJFeGNlcHRpb24o
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCit2b2lkIFdvcmtlckNv
bnRleHQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KQoreworICAgIG1fdGhy
ZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIGxldmVs
LCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIGluc3BlY3Rvck9ubHkpOworfQorCit2
b2lkIFdvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQor
eworICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0UmVzb3VyY2VSZXRyaWV2ZWRC
eVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7Cit9CisKIHZvaWQgV29y
a2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIG1f
dGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3Nh
Z2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS9k
b20vV29ya2VyQ29udGV4dC5oCmluZGV4IDUwZjUxZGEuLjVhODgyZTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmgKQEAgLTczLDYgKzczLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRF
eGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9D
b25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNw
ZWN0b3JPbmx5KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYg
c291cmNlU3RyaW5nKTsKIAogICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRleHQqIHRvV29ya2Vy
Q29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCmluZGV4IGU1NjQ3ZmIuLjFkYzFhNjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBEYXZpZCBMZXZp
biAobGV2aW5AY2hyb21pdW0ub3JnKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRTdHJpbmcu
aCIKICNpbmNsdWRlICJXb3JrZXIuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV29ya2VyVGFzay5oIgpAQCAtMTQxLDYgKzE0Myw3MCBAQCBwcml2YXRlOgogICAgIFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsKIAorY2xhc3MgV29ya2Vy
TWVzc2FnZVRvQ29uc29sZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyTWVzc2FnZVRvQ29uc29s
ZVRhc2s+IGNyZWF0ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHksIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNz
YWdpbmdQcm94eSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyTWVz
c2FnZVRvQ29uc29sZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMLCBpbnNwZWN0b3JPbmx5LCBtZXNzYWdpbmdQcm94eSkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBXb3JrZXJNZXNzYWdlVG9Db25zb2xlVGFzayhNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHksIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgOiBtX3NvdXJjZShzb3Vy
Y2UpCisgICAgICAgICwgbV9sZXZlbChsZXZlbCkKKyAgICAgICAgLCBtX21lc3NhZ2UobWVzc2Fn
ZS5jb3B5KCkpCisgICAgICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCisgICAgICAgICwg
bV9zb3VyY2VVUkwoc291cmNlVVJMLmNvcHkoKSkKKyAgICAgICAgLCBtX2luc3BlY3Rvck9ubHko
aW5zcGVjdG9yT25seSkKKyAgICAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmIChtX21lc3NhZ2luZ1By
b3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNv
bnRleHQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobV9zb3VyY2UsIG1fbGV2ZWwsIG1fbWVzc2FnZSwg
bV9saW5lTnVtYmVyLCBtX3NvdXJjZVVSTCwgbV9pbnNwZWN0b3JPbmx5KTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgTWVzc2FnZVNvdXJjZSBtX3NvdXJjZTsKKyAgICBNZXNzYWdlTGV2ZWwgbV9s
ZXZlbDsKKyAgICBTdHJpbmcgbV9tZXNzYWdlOworICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsK
KyAgICBTdHJpbmcgbV9zb3VyY2VVUkw7CisgICAgYm9vbCBtX2luc3BlY3Rvck9ubHk7CisgICAg
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7Cit9OworCitjbGFzcyBXb3Jr
ZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RUYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdv
cmtlclJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdFRhc2s+IGNyZWF0ZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nLCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdvcmtlclJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdFRhc2so
aWRlbnRpZmllciwgc291cmNlU3RyaW5nLCBtZXNzYWdpbmdQcm94eSkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBXb3JrZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RUYXNrKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcs
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3NvdXJjZVN0cmluZyhzb3VyY2VTdHJpbmcu
Y29weSgpKQorICAgICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKG1fbWVzc2FnaW5nUHJveHktPmFz
a2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29udGV4dC0+
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KG1faWRlbnRpZmllciwgbV9zb3VyY2VT
dHJpbmcpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmll
cjsKKyAgICBTY3JpcHRTdHJpbmcgbV9zb3VyY2VTdHJpbmc7CisgICAgV29ya2VyTWVzc2FnaW5n
UHJveHkqIG1fbWVzc2FnaW5nUHJveHk7Cit9OworCiBjbGFzcyBXb3JrZXJDb250ZXh0RGVzdHJv
eWVkVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0RGVzdHJveWVkVGFzaz4gY3JlYXRl
KFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKQEAgLTIzMSw2ICsyOTcsMTYg
QEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFdvcmtlckV4Y2VwdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGwKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKFdvcmtlckV4Y2VwdGlvblRhc2s6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCwgdGhpcykpOwogfQogCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpCit7CisgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJNZXNzYWdlVG9Db25zb2xlVGFzazo6Y3Jl
YXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCwgaW5zcGVj
dG9yT25seSwgdGhpcykpOworfQorCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0UmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpCit7CisgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3RUYXNrOjpjcmVhdGUoaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB0aGlzKSk7Cit9CisKIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxX
b3JrZXJUaHJlYWQ+IHdvcmtlclRocmVhZCkKIHsKICAgICBtX3dvcmtlclRocmVhZCA9IHdvcmtl
clRocmVhZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmgg
Yi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IGMwMDQ5NDAuLmZjOGE4
ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIv
V2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC0zNyw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIFNjcmlwdFN0cmluZzsK
ICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNzIFdvcmtlclRh
c2s7CkBAIC01MCw2ICs1Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAg
ICAgIHZvaWQgcG9zdFdvcmtlckV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIGJvb2wgaW5zcGVjdG9yT25seSk7CisgICAgICAgIHZvaWQgcG9zdFJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlw
dFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAogICAgICAgICB2b2lkIHdvcmtlclRocmVhZENyZWF0
ZWQoUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+KTsKICAgICAgICAgdm9pZCB3b3JrZXJPYmplY3RE
ZXN0cm95ZWQoKTsKQEAgLTY1LDYgKzY5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBmcmllbmQgY2xhc3MgTWVzc2FnZVdvcmtlclRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBX
b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzazsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckV4
Y2VwdGlvblRhc2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJNZXNzYWdlVG9Db25zb2xl
VGFzazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlclJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdFRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJUaHJlYWRBY3Rpdml0
eVJlcG9ydFRhc2s7CiAKICAgICAgICAgfldvcmtlck1lc3NhZ2luZ1Byb3h5KCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggMjE4NjBkMS4uMzNiMjkyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtOTY3LDE2ICs5NjcsMTMgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3ZlcnJpZGVNaW1l
VHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKQogICAgIG1fbWltZVR5cGVPdmVycmlkZSA9IG92
ZXJyaWRlOwogfQogCi1zdGF0aWMgdm9pZCByZXBvcnRVbnNhZmVVc2FnZShEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3N0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVz
YWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBpZiAoIWRvY3VtZW50KQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBJdCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUg
YmFkIHVzYWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJv
bS4KKyAgICAvLyBGSVhNRTogSXQncyBub3QgZ29vZCB0byByZXBvcnQgdGhlIGJhZCB1c2FnZSB3
aXRob3V0IGluZGljYXRpbmcgd2hhdCBzb3VyY2UgbGluZSBpdCBjYW1lIGZyb20uCiAgICAgLy8g
V2Ugc2hvdWxkIHBhc3MgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHNvIHdlIGNhbiB0ZWxsIHRoZSBj
b25zb2xlIHdoZXJlIHRoZSBtaXN0YWtlIG9jY3VycmVkLgotICAgIGZyYW1lLT5kb21XaW5kb3co
KS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICBjb250ZXh0LT5hZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmlu
ZygpLCBmYWxzZSk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTk5OSw3ICs5OTYsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVh
ZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRQogCiAgICAgLy8g
QSBwcml2aWxlZ2VkIHNjcmlwdCAoZS5nLiBhIERhc2hib2FyZCB3aWRnZXQpIGNhbiBzZXQgYW55
IGhlYWRlcnMuCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygpICYmICFpc1NhZmVSZXF1ZXN0SGVhZGVyKG5h
bWUpKSB7Ci0gICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRv
IHNldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5z
YWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0byBzZXQgdW5zYWZl
IGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTEwNzAsMTIgKzEwNjcsMTIgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhl
YWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgLy8gU2Vl
IGNvbW1lbnQgaW4gZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGFib3ZlLgogICAgIGlmIChpc1NldENv
b2tpZUhlYWRlcihuYW1lKSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSkgewotICAgICAgICByZXBvcnRVbnNhZmVV
c2FnZShkb2N1bWVudCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1l
ICsgIlwiIik7CisgICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgIlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwog
ICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogCiAgICAgaWYgKCFtX3NhbWVPcmlnaW5SZXF1ZXN0
ICYmICFpc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVhZGVyV2hpdGVsaXN0KG5hbWUpKSB7Ci0g
ICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRvIGdldCB1bnNh
ZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBc
IiIgKyBuYW1lICsgIlwiIik7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAKQEAgLTExODcs
MTIgKzExODQsOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJl
c291cmNlTG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9yZXNw
b25zZVRleHQgKz0gbV9kZWNvZGVyLT5mbHVzaCgpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpKSB7Ci0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlm
aWVyKCkgOiBtX2lkZW50aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBtX3VybCAr
ICJcIi4iLCBtX2xhc3RTZW5kTGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCk7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5yZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3QobV9sb2FkZXIgPyBtX2xvYWRlci0+aWRlbnRpZmllcigpIDogbV9pZGVu
dGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
ZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhS
IGZpbmlzaGVkIGxvYWRpbmc6IFwiIiArIG1fdXJsICsgIlwiLiIsIG1fbGFzdFNlbmRMaW5lTnVt
YmVyLCBtX2xhc3RTZW5kVVJMLCB0cnVlKTsKIAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2Fk
ZXI7CiAgICAgbV9sb2FkZXIgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMDBkNjQ2Ni4uMzJl
ZmM0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0cmluZy5oIgorI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26138</attachid>
            <date>2008-12-18 20:46:36 -0800</date>
            <delta_ts>2008-12-25 01:11:27 -0800</delta_ts>
            <desc>Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp</desc>
            <filename>xhr_easy_proxy_rev2.txt</filename>
            <type>text/plain</type>
            <size>34873</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiZWEzODk5Li5hOGRlNzQ2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMDgtMTItMTggIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMAorICAgICAgICBBZGQgY29weSBmdW5jdGlv
bmFsaXR5IHRvIFVTdHJpbmcgYW5kIGV4cG9zZSBpdC4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpV
U3RyaW5nOjpjb3B5KToKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDoKKwogMjAwOC0xMi0x
OCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBk
YTQyN2ZjLi4zZjBjMWY3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0zMzUsNiAr
MzM1LDcgQEAgX19aTkszSlNDN0pTVmFsdWU3dG9GbG9hdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5L
M0pTQzdKU1ZhbHVlOXRvSW50ZWdlckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pTQzdVU3RyaW5n
MTBVVEY4U3RyaW5nRWIKIF9fWk5LM0pTQzdVU3RyaW5nMTR0b1N0cmljdFVJbnQzMkVQYgorX19a
TkszSlNDN1VTdHJpbmc0Y29weUV2CiBfX1pOSzNKU0M3VVN0cmluZzVhc2NpaUV2CiBfX1pOSzNK
U0M3VVN0cmluZzZpczhCaXRFdgogX19aTkszSlNDN1VTdHJpbmc2c3Vic3RyRWlpCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nLmNwcAppbmRleCA0NWRmMjQ4Li5iZWQ2Nzc2IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVVN0cmluZy5jcHAKQEAgLTU0Miw2ICs1NDIsMTEgQEAgVVN0cmluZzo6VVN0cmluZyhj
b25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpCiAgICAgICAgIG1fcmVwID0gUmVwOjpjcmVhdGVD
b3B5aW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCitVU3RyaW5nIFVTdHJp
bmc6OmNvcHkoKSBjb25zdAoreworICAgIHJldHVybiBVU3RyaW5nKFJlcDo6Y3JlYXRlQ29weWlu
ZyhkYXRhKCksIHNpemUoKSkpOworfQorCiBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRy
PFVTdHJpbmc6OlJlcD4gY29uY2F0ZW5hdGUoUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IHIsIGNv
bnN0IFVDaGFyKiB0RGF0YSwgaW50IHRTaXplKQogewogICAgIFJlZlB0cjxVU3RyaW5nOjpSZXA+
IHJlcCA9IHI7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCmluZGV4IGZhODg5OGMuLjFmZGRmMDYg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCkBAIC0xNTIsNiArMTUyLDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBNYWtlcyBhIGRlZXAg
Y29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFVTdHJpbmcgb24gYW5vdGhl
ciB0aHJlYWQuCisgICAgICAgIC8vIE90aGVyd2lzZSB1c2UgVVN0cmluZyhjb25zdCBVU3RyaW5n
JikuCisgICAgICAgIFVTdHJpbmcgY29weSgpIGNvbnN0OworCiAgICAgICAgIHN0YXRpYyBVU3Ry
aW5nIGZyb20oaW50KTsKICAgICAgICAgc3RhdGljIFVTdHJpbmcgZnJvbSh1bnNpZ25lZCBpbnQp
OwogICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YWRjMDA5Li5kY2E5ZDU5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDczIEBACisyMDA4LTEyLTE4ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MjAKKyAgICAgICAgQWRkIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUgYW5kIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFVzZSB0aGVzZSBtZXRob2RzIGFu
ZCBvdGhlcnMgdG8gcmVtb3ZlIGRvY3VtZW50KCkgZnJvbSBYTUxIdHRwUmVxdWVzdCBpbiBhIGZl
dyBtb3JlIHBsYWNlcy4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZSBpbiBiZWhhdmlv
ciwgc28gbm8gdGVzdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0cmlu
Zzo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvciE9KToKKyAgICAg
ICAgUmVtb3ZlZCB0aGUgdXNlIEpTQzo6TG9jayB3aGljaCBkaWRuJ3QgZG8gYW55dGhpbmcgdXNl
ZnVsLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
ICogZG9tL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Om5vdGlmeUZpbmlz
aGVkKToKKworICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ29udGV4dDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDb250ZXh0OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICBO
b3RlOiBUaGV5IHdpbGwgbm90IHRvIHNlbmQgdGhlIG1lc3NhZ2VzIHRvIHRoZSBpbnNwZWN0b3Ig
b24gdGhlIG1haW4gdGhyZWFkICh3aGljaCBtYXkgZW50YWlsIGNvcHlpbmcgbGFyZ2Ugc3RyaW5n
KQorICAgICAgICB3aGVuIHRoZSBpbnNwZWN0b3IgaXNuJ3QgcnVubmluZy4KKworICAgICAgICAq
IGRvbS9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpj
cmVhdGUpOgorICAgICAgICAqIGRvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlVG9Db25zb2xlVGFzazo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VUb0NvbnNvbGVUYXNrOjpXb3JrZXJNZXNzYWdlVG9Db25z
b2xlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlVG9Db25zb2xlVGFzazo6
cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUmVzb3VyY2VSZXRyaWV2ZWRC
eVhNTEh0dHBSZXF1ZXN0VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdFRhc2s6OldvcmtlclJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Db25zb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0UmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KToKKworICAgICAgICAqIGRvbS9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oOgorICAgICAgICAqIGRvbS9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkU3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgQWRkZWQgdGhlIHBsdW1iaW5nIGZvciBpbnNwZWN0
b3JFbmFibGVkIGFuZCBtb3ZlZCBpbmZvcm1hdGlvbiB0aGF0IGlzIG9ubHkgbmVlZGVkIGZvciBz
dGFydHVwCisgICAgICAgIHRvIGEgc3RydWN0LCBzbyBpdCBjYW4gYmUgY2xlYXJlZCBvdXQuCisK
KyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3RlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRG
aW5pc2hMb2FkaW5nUHJlZmxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1
ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKToKKwogMjAw
OC0xMi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RyaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCmluZGV4IDNlZmEx
NjAuLmU5NTI1N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RyaW5n
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaApAQCAtMzEsOCArMzEs
NiBAQAogI2lmbmRlZiBTY3JpcHRTdHJpbmdfaAogI2RlZmluZSBTY3JpcHRTdHJpbmdfaAogCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
NSw2ICs0MywxMyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0U3RyaW5nKGNvbnN0IGNoYXIqIHMpIDog
bV9zdHIocykge30KICAgICBTY3JpcHRTdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJiBzKSA6IG1f
c3RyKHMpIHt9CiAKKyAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlv
dSBuZWVkIHRvIHVzZSBhIFNjcmlwdFN0cmluZyBvbiBhbm90aGVyIHRocmVhZC4KKyAgICAvLyBJ
ZiB5b3UgYXJlbid0IHVzaW5nIG11bHRpcGxlIHRocmVhZHMsIHRoZW4gdXNlIFNjcmlwdFN0cmlu
Zyhjb25zdCBKU0M6OlVTdHJpbmcmKS4KKyAgICBTY3JpcHRTdHJpbmcgY29weSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gU2NyaXB0U3RyaW5nKG1fc3RyLmNvcHkoKSk7CisgICAgfQor
CiAgICAgb3BlcmF0b3IgSlNDOjpVU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHI7IH0KIAog
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdHIuaXNOdWxsKCk7IH0KQEAgLTUy
LDI3ICs1NywyMyBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRTdHJpbmcmIG9wZXJhdG9yPShjb25z
dCBjaGFyKiBzKQogICAgIHsKLSAgICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAg
ICAgIG1fc3RyID0gczsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIFNjcmlw
dFN0cmluZyYgb3BlcmF0b3IrPShjb25zdCBTdHJpbmcmIHMpCiAgICAgewotICAgICAgICBKU0M6
OkpTTG9jayBsb2NrKGZhbHNlKTsKICAgICAgICAgbV9zdHIgKz0gczsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRTdHJpbmcm
IHMpIGNvbnN0CiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuIG1fc3RyID09IHMubV9zdHI7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNjcmlwdFN0cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2Nr
IGxvY2soZmFsc2UpOwogICAgICAgICAvLyBBdm9pZCBleHBvcnRpbmcgYW4gZXh0cmEgc3ltYm9s
IGJ5IHJlLXVzaW5nICI9PSIgb3BlcmF0b3IuCiAgICAgICAgIHJldHVybiAhKG1fc3RyID09IHMu
bV9zdHIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA3Mzg5NWVkLi44ZjU3MDAzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXIuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKQEAgLTQyODksNiArNDI5
MCwyMSBAQCB2b2lkIERvY3VtZW50OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdAogICAgICAgICB3aW5kb3ctPmNvbnNvbGUo
KS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KQoreworICAgIGlmIChpbnNwZWN0b3JPbmx5
KSB7CisgICAgICAgIGlmIChwYWdlKCkpCisgICAgICAgICAgICBwYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0gZWxzZSBpZiAoRE9NV2luZG93KiB3aW5kb3cg
PSBkb21XaW5kb3coKSkKKyAgICAgICAgd2luZG93LT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uoc291
cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBE
b2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpCit7CisgICAgaWYg
KHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291cmNl
UmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOworfQor
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1RpbWVyIDogcHVibGljIFRpbWVyQmFz
ZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tUaW1lcihQYXNzUmVm
UHRyPERvY3VtZW50PiBjb250ZXh0LCBQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IHRhc2spCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNTJjNDI4Li4wZGE2YTBmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTc3Niw2
ICs3NzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRl
cihjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CisgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpOworICAg
IHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAg
dmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0aGUg
dGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAgICAgdm9pZCBhZGRU
aW1lb3V0KGludCB0aW1lb3V0SWQsIERPTVRpbWVyKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKaW5kZXggNjE1Mzg1Yi4uMDczODlhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0X2gKICNkZWZpbmUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dF9oCiAKKyNpbmNsdWRlICJDb25z
b2xlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0zNyw2ICszOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBY3RpdmVET01PYmplY3Q7CiAgICAgY2xhc3MgTWVzc2Fn
ZVBvcnQ7CiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAgICAgY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU3RyaW5nOwogCkBAIC01Myw2ICs1NSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwsIGJvb2wgaW5zcGVjdG9yT25seSkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpID0gMDsKIAogICAgICAg
ICAvLyBBY3RpdmUgb2JqZWN0cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5h
Y2Nlc3NpYmxlLCBlLmcuIGJlY2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxs
YmFja3MgYmVpbmcgaW52b2tlZC4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0cygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyLmNwcCBiL1dlYkNvcmUvZG9t
L1dvcmtlci5jcHAKaW5kZXggODhhMzk2Zi4uOTkxM2VhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vV29ya2VyLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXIuY3BwCkBAIC00MCw3ICs0MCw5
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldv
cmtlck1lc3NhZ2luZ1Byb3h5LmgiCkBAIC0xMjEsNyArMTIzLDggQEAgdm9pZCBXb3JrZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgZGlzcGF0Y2hF
cnJvckV2ZW50KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZyB1c2VyQWdlbnQgPSBkb2N1
bWVudCgpLT5mcmFtZSgpID8gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVzZXJBZ2Vu
dChtX3NjcmlwdFVSTCkgOiBTdHJpbmcoKTsKLSAgICAgICAgUmVmUHRyPFdvcmtlclRocmVhZD4g
dGhyZWFkID0gV29ya2VyVGhyZWFkOjpjcmVhdGUobV9zY3JpcHRVUkwsIHVzZXJBZ2VudCwgbV9j
YWNoZWRTY3JpcHQtPnNjcmlwdCgpLCBtX21lc3NhZ2luZ1Byb3h5KTsKKyAgICAgICAgYm9vbCBp
bnNwZWN0b3JFbmFibGVkID0gZG9jdW1lbnQoKS0+cGFnZSgpID8gZG9jdW1lbnQoKS0+cGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmVuYWJsZWQoKSA6IGZhbHNlOworICAgICAgICBSZWZQ
dHI8V29ya2VyVGhyZWFkPiB0aHJlYWQgPSBXb3JrZXJUaHJlYWQ6OmNyZWF0ZShtX3NjcmlwdFVS
TCwgdXNlckFnZW50LCBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCksIGluc3BlY3RvckVuYWJsZWQs
IG1fbWVzc2FnaW5nUHJveHkpOwogICAgICAgICBtX21lc3NhZ2luZ1Byb3h5LT53b3JrZXJUaHJl
YWRDcmVhdGVkKHRocmVhZCk7CiAgICAgICAgIHRocmVhZC0+c3RhcnQoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtl
ckNvbnRleHQuY3BwCmluZGV4IDExNWI3MTQuLmE0ZGFkYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3Bw
CkBAIC00MywxMiArNDMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXJDb250
ZXh0OjpXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFdvcmtlclRocmVhZCogdGhyZWFkKQorV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGluc3BlY3RvckVu
YWJsZWQsIFdvcmtlclRocmVhZCogdGhyZWFkKQogICAgIDogbV91cmwodXJsKQogICAgICwgbV91
c2VyQWdlbnQodXNlckFnZW50KQogICAgICwgbV9sb2NhdGlvbihXb3JrZXJMb2NhdGlvbjo6Y3Jl
YXRlKHVybCkpCiAgICAgLCBtX3NjcmlwdChuZXcgV29ya2VyU2NyaXB0Q29udHJvbGxlcih0aGlz
KSkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkKKyAgICAsIG1faW5zcGVjdG9yRW5hYmxlZChpbnNw
ZWN0b3JFbmFibGVkKQogewogICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodXJsKSk7CiB9CkBAIC0xMDQsNiArMTA1LDIwIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6
cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwKICAgICBtX3RocmVhZC0+bWVzc2FnaW5nUHJveHkoKS0+cG9zdFdvcmtlckV4Y2VwdGlvbihl
cnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKK3ZvaWQgV29ya2VyQ29u
dGV4dDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpCit7CisgICAgaWYgKGlu
c3BlY3Rvck9ubHkgJiYgIW1faW5zcGVjdG9yRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvQ29uc29sZShzb3VyY2Us
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIGluc3BlY3Rvck9ubHkpOwor
fQorCit2b2lkIFdvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKQoreworICAgIGlmICghbV9pbnNwZWN0b3JFbmFibGVkKQorICAgICAgICByZXR1cm47Cisg
ICAgbV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCktPnBvc3RSZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKK30KKwogdm9pZCBXb3JrZXJD
b250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgbV90aHJl
YWQtPm1lc3NhZ2luZ1Byb3h5KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9X
b3JrZXJDb250ZXh0LmgKaW5kZXggNTBmNTFkYS4uM2UxY2M1OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaApA
QCAtNDksOSArNDksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXJD
b250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD4sIHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gY3JlYXRlKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZCogdGhyZWFkKQorICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpbnNwZWN0b3JFbmFibGVkLCBXb3JrZXJU
aHJlYWQqIHRocmVhZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXb3JrZXJDb250ZXh0KHVybCwgdXNlckFnZW50LCB0aHJlYWQpKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgaW5zcGVjdG9y
RW5hYmxlZCwgdGhyZWFkKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5Xb3JrZXJD
b250ZXh0KCk7CkBAIC03Myw2ICs3Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGJv
b2wgaW5zcGVjdG9yT25seSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRT
dHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0
b1dvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CiAKQEAgLTk5LDcgKzEwMSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
eyByZWYoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVy
ZWYoKTsgfQogCi0gICAgICAgIFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYsIFdvcmtlclRocmVhZCopOworICAgICAgICBXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmLCBib29sIGluc3BlY3RvckVuYWJsZWQsIFdvcmtlclRocmVhZCopOwogCiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgS1VSTCYgdmlydHVhbFVSTCgpIGNvbnN0OwogCkBAIC0xMTMs
NiArMTE1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBtX29ubWVzc2FnZUxpc3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBt
X2V2ZW50TGlzdGVuZXJzOworCisgICAgICAgIGJvb2wgbV9pbnNwZWN0b3JFbmFibGVkOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcAppbmRleCBlNTY0N2ZiLi4xZGMxYTY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRGF2aWQgTGV2
aW4gKGxldmluQGNocm9taXVtLm9yZykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RyaW5n
LmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldvcmtlclRhc2suaCIKQEAgLTE0MSw2ICsxNDMsNzAgQEAgcHJpdmF0ZToKICAgICBX
b3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIH07CiAKK2NsYXNzIFdvcmtl
ck1lc3NhZ2VUb0NvbnNvbGVUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlck1lc3NhZ2VUb0NvbnNv
bGVUYXNrPiBjcmVhdGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVz
c2FnaW5nUHJveHkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlck1l
c3NhZ2VUb0NvbnNvbGVUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCwgaW5zcGVjdG9yT25seSwgbWVzc2FnaW5nUHJveHkpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgV29ya2VyTWVzc2FnZVRvQ29uc29sZVRhc2soTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5LCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgICAgIDogbV9zb3VyY2Uoc291
cmNlKQorICAgICAgICAsIG1fbGV2ZWwobGV2ZWwpCisgICAgICAgICwgbV9tZXNzYWdlKG1lc3Nh
Z2UuY29weSgpKQorICAgICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICAgICAs
IG1fc291cmNlVVJMKHNvdXJjZVVSTC5jb3B5KCkpCisgICAgICAgICwgbV9pbnNwZWN0b3JPbmx5
KGluc3BlY3Rvck9ubHkpCisgICAgICAgICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94
eSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAobV9tZXNzYWdpbmdQ
cm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBj
b250ZXh0LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1fc291cmNlLCBtX2xldmVsLCBtX21lc3NhZ2Us
IG1fbGluZU51bWJlciwgbV9zb3VyY2VVUkwsIG1faW5zcGVjdG9yT25seSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIE1lc3NhZ2VTb3VyY2UgbV9zb3VyY2U7CisgICAgTWVzc2FnZUxldmVsIG1f
bGV2ZWw7CisgICAgU3RyaW5nIG1fbWVzc2FnZTsKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7
CisgICAgU3RyaW5nIG1fc291cmNlVVJMOworICAgIGJvb2wgbV9pbnNwZWN0b3JPbmx5OworICAg
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OworfTsKKworY2xhc3MgV29y
a2VyUmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0VGFzayA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
b3JrZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RUYXNrPiBjcmVhdGUodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZywgV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXb3JrZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RUYXNr
KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgbWVzc2FnaW5nUHJveHkpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgV29ya2VyUmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0VGFzayh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5n
LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwgbV9zb3VyY2VTdHJpbmcoc291cmNlU3RyaW5n
LmNvcHkoKSkKKyAgICAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmIChtX21lc3NhZ2luZ1Byb3h5LT5h
c2tlZFRvVGVybWluYXRlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbnRleHQt
PnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChtX2lkZW50aWZpZXIsIG1fc291cmNl
U3RyaW5nKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZp
ZXI7CisgICAgU2NyaXB0U3RyaW5nIG1fc291cmNlU3RyaW5nOworICAgIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OworfTsKKwogY2xhc3MgV29ya2VyQ29udGV4dERlc3Ry
b3llZFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dERlc3Ryb3llZFRhc2s+IGNyZWF0
ZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCkBAIC0yMzEsNiArMjk3LDE2
IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhXb3JrZXJFeGNlcHRpb25UYXNrOjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwsIHRoaXMpKTsKIH0KIAordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6cG9zdE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KQoreworICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyTWVzc2FnZVRvQ29uc29sZVRhc2s6OmNy
ZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIGluc3Bl
Y3Rvck9ubHksIHRoaXMpKTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQoreworICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyUmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1
ZXN0VGFzazo6Y3JlYXRlKGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdGhpcykpOworfQorCiB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8
V29ya2VyVGhyZWFkPiB3b3JrZXJUaHJlYWQpCiB7CiAgICAgbV93b3JrZXJUaHJlYWQgPSB3b3Jr
ZXJUaHJlYWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5o
IGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCBjMDA0OTQwLi5mYzhh
OGUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBi
L1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2lmIEVOQUJMRShXT1JLRVJTKQogCisjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtMzcsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7
CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFdvcmtlcjsKICAgICBjbGFzcyBXb3JrZXJU
YXNrOwpAQCAtNTAsNiArNTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogICAg
ICAgICB2b2lkIHBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBib29sIGluc3BlY3Rvck9ubHkpOworICAgICAgICB2b2lkIHBvc3RSZXNvdXJjZVJldHJp
ZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3Jp
cHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICAgICAgdm9pZCB3b3JrZXJUaHJlYWRDcmVh
dGVkKFBhc3NSZWZQdHI8V29ya2VyVGhyZWFkPik7CiAgICAgICAgIHZvaWQgd29ya2VyT2JqZWN0
RGVzdHJveWVkKCk7CkBAIC02NSw2ICs2OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIE1lc3NhZ2VXb3JrZXJUYXNrOwogICAgICAgICBmcmllbmQgY2xhc3Mg
V29ya2VyQ29udGV4dERlc3Ryb3llZFRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJF
eGNlcHRpb25UYXNrOworICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyTWVzc2FnZVRvQ29uc29s
ZVRhc2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3RUYXNrOwogICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyVGhyZWFkQWN0aXZp
dHlSZXBvcnRUYXNrOwogCiAgICAgICAgIH5Xb3JrZXJNZXNzYWdpbmdQcm94eSgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlclRo
cmVhZC5jcHAKaW5kZXggZTkxNDY2MS4uZmE0Y2I1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
V29ya2VyVGhyZWFkLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0z
NiwyMCArMzYsMzQgQEAKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29y
a2VyTWVzc2FnaW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBXb3JrZXJU
aHJlYWRTdGFydHVwRGF0YSA6IE5vbmNvcHlhYmxlIHsKKyAgICBXb3JrZXJUaHJlYWRTdGFydHVw
RGF0YShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIGJvb2wgaW5zcGVjdG9yRW5hYmxlZCk7CisgICAgS1VSTCBt
X3NjcmlwdFVSTDsKKyAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAgU3RyaW5nIG1fc291cmNl
Q29kZTsKKyAgICBib29sIG1faW5zcGVjdG9yRW5hYmxlZDsKK307CisKK1dvcmtlclRocmVhZFN0
YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBLVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGJvb2wg
aW5zcGVjdG9yRW5hYmxlZCkKKyAgOiBtX3NjcmlwdFVSTChzY3JpcHRVUkwuY29weSgpKQorICAs
IG1fdXNlckFnZW50KHVzZXJBZ2VudC5jb3B5KCkpCisgICwgbV9zb3VyY2VDb2RlKHNvdXJjZUNv
ZGUuY29weSgpKQorICAsIG1faW5zcGVjdG9yRW5hYmxlZChpbnNwZWN0b3JFbmFibGVkKQorewor
fQogCi1QYXNzUmVmUHRyPFdvcmtlclRocmVhZD4gV29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3Qg
S1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBz
b3VyY2VDb2RlLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCitQYXNzUmVm
UHRyPFdvcmtlclRocmVhZD4gV29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0
VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBi
b29sIGluc3BlY3RvckVuYWJsZWQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94
eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlclRocmVhZChzY3JpcHRVUkwsIHVz
ZXJBZ2VudCwgc291cmNlQ29kZSwgbWVzc2FnaW5nUHJveHkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdvcmtlclRocmVhZChzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSwgaW5z
cGVjdG9yRW5hYmxlZCwgbWVzc2FnaW5nUHJveHkpKTsKIH0KIAotV29ya2VyVGhyZWFkOjpXb3Jr
ZXJUaHJlYWQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5n
UHJveHkpCitXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBLVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGJvb2wg
aW5zcGVjdG9yRW5hYmxlZCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQog
ICAgIDogbV90aHJlYWRJRCgwKQotICAgICwgbV9zY3JpcHRVUkwoc2NyaXB0VVJMLmNvcHkoKSkK
LSAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudC5jb3B5KCkpCi0gICAgLCBtX3NvdXJjZUNvZGUo
c291cmNlQ29kZS5jb3B5KCkpCiAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5
KQorICAgICwgbV9zdGFydHVwRGF0YShuZXcgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEoc2NyaXB0
VVJMLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIGluc3BlY3RvckVuYWJsZWQpKQogewogfQogCkBA
IC03OSwxMSArOTMsMTIgQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogewog
ICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwot
ICAgICAgICBtX3dvcmtlckNvbnRleHQgPSBXb3JrZXJDb250ZXh0OjpjcmVhdGUobV9zY3JpcHRV
UkwsIG1fdXNlckFnZW50LCB0aGlzKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0ID0gV29ya2Vy
Q29udGV4dDo6Y3JlYXRlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRh
LT5tX3VzZXJBZ2VudCwgbV9zdGFydHVwRGF0YS0+bV9pbnNwZWN0b3JFbmFibGVkLCB0aGlzKTsK
ICAgICB9CiAKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBtX3dvcmtlckNv
bnRleHQtPnNjcmlwdCgpOwotICAgIHNjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZSht
X3NvdXJjZUNvZGUsIG1fc2NyaXB0VVJMKSk7CisgICAgc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRT
b3VyY2VDb2RlKG1fc3RhcnR1cERhdGEtPm1fc291cmNlQ29kZSwgbV9zdGFydHVwRGF0YS0+bV9z
Y3JpcHRVUkwpKTsKKyAgICBtX3N0YXJ0dXBEYXRhLmNsZWFyKCk7CiAgICAgbV9tZXNzYWdpbmdQ
cm94eS0+Y29uZmlybVdvcmtlclRocmVhZE1lc3NhZ2UobV93b3JrZXJDb250ZXh0LT5oYXNQZW5k
aW5nQWN0aXZpdHkoKSk7IC8vIFRoaXMgd2Fzbid0IHJlYWxseSBhIG1lc3NhZ2UsIGJ1dCBpdCBj
b3VudHMgYXMgb25lIGZvciBHQy4KIAogICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuaCBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oCmlu
ZGV4IDk4ODQxZDMuLjg1ZmM2ZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVh
ZC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oCkBAIC0zMSw2ICszMSw3IEBACiAK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyTWVzc2FnaW5nUHJveHk7CiAg
ICAgY2xhc3MgV29ya2VyVGFzazsKKyAgICBjbGFzcyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTsK
IAogICAgIGNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVh
ZD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyVGhyZWFk
PiBjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJNZXNzYWdpbmdQcm94eSopOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+IGNyZWF0ZShjb25zdCBLVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IGJvb2wgaW5zcGVjdG9yRW5hYmxlZCwgV29ya2VyTWVzc2FnaW5nUHJveHkqKTsKICAgICAgICAg
fldvcmtlclRocmVhZCgpOwogCiAgICAgICAgIGJvb2wgc3RhcnQoKTsKQEAgLTUzLDIyICs1NSwy
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBt
ZXNzYWdpbmdQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTWVzc2FnaW5nUHJv
eHkqKTsKKyAgICAgICAgV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBib29sIGluc3BlY3RvckVuYWJsZWQs
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Kik7CiAKICAgICAgICAgc3RhdGljIHZvaWQqIHdvcmtlclRo
cmVhZFN0YXJ0KHZvaWQqKTsKICAgICAgICAgdm9pZCogd29ya2VyVGhyZWFkKCk7CiAKICAgICAg
ICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwogCi0gICAgICAgIEtVUkwgbV9zY3JpcHRV
Ukw7Ci0gICAgICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKLSAgICAgICAgU3RyaW5nIG1fc291cmNl
Q29kZTsKICAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CiAK
ICAgICAgICAgUmVmUHRyPFdvcmtlckNvbnRleHQ+IG1fd29ya2VyQ29udGV4dDsKICAgICAgICAg
TXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4OwogCiAgICAgICAgIE1lc3NhZ2VRdWV1ZTxSZWZQ
dHI8V29ya2VyVGFzaz4gPiBtX21lc3NhZ2VRdWV1ZTsKKyAgICAgICAgT3duUHRyPFdvcmtlclRo
cmVhZFN0YXJ0dXBEYXRhPiBtX3N0YXJ0dXBEYXRhOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlNTc1ZDZiLi5iZjcwMjFiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiWE1MSHR0cFJl
cXVlc3QuaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKLSNpbmNsdWRlICJDb25zb2xlLmgiCiAj
aW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJFdmVudC5oIgpAQCAtMzQsMTAgKzMzLDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IktVUkxIYXNoLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCkBA
IC0zMTgsOCArMzE1LDggQEAgc3RhdGljIGNvbnN0IFhNTEh0dHBSZXF1ZXN0U3RhdGljRGF0YSog
aW5pdGlhbGl6ZVhNTEh0dHBSZXF1ZXN0U3RhdGljRGF0YSgpCiAgICAgcmV0dXJuIGR1bW15Owog
fQogCi1YTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoRG9jdW1lbnQqIGRvYykKLSAgICA6
IEFjdGl2ZURPTU9iamVjdChkb2MsIHRoaXMpCitYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0LCB0aGlzKQogICAgICwgbV9hc3luYyh0cnVlKQogICAgICwgbV9pbmNsdWRlQ3Jl
ZGVudGlhbHMoZmFsc2UpCiAgICAgLCBtX3N0YXRlKFVOU0VOVCkKQEAgLTMzMyw3ICszMzAsNiBA
QCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoRG9jdW1lbnQqIGRvYykKICAgICAsIG1f
cmVjZWl2ZWRMZW5ndGgoMCkKICAgICAsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKDApCiB7Ci0gICAg
QVNTRVJUKGRvY3VtZW50KCkpOwogICAgIGluaXRpYWxpemVYTUxIdHRwUmVxdWVzdFN0YXRpY0Rh
dGEoKTsKIH0KIApAQCAtOTUzLDggKzk0OSw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRyb3BQ
cm90ZWN0aW9uKCkKICAgICAvLyBjYW4ndCBiZSByZWNvdXBlZCB1bnRpbCB0aGUgbG9hZCBpcyBk
b25lLCBzbyBvbmx5CiAgICAgLy8gcmVwb3J0IHRoZSBleHRyYSBjb3N0IGF0IHRoYXQgcG9pbnQu
CiAKLSAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQo
KS0+ZnJhbWUoKSkpIHsKLSAgICAgICAgaWYgKEpTQzo6SlNWYWx1ZSogd3JhcHBlciA9IGdldENh
Y2hlZERPTU9iamVjdFdyYXBwZXIoKndpbmRvdy0+Z2xvYmFsRGF0YSgpLCB0aGlzKSkKKyAgICBp
ZiAoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICBpZiAoSlNDOjpKU1ZhbHVlKiB3
cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcigqZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIHRoaXMpKQogICAgICAgICAgICAgSlNDOjpIZWFwOjpoZWFwKHdyYXBwZXIpLT5yZXBv
cnRFeHRyYU1lbW9yeUNvc3QobV9yZXNwb25zZVRleHQuc2l6ZSgpICogMik7CiAgICAgfQogI2Vu
ZGlmCkBAIC05NjcsMTYgKzk2MywxMyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1p
bWVUeXBlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpCiAgICAgbV9taW1lVHlwZU92ZXJyaWRlID0g
b3ZlcnJpZGU7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZl
VXNhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIGlmICghZG9jdW1lbnQpCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm47Ci0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRo
ZSBiYWQgdXNhZ2Ugd2l0aG91dCBpbmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBm
cm9tLgorICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdl
IHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KICAgICAv
LyBXZSBzaG91bGQgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgc28gd2UgY2FuIHRlbGwgdGhl
IGNvbnNvbGUgd2hlcmUgdGhlIG1pc3Rha2Ugb2NjdXJyZWQuCi0gICAgZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3Ry
aW5nKCksIGZhbHNlKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRl
cihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpAQCAtOTk5LDcgKzk5Miw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJl
cXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhCiAK
ICAgICAvLyBBIHByaXZpbGVnZWQgc2NyaXB0IChlLmcuIGEgRGFzaGJvYXJkIHdpZGdldCkgY2Fu
IHNldCBhbnkgaGVhZGVycy4KICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgJiYgIWlzU2FmZVJlcXVlc3RI
ZWFkZXIobmFtZSkpIHsKLSAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJl
ZnVzZWQgdG8gc2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOworICAgICAgICBy
ZXBvcnRVbnNhZmVVc2FnZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJSZWZ1c2VkIHRvIHNl
dCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTA3MCwxMiArMTA2MywxMiBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJl
c3BvbnNlSGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZQogCiAg
ICAgLy8gU2VlIGNvbW1lbnQgaW4gZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGFib3ZlLgogICAgIGlm
IChpc1NldENvb2tpZUhlYWRlcihuYW1lKSAmJiAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSkgewotICAgICAgICByZXBv
cnRVbnNhZmVVc2FnZShkb2N1bWVudCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBc
IiIgKyBuYW1lICsgIlwiIik7CisgICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSAr
ICJcIiIpOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogCiAgICAgaWYgKCFtX3NhbWVPcmln
aW5SZXF1ZXN0ICYmICFpc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVhZGVyV2hpdGVsaXN0KG5h
bWUpKSB7Ci0gICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRv
IGdldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5z
YWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZl
IGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAK
QEAgLTExNTQsNyArMTE0Nyw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnByb2Nlc3NTeW5jTG9h
ZFJlc3VsdHMoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBSZXNvCiAgICAgICAgIGVj
ID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogfQogCi12b2lkIFhNTEh0
dHBSZXF1ZXN0OjpkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8vIElmIHdlIGFy
ZSBhbHJlYWR5IGluIGFuIGVycm9yIHN0YXRlLCBmb3IgaW5zdGFuY2Ugd2UgY2FsbGVkIGFib3J0
KCksIGJhaWwgb3V0IGVhcmx5LgogICAgIGlmIChtX2Vycm9yKQpAQCAtMTE2OSwzMCArMTE2Miwy
NCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycgogICAgIHJldHVybjsKIH0KIAotdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKQor
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciop
CiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2luUHJl
ZmxpZ2h0KSB7Ci0gICAgICAgIGRpZEZpbmlzaExvYWRpbmdQcmVmbGlnaHQobG9hZGVyKTsKKyAg
ICAgICAgZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlcik7Ci0KICAgICBpZiAobV9zdGF0ZSA8
IEhFQURFUlNfUkVDRUlWRUQpCiAgICAgICAgIGNoYW5nZVN0YXRlKEhFQURFUlNfUkVDRUlWRUQp
OwogCiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9yZXNwb25zZVRleHQgKz0gbV9kZWNv
ZGVyLT5mbHVzaCgpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1l
KCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAg
ICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlmaWVyKCkgOiBtX2lkZW50aWZp
ZXIsIG1fcmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZl
bCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBtX3VybCArICJcIi4iLCBtX2xhc3RTZW5k
TGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QobV9s
b2FkZXIgPyBtX2xvYWRlci0+aWRlbnRpZmllcigpIDogbV9pZGVudGlmaWVyLCBtX3Jlc3BvbnNl
VGV4dCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlVG9Db25zb2xl
KEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6
IFwiIiArIG1fdXJsICsgIlwiLiIsIG1fbGFzdFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RTZW5kVVJM
LCB0cnVlKTsKIAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2FkZXI7CiAgICAgbV9sb2FkZXIg
PSAwOwpAQCAtMTIwNCw3ICsxMTkxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNo
TG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKQogICAgICAgICBkcm9wUHJvdGVjdGlv
bigpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0
KFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5p
c2hMb2FkaW5nUHJlZmxpZ2h0KCkKIHsKICAgICBBU1NFUlQobV9pblByZWZsaWdodCk7CiAgICAg
QVNTRVJUKCFtX3NhbWVPcmlnaW5SZXF1ZXN0KTsKQEAgLTEyNjIsMTAgKzEyNDksMTAgQEAgYm9v
bCBYTUxIdHRwUmVxdWVzdDo6YWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZl
UmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBpZiAobV9pblByZWZsaWdodCkgewotICAgICAgICBkaWRSZWNlaXZlUmVz
cG9uc2VQcmVmbGlnaHQobG9hZGVyLCByZXNwb25zZSk7CisgICAgICAgIGRpZFJlY2VpdmVSZXNw
b25zZVByZWZsaWdodChyZXNwb25zZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEy
ODIsNyArMTI2OSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShT
dWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjCiAgICAgICAgIG1fcmVzcG9u
c2VFbmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKIH0KIAotdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KFN1YnJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgQVNTRVJUKG1faW5QcmVmbGlnaHQpOwogICAgIEFTU0VSVCghbV9zYW1l
T3JpZ2luUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
IGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA4NThmMjI4Li5jZGZhN2NhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U3RyaW5nLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM4LDcgQEAg
Y2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogY2xhc3MgWE1MSHR0cFJlcXVlc3QgOiBwdWJs
aWMgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHJpdmF0
ZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IGNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChkb2N1bWVu
dCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgWE1MSHR0
cFJlcXVlc3QoY29udGV4dCkpOyB9CiAgICAgflhNTEh0dHBSZXF1ZXN0KCk7CiAKICAgICAvLyBU
aGVzZSBleGFjdCBudW1lcmljIHZhbHVlcyBhcmUgaW1wb3J0YW50IGJlY2F1c2UgSlMgZXhwZWN0
cyB0aGVtLgpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVk
PFhNTEh0dHBSZXF1ZXN0Pjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgWE1MSHR0cFJlcXVlc3Qo
RG9jdW1lbnQqKTsKKyAgICBYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CkBAIC0xMjgsOCAr
MTI4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24o
U3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogCiAg
ICAgLy8gU3BlY2lhbCB2ZXJzaW9ucyBmb3IgdGhlIHByZWZsaWdodAotICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodChTdWJyZXNvdXJj
ZUxvYWRlciopOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdQcmVmbGlnaHQoKTsK
IAogICAgIHZvaWQgcHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyhjb25zdCBWZWN0b3I8Y2hhcj4mIGRh
dGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB1
cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWduZWQgaW50IGxlbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26144</attachid>
            <date>2008-12-19 09:39:34 -0800</date>
            <delta_ts>2008-12-25 01:11:27 -0800</delta_ts>
            <desc>Preliminary work for making async load available for workers.</desc>
            <filename>xhr-net.txt</filename>
            <type>text/plain</type>
            <size>19467</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA4ZjU3MDAzLi43MWJiY2NhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDQsNiArMTA0
LDggQEAKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgorI2luY2x1ZGUgIlN1YnJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJTeXN0ZW1UaW1lLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCkBAIC00MzA1LDYgKzQzMDcsMTE5IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc291cmNl
UmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
CiAgICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKIH0KIAorY2xhc3Mg
RG9jdW1lbnRMb2FkZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyUHJv
eHk+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0UmVzb3VyY2VMb2FkZXIs
IHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERvY3VtZW50TG9hZGVyUHJveHk+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdFJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBza2lwQ2FuTG9hZENoZWNr
LCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZm
KQorICAgIHsKKyAgICAgICAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlclByb3h5PiBwcm94eSA9
IGFkb3B0UmVmKG5ldyBEb2N1bWVudExvYWRlclByb3h5KGRvY3VtZW50LCBjbGllbnQsIHJlcXVl
c3QsIHNraXBDYW5Mb2FkQ2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHNob3VsZENv
bnRlbnRTbmlmZikpOworICAgICAgICBpZiAoIXByb3h5LT5tX2xvYWRlcikKKyAgICAgICAgICAg
IHByb3h5ID0gMDsKKyAgICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKworICAgIH5Eb2N1bWVu
dExvYWRlclByb3h5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVmKCkKKyAgICB7CisgICAgICAgIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXJQ
cm94eT46OnJlZigpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpCisgICAgewor
ICAgICAgICBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyUHJveHk+OjpkZXJlZigpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBEb2N1bWVudExvYWRlclByb3h5KERvY3VtZW50KiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6U2NyaXB0UmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIHNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJy
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKworICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7CisKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9h
ZGVyOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdFJlc291cmNlTG9hZGVyQ2xp
ZW50KiBtX2NsaWVudDsKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKK307CisKK0RvY3VtZW50
TG9hZGVyUHJveHk6OkRvY3VtZW50TG9hZGVyUHJveHkoRG9jdW1lbnQqIGRvY3VtZW50LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRSZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2tpcENhbkxvYWRDaGVjaywgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKKyAg
ICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUKGRvY3VtZW50ICYmIGNsaWVudCk7CisgICAgbV9sb2FkZXIgPSBTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKGRvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBza2lwQ2FuTG9h
ZENoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91bGRDb250ZW50U25pZmYpOwor
fQorCitEb2N1bWVudExvYWRlclByb3h5Ojp+RG9jdW1lbnRMb2FkZXJQcm94eSgpCit7CisgICAg
aWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fbG9hZGVyLT5jbGVhckNsaWVu
dCgpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyUHJveHk6OmNhbmNlbCgpCit7CisgICAgaWYg
KCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXItPmNhbmNlbCgpOwor
ICAgIG1fbG9hZGVyLT5jbGVhckNsaWVudCgpOworICAgIG1fbG9hZGVyID0gMDsKK30KKwordm9p
ZCBEb2N1bWVudExvYWRlclByb3h5Ojp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorewor
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJl
Y3QgY29ycmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cy4KKyAgICBpZiAoIW1f
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpIHsK
KyAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyUHJveHk+IHRlbXAodGhpcyk7CisgICAgICAg
IG1fY2xpZW50LT5zZWN1cml0eU9yaWdpbkRlbnlSZXF1ZXN0KCk7CisgICAgICAgIGNhbmNlbCgp
OworICAgIH0KK30KKwordm9pZCBEb2N1bWVudExvYWRlclByb3h5OjpkaWRTZW5kRGF0YShTdWJy
ZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCit7CisgICAgbV9jbGllbnQtPmRpZFNlbmREYXRh
KGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKK30KKwordm9pZCBEb2N1bWVudExvYWRl
clByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlKTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlclByb3h5OjpkaWRSZWNlaXZl
RGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit7Cisg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbik7Cit9CisKK3ZvaWQgRG9jdW1l
bnRMb2FkZXJQcm94eTo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVy
KQoreworICAgIEFTU0VSVChsb2FkZXIpOworICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5n
KGxvYWRlci0+aWRlbnRpZmllcigpKTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlclByb3h5Ojpk
aWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgbV9jbGllbnQtPmRpZEZhaWwoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSk7Cit9CisKK3Zv
aWQgRG9jdW1lbnRMb2FkZXJQcm94eTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAg
IG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNl
KCkpOworfQorCitQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdFJlc291
cmNlTG9hZGVyPiBEb2N1bWVudDo6bG9hZFJlc291cmNlQXN5bmNocm9ub3VzbHkoU2NyaXB0UmVz
b3VyY2VMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBib29sIHNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYpCit7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgcmV0
dXJuIERvY3VtZW50TG9hZGVyUHJveHk6OmNyZWF0ZSh0aGlzLCBjbGllbnQsIHJlcXVlc3QsIHNr
aXBDYW5Mb2FkQ2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHNob3VsZENvbnRlbnRT
bmlmZik7Cit9CisKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGltZXIgOiBwdWJs
aWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1Rp
bWVyKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDBkYTZhMGYuLjJkNTkxN2UgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtOTcsNiArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmFuZ2U7
CiAgICAgY2xhc3MgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgUmVuZGVyQXJl
bmE7CisgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogICAgIGNsYXNzIFNldHRpbmdzOwogICAgIGNsYXNzIFN0eWxlU2hlZXQ7CkBAIC03NzgsNiAr
Nzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpOwogICAgIHZp
cnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFNjcmlwdFJlc291cmNlTG9hZGVyPiBsb2FkUmVzb3VyY2VBc3luY2hy
b25vdXNseShTY3JpcHRSZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IGZhbHNlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IHRydWUpOwogICAgIHZp
cnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRh
c2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQgYWRkVGlt
ZW91dChpbnQgdGltZW91dElkLCBET01UaW1lciopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IDA3Mzg5YWEuLjhhNjExZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEFjdGl2ZURPTU9iamVjdDsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBLVVJM
OworICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAgICAgY2xhc3MgU2NyaXB0U3RyaW5nOwog
ICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFN0cmluZzsKQEAgLTU4LDYgKzU5
LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBib29s
IGluc3BlY3Rvck9ubHkpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlw
dFN0cmluZyYgc291cmNlU3RyaW5nKSA9IDA7CiAKKyAgICAgICAgY2xhc3MgU2NyaXB0UmVzb3Vy
Y2VMb2FkZXIgeworICAgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIHZpcnR1YWwgflNjcmlw
dFJlc291cmNlTG9hZGVyKCkge30KKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9
IDA7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgPSAwOworICAgICAgICAgICAgdmly
dHVhbCB2b2lkIGRlcmVmKCkgPSAwOworICAgICAgICB9OworCisgICAgICAgIGNsYXNzIFNjcmlw
dFJlc291cmNlTG9hZGVyQ2xpZW50IHsKKyAgICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICB2
aXJ0dWFsIH5TY3JpcHRSZXNvdXJjZUxvYWRlckNsaWVudCgpIHt9CisgICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgeyB9CisKKyAgICAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQor
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQp
IHsgfQorICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoaW50IHJlc291
cmNlSWRlbnRpZmVyKSB7IH0KKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGJvb2wg
aXNDYW5jZWxsYXRpb24pIHsgfQorICAgICAgICAgICAgdmlydHVhbCB2b2lkIHNlY3VyaXR5T3Jp
Z2luRGVueVJlcXVlc3QoKSB7IH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVk
Q2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICAgICAgfTsKKwog
ICAgICAgICAvLyBBY3RpdmUgb2JqZWN0cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4g
aWYgaW5hY2Nlc3NpYmxlLCBlLmcuIGJlY2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBp
biBjYWxsYmFja3MgYmVpbmcgaW52b2tlZC4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cygpOwogICAgICAgICAvLyBBY3RpdmUgb2JqZWN0cyBjYW4gYmUgYXNrZWQgdG8g
c3VzcGVuZCBldmVuIGlmIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkgcmV0dXJucyAnZmFs
c2UnIC0KZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBiZjcwMjFiLi4wYmZkMzUwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC0zNSw4ICszNSw5IEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMu
aCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlN5
c3RlbVRpbWUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKQEAgLTE5OCw3ICsxOTksNiBAQCB2b2lkIFByZWZs
aWdodFJlc3VsdENhY2hlSXRlbTo6YWRkVG9BY2Nlc3NDb250cm9sQWxsb3dMaXN0KGNvbnN0IFN0
cmluZyYgc3RyaW5nLAogICAgIHNldC5hZGQoc3RyaW5nLnN1YnN0cmluZ0NvcHkoc3RhcnQsIGVu
ZCAtIHN0YXJ0ICsgMSkpOwogfQogCi0KIHRlbXBsYXRlPGNsYXNzIEhhc2hUeXBlPgogYm9vbCBQ
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdChjb25z
dCBTdHJpbmcmIHN0cmluZywgSGFzaFNldDxTdHJpbmcsIEhhc2hUeXBlPiYgc2V0KQogewpAQCAt
MzIwLDcgKzMyMCw2IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9hc3luYyh0cnVlKQogICAgICwgbV9pbmNs
dWRlQ3JlZGVudGlhbHMoZmFsc2UpCiAgICAgLCBtX3N0YXRlKFVOU0VOVCkKLSAgICAsIG1faWRl
bnRpZmllcihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjptYXgoKSkKICAgICAs
IG1fcmVzcG9uc2VUZXh0KCIiKQogICAgICwgbV9jcmVhdGVkRG9jdW1lbnQoZmFsc2UpCiAgICAg
LCBtX2Vycm9yKGZhbHNlKQpAQCAtODAyLDE1ICs4MDEsMTYgQEAgdm9pZCBYTUxIdHRwUmVxdWVz
dDo6bG9hZFJlcXVlc3RTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRXhj
ZXB0aW8KICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CiAKKyAgICBpbnQgcmVzb3VyY2VJZGVudGlmZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkIGxvbmc+OjptYXgoKTsKICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAg
ICAgICAgbV9pZGVudGlmaWVyID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAg
ICAgICAgcmVzb3VyY2VJZGVudGlmZXIgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEp
OwogCiAgICAgbV9sb2FkZXIgPSAwOwogCiAgICAgLy8gTm8gZXhjZXB0aW9uIGZvciBmaWxlOi8v
LyByZXNvdXJjZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2MjI5OD4uCiAgICAgLy8gQWxzbywg
aWYgd2UgaGF2ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0IHdhc24ndCBhIG5ldHdvcmsgZXJy
b3IgaW4gZmFjdC4KICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgfHwgcmVxdWVzdC51cmwoKS5pc0xv
Y2FsRmlsZSgpIHx8IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPiAwKSB7Ci0gICAgICAgIHBy
b2Nlc3NTeW5jTG9hZFJlc3VsdHMoZGF0YSwgcmVzcG9uc2UsIGVjKTsKKyAgICAgICAgcHJvY2Vz
c1N5bmNMb2FkUmVzdWx0cyhyZXNvdXJjZUlkZW50aWZlciwgZGF0YSwgcmVzcG9uc2UsIGVjKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODI0LDcgKzgyNCw2IEBAIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIEV4Y2VwdGlvCiAgICAgZWMgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19F
UlI7CiB9CiAKLQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6bG9hZFJlcXVlc3RBc3luY2hyb25vdXNs
eShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwpAQCAt
ODM1LDcgKzgzNCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0QXN5bmNocm9u
b3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBj
b250ZW50IHNuaWZmaW5nIGVuYWJsZWQgZm9yIGxvY2FsIGZpbGVzIGR1ZSB0byBDRk5ldHdvcmsg
bm90IHByb3ZpZGluZyBhIE1JTUUgdHlwZQogICAgIC8vIGZvciBsb2NhbCBmaWxlcyBvdGhlcndp
c2UsIDxyZGFyOi8vcHJvYmxlbS81NjcxODEzPi4KICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MgPSAhbV9pblByZWZsaWdodDsKLSAgICBtX2xvYWRlciA9IFN1YnJlc291cmNlTG9h
ZGVyOjpjcmVhdGUoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgZmFsc2UsIHNl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSk7Cisg
ICAgbV9sb2FkZXIgPSBkb2N1bWVudCgpLT5sb2FkUmVzb3VyY2VBc3luY2hyb25vdXNseSh0aGlz
LCByZXF1ZXN0LCBmYWxzZSwgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgcmVxdWVzdC51cmwo
KS5pc0xvY2FsRmlsZSgpKTsKIAogICAgIGlmIChtX2xvYWRlcikgewogICAgICAgICAvLyBOZWl0
aGVyIHRoaXMgb2JqZWN0IG5vciB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHNob3VsZCBiZSBkZWxl
dGVkIHdoaWxlCkBAIC0xMTI4LDQxICsxMTI3LDQwIEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6
c3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnByb2Nlc3NTeW5jTG9hZFJlc3VsdHMoY29uc3Qg
VmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpwcm9jZXNzU3luY0xvYWRSZXN1
bHRzKGludCByZXNvdXJjZUlkZW50aWZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKG1fc2FtZU9yaWdpblJlcXVlc3QgJiYgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgYWJv
cnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBkaWRSZWNlaXZlUmVzcG9u
c2UoMCwgcmVzcG9uc2UpOworICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAgICAg
Y2hhbmdlU3RhdGUoSEVBREVSU19SRUNFSVZFRCk7CiAKICAgICBjb25zdCBjaGFyKiBieXRlcyA9
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSk7CiAgICAgaW50IGxlbiA9IHN0
YXRpY19jYXN0PGludD4oZGF0YS5zaXplKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhKDAsIGJ5dGVz
LCBsZW4pOworICAgIGRpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW4pOwogCi0gICAgZGlkRmluaXNo
TG9hZGluZygwKTsKKyAgICBkaWRGaW5pc2hMb2FkaW5nKHJlc291cmNlSWRlbnRpZmVyKTsKICAg
ICBpZiAobV9lcnJvcikKICAgICAgICAgZWMgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVU
V09SS19FUlI7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZhaWwoU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmRpZEZhaWwoYm9vbCBpc0NhbmNlbGxhdGlvbikKIHsKICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFk
eSBpbiBhbiBlcnJvciBzdGF0ZSwgZm9yIGluc3RhbmNlIHdlIGNhbGxlZCBhYm9ydCgpLCBiYWls
IG91dCBlYXJseS4KICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsKKyAgICBpZiAoaXNDYW5jZWxsYXRpb24pIHsKICAg
ICAgICAgYWJvcnRFcnJvcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbmV0d29y
a0Vycm9yKCk7Ci0gICAgcmV0dXJuOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5p
c2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZp
bmlzaExvYWRpbmcoaW50IHJlc291cmNlSWRlbnRpZmVyKQogewogICAgIGlmIChtX2Vycm9yKQog
ICAgICAgICByZXR1cm47CkBAIC0xMTc4LDcgKzExNzYsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKikKICAgICBpZiAobV9kZWNvZGVy
KQogICAgICAgICBtX3Jlc3BvbnNlVGV4dCArPSBtX2RlY29kZXItPmZsdXNoKCk7CiAKLSAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlmaWVyKCkgOiBtX2lkZW50aWZpZXIsIG1fcmVz
cG9uc2VUZXh0KTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdChyZXNvdXJjZUlkZW50aWZlciwgbV9yZXNwb25zZVRleHQpOwog
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBt
X3VybCArICJcIi4iLCBtX2xhc3RTZW5kTGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCwgdHJ1ZSk7
CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwpAQCAtMTIwNCwxNiArMTIwMiwxMyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0KCkKICAgICAg
ICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6
OndpbGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgWE1M
SHR0cFJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luRGVueVJlcXVlc3QoKQogewotICAgIC8vIEZJWE1F
OiBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QgY29ycmVjdGx5
IGV2ZW4gZm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cy4KLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXF1ZXN0LnVybCgpKSkg
ewotICAgICAgICBpbnRlcm5hbEFib3J0KCk7Ci0gICAgICAgIG5ldHdvcmtFcnJvcigpOwotICAg
IH0KKyAgICBpbnRlcm5hbEFib3J0KCk7CisgICAgbmV0d29ya0Vycm9yKCk7CiB9CiAKLXZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7CiAgICAg
aWYgKCFtX3VwbG9hZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI0OSw3ICsxMjQ0LDcgQEAgYm9v
bCBYTUxIdHRwUmVxdWVzdDo6YWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAobV9pblByZWZs
aWdodCkgewogICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGlnaHQocmVzcG9uc2UpOwpA
QCAtMTI4MCwxNyArMTI3NSw5IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNw
b25zZVByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zCiAgICAgfQogCiAg
ICAgT3duUHRyPFByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4gcHJlZmxpZ2h0UmVzdWx0KG5ldyBQ
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0obV9pbmNsdWRlQ3JlZGVudGlhbHMpKTsKLSAgICBpZiAo
IXByZWZsaWdodFJlc3VsdC0+cGFyc2UocmVzcG9uc2UpKSAgewotICAgICAgICBuZXR3b3JrRXJy
b3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghcHJlZmxpZ2h0UmVzdWx0
LT5hbGxvd3NDcm9zc1NpdGVNZXRob2QobV9tZXRob2QpKSB7Ci0gICAgICAgIG5ldHdvcmtFcnJv
cigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFwcmVmbGlnaHRSZXN1bHQt
PmFsbG93c0Nyb3NzU2l0ZUhlYWRlcnMobV9yZXF1ZXN0SGVhZGVycykpIHsKKyAgICBpZiAoIXBy
ZWZsaWdodFJlc3VsdC0+cGFyc2UocmVzcG9uc2UpCisgICAgICAgIHx8ICFwcmVmbGlnaHRSZXN1
bHQtPmFsbG93c0Nyb3NzU2l0ZU1ldGhvZChtX21ldGhvZCkKKyAgICAgICAgfHwgIXByZWZsaWdo
dFJlc3VsdC0+YWxsb3dzQ3Jvc3NTaXRlSGVhZGVycyhtX3JlcXVlc3RIZWFkZXJzKSkgIHsKICAg
ICAgICAgbmV0d29ya0Vycm9yKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjk4LDEy
ICsxMjg1LDEyIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVByZWZs
aWdodChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zCiAgICAgUHJlZmxpZ2h0UmVzdWx0
Q2FjaGU6OnNoYXJlZCgpLmFwcGVuZEVudHJ5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbV91cmwsIHByZWZsaWdodFJlc3VsdC5yZWxlYXNl
KCkpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpyZWNlaXZlZENhbmNlbGxhdGlvbihTdWJy
ZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBmYWlsdXJlUmVzcG9uc2UpCiB7Ci0gICAgbV9yZXNwb25zZSA9IGNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKTsKKyAgICBtX3Jlc3BvbnNlID0gZmFpbHVyZVJlc3BvbnNlOwog
fQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRl
ciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewogICAgIGlmIChtX2luUHJl
ZmxpZ2h0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBjZGZhN2NhLi5l
NDVmODUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI2LDE3ICsyNiwxOCBAQAogI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlNjcmlwdFN0cmluZy5oIgotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRmlsZTsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFRl
eHRSZXNvdXJjZURlY29kZXI7CiAKLWNsYXNzIFhNTEh0dHBSZXF1ZXN0IDogcHVibGljIFJlZkNv
dW50ZWQ8WE1MSHR0cFJlcXVlc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHByaXZhdGUgU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgWE1MSHR0
cFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHJpdmF0ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRSZXNvdXJjZUxv
YWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgWE1MSHR0cFJlcXVlc3QoY29udGV4dCkp
OyB9CiAgICAgflhNTEh0dHBSZXF1ZXN0KCk7CkBAIC0xMTksMTkgKzEyMCwxOSBAQCBwcml2YXRl
OgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFN1YnJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShT
dWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciop
OwotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRl
ciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoaW50IHJlc291cmNlSWRlbnRpZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChib29sIGlzQ2FuY2VsbGF0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5j
ZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZWN1
cml0eU9yaWdpbkRlbnlSZXF1ZXN0KCk7CiAKICAgICAvLyBTcGVjaWFsIHZlcnNpb25zIGZvciB0
aGUgcHJlZmxpZ2h0CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGlnaHQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodCgp
OwogCi0gICAgdm9pZCBwcm9jZXNzU3luY0xvYWRSZXN1bHRzKGNvbnN0IFZlY3RvcjxjaGFyPiYg
ZGF0YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IHByb2Nlc3NTeW5jTG9hZFJlc3VsdHMoaW50IHJlc291cmNlSWRlbnRpZmVyLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCB1cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWduZWQgaW50IGxlbik7
CiAKICAgICBTdHJpbmcgcmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0OwpAQCAtMTk4LDE2ICsxOTks
MTUgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYXN5bmM7CiAgICAgYm9vbCBtX2luY2x1ZGVDcmVk
ZW50aWFsczsKIAotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAg
UmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdFJlc291cmNlTG9hZGVyPiBtX2xv
YWRlcjsKICAgICBTdGF0ZSBtX3N0YXRlOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3Bv
bnNlOwogICAgIFN0cmluZyBtX3Jlc3BvbnNlRW5jb2Rpbmc7CiAKICAgICBSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVy
OwogCi0gICAgLy8gVW5saWtlIG1vc3Qgc3RyaW5ncyBpbiB0aGUgRE9NLCB3ZSBrZWVwIHRoaXMg
YXMgYSBKU0M6OlVTdHJpbmcsIG5vdCBhIFdlYkNvcmU6OlN0cmluZy4KKyAgICAvLyBVbmxpa2Ug
bW9zdCBzdHJpbmdzIGluIHRoZSBET00sIHdlIGtlZXAgdGhpcyBhcyBhIFNjcmlwdFN0cmluZywg
bm90IGEgV2ViQ29yZTo6U3RyaW5nLgogICAgIC8vIFRoYXQncyBiZWNhdXNlIHRoZXNlIHN0cmlu
Z3MgY2FuIGVhc2lseSBnZXQgaHVnZSAodGhleSBhcmUgZmlsbGVkIGZyb20gdGhlIG5ldHdvcmsg
d2l0aAogICAgIC8vIG5vIHBhcnNpbmcpIGFuZCBiZWNhdXNlIEpTIGNhbiBlYXNpbHkgb2JzZXJ2
ZSBtYW55IGludGVybWVkaWF0ZSBzdGF0ZXMsIHNvIGl0J3MgdmVyeSB1c2VmdWwKICAgICAvLyB0
byBiZSBhYmxlIHRvIHNoYXJlIHRoZSBidWZmZXIgd2l0aCBKYXZhU2NyaXB0IHZlcnNpb25zIG9m
IHRoZSB3aG9sZSBvciBwYXJ0aWFsIHN0cmluZy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26246</attachid>
            <date>2008-12-25 01:11:27 -0800</date>
            <delta_ts>2009-01-08 17:42:30 -0800</delta_ts>
            <desc>Addressed ap&apos;s comments.</desc>
            <filename>patch-for-bug22720.txt</filename>
            <type>text/plain</type>
            <size>33986</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA0NmU3NDZmLi41YjI2MDMyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDgtMTItMjUgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMAorICAgICAgICBFeHBvc2UgdGhlIGNvbnN0
cnVjdG9yIGZyb20gVVN0cmluZyB0aGF0IHRha2VzIG93bmVyc2hpcCBvZiBhIGJ1ZmZlci4gCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisKIDIwMDgtMTItMjIgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
IGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IGRhNDI3ZmMuLjNkZmM3
YjIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTIxNiw2ICsyMTYsNyBAQCBfX1pO
M0pTQzdVU3RyaW5nNmFwcGVuZEVQS2MKIF9fWk4zSlNDN1VTdHJpbmc2YXBwZW5kRVJLUzBfCiBf
X1pOM0pTQzdVU3RyaW5nQzFFUEtjCiBfX1pOM0pTQzdVU3RyaW5nQzFFUEt0aQorX19aTjNKU0M3
VVN0cmluZ0MxRVB0aWIKIF9fWk4zSlNDN1VTdHJpbmdhU0VQS2MKIF9fWk4zSlNDOERlYnVnZ2Vy
NmF0dGFjaEVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9fWk4zSlNDOERlYnVnZ2VyNmRldGFjaEVQ
TlNfMTRKU0dsb2JhbE9iamVjdEUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwOGZkZC4uOWZkNDNlYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAw
OC0xMi0yNSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzIwCisgICAgICAgIEFkZCBhZGRNZXNzYWdlVG9Db25zb2xl
IGFuZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QgdG8gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC4KKworICAgICAgICBVc2UgdGhlc2UgbWV0aG9kcyBhbmQgb3RoZXJzIHRvIHJlbW92
ZSBkb2N1bWVudCgpIGZyb20gWE1MSHR0cFJlcXVlc3QgaW4gYSBmZXcgbW9yZSBwbGFjZXMuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFN0cmluZzo6U2NyaXB0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0
cmluZzo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJhdG9yPSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJhdG9yKz0pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFN0cmluZzo6b3BlcmF0b3IhPSk6CisgICAgICAgIFJlbW92ZWQgdGhlIHVzZSBKU0M6Okxv
Y2sgd2hpY2ggZGlkbid0IGRvIGFueXRoaW5nIHVzZWZ1bC4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTWVzc2FnZVRvQ29uc29s
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9Xb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyOjpub3RpZnlGaW5pc2hlZCk6CisKKyAgICAgICAgKiBkb20vV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpXb3JrZXJD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgTm90ZTogVGhleSB3aWxsIG5vdCB0byBzZW5k
IHRoZSBtZXNzYWdlcyB0byB0aGUgaW5zcGVjdG9yIG9uIHRoZSBtYWluIHRocmVhZCAod2hpY2gg
bWF5IGVudGFpbCBjb3B5aW5nIGxhcmdlIHN0cmluZykKKyAgICAgICAgd2hlbiB0aGUgaW5zcGVj
dG9yIGlzbid0IHJ1bm5pbmcuCisKKyAgICAgICAgKiBkb20vV29ya2VyQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVRv
Q29uc29sZVRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlVG9D
b25zb2xlVGFzazo6V29ya2VyTWVzc2FnZVRvQ29uc29sZVRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyTWVzc2FnZVRvQ29uc29sZVRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdFRhc2s6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3RUYXNrOjpXb3JrZXJSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RUYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdFJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6CisKKyAg
ICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiBkb20vV29ya2Vy
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpX
b3JrZXJUaHJlYWRTdGFydHVwRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisgICAgICAg
IEFkZGVkIHRoZSBwbHVtYmluZyBmb3IgaW5zcGVjdG9yRW5hYmxlZCBhbmQgbW92ZWQgaW5mb3Jt
YXRpb24gdGhhdCBpcyBvbmx5IG5lZWRlZCBmb3Igc3RhcnR1cAorICAgICAgICB0byBhIHN0cnVj
dCwgc28gaXQgY2FuIGJlIGNsZWFyZWQgb3V0LgorCisgICAgICAgICogZG9tL1dvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmRyb3BQcm90ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFVu
c2FmZVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0
SGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGln
aHQpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSk6CisKIDIwMDgtMTItMjQgIEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXggdG8gZmluZCBhZGRTdWJyZXNvdXJjZVVSTApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdHJpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RyaW5n
LmgKaW5kZXggM2VmYTE2MC4uN2JlZWMyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdHJpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5o
CkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCkBAIC0zMSw4ICszMiw2IEBACiAjaWZuZGVmIFNj
cmlwdFN0cmluZ19oCiAjZGVmaW5lIFNjcmlwdFN0cmluZ19oCiAKLSNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9VU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDM1ICs0MywzMyBAQCBw
dWJsaWM6CiAgICAgU2NyaXB0U3RyaW5nKCkge30KICAgICBTY3JpcHRTdHJpbmcoY29uc3QgY2hh
ciogcykgOiBtX3N0cihzKSB7fQogICAgIFNjcmlwdFN0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcm
IHMpIDogbV9zdHIocykge30KKyAgICBTY3JpcHRTdHJpbmcoVUNoYXIqIHMsIGludCBsZW5ndGgs
IGJvb2wgY29weSkgOiBtX3N0cihzLCBsZW5ndGgsIGNvcHkpIHt9CiAKICAgICBvcGVyYXRvciBK
U0M6OlVTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cjsgfQogCiAgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBtX3N0ci5pc051bGwoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zdHIuc2l6ZSgpOyB9CisgICAgY29uc3QgVUNoYXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX3N0ci5kYXRhKCk7IH0KIAogICAgIFNjcmlwdFN0cmluZyYgb3BlcmF0b3I9
KGNvbnN0IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsK
ICAgICAgICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAg
U2NyaXB0U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmluZyYgcykKICAgICB7Ci0gICAgICAg
IEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBtX3N0ciArPSBzOwogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdFN0
cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwog
ICAgICAgICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAgICB9CiAKICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAogICAgIHsKLSAgICAgICAgSlNDOjpK
U0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lkIGV4cG9ydGluZyBhbiBleHRyYSBz
eW1ib2wgYnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAgICAgICAgcmV0dXJuICEobV9zdHIg
PT0gcy5tX3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGVjMGYxNDkuLjk0YTYwMTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgpAQCAtNDI5NCw2
ICs0Mjk1LDIxIEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0CiAgICAgICAgIHdpbmRvdy0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVy
cm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9pZCBEb2N1bWVudDo6
YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpCit7CisgICAgaWYgKGluc3BlY3Rv
ck9ubHkpIHsKKyAgICAgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgfSBlbHNlIGlmIChET01XaW5kb3cqIHdp
bmRvdyA9IGRvbVdpbmRvdygpKQorICAgICAgICB3aW5kb3ctPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2
b2lkIERvY3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykKK3sKKyAg
ICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7
Cit9CisKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGltZXIgOiBwdWJsaWMgVGlt
ZXJCYXNlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1RpbWVyKFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gdGFzaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDljNDJiNDIuLjQyYWRjNjQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzc0LDYgKzc3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhcnNlRE5TUHJlZmV0Y2hDb250cm9s
SGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlv
bihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGJvb2wgaW5zcGVjdG9yT25seSk7
CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4ZWN1dGVz
IHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICB2b2lk
IGFkZFRpbWVvdXQoaW50IHRpbWVvdXRJZCwgRE9NVGltZXIqKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCAyZTlkNTZjLi41OGQzMjZkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCkBAIC0yNyw2ICsyNyw4IEBACiAjaWZuZGVmIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRfaAogI2RlZmluZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0X2gKIAorCisjaW5jbHVk
ZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zNyw2ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIEFjdGl2ZURPTU9iamVjdDsKICAgICBjbGFzcyBNZXNzYWdl
UG9ydDsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAgICAgY2xhc3MgU3RyaW5nOwogCkBAIC01NCw2ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGJv
b2wgaW5zcGVjdG9yT25seSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2Ny
aXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpID0gMDsKIAogICAgICAgICAvLyBBY3RpdmUgb2JqZWN0
cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBlLmcuIGJl
Y2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcgaW52b2tl
ZC4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vV29ya2VyLmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlci5jcHAKaW5kZXgg
ODhhMzk2Zi4uOTkxM2VhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyLmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Xb3JrZXIuY3BwCkBAIC00MCw3ICs0MCw5IEBACiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2
ZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5
LmgiCkBAIC0xMjEsNyArMTIzLDggQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIFN0cmluZyB1c2VyQWdlbnQgPSBkb2N1bWVudCgpLT5mcmFtZSgpID8g
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVzZXJBZ2VudChtX3NjcmlwdFVSTCkgOiBT
dHJpbmcoKTsKLSAgICAgICAgUmVmUHRyPFdvcmtlclRocmVhZD4gdGhyZWFkID0gV29ya2VyVGhy
ZWFkOjpjcmVhdGUobV9zY3JpcHRVUkwsIHVzZXJBZ2VudCwgbV9jYWNoZWRTY3JpcHQtPnNjcmlw
dCgpLCBtX21lc3NhZ2luZ1Byb3h5KTsKKyAgICAgICAgYm9vbCBpbnNwZWN0b3JFbmFibGVkID0g
ZG9jdW1lbnQoKS0+cGFnZSgpID8gZG9jdW1lbnQoKS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmVuYWJsZWQoKSA6IGZhbHNlOworICAgICAgICBSZWZQdHI8V29ya2VyVGhyZWFkPiB0
aHJlYWQgPSBXb3JrZXJUaHJlYWQ6OmNyZWF0ZShtX3NjcmlwdFVSTCwgdXNlckFnZW50LCBtX2Nh
Y2hlZFNjcmlwdC0+c2NyaXB0KCksIGluc3BlY3RvckVuYWJsZWQsIG1fbWVzc2FnaW5nUHJveHkp
OwogICAgICAgICBtX21lc3NhZ2luZ1Byb3h5LT53b3JrZXJUaHJlYWRDcmVhdGVkKHRocmVhZCk7
CiAgICAgICAgIHRocmVhZC0+c3RhcnQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCmluZGV4
IGVlMDU1NmMuLjhkYzYzMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC00MywxMiArNDMsMTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZCog
dGhyZWFkKQorV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGluc3BlY3RvckVuYWJsZWQsIFdvcmtlclRocmVh
ZCogdGhyZWFkKQogICAgIDogbV91cmwodXJsKQogICAgICwgbV91c2VyQWdlbnQodXNlckFnZW50
KQogICAgICwgbV9sb2NhdGlvbihXb3JrZXJMb2NhdGlvbjo6Y3JlYXRlKHVybCkpCiAgICAgLCBt
X3NjcmlwdChuZXcgV29ya2VyU2NyaXB0Q29udHJvbGxlcih0aGlzKSkKICAgICAsIG1fdGhyZWFk
KHRocmVhZCkKKyAgICAsIG1faW5zcGVjdG9yRW5hYmxlZChpbnNwZWN0b3JFbmFibGVkKQogewog
ICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiB9CkBA
IC0xMDgsNiArMTA5LDIwIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwKICAgICBtX3RocmVhZC0+
bWVzc2FnaW5nUHJveHkoKS0+cG9zdFdvcmtlckV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKK3ZvaWQgV29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBib29sIGluc3BlY3Rvck9ubHkpCit7CisgICAgaWYgKGluc3BlY3Rvck9ubHkgJiYgIW1f
aW5zcGVjdG9yRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdGhyZWFkLT5tZXNzYWdp
bmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VVUkwsIGluc3BlY3Rvck9ubHkpOworfQorCit2b2lkIFdvcmtlckNv
bnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQoreworICAgIGlmICgh
bV9pbnNwZWN0b3JFbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgbV90aHJlYWQtPm1lc3Nh
Z2luZ1Byb3h5KCktPnBvc3RSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRp
Zmllciwgc291cmNlU3RyaW5nKTsKK30KKwogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgbV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5
KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKaW5k
ZXggYzk3NzRkOS4uYWI1NmNkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4
dC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaApAQCAtNDgsOSArNDgsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0IDogcHVibGljIFJl
ZkNvdW50ZWQ8V29ya2VyQ29udGV4dD4sIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBw
dWJsaWMgRXZlbnRUYXJnZXQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V29ya2VyQ29udGV4dD4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFdvcmtlclRocmVhZCogdGhyZWFkKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgYm9vbCBpbnNwZWN0b3JFbmFibGVkLCBXb3JrZXJUaHJlYWQqIHRocmVhZCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJDb250ZXh0KHVy
bCwgdXNlckFnZW50LCB0aHJlYWQpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgaW5zcGVjdG9yRW5hYmxlZCwgdGhyZWFkKSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5Xb3JrZXJDb250ZXh0KCk7CkBAIC03Miw2
ICs3Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGJvb2wgaW5zcGVjdG9yT25seSk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3Qo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmlu
Zyk7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKSB7
IHJldHVybiB0aGlzOyB9CiAKQEAgLTk4LDcgKzEwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogCi0gICAgICAg
IFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIFdvcmtlclRocmVhZCop
OworICAgICAgICBXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBib29s
IGluc3BlY3RvckVuYWJsZWQsIFdvcmtlclRocmVhZCopOwogCiAgICAgICAgIHZpcnR1YWwgY29u
c3QgS1VSTCYgdmlydHVhbFVSTCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEtVUkwgdmlydHVh
bENvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpAQCAtMTEzLDYgKzExNSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1l
c3NhZ2VMaXN0ZW5lcjsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVy
czsKKworICAgICAgICBib29sIG1faW5zcGVjdG9yRW5hYmxlZDsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggZTU2
NDdmYi4uMDJlZWU3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IERhdmlkIExldmluIChsZXZpbkBjaHJv
bWl1bS5vcmcpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzM0LDcg
QEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgogI2luY2x1ZGUg
Ildvcmtlci5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJU
YXNrLmgiCkBAIC0xNDEsNiArMTQzLDczIEBAIHByaXZhdGU6CiAgICAgV29ya2VyTWVzc2FnaW5n
UHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CiB9OwogCitjbGFzcyBXb3JrZXJNZXNzYWdlVG9Db25z
b2xlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJNZXNzYWdlVG9Db25zb2xlVGFzaz4gY3JlYXRl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGJv
b2wgaW5zcGVjdG9yT25seSwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJNZXNzYWdlVG9Db25zb2xl
VGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIGluc3Bl
Y3Rvck9ubHksIG1lc3NhZ2luZ1Byb3h5KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtl
ck1lc3NhZ2VUb0NvbnNvbGVUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIGJvb2wgaW5zcGVjdG9yT25seSwgV29ya2VyTWVzc2FnaW5nUHJv
eHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkKKyAgICAgICAg
LCBtX2xldmVsKGxldmVsKQorICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlLmNvcHkoKSkKKyAg
ICAgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAgICAgICAgLCBtX3NvdXJjZVVSTChz
b3VyY2VVUkwuY29weSgpKQorICAgICAgICAsIG1faW5zcGVjdG9yT25seShpbnNwZWN0b3JPbmx5
KQorICAgICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKG1fbWVzc2FnaW5nUHJveHktPmFza2VkVG9U
ZXJtaW5hdGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29udGV4dC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtX3NvdXJjZSwgbV9sZXZlbCwgbV9tZXNzYWdlLCBtX2xpbmVOdW1iZXIs
IG1fc291cmNlVVJMLCBtX2luc3BlY3Rvck9ubHkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBN
ZXNzYWdlU291cmNlIG1fc291cmNlOworICAgIE1lc3NhZ2VMZXZlbCBtX2xldmVsOworICAgIFN0
cmluZyBtX21lc3NhZ2U7CisgICAgdW5zaWduZWQgbV9saW5lTnVtYmVyOworICAgIFN0cmluZyBt
X3NvdXJjZVVSTDsKKyAgICBib29sIG1faW5zcGVjdG9yT25seTsKKyAgICBXb3JrZXJNZXNzYWdp
bmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKK307CisKK2NsYXNzIFdvcmtlclJlc291cmNlUmV0
cmlldmVkQnlYTUxIdHRwUmVxdWVzdFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyUmVzb3VyY2VS
ZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0VGFzaz4gY3JlYXRlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcsIFdvcmtlck1lc3NhZ2luZ1By
b3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V29ya2VyUmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0VGFzayhpZGVudGlmaWVyLCBz
b3VyY2VTdHJpbmcsIG1lc3NhZ2luZ1Byb3h5KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdv
cmtlclJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdFRhc2sodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZywgV29ya2VyTWVzc2Fn
aW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgICAgICAsIG1fc291cmNlU3RyaW5nKHNvdXJjZVN0cmluZy5zaXplKCkpCisgICAg
ICAgICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICB7CisgICAgICAgIG1l
bWNweShtX3NvdXJjZVN0cmluZy5kYXRhKCksIHNvdXJjZVN0cmluZy5kYXRhKCksIG1fc291cmNl
U3RyaW5nLnNpemUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBzaXplX3Qgc2l6
ZSA9IG1fc291cmNlU3RyaW5nLnNpemUoKTsKKyAgICAgICAgU2NyaXB0U3RyaW5nIHNvdXJjZVN0
cmluZyhtX3NvdXJjZVN0cmluZy5yZWxlYXNlQnVmZmVyKCksIHNpemUsIGZhbHNlKTsKKyAgICAg
ICAgaWYgKG1fbWVzc2FnaW5nUHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY29udGV4dC0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1
ZXN0KG1faWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CisgICAgVmVjdG9yPFVDaGFyPiBtX3NvdXJjZVN0
cmluZzsKKyAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKK307CisK
IGNsYXNzIFdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2sgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlckNv
bnRleHREZXN0cm95ZWRUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2lu
Z1Byb3h5KQpAQCAtMjMxLDYgKzMwMCwxNiBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpw
b3N0V29ya2VyRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbAogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6
Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMLCB0aGlzKSk7CiB9CiAK
K3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGJvb2wgaW5zcGVj
dG9yT25seSkKK3sKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtl
ck1lc3NhZ2VUb0NvbnNvbGVUYXNrOjpjcmVhdGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlVVJMLCBpbnNwZWN0b3JPbmx5LCB0aGlzKSk7Cit9CisKK3ZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnBvc3RSZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3Qo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmlu
ZykKK3sKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlclJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdFRhc2s6OmNyZWF0ZShpZGVudGlmaWVyLCBzb3Vy
Y2VTdHJpbmcsIHRoaXMpKTsKK30KKwogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2Vy
VGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkKQogewog
ICAgIG1fd29ya2VyVGhyZWFkID0gd29ya2VyVGhyZWFkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmgKaW5kZXggYzAwNDk0MC4uZmM4YThlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29y
a2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1ZGUg
IkNvbnNvbGUuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM3LDYgKzM4LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgY2xhc3MgU2NyaXB0U3RyaW5nOwogICAgIGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBX
b3JrZXI7CiAgICAgY2xhc3MgV29ya2VyVGFzazsKQEAgLTUwLDYgKzUyLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICAgICAgdm9pZCBwb3N0V29ya2VyRXhjZXB0aW9uKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KTsKKyAgICAg
ICAgdm9pZCBwb3N0UmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogCiAgICAg
ICAgIHZvaWQgd29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPFdvcmtlclRocmVhZD4pOwog
ICAgICAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpOwpAQCAtNjUsNiArNjksOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNZXNzYWdlV29ya2VyVGFz
azsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrOwogICAg
ICAgICBmcmllbmQgY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzazsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFdvcmtlck1lc3NhZ2VUb0NvbnNvbGVUYXNrOworICAgICAgICBmcmllbmQgY2xhc3MgV29y
a2VyUmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0VGFzazsKICAgICAgICAgZnJpZW5k
IGNsYXNzIFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazsKIAogICAgICAgICB+V29ya2Vy
TWVzc2FnaW5nUHJveHkoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5j
cHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IGU5MTQ2NjEuLmZhNGNiNWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAKKysrIGIvV2ViQ29yZS9k
b20vV29ya2VyVGhyZWFkLmNwcApAQCAtMzYsMjAgKzM2LDM0IEBACiAjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyVGFzay5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEgOiBOb25jb3B5YWJsZSB7
CisgICAgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBib29sIGluc3Bl
Y3RvckVuYWJsZWQpOworICAgIEtVUkwgbV9zY3JpcHRVUkw7CisgICAgU3RyaW5nIG1fdXNlckFn
ZW50OworICAgIFN0cmluZyBtX3NvdXJjZUNvZGU7CisgICAgYm9vbCBtX2luc3BlY3RvckVuYWJs
ZWQ7Cit9OworCitXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERh
dGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlLCBib29sIGluc3BlY3RvckVuYWJsZWQpCisgIDogbV9zY3JpcHRV
Ukwoc2NyaXB0VVJMLmNvcHkoKSkKKyAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQuY29weSgpKQor
ICAsIG1fc291cmNlQ29kZShzb3VyY2VDb2RlLmNvcHkoKSkKKyAgLCBtX2luc3BlY3RvckVuYWJs
ZWQoaW5zcGVjdG9yRW5hYmxlZCkKK3sKK30KIAotUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+IFdv
cmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTWVzc2FnaW5nUHJveHkq
IG1lc3NhZ2luZ1Byb3h5KQorUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+IFdvcmtlclRocmVhZDo6
Y3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IFN0cmluZyYgc291cmNlQ29kZSwgYm9vbCBpbnNwZWN0b3JFbmFibGVkLCBXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
b3JrZXJUaHJlYWQoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIG1lc3NhZ2luZ1By
b3h5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJUaHJlYWQoc2NyaXB0VVJMLCB1
c2VyQWdlbnQsIHNvdXJjZUNvZGUsIGluc3BlY3RvckVuYWJsZWQsIG1lc3NhZ2luZ1Byb3h5KSk7
CiB9CiAKLVdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
TWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJl
YWQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlLCBib29sIGluc3BlY3RvckVuYWJsZWQsIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICA6IG1fdGhyZWFkSUQoMCkKLSAgICAsIG1fc2Ny
aXB0VVJMKHNjcmlwdFVSTC5jb3B5KCkpCi0gICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQuY29w
eSgpKQotICAgICwgbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUuY29weSgpKQogICAgICwgbV9tZXNz
YWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICAsIG1fc3RhcnR1cERhdGEobmV3IFdvcmtl
clRocmVhZFN0YXJ0dXBEYXRhKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzb3VyY2VDb2RlLCBpbnNw
ZWN0b3JFbmFibGVkKSkKIHsKIH0KIApAQCAtNzksMTEgKzkzLDEyIEBAIHZvaWQqIFdvcmtlclRo
cmVhZDo6d29ya2VyVGhyZWFkKCkKIHsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2so
bV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICAgICAgbV93b3JrZXJDb250ZXh0ID0gV29ya2Vy
Q29udGV4dDo6Y3JlYXRlKG1fc2NyaXB0VVJMLCBtX3VzZXJBZ2VudCwgdGhpcyk7CisgICAgICAg
IG1fd29ya2VyQ29udGV4dCA9IFdvcmtlckNvbnRleHQ6OmNyZWF0ZShtX3N0YXJ0dXBEYXRhLT5t
X3NjcmlwdFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdlbnQsIG1fc3RhcnR1cERhdGEtPm1f
aW5zcGVjdG9yRW5hYmxlZCwgdGhpcyk7CiAgICAgfQogCiAgICAgV29ya2VyU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0ID0gbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKLSAgICBzY3JpcHQtPmV2
YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zb3VyY2VDb2RlLCBtX3NjcmlwdFVSTCkpOworICAg
IHNjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3N0YXJ0dXBEYXRhLT5tX3NvdXJj
ZUNvZGUsIG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMKSk7CisgICAgbV9zdGFydHVwRGF0YS5j
bGVhcigpOwogICAgIG1fbWVzc2FnaW5nUHJveHktPmNvbmZpcm1Xb3JrZXJUaHJlYWRNZXNzYWdl
KG1fd29ya2VyQ29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOyAvLyBUaGlzIHdhc24ndCBy
ZWFsbHkgYSBtZXNzYWdlLCBidXQgaXQgY291bnRzIGFzIG9uZSBmb3IgR0MuCiAKICAgICB3aGls
ZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmggYi9XZWJD
b3JlL2RvbS9Xb3JrZXJUaHJlYWQuaAppbmRleCA5ODg0MWQzLi44NWZjNmUyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJl
YWQuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgPHd0
Zi9NZXNzYWdlUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTAgKzM5LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNz
IFdvcmtlck1lc3NhZ2luZ1Byb3h5OwogICAgIGNsYXNzIFdvcmtlclRhc2s7CisgICAgY2xhc3Mg
V29ya2VyVGhyZWFkU3RhcnR1cERhdGE7CiAKICAgICBjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJs
aWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
TWVzc2FnaW5nUHJveHkqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyVGhyZWFk
PiBjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBib29sIGluc3BlY3RvckVuYWJsZWQsIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Kik7CiAgICAgICAgIH5Xb3JrZXJUaHJlYWQoKTsKIAogICAgICAgICBib29s
IHN0YXJ0KCk7CkBAIC01MywyMiArNTUsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkoKSBjb25zdCB7IHJldHVybiBt
X21lc3NhZ2luZ1Byb3h5OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBXb3JrZXJUaHJlYWQo
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlck1lc3NhZ2luZ1Byb3h5Kik7CisgICAgICAgIFdvcmtlclRocmVhZChjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgYm9vbCBpbnNwZWN0b3JFbmFibGVkLCBXb3JrZXJNZXNzYWdpbmdQcm94eSopOwogCiAgICAg
ICAgIHN0YXRpYyB2b2lkKiB3b3JrZXJUaHJlYWRTdGFydCh2b2lkKik7CiAgICAgICAgIHZvaWQq
IHdvcmtlclRocmVhZCgpOwogCiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsK
IAotICAgICAgICBLVVJMIG1fc2NyaXB0VVJMOwotICAgICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7
Ci0gICAgICAgIFN0cmluZyBtX3NvdXJjZUNvZGU7CiAgICAgICAgIFdvcmtlck1lc3NhZ2luZ1By
b3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogCiAgICAgICAgIFJlZlB0cjxXb3JrZXJDb250ZXh0PiBt
X3dvcmtlckNvbnRleHQ7CiAgICAgICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKIAog
ICAgICAgICBNZXNzYWdlUXVldWU8UmVmUHRyPFdvcmtlclRhc2s+ID4gbV9tZXNzYWdlUXVldWU7
CisgICAgICAgIE93blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gbV9zdGFydHVwRGF0YTsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggZTU3NWQ2Yi4uYmY3MDIxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjMsNyArMjMs
NiBAQAogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTM0LDEwICszMyw4
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiU3lzdGVtVGltZS5oIgpAQCAtMzE4LDggKzMxNSw4IEBAIHN0YXRpYyBjb25zdCBY
TUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEqIGluaXRpYWxpemVYTUxIdHRwUmVxdWVzdFN0YXRpY0Rh
dGEoKQogICAgIHJldHVybiBkdW1teTsKIH0KIAotWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1
ZXN0KERvY3VtZW50KiBkb2MpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jLCB0aGlzKQorWE1M
SHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYXN5bmMo
dHJ1ZSkKICAgICAsIG1faW5jbHVkZUNyZWRlbnRpYWxzKGZhbHNlKQogICAgICwgbV9zdGF0ZShV
TlNFTlQpCkBAIC0zMzMsNyArMzMwLDYgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0
KERvY3VtZW50KiBkb2MpCiAgICAgLCBtX3JlY2VpdmVkTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RT
ZW5kTGluZU51bWJlcigwKQogewotICAgIEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBpbml0aWFs
aXplWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCk7CiB9CiAKQEAgLTk1Myw4ICs5NDksOCBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0Ojpkcm9wUHJvdGVjdGlvbigpCiAgICAgLy8gY2FuJ3QgYmUgcmVj
b3VwZWQgdW50aWwgdGhlIGxvYWQgaXMgZG9uZSwgc28gb25seQogICAgIC8vIHJlcG9ydCB0aGUg
ZXh0cmEgY29zdCBhdCB0aGF0IHBvaW50LgogCi0gICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cg
PSB0b0pTRE9NV2luZG93KGRvY3VtZW50KCktPmZyYW1lKCkpKSB7Ci0gICAgICAgIGlmIChKU0M6
OkpTVmFsdWUqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKCp3aW5kb3ctPmds
b2JhbERhdGEoKSwgdGhpcykpCisgICAgaWYgKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIHsKKyAg
ICAgICAgaWYgKEpTQzo6SlNWYWx1ZSogd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBw
ZXIoKmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCB0aGlzKSkKICAgICAgICAgICAgIEpTQzo6
SGVhcDo6aGVhcCh3cmFwcGVyKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KG1fcmVzcG9uc2VUZXh0
LnNpemUoKSAqIDIpOwogICAgIH0KICNlbmRpZgpAQCAtOTY3LDE2ICs5NjMsMTMgQEAgdm9pZCBY
TUxIdHRwUmVxdWVzdDo6b3ZlcnJpZGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKQog
ICAgIG1fbWltZVR5cGVPdmVycmlkZSA9IG92ZXJyaWRlOwogfQogCi1zdGF0aWMgdm9pZCByZXBv
cnRVbnNhZmVVc2FnZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3N0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIWRvY3VtZW50KQorICAg
IGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBJ
dCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3
aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KKyAgICAvLyBGSVhNRTogSXQncyBub3QgZ29v
ZCB0byByZXBvcnQgdGhlIGJhZCB1c2FnZSB3aXRob3V0IGluZGljYXRpbmcgd2hhdCBzb3VyY2Ug
bGluZSBpdCBjYW1lIGZyb20uCiAgICAgLy8gV2Ugc2hvdWxkIHBhc3MgYWRkaXRpb25hbCBwYXJh
bWV0ZXJzIHNvIHdlIGNhbiB0ZWxsIHRoZSBjb25zb2xlIHdoZXJlIHRoZSBtaXN0YWtlIG9jY3Vy
cmVkLgotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAg
ICBjb250ZXh0LT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpLCBmYWxzZSk7CiB9CiAKIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTk5OSw3ICs5OTIsNyBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YQogCiAgICAgLy8gQSBwcml2aWxlZ2VkIHNjcmlwdCAoZS5n
LiBhIERhc2hib2FyZCB3aWRnZXQpIGNhbiBzZXQgYW55IGhlYWRlcnMuCiAgICAgaWYgKCFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291
cmNlcygpICYmICFpc1NhZmVSZXF1ZXN0SGVhZGVyKG5hbWUpKSB7Ci0gICAgICAgIHJlcG9ydFVu
c2FmZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRvIHNldCB1bnNhZmUgaGVhZGVyIFwiIiAr
IG5hbWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAiUmVmdXNlZCB0byBzZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwi
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNzAsMTIgKzEwNjMsMTIgQEAgU3Ry
aW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUKIAogICAgIC8vIFNlZSBjb21tZW50IGluIGdldEFsbFJlc3Bv
bnNlSGVhZGVycyBhYm92ZS4KICAgICBpZiAoaXNTZXRDb29raWVIZWFkZXIobmFtZSkgJiYgIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuTG9hZExvY2FsUmVz
b3VyY2VzKCkpIHsKLSAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJlZnVz
ZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOworICAgICAgICByZXBv
cnRVbnNhZmVVc2FnZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJSZWZ1c2VkIHRvIGdldCB1
bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKICAgICAgICAgcmV0dXJuICIiOwogICAg
IH0KIAogICAgIGlmICghbV9zYW1lT3JpZ2luUmVxdWVzdCAmJiAhaXNPbkFjY2Vzc0NvbnRyb2xS
ZXNwb25zZUhlYWRlcldoaXRlbGlzdChuYW1lKSkgewotICAgICAgICByZXBvcnRVbnNhZmVVc2Fn
ZShkb2N1bWVudCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsg
IlwiIik7CisgICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgIlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwogICAg
ICAgICByZXR1cm4gIiI7CiAgICAgfQogCkBAIC0xMTU0LDcgKzExNDcsNyBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0Ojpwcm9jZXNzU3luY0xvYWRSZXN1bHRzKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0
YSwgY29uc3QgUmVzbwogICAgICAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRX
T1JLX0VSUjsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChTdWJyZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBpbiBhbiBlcnJvciBzdGF0ZSwgZm9y
IGluc3RhbmNlIHdlIGNhbGxlZCBhYm9ydCgpLCBiYWlsIG91dCBlYXJseS4KICAgICBpZiAobV9l
cnJvcikKQEAgLTExNjksMzAgKzExNjIsMjQgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFp
bChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnIKICAg
ICByZXR1cm47CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3Vi
cmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExv
YWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqKQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9pblByZWZsaWdodCkgewotICAgICAgICBkaWRGaW5pc2hMb2Fk
aW5nUHJlZmxpZ2h0KGxvYWRlcik7CisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdQcmVmbGlnaHQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsb2FkZXIgPT0gbV9sb2Fk
ZXIpOwotCiAgICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKQogICAgICAgICBjaGFu
Z2VTdGF0ZShIRUFERVJTX1JFQ0VJVkVEKTsKIAogICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAg
IG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKIAotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QobV9sb2FkZXIgPyBtX2xvYWRlci0+
aWRlbnRpZmllcigpIDogbV9pZGVudGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9hZGluZzogXCIiICsg
bV91cmwgKyAiXCIuIiwgbV9sYXN0U2VuZExpbmVOdW1iZXIsIG1fbGFzdFNlbmRVUkwpOwotICAg
ICAgICB9Ci0gICAgfQorICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KG1fbG9hZGVyID8gbV9sb2FkZXItPmlkZW50aWZpZXIoKSA6
IG1faWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZl
bCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBtX3VybCArICJcIi4iLCBtX2xhc3RTZW5k
TGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCwgdHJ1ZSk7CiAKICAgICBib29sIGhhZExvYWRlciA9
IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKQEAgLTEyMDQsNyArMTE5MSw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRl
cikKICAgICAgICAgZHJvcFByb3RlY3Rpb24oKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKQordm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodCgpCiB7CiAgICAgQVNT
RVJUKG1faW5QcmVmbGlnaHQpOwogICAgIEFTU0VSVCghbV9zYW1lT3JpZ2luUmVxdWVzdCk7CkBA
IC0xMjYyLDEwICsxMjQ5LDEwIEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmFjY2Vzc0NvbnRyb2xD
aGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKG1faW5QcmVmbGlnaHQp
IHsKLSAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KGxvYWRlciwgcmVzcG9uc2Up
OworICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGlnaHQocmVzcG9uc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMjgyLDcgKzEyNjksNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3Qg
UmVzb3VyYwogICAgICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSByZXNwb25zZS50ZXh0RW5jb2Rp
bmdOYW1lKCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVBy
ZWZsaWdodChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVChtX2luUHJlZmxp
Z2h0KTsKICAgICBBU1NFUlQoIW1fc2FtZU9yaWdpblJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
aW5kZXggODU4ZjIyOC4uY2RmYTdjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw4ICsyNiw4
IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgorI2luY2x1ZGUgIlN1YnJlc291cmNl
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKIGNs
YXNzIFhNTEh0dHBSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQsIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhNTEh0
dHBSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgWE1MSHR0cFJlcXVlc3QoZG9jdW1lbnQpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhN
TEh0dHBSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQpKTsgfQogICAgIH5YTUxI
dHRwUmVxdWVzdCgpOwogCiAgICAgLy8gVGhlc2UgZXhhY3QgbnVtZXJpYyB2YWx1ZXMgYXJlIGlt
cG9ydGFudCBiZWNhdXNlIEpTIGV4cGVjdHMgdGhlbS4KQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdD46OmRlcmVmOwogCiBwcml2
YXRlOgotICAgIFhNTEh0dHBSZXF1ZXN0KERvY3VtZW50Kik7CisgICAgWE1MSHR0cFJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVu
dFRhcmdldCgpIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IHsgZGVyZWYoKTsgfQpAQCAtMTI4LDggKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgIC8vIFNwZWNpYWwgdmVyc2lvbnMgZm9yIHRoZSBw
cmVmbGlnaHQKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmdQcmVmbGlnaHQoU3VicmVzb3VyY2VMb2FkZXIqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZVByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nUHJlZmxpZ2h0KCk7CiAKICAgICB2b2lkIHByb2Nlc3NTeW5jTG9hZFJlc3Vs
dHMoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdXBkYXRlQW5kRGlzcGF0Y2hPblByb2dyZXNzKHVuc2ln
bmVkIGludCBsZW4pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26838</attachid>
            <date>2009-01-18 18:18:01 -0800</date>
            <delta_ts>2009-01-19 09:34:02 -0800</delta_ts>
            <desc>Address console messages and resourceRetrievedByXMLHttpRequest in XMLHttpRequest.cpp</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>40947</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmUwNzlmYi4uZDEyYTBmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAwOS0wMS0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgUHJvdmRlIGEgZ2VuZXJpYyBjbGFzcyB0byBoYW5kbGUgdGhlIHBhdHRl
cm4gb2YgdGFzayBjYWxsYmFja3MgYWNyb3NzIHdvcmtlci9wYXJlbnQgdGhyZWFkcy4gIEl0Cisg
ICAgICAgIG9ubHkgd29ya3MgZm9yIG1ldGhvZHMgdGhhdCBuZWVkIDYgcGFyYW1ldGVycyBidXQg
c2ltaWxhciBjbGFzc2VzIGNvdWxkIGJlIGFkZGVkIGFzIG5lZWRlZCBmb3IKKyAgICAgICAgb3Ro
ZXIgbnVtYmVycyBvZiBwYXJhbWV0ZXJzLgorCisgICAgICAgIEFkZCBhZGRNZXNzYWdlVG9Db25z
b2xlIGFuZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QgdG8gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC4KKworICAgICAgICBVc2UgdGhlc2UgbWV0aG9kcyBhbmQgb3RoZXJzIHRvIHJl
bW92ZSBkb2N1bWVudCgpIGZyb20gWE1MSHR0cFJlcXVlc3QgaW4gYSBmZXcgbW9yZSBwbGFjZXMu
CisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3Qu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgIFNvcnRlZCBwcm9qZWN0IGZpbGUgd2hpbGUgYWRkaW5nIEdlbmVyaWNXb3Jr
ZXJUYXNrLmgKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0U3RyaW5nOjpvcGVyYXRvcis9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0cmlu
Zzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJhdG9y
IT0pOgorICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEpTTG9jay4KKworICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTWVzc2FnZVRv
Q29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRC
eVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vR2VuZXJpY1dvcmtlclRhc2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmlj
V29ya2VyVGFza0Jhc2U6OkdlbmVyaWNXb3JrZXJUYXNrQmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljV29ya2VyVGFza0Jhc2U6OmlzQ2FsbGJhY2tBbGxvd2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrNjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNXb3JrZXJUYXNrNjo6R2VuZXJpY1dvcmtlclRhc2s2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNXb3JrZXJUYXNrNjo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2FsbGJhY2tUYXNrKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
OgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFk
ZE1lc3NhZ2VUb0NvbnNvbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250
ZXh0OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRl
eHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dCk6CisgICAgICAgICogZG9t
L1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9QYXJl
bnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAg
ICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3RlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUpOgorCiAyMDA5LTAxLTE3
ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQg
Zml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggNDE3NjEzYi4uNWJhZDI0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMTYzLDYgKzIxNjMs
NyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
dXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBcCisJ
V2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmNw
cCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmggXAogCVdlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDdhY2JhMzYuLjU4
OGQyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMTEzOTAsNiAr
MTEzOTAsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9hcmRFdmVudC5jcHAiDQog
CQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkMTk4NGVmLi40MDExZTEzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1LDYgKzExNSw3IEBACiAJCTA4RTZF
MEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5
RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEw
MDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVs
ZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRM
aW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQkE1RDM4NjBGMjQwRkI0MDA5Qjg3
MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2Vy
VGFzay5oICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVl
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAy
OEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsgfTsKIAkJMEY1NjAyOTAw
RTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1ODAwNjVCMDM4IC8qIFJl
bmRlck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRkM3MDUyMTBFQjE4MTU2MDBCOTBBRDggLyogQXRv
bWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hhc2guaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDkyOSw2ICs0
OTMwLDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0
b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjg0QjEwRUNFMzczMzAw
REMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dvcmtlclRhc2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJl
bmRlck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWFy
cXVlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2MDI4RTBFNEI3NjU4MDA2
NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hhc2guaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nSGFzaC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTYxMiw4ICs5NjE0LDYgQEAKIAkJNDlFOTExQjIwRUY4NkQyNzAw
OUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0
aW9uTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElkZW50aXR5
VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4NkQ0NzAwOUQwQ0FGIC8q
IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlFOTExQjcwRUY4NkQ0NzAw
OUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApAQCAtOTYyNyw2ICs5NjI3
LDggQEAKIAkJCQk0OUU5MTFCRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9u
LmggKi8sCiAJCQkJNDlFOTExQkYwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlv
bnMuY3BwICovLAogCQkJCTQ5RTkxMUMwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVy
YXRpb25zLmggKi8sCisJCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0
aW9uTWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNm
b3JtYXRpb25NYXRyaXguaCAqLywKIAkJCQk0OUU5MTFDMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk0OUU5MTFDMjBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkpOwpAQCAtMTI4
NjAsNyArMTI4NjIsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUIyNzUzNTJBMEIwNTM4
MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAqLywKIAkJCQlCMjc1MzUy
QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCAqLywKIAkJCQlCMjc1MzUyQzBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJCUIyNzUzNTJEMEIwNTM4
MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBAIC0xMjg3OSw2ICsxMjg4MCw3IEBA
CiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywK
IAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNwcCAqLywKIAkJCQlBODBB
MzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKKwkJCQlCMjc1MzUyQTBC
MDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEzNzQ5LDggKzEz
NzUxLDYgQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdBRkU1OTAwRjE0NDZCRDAwODQx
NjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3MgKi8sCi0JCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3
REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3
NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBBMTk4OUNBMDA3RkI4QzUg
LyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLApAQCAtMTM5MTMsNiArMTM5MTMsOCBAQAogCQkJ
CTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywK
IAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCiAJCQkJOTND
QTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCisJCQkJMDcwREQ4RjUw
RjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAorCQkJCTA3QUZFNTkwMEYx
NDQ2QkQwMDg0MTYxNyAvKiBtZWRpYUNvbnRyb2xzUVQuY3NzICovLAogCQkJCTkzQ0E0QzlGMDlE
RjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCTkzQ0E0Q0EyMDlERjkzRkEwMERG
ODY3NyAvKiBzdmcuY3NzICovLAogCQkJCTkzQ0E0Q0EzMDlERjkzRkEwMERGODY3NyAvKiB0b2tl
bml6ZXIuZmxleCAqLywKQEAgLTE0MjA4LDYgKzE0MjEwLDcgQEAKIAkJCQk5MzgzMUI1NjBEMDg3
RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQz
QjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQkwODU3NzMzNDBGMDg0NjAxMDA4
MDU4M0UgLyogRm9ybUNvbnRyb2xFbGVtZW50LmggKi8sCisJCQkJMEJBNUQzODUwRjI0MEZCNDAw
OUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJODUwMzFCMkQwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjJFMEE0NEVGQzcwMEY5
OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAwOUY3MTEwNjAwRUIzNjY1
IC8qIEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTQzNjgsNyArMTQzNzEsNiBAQAogCQkJCTI5
QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWlu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRDOEIwMDAyNTUzNiAvKiBBY2Nl
c3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzRERTY5MEVBNzVDMUUw
MDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5RTkxMUM0
MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MjExLDYgKzE1MjEzLDcgQEAKIAkJCQk4NTlE
NjJGMDBBRDg4OTI3MDAwMTI5OTUgLyogRE9NU1ZHWm9vbUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4RTU0NEM0MENBOUQxQzIwMDk3RDA5QiAvKiBET01TVkdab29tRXZlbnRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2ODUwQzMzNjc2MDAwRUVBNjQ5IC8q
IERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIzNzgwRjE0QjYyMjAwNTYw
RTEzIC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDY1NzAwMEFBQjQ3
NjMwMDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUI0OThG
RjBBREIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTA2NTcwMjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVldExpc3QuaCBp
biBIZWFkZXJzICovLApAQCAtMTUyMzQsNiArMTUyMzcsOCBAQAogCQkJCTMxNkZFMDdGMEU2Q0ND
MjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzE2RkUwODAwRTZDQ0MyODAwQkY2MDg4IC8qIERPTVdlYktpdENTU0tleWZy
YW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2Q0NDMjgwMEJGNjA4OCAv
KiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRy
aXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNjEwRTFDNEUxNDAwRjZBNTc5
IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTYx
MUU2MzBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdl
YktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTM1OSw2ICsxNTM2NCw3
IEBACiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJlY3RzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRTA0QzhBMERBRkY3QTAwMDdBMEY0MSAvKiBHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBCQTVEMzg2MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmlj
V29ya2VyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3QzYwRTlDMUYyNTAwMEQ2Rjc1
IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFCOTAxMzBFQTUxQjlDMDA2
MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTgwRDdD
OTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTU1
MzQsNiArMTU1NDAsNyBAQAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUlt
cGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFMDBBOEQxODgxMDAyMjk0
N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUE4NkI2MEMzMzY3RTgw
MEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIzODYw
RjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNGOTM3RTcwRThCMkU5NTAwNUM3QUI3IC8qIEpTRE9NV2luZG93QmFzZS5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTgxNCw2ICsxNTgyMSw4IEBACiAJCQkJ
MzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tl
eWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQwRTZDQ0JFRTAwQkY2MDg4
IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDk4Mzkx
NDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNUIwRTFDNERFMDAwRjZBNTc5IC8qIEpT
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjQwMEU0
Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVERjMyMDYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xNjMwNCw2ICsxNjMxMyw3IEBACiAJCQkJOTMzMDlFMTYwOTlFNjQ5MjAwNTZF
NTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzNTIwNzE5MDlCRDNCQTUwMEYyMDM4RCAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNO
b2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4MUIzNTEwRjE1MDA4QTAwRkI3ODQ3IC8q
IFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkUzN0UwMERBRUUwMEUw
MDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMEJBQkIwREE1
NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMEJC
MzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMTYz
NzgsNiArMTYzODgsNyBAQAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBUb2tlbml6
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcwMDlEMENBRiAvKiBUcmFu
c2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQwMEVGODZENDcwMDlE
MENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUU5MTFD
NDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM3MEEyMjk3QkUwMDU4RDdBRCAvKiBU
cmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTlEMkM1MENFQTZGNjEwMEZGNTA3QSAv
KiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDU1LDYgKzE2NDY2LDcgQEAKIAkJ
CQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlm
cmFtZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTgzOTE1OTBG
MUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzlBREQyMzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUYzNDgxMEE2QzQwNTIwMEFCRTA2RSAv
KiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTY1MzUsMTQgKzE2NTQ3LDYg
QEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxl
X3VuaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTBCQjM3ODBGMTRCNjIyMDA1NjBFMTMgLyog
RE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQkIzODYwRjE0Qjk1MDAwNTYw
RTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTE4MUIzNTEwRjE1
MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5
ODM5MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTIwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktp
dENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTgzOTE1OTBGMUU3NzY5
MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTgzOTE2
NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0xNjgyMyw4ICsxNjgyNyw2IEBACiAJCQkJMjlBQUM1MjAwRTUzOTYzQjAw
OEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyOTgwMEM5NjBFNTI0QzhCMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVDNjUwMDIzQ0NENiAvKiBB
Y3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlFOTExQzMwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIy
NzUzNTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlv
bkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZFMURBNzAwQkY2MDg4IC8q
IEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNzIwMCw2ICsxNzIw
Miw3IEBACiAJCQkJODU5RDYyQzMwQUQ4ODhFRjAwMDEyOTk1IC8qIERPTVNWR1ZpZXdFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQzYwQUQ4ODhFRjAwMDEyOTk1IC8qIERPTVNW
R1pvb21FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4Njg0MEMzMzY3NjAwMEVFQTY0
OSAvKiBET01TZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEwQkIzN0IwRjE0QjY0
MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwNjU3
MDEwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NTA2NTcwMzBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVldExpc3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSBpbiBT
b3VyY2VzICovLApAQCAtMTcyMTEsNiArMTcyMTQsNyBAQAogCQkJCTMxQzBGRjRBMEU0Q0VGREQw
MDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTMxNkZFMDdFMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA4MTBFNkNDQzI4MDBCRjYwODggLyogRE9NV2ViS2l0
Q1NTS2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTUxMEYxRTc2QjQw
MEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTYx
MUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJh
bnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1RTgwQUFGQkFGQjAwNDAx
NEREIC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTE3NTAwLDYgKzE3NTA0
LDggQEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgxMDAyMjk0N0QgLyogSlNE
T01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5
IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxMEJCMzg3MEYxNEI5
NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4
MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01XaW5kb3cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2lu
ZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2MjBDMTdBQTY3MDA1QzkwQTIg
LyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNzgyNyw2ICsxNzgz
Myw4IEBACiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9u
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzEwRTZDQ0JFRTAwQkY2MDg4IC8q
IEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMDcz
MEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTYzMEYxRThFRTEwMEMyMzc4MiAvKiBKU1dl
YktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNjExRTVB
MEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRp
b25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5RDFDQzYwMDAwQkUzMjUg
LyogSlNXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgyOTAsNiArMTgyOTgsNyBA
QAogCQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3BsaXRU
ZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTM3REYwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3Jh
Z2VBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUJDMERBNTU0NzEwMEE5RTQxNyAv
KiBTdG9yYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODM1MCw2ICsxODM1OSw4IEBA
CiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRp
b25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjc1MzU1ODBCMDUz
ODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OUU5MTFEMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM2MEEyMjk3QkUwMDU4RDdBRCAvKiBU
cmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzgwQTIyOTdCRTAwNThEN0FE
IC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODQyMSw2ICsxODQzMiw3IEBA
CiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjg4RTcyMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRD
U1NLZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyODhFNzQwRTMwMDVENjAw
MzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRDRUI2RTAwN0Q2RkU1IC8q
IFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0x
ODQ5MywxNCArMTg1MDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50
aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyNDBEN0UyQjgyMDA3QzM5
ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTFEMDk5RTY0
OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxMEJC
MzdCMEYxNEI2NDEwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlz
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTgxQjM1NjBGMTUwMEQ3MDBGQjc4NDcg
LyogU3RhdGljU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OTgzOTEzRjBGMUU3
Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXgu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4MzkxNjMwRjFFOEVFMTAwQzIzNzgyIC8qIEpTV2Vi
S2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdHJpbmcuaAppbmRleCAzZWZhMTYwLi5mMjE5MWEwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RyaW5nLmgKQEAgLTMxLDggKzMxLDYgQEAKICNpZm5kZWYgU2NyaXB0U3RyaW5nX2gKICNk
ZWZpbmUgU2NyaXB0U3RyaW5nX2gKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMjcgKzUwLDIzIEBAIHB1YmxpYzoKIAogICAgIFNj
cmlwdFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6
OkpTTG9jayBsb2NrKGZhbHNlKTsKICAgICAgICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCiAgICAgU2NyaXB0U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmlu
ZyYgcykKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBt
X3N0ciArPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcmlwdFN0cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6
SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAog
ICAgIHsKLSAgICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lk
IGV4cG9ydGluZyBhbiBleHRyYSBzeW1ib2wgYnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAg
ICAgICAgcmV0dXJuICEobV9zdHIgPT0gcy5tX3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUw
NGMyNWIuLjQzYzY2Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJI
aXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bWFnZUxvYWRlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgpAQCAtNDMwMCw2ICs0MzAxLDIxIEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
CiAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsK
IH0KIAordm9pZCBEb2N1bWVudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkp
Cit7CisgICAgaWYgKGluc3BlY3Rvck9ubHkpIHsKKyAgICAgICAgaWYgKHBhZ2UoKSkKKyAgICAg
ICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xl
KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgfSBl
bHNlIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IGRvbVdpbmRvdygpKQorICAgICAgICB3aW5kb3ct
PmNvbnNvbGUoKS0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwpOworfQorCit2b2lkIERvY3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcm
IHNvdXJjZVN0cmluZykKK3sKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50
aWZpZXIsIHNvdXJjZVN0cmluZyk7Cit9CisKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRU
YXNrVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0VGFza1RpbWVyKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNvbnRleHQsIFBhc3NSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDBlMDhlYjUu
LmQ0NWFiMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtNzkxLDYgKzc5MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
cnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVh
bCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IGJvb2wgaW5zcGVjdG9yT25seSk7CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0
cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0
cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNo
cm9ub3VzbHkuCiAKICAgICB2b2lkIGFkZFRpbWVvdXQoaW50IHRpbWVvdXRJZCwgRE9NVGltZXIq
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmggYi9XZWJDb3Jl
L2RvbS9HZW5lcmljV29ya2VyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMyNjE5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9HZW5lcmljV29ya2Vy
VGFzay5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJpY1dvcmtlclRhc2tfaAorI2Rl
ZmluZSBHZW5lcmljV29ya2VyVGFza19oCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1
ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgInd0Zi9QYXNzUmVmUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICBjbGFzcyBHZW5lcmljV29ya2VyVGFza0Jhc2UgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBHZW5lcmljV29ya2Vy
VGFza0Jhc2UoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KSA6IG1fbWVzc2Fn
aW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgaXNDYWxsYmFja0FsbG93ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
IW1fbWVzc2FnaW5nUHJveHktPmFza2VkVG9UZXJtaW5hdGUoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OworICAgIH07CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUg
TVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2
PgorICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrNiA6IHB1YmxpYyBHZW5lcmljV29ya2VyVGFz
a0Jhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNik7CisgICAg
ICAgIHR5cGVkZWYgR2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMs
IFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+IEdlbmVyaWNXb3JrZXJUYXNrOworCisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2Fn
aW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXRob2QgbWV0aG9kLCBQMSYgcGFyYW1ldGVyMSwg
UDImIHBhcmFtZXRlcjIsIFAzJiBwYXJhbWV0ZXIzLCBQNCYgcGFyYW1ldGVyNCwgUDUmIHBhcmFt
ZXRlcjUsIFA2JiBwYXJhbWV0ZXI2KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEdlbmVyaWNXb3JrZXJUYXNrKG1lc3NhZ2luZ1Byb3h5LCBtZXRob2QsIHBhcmFt
ZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBh
cmFtZXRlcjYpKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1dv
cmtlclRhc2s2KFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1l
dGhvZCwgUDEmIHBhcmFtZXRlcjEsIFAyJiBwYXJhbWV0ZXIyLCBQMyYgcGFyYW1ldGVyMywgUDQm
IHBhcmFtZXRlcjQsIFA1JiBwYXJhbWV0ZXI1LCBQNiYgcGFyYW1ldGVyNikKKyAgICAgICAgICAg
IDogR2VuZXJpY1dvcmtlclRhc2tCYXNlKG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICAgICAgLCBt
X21ldGhvZChtZXRob2QpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQor
ICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgICAgICwgbV9w
YXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0
ZXI0KQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgICAg
ICwgbV9wYXJhbWV0ZXI2KHBhcmFtZXRlcjYpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWlzQ2FsbGJhY2tBbGxvd2VkKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwg
bV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBt
X3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVyNik7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICAgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgICAg
ICBQMiBtX3BhcmFtZXRlcjI7CisgICAgICAgIFAzIG1fcGFyYW1ldGVyMzsKKyAgICAgICAgUDQg
bV9wYXJhbWV0ZXI0OworICAgICAgICBQNSBtX3BhcmFtZXRlcjU7CisgICAgICAgIFA2IG1fcGFy
YW1ldGVyNjsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlw
ZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KKyAgICBQYXNzUmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNr
NjxQMSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2PiA+
IGNyZWF0ZUNhbGxiYWNrVGFzaygKKyAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3Nh
Z2luZ1Byb3h5LAorICAgICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiksCisgICAgICAgIFAxJiBwYXJhbWV0ZXIx
LCBQMiYgcGFyYW1ldGVyMiwgUDMmIHBhcmFtZXRlcjMsIFA0JiBwYXJhbWV0ZXI0LCBQNSYgcGFy
YW1ldGVyNSwgUDYmIHBhcmFtZXRlcjYpCisgICAgeworICAgICAgICByZXR1cm4gR2VuZXJpY1dv
cmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2
LCBNUDY+OjpjcmVhdGUobWVzc2FnaW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1l
dGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNik7Cisg
ICAgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VS
UykKKworI2VuZGlmIC8vIEdlbmVyaWNXb3JrZXJUYXNrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCAyZTlkNTZjLi5mMDExMGQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRfaAogI2RlZmluZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0X2gKIAorI2luY2x1ZGUgIkNv
bnNvbGUuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0OwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0Owog
ICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFNjcmlwdFN0cmluZzsKICAgICBj
bGFzcyBTdHJpbmc7CiAKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKQEAgLTU0
LDYgKzU2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykgPSAw
OwogCiAgICAgICAgIC8vIEFjdGl2ZSBvYmplY3RzIGFyZSBub3QgZ2FyYmFnZSBjb2xsZWN0ZWQg
ZXZlbiBpZiBpbmFjY2Vzc2libGUsIGUuZy4gYmVjYXVzZSB0aGVpciBhY3Rpdml0eSBtYXkgcmVz
dWx0IGluIGNhbGxiYWNrcyBiZWluZyBpbnZva2VkLgogICAgICAgICBib29sIGNhblN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDhhOWFmMDcuLjM0MzA1
YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5o
IgorI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgiCkBAIC0xMDgsNiArMTA5LDI4IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwK
ICAgICBtX3RocmVhZC0+bWVzc2FnaW5nUHJveHkoKS0+cG9zdFdvcmtlckV4Y2VwdGlvbihlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKK3N0YXRpYyB2b2lkIEFkZE1l
c3NhZ2VUb0NvbnNvbGVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBib29s
IGluc3BlY3Rvck9ubHkpCit7CisgICAgY29udGV4dC0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIGluc3BlY3Rvck9ubHkp
OworfQorCit2b2lkIFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0
b3JPbmx5KQoreworICAgIFBhc3NSZWZQdHI8VGFzaz4gdGFzazsKKyAgICB7CisgICAgICAgIFN0
cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuY29weSgpOworICAgICAgICBTdHJpbmcgc291cmNl
VVJMQ29weSA9IHNvdXJjZVVSTC5jb3B5KCk7CisgICAgICAgIHRhc2sgPSBjcmVhdGVDYWxsYmFj
a1Rhc2sobV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCksICZBZGRNZXNzYWdlVG9Db25zb2xlQ2Fs
bGJhY2ssIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VDb3B5LCBsaW5lTnVtYmVyLCBzb3VyY2VVUkxD
b3B5LCBpbnNwZWN0b3JPbmx5KTsKKyAgICB9CisgICAgcG9zdFRhc2tUb1BhcmVudENvbnRleHQo
dGFzayk7Cit9CisKK3ZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCit7CisgICAgLy8g
VE9ETyhsZXZpbik6IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzUKKyAgICBBU1NFUlQo
MCk7Cit9CisKIHZvaWQgV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewogICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KG1lc3NhZ2UpOwpAQCAtMTkwLDYgKzIxMywxMSBAQCB2b2lkIFdvcmtlckNv
bnRleHQ6OnBvc3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4gdGFzaykKICAgICB0aHJlYWQoKS0+bWVz
c2FnZVF1ZXVlKCkuYXBwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzazo6
Y3JlYXRlKHRhc2spKTsKIH0KIAordm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50
Q29udGV4dChQYXNzUmVmUHRyPFRhc2s+IHRhc2spCit7CisgICAgdGhyZWFkKCktPm1lc3NhZ2lu
Z1Byb3h5KCktPnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KHRhc2spOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaApp
bmRleCBjOTc3NGQ5Li42NDI1Yzk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCkBAIC03MiwxMSArNzIsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAog
ICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpIHsgcmV0dXJu
IHRoaXM7IH0KIAogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8g
RXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAg
ICAgICAgdm9pZCBwb3N0VGFza1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFRhc2s+IHRhc2sp
OyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiB0aGUgcGFyZW50J3MgY29udGV4dCdzIHRocmVhZCBh
c3luY2hyb25vdXNseS4KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwg
Ym9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVz
ZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGI2OWI5YzUu
LjcyMWJmMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNw
cAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTIyMyw2ICsy
MjMsMTEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNv
bnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3Mu
YXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKIH0KIAor
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1Jl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQoreworICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7Cit9CisKIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlckV4Y2VwdGlvblRhc2s6OmNyZWF0ZShl
cnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCwgdGhpcykpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvZG9tL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmgKaW5kZXggYzAwNDk0MC4uZTdiYThhOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTQ4LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAg
ICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisgICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAKICAgICAgICAgdm9pZCBwb3N0V29ya2VyRXhj
ZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOwogCkBAIC02Miw2ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCB3b3JrZXJUaHJlYWRIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBHZW5lcmljV29ya2VyVGFza0Jh
c2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNZXNzYWdlV29ya2VyVGFzazsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrOwogICAgICAgICBmcmllbmQgY2xh
c3MgV29ya2VyRXhjZXB0aW9uVGFzazsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRo
cmVhZC5oIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKaW5kZXggMDdlM2U4YS4uY2EzZTk2
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKKysrIGIvV2ViQ29yZS9k
b20vV29ya2VyVGhyZWFkLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyTWVzc2FnaW5nUHJveHk7
CiAgICAgY2xhc3MgV29ya2VyVGFzazsKLSAgICBjbGFzcyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0
YTsKKyAgICBzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1cERhdGE7CiAKICAgICBjbGFzcyBXb3Jr
ZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsKICAgICBwdWJsaWM6
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDFiYzQxNy4uNWVkOTRiYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcApAQCAtMzE4LDggKzMxOCw4IEBAIHN0YXRpYyBjb25zdCBYTUxIdHRwUmVxdWVz
dFN0YXRpY0RhdGEqIGluaXRpYWxpemVYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEoKQogICAgIHJl
dHVybiBkdW1teTsKIH0KIAotWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KERvY3VtZW50
KiBkb2MpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jLCB0aGlzKQorWE1MSHR0cFJlcXVlc3Q6
OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYXN5bmModHJ1ZSkKICAgICAs
IG1faW5jbHVkZUNyZWRlbnRpYWxzKGZhbHNlKQogICAgICwgbV9zdGF0ZShVTlNFTlQpCkBAIC0z
MzMsNyArMzMzLDYgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KERvY3VtZW50KiBk
b2MpCiAgICAgLCBtX3JlY2VpdmVkTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RTZW5kTGluZU51bWJl
cigwKQogewotICAgIEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBpbml0aWFsaXplWE1MSHR0cFJl
cXVlc3RTdGF0aWNEYXRhKCk7CiB9CiAKQEAgLTk1MywxMSArOTUyLDkgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZHJvcFByb3RlY3Rpb24oKQogICAgIC8vIGNhbid0IGJlIHJlY291cGVkIHVudGls
IHRoZSBsb2FkIGlzIGRvbmUsIHNvIG9ubHkKICAgICAvLyByZXBvcnQgdGhlIGV4dHJhIGNvc3Qg
YXQgdGhhdCBwb2ludC4KIAotICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdp
bmRvdyhkb2N1bWVudCgpLT5mcmFtZSgpKSkgewotICAgICAgICBKU0M6OkpTVmFsdWVQdHIgd3Jh
cHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoKndpbmRvdy0+Z2xvYmFsRGF0YSgpLCB0
aGlzKTsKLSAgICAgICAgaWYgKHdyYXBwZXIpCi0gICAgICAgICAgICBKU0M6OkhlYXA6OmhlYXAo
d3JhcHBlciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3BvbnNlVGV4dC5zaXplKCkgKiAy
KTsKLSAgICB9CisgICBpZiAoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNE
T01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICBpZiAoRE9N
T2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcigqZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIHRoaXMpKQorICAgICAgICAgICBKU0M6OkhlYXA6OmhlYXAod3JhcHBl
ciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3BvbnNlVGV4dC5zaXplKCkgKiAyKTsKICNl
bmRpZgogCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CkBAIC05NjgsMTYgKzk2NSwx
MyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYg
b3ZlcnJpZGUpCiAgICAgbV9taW1lVHlwZU92ZXJyaWRlID0gb3ZlcnJpZGU7CiB9CiAKLXN0YXRp
YyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZlVXNhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmICghZG9j
dW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJh
bWUoKTsKLSAgICBpZiAoIWZyYW1lKQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJu
OwotICAgIC8vIEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRoZSBiYWQgdXNhZ2Ugd2l0aG91dCBp
bmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBmcm9tLgorICAgIC8vIEZJWE1FOiBJ
dCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3
aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KICAgICAvLyBXZSBzaG91bGQgcGFzcyBhZGRp
dGlvbmFsIHBhcmFtZXRlcnMgc28gd2UgY2FuIHRlbGwgdGhlIGNvbnNvbGUgd2hlcmUgdGhlIG1p
c3Rha2Ugb2NjdXJyZWQuCi0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1l
c3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3Ry
aW5nKCkpOworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCksIGZhbHNlKTsKIH0KIAog
dm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTAwMCw3
ICs5OTQsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YQogCiAgICAgLy8gQSBwcml2aWxlZ2Vk
IHNjcmlwdCAoZS5nLiBhIERhc2hib2FyZCB3aWRnZXQpIGNhbiBzZXQgYW55IGhlYWRlcnMuCiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxv
YWRMb2NhbFJlc291cmNlcygpICYmICFpc1NhZmVSZXF1ZXN0SGVhZGVyKG5hbWUpKSB7Ci0gICAg
ICAgIHJlcG9ydFVuc2FmZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRvIHNldCB1bnNhZmUg
aGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0byBzZXQgdW5zYWZlIGhlYWRlciBcIiIg
KyBuYW1lICsgIlwiIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNzEsMTIgKzEw
NjUsMTIgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcihjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUKIAogICAgIC8vIFNlZSBjb21tZW50IGlu
IGdldEFsbFJlc3BvbnNlSGVhZGVycyBhYm92ZS4KICAgICBpZiAoaXNTZXRDb29raWVIZWFkZXIo
bmFtZSkgJiYgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
TG9hZExvY2FsUmVzb3VyY2VzKCkpIHsKLSAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2UoZG9jdW1l
bnQoKSwgIlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwor
ICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJSZWZ1
c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKICAgICAgICAgcmV0
dXJuICIiOwogICAgIH0KIAogICAgIGlmICghbV9zYW1lT3JpZ2luUmVxdWVzdCAmJiAhaXNPbkFj
Y2Vzc0NvbnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlzdChuYW1lKSkgewotICAgICAgICByZXBv
cnRVbnNhZmVVc2FnZShkb2N1bWVudCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBc
IiIgKyBuYW1lICsgIlwiIik7CisgICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSAr
ICJcIiIpOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogCkBAIC0xMTg4LDEyICsxMTgyLDgg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRl
ciogbG9hZGVyKQogICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAgIG1fcmVzcG9uc2VUZXh0ICs9
IG1fZGVjb2Rlci0+Zmx1c2goKTsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgp
LT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewot
ICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QobV9sb2FkZXIgPyBtX2xvYWRlci0+aWRlbnRpZmllcigpIDogbV9p
ZGVudGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9hZGluZzogXCIiICsgbV91cmwgKyAiXCIuIiwgbV9s
YXN0U2VuZExpbmVOdW1iZXIsIG1fbGFzdFNlbmRVUkwpOwotICAgICAgICB9Ci0gICAgfQorICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1
ZXN0KG1fbG9hZGVyID8gbV9sb2FkZXItPmlkZW50aWZpZXIoKSA6IG1faWRlbnRpZmllciwgbV9y
ZXNwb25zZVRleHQpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBs
b2FkaW5nOiBcIiIgKyBtX3VybCArICJcIi4iLCBtX2xhc3RTZW5kTGluZU51bWJlciwgbV9sYXN0
U2VuZFVSTCwgdHJ1ZSk7CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwogICAgIG1f
bG9hZGVyID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDg1OGYyMjguLjhkNmNkMzAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVy
OwogCiBjbGFzcyBYTUxIdHRwUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1
ZXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwcml2YXRlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxYTUxIdHRwUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGRvY3VtZW50KSk7IH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxYTUxIdHRwUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0KSk7IH0KICAg
ICB+WE1MSHR0cFJlcXVlc3QoKTsKIAogICAgIC8vIFRoZXNlIGV4YWN0IG51bWVyaWMgdmFsdWVz
IGFyZSBpbXBvcnRhbnQgYmVjYXVzZSBKUyBleHBlY3RzIHRoZW0uCkBAIC0xMTIsNyArMTEyLDcg
QEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+OjpkZXJlZjsK
IAogcHJpdmF0ZToKLSAgICBYTUxIdHRwUmVxdWVzdChEb2N1bWVudCopOworICAgIFhNTEh0dHBS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSB7IGRlcmVmKCk7IH0K
</data>
<flag name="review"
          id="12824"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26842</attachid>
            <date>2009-01-19 09:34:02 -0800</date>
            <delta_ts>2009-01-19 11:44:40 -0800</delta_ts>
            <desc>Two changes from the previous patch: Added back the PlatformString.h include and changed a method name.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>40914</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmUwNzlmYi4uOGVmMWExMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAwOS0wMS0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgUHJvdmRlIGEgZ2VuZXJpYyBjbGFzcyB0byBoYW5kbGUgdGhlIHBhdHRl
cm4gb2YgdGFzayBjYWxsYmFja3MgYWNyb3NzIHdvcmtlci9wYXJlbnQgdGhyZWFkcy4gIEl0Cisg
ICAgICAgIG9ubHkgd29ya3MgZm9yIG1ldGhvZHMgdGhhdCBuZWVkIDYgcGFyYW1ldGVycyBidXQg
c2ltaWxhciBjbGFzc2VzIGNvdWxkIGJlIGFkZGVkIGFzIG5lZWRlZCBmb3IKKyAgICAgICAgb3Ro
ZXIgbnVtYmVycyBvZiBwYXJhbWV0ZXJzLgorCisgICAgICAgIEFkZCBhZGRNZXNzYWdlVG9Db25z
b2xlIGFuZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QgdG8gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC4KKworICAgICAgICBVc2UgdGhlc2UgbWV0aG9kcyBhbmQgb3RoZXJzIHRvIHJl
bW92ZSBkb2N1bWVudCgpIGZyb20gWE1MSHR0cFJlcXVlc3QgaW4gYSBmZXcgbW9yZSBwbGFjZXMu
CisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3Qu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgIFNvcnRlZCBwcm9qZWN0IGZpbGUgd2hpbGUgYWRkaW5nIEdlbmVyaWNXb3Jr
ZXJUYXNrLmgKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0U3RyaW5nOjpvcGVyYXRvcis9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0cmlu
Zzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJhdG9y
IT0pOgorICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEpTTG9jay4KKworICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTWVzc2FnZVRv
Q29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRC
eVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vR2VuZXJpY1dvcmtlclRhc2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW5lcmlj
V29ya2VyVGFza0Jhc2U6OkdlbmVyaWNXb3JrZXJUYXNrQmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljV29ya2VyVGFza0Jhc2U6OmNhblBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNXb3JrZXJUYXNrNjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNXb3JrZXJUYXNrNjo6R2VuZXJpY1dvcmtlclRhc2s2KToKKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyaWNXb3JrZXJUYXNrNjo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q2FsbGJhY2tUYXNrKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgor
ICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFkZE1l
c3NhZ2VUb0NvbnNvbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0
OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6
OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dCk6CisgICAgICAgICogZG9tL1dv
cmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9QYXJlbnRD
b250ZXh0KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAg
KiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3RlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUpOgorCiAyMDA5LTAxLTE3ICBT
dGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggNDE3NjEzYi4uNWJhZDI0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMTYzLDYgKzIxNjMsNyBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0
b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBcCisJV2Vi
Q29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmNwcCBc
CiAJV2ViQ29yZS9kb20vV29ya2VyLmggXAogCVdlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDdhY2JhMzYuLjU4OGQy
MDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMTEzOTAsNiArMTEz
OTAsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9hcmRFdmVudC5jcHAiDQogCQkJ
CT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkMTk4NGVmLi40MDExZTEzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1LDYgKzExNSw3IEBACiAJCTA4RTZFMEYx
MEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJG
IC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZFMEYyMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNl
dEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5r
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTQ4
NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQkE1RDM4NjBGMjQwRkI0MDA5Qjg3MEIg
LyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2VyVGFz
ay5oICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEQw
RTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsgfTsKIAkJMEY1NjAyOTAwRTRC
NzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRl
ck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRkM3MDUyMTBFQjE4MTU2MDBCOTBBRDggLyogQXRvbWlj
U3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hhc2guaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDkyOSw2ICs0OTMw
LDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjg0QjEwRUNFMzczMzAwREMw
NjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBB
NDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dvcmtlclRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRl
ck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWFycXVl
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2MDI4RTBFNEI3NjU4MDA2NUIw
MzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZD
NzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hhc2guaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTYxMiw4ICs5NjE0LDYgQEAKIAkJNDlFOTExQjIwRUY4NkQyNzAwOUQw
Q0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9u
TWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElkZW50aXR5VHJh
bnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlFOTExQjcwRUY4NkQ0NzAwOUQw
Q0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApAQCAtOTYyNyw2ICs5NjI3LDgg
QEAKIAkJCQk0OUU5MTFCRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9uLmgg
Ki8sCiAJCQkJNDlFOTExQkYwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbnMu
Y3BwICovLAogCQkJCTQ5RTkxMUMwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRp
b25zLmggKi8sCisJCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9u
TWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCAqLywKIAkJCQk0OUU5MTFDMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk0OUU5MTFDMjBFRjg2RDQ3MDA5RDBD
QUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkpOwpAQCAtMTI4NjAs
NyArMTI4NjIsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUIyNzUzNTJBMEIwNTM4MTQw
MDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAqLywKIAkJCQlCMjc1MzUyQjBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCAqLywKIAkJCQlCMjc1MzUyQzBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJCUIyNzUzNTJEMEIwNTM4MTQw
MDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBAIC0xMjg3OSw2ICsxMjg4MCw3IEBACiAJ
CQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKIAkJ
CQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNwcCAqLywKIAkJCQlBODBBMzhG
RDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKKwkJCQlCMjc1MzUyQTBCMDUz
ODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEzNzQ5LDggKzEzNzUx
LDYgQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdBRkU1OTAwRjE0NDZCRDAwODQxNjE3
IC8qIG1lZGlhQ29udHJvbHNRVC5jc3MgKi8sCi0JCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVC
IC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAv
KiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NC
b3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLApAQCAtMTM5MTMsNiArMTM5MTMsOCBAQAogCQkJCTkz
Q0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJ
CQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCiAJCQkJOTNDQTRD
OUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCisJCQkJMDcwREQ4RjUwRjAx
ODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAorCQkJCTA3QUZFNTkwMEYxNDQ2
QkQwMDg0MTYxNyAvKiBtZWRpYUNvbnRyb2xzUVQuY3NzICovLAogCQkJCTkzQ0E0QzlGMDlERjkz
RkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCTkzQ0E0Q0EyMDlERjkzRkEwMERGODY3
NyAvKiBzdmcuY3NzICovLAogCQkJCTkzQ0E0Q0EzMDlERjkzRkEwMERGODY3NyAvKiB0b2tlbml6
ZXIuZmxleCAqLywKQEAgLTE0MjA4LDYgKzE0MjEwLDcgQEAKIAkJCQk5MzgzMUI1NjBEMDg3RDYw
MDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAw
RTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQkwODU3NzMzNDBGMDg0NjAxMDA4MDU4
M0UgLyogRm9ybUNvbnRyb2xFbGVtZW50LmggKi8sCisJCQkJMEJBNUQzODUwRjI0MEZCNDAwOUI4
NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJODUwMzFCMkQwQTQ0RUZDNzAwRjk5
MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjJFMEE0NEVGQzcwMEY5OTJF
MCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAwOUY3MTEwNjAwRUIzNjY1IC8q
IEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTQzNjgsNyArMTQzNzEsNiBAQAogCQkJCTI5QUFD
NTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRDOEIwMDAyNTUzNiAvKiBBY2Nlc3Np
YmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzRERTY5MEVBNzVDMUUwMDIz
Q0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5RTkxMUM0MEVG
ODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkJhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MjExLDYgKzE1MjEzLDcgQEAKIAkJCQk4NTlENjJG
MDBBRDg4OTI3MDAwMTI5OTUgLyogRE9NU1ZHWm9vbUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4RTU0NEM0MENBOUQxQzIwMDk3RDA5QiAvKiBET01TVkdab29tRXZlbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2ODUwQzMzNjc2MDAwRUVBNjQ5IC8qIERP
TVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIzNzgwRjE0QjYyMjAwNTYwRTEz
IC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDY1NzAwMEFBQjQ3NjMw
MDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUI0OThGRjBB
REIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTA2NTcwMjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVldExpc3QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTUyMzQsNiArMTUyMzcsOCBAQAogCQkJCTMxNkZFMDdGMEU2Q0NDMjgw
MEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzE2RkUwODAwRTZDQ0MyODAwQkY2MDg4IC8qIERPTVdlYktpdENTU0tleWZyYW1l
c1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2Q0NDMjgwMEJGNjA4OCAvKiBE
T01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5
ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXhJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNjEwRTFDNEUxNDAwRjZBNTc5IC8q
IERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTYxMUU2
MzBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktp
dFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTM1OSw2ICsxNTM2NCw3IEBA
CiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJlY3RzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRTA0QzhBMERBRkY3QTAwMDdBMEY0MSAvKiBHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTBCQTVEMzg2MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29y
a2VyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3QzYwRTlDMUYyNTAwMEQ2Rjc1IC8q
IEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFCOTAxMzBFQTUxQjlDMDA2MzQ4
QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTgwRDdDOTBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTU1MzQs
NiArMTU1NDAsNyBAQAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUltcGxl
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFMDBBOEQxODgxMDAyMjk0N0Qg
LyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUE4NkI2MEMzMzY3RTgwMEVF
QTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIzODYwRjE0
Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2
OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGOTM3RTcwRThCMkU5NTAwNUM3QUI3IC8qIEpTRE9NV2luZG93QmFzZS5sdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRv
d0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTgxNCw2ICsxNTgyMSw4IEBACiAJCQkJMzFD
MEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZy
YW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQwRTZDQ0JFRTAwQkY2MDg4IC8q
IEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDk4MzkxNDAw
RjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNUIwRTFDNERFMDAwRjZBNTc5IC8qIEpTV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjQwMEU0Q0VG
QUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjVERjMyMDYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNjMwNCw2ICsxNjMxMyw3IEBACiAJCQkJOTMzMDlFMTYwOTlFNjQ5MjAwNTZFNTgx
IC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNTIwNzE5MDlCRDNCQTUwMEYyMDM4RCAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2Rl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4MUIzNTEwRjE1MDA4QTAwRkI3ODQ3IC8qIFN0
YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkUzN0UwMERBRUUwMEUwMDEw
ODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMEJBQkIwREE1NTQ3
MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMEJCMzgw
REE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMTYzNzgs
NiArMTYzODgsNyBAQAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBUb2tlbml6ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zv
cm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQwMEVGODZENDcwMDlEMENB
RiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUU5MTFDNDBF
Rjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM3MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmF2
ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTlEMkM1MENFQTZGNjEwMEZGNTA3QSAvKiBU
cmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDU1LDYgKzE2NDY2LDcgQEAKIAkJCQkz
MUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFt
ZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBX
ZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTgzOTE1OTBGMUU3
NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzlB
REQyMzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUYzNDgxMEE2QzQwNTIwMEFCRTA2RSAvKiBX
ZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTY1MzUsMTQgKzE2NTQ3LDYgQEAK
IAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3Vu
aXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTBCQjM3ODBGMTRCNjIyMDA1NjBFMTMgLyogRE9N
U3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQkIzODYwRjE0Qjk1MDAwNTYwRTEz
IC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTE4MUIzNTEwRjE1MDA4
QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5ODM5
MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTIwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENT
U01hdHJpeEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTgzOTE1OTBGMUU3NzY5MDBD
MjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTgzOTE2NDBG
MUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0xNjgyMyw4ICsxNjgyNyw2IEBACiAJCQkJMjlBQUM1MjAwRTUzOTYzQjAwOEY5
QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyOTgwMEM5NjBFNTI0QzhCMDAwMjU1MzYgLyogQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3Rp
dmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlFOTExQzMwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUz
NTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZFMURBNzAwQkY2MDg4IC8qIEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNzIwMCw2ICsxNzIwMiw3
IEBACiAJCQkJODU5RDYyQzMwQUQ4ODhFRjAwMDEyOTk1IC8qIERPTVNWR1ZpZXdFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQzYwQUQ4ODhFRjAwMDEyOTk1IC8qIERPTVNWR1pv
b21FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4Njg0MEMzMzY3NjAwMEVFQTY0OSAv
KiBET01TZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEwQkIzN0IwRjE0QjY0MTAw
NTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwNjU3MDEw
QUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTA2NTcwMzBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVldExpc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMTcyMTEsNiArMTcyMTQsNyBAQAogCQkJCTMxQzBGRjRBMEU0Q0VGREQwMDdE
NkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMx
NkZFMDdFMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMTZGRTA4MTBFNkNDQzI4MDBCRjYwODggLyogRE9NV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTUxMEYxRTc2QjQwMEMy
Mzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTYxMUU2
MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNp
dGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1RTgwQUFGQkFGQjAwNDAxNERE
IC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTE3NTAwLDYgKzE3NTA0LDgg
QEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgxMDAyMjk0N0QgLyogSlNET01Q
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8q
IEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxMEJCMzg3MEYxNEI5NTAw
MDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MUIy
NTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01XaW5kb3cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2MjBDMTdBQTY3MDA1QzkwQTIgLyog
SlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNzgyNyw2ICsxNzgzMyw4
IEBACiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzEwRTZDQ0JFRTAwQkY2MDg4IC8qIEpT
V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMDczMEU2
Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTYzMEYxRThFRTEwMEMyMzc4MiAvKiBKU1dlYktp
dENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNjExRTVBMEUx
QzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25F
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5RDFDQzYwMDAwQkUzMjUgLyog
SlNXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgyOTAsNiArMTgyOTgsNyBAQAog
CQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3BsaXRUZXh0
Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdG
QTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUwOTExIC8qIFN0b3JhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTM3REYwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VB
cmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUJDMERBNTU0NzEwMEE5RTQxNyAvKiBT
dG9yYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODM1MCw2ICsxODM1OSw4IEBACiAJ
CQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENBRiAvKiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjc1MzU1ODBCMDUzODE0
MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUU5MTFEMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM2MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmF2
ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzgwQTIyOTdCRTAwNThEN0FEIC8q
IFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODQyMSw2ICsxODQzMiw3IEBACiAJ
CQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxMjg4RTcyMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyODhFNzQwRTMwMDVENjAwMzYx
OUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk4
MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRDRUI2RTAwN0Q2RkU1IC8qIFdl
YktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBBNkM0
MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xODQ5
MywxNCArMTg1MDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1l
X29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyNDBEN0UyQjgyMDA3QzM5ODMg
LyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTFEMDk5RTY0OTIw
MDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxMEJCMzdC
MEYxNEI2NDEwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTgxQjM1NjBGMTUwMEQ3MDBGQjc4NDcgLyog
U3RhdGljU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OTgzOTEzRjBGMUU3Njc1
MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4
MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4MzkxNjMwRjFFOEVFMTAwQzIzNzgyIC8qIEpTV2ViS2l0
Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdHJpbmcuaAppbmRleCAzZWZhMTYwLi42ZGFiOWEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RyaW5nLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgU2NyaXB0U3RyaW5nX2gKIAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNp
bmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIs
MjcgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0
IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKICAgICAg
ICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgU2NyaXB0
U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmluZyYgcykKICAgICB7Ci0gICAgICAgIEpTQzo6
SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBtX3N0ciArPSBzOwogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdFN0cmluZyYg
cykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAg
ICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAogICAgIHsKLSAgICAgICAgSlNDOjpKU0xvY2sg
bG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lkIGV4cG9ydGluZyBhbiBleHRyYSBzeW1ib2wg
YnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAgICAgICAgcmV0dXJuICEobV9zdHIgPT0gcy5t
X3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUwNGMyNWIuLjQzYzY2Y2UgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgpAQCAtNDMwMCw2ICs0MzAx
LDIxIEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0CiAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9yTWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9pZCBEb2N1bWVudDo6YWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpCit7CisgICAgaWYgKGluc3BlY3Rvck9ubHkp
IHsKKyAgICAgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgfSBlbHNlIGlmIChET01XaW5kb3cqIHdpbmRvdyA9
IGRvbVdpbmRvdygpKQorICAgICAgICB3aW5kb3ctPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIERv
Y3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykKK3sKKyAgICBpZiAo
cGFnZSgpKQorICAgICAgICBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cmVzb3VyY2VS
ZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7Cit9CisK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGltZXIgOiBwdWJsaWMgVGltZXJCYXNl
IHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1RpbWVyKFBhc3NSZWZQ
dHI8RG9jdW1lbnQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4gdGFzaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDBlMDhlYjUuLmQ0NWFiMWUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzkxLDYg
Kzc5MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVy
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGJvb2wgaW5zcGVjdG9yT25seSk7CisgICAg
dmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2
aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0
YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICB2b2lkIGFkZFRp
bWVvdXQoaW50IHRpbWVvdXRJZCwgRE9NVGltZXIqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0dlbmVyaWNXb3JrZXJUYXNrLmggYi9XZWJDb3JlL2RvbS9HZW5lcmljV29ya2VyVGFzay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZWQwNjcKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2RvbS9HZW5lcmljV29ya2VyVGFzay5oCkBAIC0wLDAgKzEsMTA5IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgR2VuZXJpY1dvcmtlclRhc2tfaAorI2RlZmluZSBHZW5lcmljV29ya2VyVGFza19oCisK
KyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5Lmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgInd0Zi9QYXNz
UmVmUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBHZW5lcmljV29ya2Vy
VGFza0Jhc2UgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CisgICAgcHJv
dGVjdGVkOgorICAgICAgICBHZW5lcmljV29ya2VyVGFza0Jhc2UoV29ya2VyTWVzc2FnaW5nUHJv
eHkqIG1lc3NhZ2luZ1Byb3h5KSA6IG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2FuUGVyZm9ybVRhc2soKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fbWVzc2FnaW5nUHJveHktPmFza2VkVG9UZXJt
aW5hdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21l
c3NhZ2luZ1Byb3h5OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
TVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1
LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgorICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNr
NiA6IHB1YmxpYyBHZW5lcmljV29ya2VyVGFza0Jhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIs
IE1QMywgTVA0LCBNUDUsIE1QNik7CisgICAgICAgIHR5cGVkZWYgR2VuZXJpY1dvcmtlclRhc2s2
PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+IEdl
bmVyaWNXb3JrZXJUYXNrOworCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlbmVyaWNXb3Jr
ZXJUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXRo
b2QgbWV0aG9kLCBQMSYgcGFyYW1ldGVyMSwgUDImIHBhcmFtZXRlcjIsIFAzJiBwYXJhbWV0ZXIz
LCBQNCYgcGFyYW1ldGVyNCwgUDUmIHBhcmFtZXRlcjUsIFA2JiBwYXJhbWV0ZXI2KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWNXb3JrZXJUYXNrKG1l
c3NhZ2luZ1Byb3h5LCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMs
IHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYpKTsKKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1dvcmtlclRhc2s2KFdvcmtlck1lc3NhZ2luZ1Byb3h5
KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBhcmFtZXRlcjEsIFAyJiBwYXJh
bWV0ZXIyLCBQMyYgcGFyYW1ldGVyMywgUDQmIHBhcmFtZXRlcjQsIFA1JiBwYXJhbWV0ZXI1LCBQ
NiYgcGFyYW1ldGVyNikKKyAgICAgICAgICAgIDogR2VuZXJpY1dvcmtlclRhc2tCYXNlKG1lc3Nh
Z2luZ1Byb3h5KQorICAgICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCisgICAgICAgICAgICAs
IG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFy
YW1ldGVyMikKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAg
ICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQorICAgICAgICAgICAgLCBtX3BhcmFtZXRl
cjUocGFyYW1ldGVyNSkKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXI2KHBhcmFtZXRlcjYpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIWNhblBlcmZvcm1UYXNrKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFy
YW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVyNik7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICAgICAg
UDEgbV9wYXJhbWV0ZXIxOworICAgICAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgICAgIFAzIG1f
cGFyYW1ldGVyMzsKKyAgICAgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgICAgICBQNSBtX3BhcmFt
ZXRlcjU7CisgICAgICAgIFA2IG1fcGFyYW1ldGVyNjsKKyAgICB9OworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5h
bWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KKyAgICBQYXNz
UmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNrNjxQMSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwg
TVA0LCBQNSwgTVA1LCBQNiwgTVA2PiA+IGNyZWF0ZUNhbGxiYWNrVGFzaygKKyAgICAgICAgV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LAorICAgICAgICB2b2lkICgqbWV0aG9k
KShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiks
CisgICAgICAgIFAxJiBwYXJhbWV0ZXIxLCBQMiYgcGFyYW1ldGVyMiwgUDMmIHBhcmFtZXRlcjMs
IFA0JiBwYXJhbWV0ZXI0LCBQNSYgcGFyYW1ldGVyNSwgUDYmIHBhcmFtZXRlcjYpCisgICAgewor
ICAgICAgICByZXR1cm4gR2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBN
UDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+OjpjcmVhdGUobWVzc2FnaW5nUHJveHksIG1l
dGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFy
YW1ldGVyNSwgcGFyYW1ldGVyNik7CisgICAgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIEdlbmVyaWNXb3JrZXJUYXNr
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyZTlkNTZjLi5mMDExMGQ2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yNyw2ICsyNyw3IEBACiAj
aWZuZGVmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaAogI2RlZmluZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0X2gKIAorI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMzgsNiAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0Owog
ICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworICAgIGNs
YXNzIFNjcmlwdFN0cmluZzsKICAgICBjbGFzcyBTdHJpbmc7CiAKICAgICBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IHsKQEAgLTU0LDYgKzU2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9vbCBp
bnNwZWN0b3JPbmx5KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRT
dHJpbmcmIHNvdXJjZVN0cmluZykgPSAwOwogCiAgICAgICAgIC8vIEFjdGl2ZSBvYmplY3RzIGFy
ZSBub3QgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlbiBpZiBpbmFjY2Vzc2libGUsIGUuZy4gYmVjYXVz
ZSB0aGVpciBhY3Rpdml0eSBtYXkgcmVzdWx0IGluIGNhbGxiYWNrcyBiZWluZyBpbnZva2VkLgog
ICAgICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQu
Y3BwCmluZGV4IDhhOWFmMDcuLjM0MzA1YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5o
IgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCkBAIC0xMDgsNiArMTA5LDI4IEBA
IHZvaWQgV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwKICAgICBtX3RocmVhZC0+bWVzc2FnaW5nUHJveHkoKS0+
cG9zdFdvcmtlckV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
CiB9CiAKK3N0YXRpYyB2b2lkIEFkZE1lc3NhZ2VUb0NvbnNvbGVDYWxsYmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBib29sIGluc3BlY3Rvck9ubHkpCit7CisgICAgY29udGV4dC0+
YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VVUkwsIGluc3BlY3Rvck9ubHkpOworfQorCit2b2lkIFdvcmtlckNvbnRleHQ6OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgYm9vbCBpbnNwZWN0b3JPbmx5KQoreworICAgIFBhc3NSZWZQdHI8VGFzaz4g
dGFzazsKKyAgICB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuY29weSgp
OworICAgICAgICBTdHJpbmcgc291cmNlVVJMQ29weSA9IHNvdXJjZVVSTC5jb3B5KCk7CisgICAg
ICAgIHRhc2sgPSBjcmVhdGVDYWxsYmFja1Rhc2sobV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCks
ICZBZGRNZXNzYWdlVG9Db25zb2xlQ2FsbGJhY2ssIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VDb3B5
LCBsaW5lTnVtYmVyLCBzb3VyY2VVUkxDb3B5LCBpbnNwZWN0b3JPbmx5KTsKKyAgICB9CisgICAg
cG9zdFRhc2tUb1BhcmVudENvbnRleHQodGFzayk7Cit9CisKK3ZvaWQgV29ya2VyQ29udGV4dDo6
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNj
cmlwdFN0cmluZyYpCit7CisgICAgLy8gVE9ETyhsZXZpbik6IFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNzUKKyAgICBBU1NFUlQoMCk7Cit9CisKIHZvaWQgV29ya2VyQ29udGV4dDo6cG9z
dE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIG1fdGhyZWFkLT5tZXNzYWdp
bmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UpOwpAQCAtMTkwLDYg
KzIxMywxMSBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnBvc3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4g
dGFzaykKICAgICB0aHJlYWQoKS0+bWVzc2FnZVF1ZXVlKCkuYXBwZW5kKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRUYXNrV29ya2VyVGFzazo6Y3JlYXRlKHRhc2spKTsKIH0KIAordm9pZCBXb3JrZXJD
b250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFRhc2s+IHRhc2spCit7
CisgICAgdGhyZWFkKCktPm1lc3NhZ2luZ1Byb3h5KCktPnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0
KHRhc2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaCBiL1dlYkNv
cmUvZG9tL1dvcmtlckNvbnRleHQuaAppbmRleCBjOTc3NGQ5Li42NDI1Yzk5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyQ29u
dGV4dC5oCkBAIC03MiwxMSArNzIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgYm9v
bCBpbnNwZWN0b3JPbmx5KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0
cmluZyYgc291cmNlU3RyaW5nKTsKIAogICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRleHQqIHRv
V29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFz
ayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRo
cmVhZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAgdm9pZCBwb3N0VGFza1RvUGFyZW50Q29udGV4
dChQYXNzUmVmUHRyPFRhc2s+IHRhc2spOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiB0aGUgcGFy
ZW50J3MgY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwCmluZGV4IGI2OWI5YzUuLjcyMWJmMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAKQEAgLTIyMyw2ICsyMjMsMTEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAg
ICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6
Y3JlYXRlKG1lc3NhZ2UpKTsKIH0KIAordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRh
c2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiB0YXNrKQoreworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7
Cit9CisKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RXb3JrZXJFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKIHsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtl
ckV4Y2VwdGlvblRhc2s6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCwgdGhpcykpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHku
aCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggYzAwNDk0MC4uZTdi
YThhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysg
Yi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ4LDYgKzQ5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVu
dENvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAKICAg
ICAgICAgdm9pZCBwb3N0V29ya2VyRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCkBAIC02Miw2ICs2
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCB3b3JrZXJUaHJlYWRIYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBHZW5lcmljV29ya2VyVGFza0Jhc2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNZXNzYWdl
V29ya2VyVGFzazsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckNvbnRleHREZXN0cm95ZWRU
YXNrOwogICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzazsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFk
LmgKaW5kZXggMDdlM2U4YS4uY2EzZTk2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2Vy
VGhyZWFkLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKQEAgLTQxLDcgKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xh
c3MgV29ya2VyTWVzc2FnaW5nUHJveHk7CiAgICAgY2xhc3MgV29ya2VyVGFzazsKLSAgICBjbGFz
cyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTsKKyAgICBzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1
cERhdGE7CiAKICAgICBjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3Jr
ZXJUaHJlYWQ+IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDFiYzQx
Ny4uNWVkOTRiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzE4LDggKzMxOCw4IEBAIHN0
YXRpYyBjb25zdCBYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEqIGluaXRpYWxpemVYTUxIdHRwUmVx
dWVzdFN0YXRpY0RhdGEoKQogICAgIHJldHVybiBkdW1teTsKIH0KIAotWE1MSHR0cFJlcXVlc3Q6
OlhNTEh0dHBSZXF1ZXN0KERvY3VtZW50KiBkb2MpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9j
LCB0aGlzKQorWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAg
ICAsIG1fYXN5bmModHJ1ZSkKICAgICAsIG1faW5jbHVkZUNyZWRlbnRpYWxzKGZhbHNlKQogICAg
ICwgbV9zdGF0ZShVTlNFTlQpCkBAIC0zMzMsNyArMzMzLDYgQEAgWE1MSHR0cFJlcXVlc3Q6OlhN
TEh0dHBSZXF1ZXN0KERvY3VtZW50KiBkb2MpCiAgICAgLCBtX3JlY2VpdmVkTGVuZ3RoKDApCiAg
ICAgLCBtX2xhc3RTZW5kTGluZU51bWJlcigwKQogewotICAgIEFTU0VSVChkb2N1bWVudCgpKTsK
ICAgICBpbml0aWFsaXplWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCk7CiB9CiAKQEAgLTk1Mywx
MSArOTUyLDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3RlY3Rpb24oKQogICAgIC8v
IGNhbid0IGJlIHJlY291cGVkIHVudGlsIHRoZSBsb2FkIGlzIGRvbmUsIHNvIG9ubHkKICAgICAv
LyByZXBvcnQgdGhlIGV4dHJhIGNvc3QgYXQgdGhhdCBwb2ludC4KIAotICAgIGlmIChKU0RPTVdp
bmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudCgpLT5mcmFtZSgpKSkgewotICAg
ICAgICBKU0M6OkpTVmFsdWVQdHIgd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIo
KndpbmRvdy0+Z2xvYmFsRGF0YSgpLCB0aGlzKTsKLSAgICAgICAgaWYgKHdyYXBwZXIpCi0gICAg
ICAgICAgICBKU0M6OkhlYXA6OmhlYXAod3JhcHBlciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdCht
X3Jlc3BvbnNlVGV4dC5zaXplKCkgKiAyKTsKLSAgICB9CisgICBpZiAoSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkKKyAgICAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2Jq
ZWN0V3JhcHBlcigqZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHRoaXMpKQorICAgICAgICAg
ICBKU0M6OkhlYXA6OmhlYXAod3JhcHBlciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3Bv
bnNlVGV4dC5zaXplKCkgKiAyKTsKICNlbmRpZgogCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHko
dGhpcyk7CkBAIC05NjgsMTYgKzk2NSwxMyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlk
ZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpCiAgICAgbV9taW1lVHlwZU92ZXJyaWRl
ID0gb3ZlcnJpZGU7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVwb3J0VW5z
YWZlVXNhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQorICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0
IHRoZSBiYWQgdXNhZ2Ugd2l0aG91dCBpbmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2Ft
ZSBmcm9tLgorICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVz
YWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KICAg
ICAvLyBXZSBzaG91bGQgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgc28gd2UgY2FuIHRlbGwg
dGhlIGNvbnNvbGUgd2hlcmUgdGhlIG1pc3Rha2Ugb2NjdXJyZWQuCi0gICAgZnJhbWUtPmRvbVdp
bmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwg
U3RyaW5nKCksIGZhbHNlKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhl
YWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMTAwMCw3ICs5OTQsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpz
ZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YQogCiAgICAgLy8gQSBwcml2aWxlZ2VkIHNjcmlwdCAoZS5nLiBhIERhc2hib2FyZCB3aWRnZXQp
IGNhbiBzZXQgYW55IGhlYWRlcnMuCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygpICYmICFpc1NhZmVSZXF1
ZXN0SGVhZGVyKG5hbWUpKSB7Ci0gICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKGRvY3VtZW50KCks
ICJSZWZ1c2VkIHRvIHNldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAgICAg
ICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0
byBzZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEwNzEsMTIgKzEwNjUsMTIgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0Ojpn
ZXRSZXNwb25zZUhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUK
IAogICAgIC8vIFNlZSBjb21tZW50IGluIGdldEFsbFJlc3BvbnNlSGVhZGVycyBhYm92ZS4KICAg
ICBpZiAoaXNTZXRDb29raWVIZWFkZXIobmFtZSkgJiYgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuTG9hZExvY2FsUmVzb3VyY2VzKCkpIHsKLSAgICAgICAg
cmVwb3J0VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFk
ZXIgXCIiICsgbmFtZSArICJcIiIpOworICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICJSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5h
bWUgKyAiXCIiKTsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIAogICAgIGlmICghbV9zYW1l
T3JpZ2luUmVxdWVzdCAmJiAhaXNPbkFjY2Vzc0NvbnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlz
dChuYW1lKSkgewotICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShkb2N1bWVudCgpLCAiUmVmdXNl
ZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CisgICAgICAgIHJlcG9y
dFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8gZ2V0IHVu
c2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwogICAgICAgICByZXR1cm4gIiI7CiAgICAg
fQogCkBAIC0xMTg4LDEyICsxMTgyLDggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNo
TG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKQogICAgIGlmIChtX2RlY29kZXIpCiAg
ICAgICAgIG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKIAotICAgIGlmIChG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QobV9sb2FkZXIgPyBtX2xv
YWRlci0+aWRlbnRpZmllcigpIDogbV9pZGVudGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7Ci0gICAg
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9hZGluZzog
XCIiICsgbV91cmwgKyAiXCIuIiwgbV9sYXN0U2VuZExpbmVOdW1iZXIsIG1fbGFzdFNlbmRVUkwp
OwotICAgICAgICB9Ci0gICAgfQorICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KG1fbG9hZGVyID8gbV9sb2FkZXItPmlkZW50aWZp
ZXIoKSA6IG1faWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQpOworICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBtX3VybCArICJcIi4iLCBtX2xh
c3RTZW5kTGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCwgdHJ1ZSk7CiAKICAgICBib29sIGhhZExv
YWRlciA9IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4
IDg1OGYyMjguLjhkNmNkMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMzgsNyArMzgsNyBAQCBj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBYTUxIdHRwUmVxdWVzdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwcml2YXRl
IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGRvY3VtZW50
KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRw
UmVxdWVzdChjb250ZXh0KSk7IH0KICAgICB+WE1MSHR0cFJlcXVlc3QoKTsKIAogICAgIC8vIFRo
ZXNlIGV4YWN0IG51bWVyaWMgdmFsdWVzIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSBKUyBleHBlY3Rz
IHRoZW0uCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
WE1MSHR0cFJlcXVlc3Q+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBYTUxIdHRwUmVxdWVzdChE
b2N1bWVudCopOworICAgIFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26846</attachid>
            <date>2009-01-19 11:44:40 -0800</date>
            <delta_ts>2009-01-19 11:49:37 -0800</delta_ts>
            <desc>Addressed comments form last patch.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>41296</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmUwNzlmYi4uNDM5ZTM3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAwOS0wMS0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgUHJvdmlkZSBhIGdlbmVyaWMgY2xhc3MgdG8gaGFuZGxlIHRoZSBwYXR0
ZXJuIG9mIHRhc2sgY2FsbGJhY2tzIGFjcm9zcyB3b3JrZXIvcGFyZW50IHRocmVhZHMuICBJdAor
ICAgICAgICBvbmx5IHdvcmtzIGZvciBtZXRob2RzIHRoYXQgbmVlZCA2IHBhcmFtZXRlcnMgYnV0
IHNpbWlsYXIgY2xhc3NlcyBjb3VsZCBiZSBhZGRlZCBhcyBuZWVkZWQgZm9yCisgICAgICAgIG90
aGVyIG51bWJlcnMgb2YgcGFyYW1ldGVycy4KKworICAgICAgICBBZGQgYWRkTWVzc2FnZSBhbmQg
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuCisKKyAgICAgICAgVXNlIHRoZXNlIG1ldGhvZHMgYW5kIG90aGVycyB0byByZW1vdmUgZG9j
dW1lbnQoKSBmcm9tIFhNTEh0dHBSZXF1ZXN0IGluIGEgZmV3IG1vcmUgcGxhY2VzLgorCisgICAg
ICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBTb3J0ZWQgcHJvamVjdCBmaWxlIHdoaWxlIGFkZGluZyBHZW5lcmljV29ya2VyVGFzay5o
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0
cmluZzo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvciE9KToKKyAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBKU0xvY2suCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0dlbmVyaWNXb3JrZXJU
YXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2tCYXNlOjpH
ZW5lcmljV29ya2VyVGFza0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRh
c2tCYXNlOjpjYW5QZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2Vy
VGFzazY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6Okdl
bmVyaWNXb3JrZXJUYXNrNik6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxiYWNrVGFzayk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZXNzYWdlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dCk6
CisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5n
UHJveHkuaDoKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxI
dHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3Rl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUp
OgorCiAyMDA5LTAxLTE3ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDE3NjEzYi4uNWJhZDI0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMTYzLDYgKzIxNjMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCBcCisJV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29y
ZS9kb20vV29ya2VyLmNwcCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDdhY2JhMzYuLjU4OGQyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMTEzOTAsNiArMTEzOTAsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9h
cmRFdmVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTk4NGVmLi40MDExZTEzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1LDYgKzEx
NSw3IEBACiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUw
RUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4
RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAw
QjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQkE1RDM4
NjBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAv
KiBHZW5lcmljV29ya2VyVGFzay5oICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzgg
LyogUmVuZGVyTWFycXVlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsg
fTsKIAkJMEY1NjAyOTAwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRkM3MDUyMTBFQjE4MTU2
MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0
cmluZ0hhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDkyOSw2ICs0OTMwLDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdN
TEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhG
Qjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJp
Y1dvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dv
cmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWFycXVlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2
MDI4RTBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hh
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYxMiw4ICs5NjE0LDYgQEAKIAkJNDlF
OTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQw
Q0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4
NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlF
OTExQjcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApA
QCAtOTYyNyw2ICs5NjI3LDggQEAKIAkJCQk0OUU5MTFCRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQkYwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRy
YW5zZm9ybU9wZXJhdGlvbnMuY3BwICovLAogCQkJCTQ5RTkxMUMwMEVGODZENDcwMDlEMENBRiAv
KiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggKi8sCisJCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCAqLywKIAkJCQk0OUU5MTFDMTBFRjg2RDQ3
MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk0OUU5
MTFDMjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggKi8s
CiAJCQkpOwpAQCAtMTI4NjAsNyArMTI4NjIsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2
NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAq
LywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCAqLywK
IAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJ
CUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBAIC0xMjg3
OSw2ICsxMjg4MCw3IEBACiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNw
cCAqLywKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywK
KwkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTEzNzQ5LDggKzEzNzUxLDYgQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNz
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdBRkU1
OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3MgKi8sCi0JCQkJMDcwREQ4
RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAogCQkJCTkzQ0E0QzlD
MDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0JCMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLApAQCAtMTM5MTMsNiAr
MTM5MTMsOCBAQAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxl
LWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3Au
cGwgKi8sCiAJCQkJOTNDQTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8s
CisJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAor
CQkJCTA3QUZFNTkwMEYxNDQ2QkQwMDg0MTYxNyAvKiBtZWRpYUNvbnRyb2xzUVQuY3NzICovLAog
CQkJCTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCTkzQ0E0
Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovLAogCQkJCTkzQ0E0Q0EzMDlERjkzRkEw
MERGODY3NyAvKiB0b2tlbml6ZXIuZmxleCAqLywKQEAgLTE0MjA4LDYgKzE0MjEwLDcgQEAKIAkJ
CQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJ
OTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQkwODU3
NzMzNDBGMDg0NjAxMDA4MDU4M0UgLyogRm9ybUNvbnRyb2xFbGVtZW50LmggKi8sCisJCQkJMEJB
NUQzODUwRjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJODUw
MzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMx
QjJFMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAw
OUY3MTEwNjAwRUIzNjY1IC8qIEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTQzNjgsNyArMTQz
NzEsNiBAQAogCQkJCTI5QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRDOEIw
MDAyNTUzNiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1h
dGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAv
KiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MjExLDYgKzE1MjEz
LDcgQEAKIAkJCQk4NTlENjJGMDBBRDg4OTI3MDAwMTI5OTUgLyogRE9NU1ZHWm9vbUV2ZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RTU0NEM0MENBOUQxQzIwMDk3RDA5QiAvKiBE
T01TVkdab29tRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2ODUwQzMz
Njc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIz
NzgwRjE0QjYyMjAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDY1NzAwMEFBQjQ3NjMwMDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUI0OThGRjBBREIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTA2NTcwMjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5
bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTUyMzQsNiArMTUyMzcsOCBAQAogCQkJ
CTMxNkZFMDdGMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwODAwRTZDQ0MyODAwQkY2MDg4IC8qIERP
TVdlYktpdENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2
Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NN
YXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBE
T01XZWJLaXRDU1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNjEw
RTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTYxMUU2MzBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NTM1OSw2ICsxNTM2NCw3IEBACiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJl
Y3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2Vu
ZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA0QzhBMERBRkY3QTAwMDdBMEY0
MSAvKiBHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCQTVEMzg2MEYyNDBGQjQwMDlC
ODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3QzYw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFC
OTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTU1MzQsNiArMTU1NDAsNyBAQAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNF
MDBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NUE4NkI2MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTEwQkIzODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGOTM3RTcwRThCMkU5NTAwNUM3QUI3IC8qIEpTRE9N
V2luZG93QmFzZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAx
RDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTgxNCw2ICsx
NTgyMSw4IEBACiAJCQkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAv
KiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQw
RTZDQ0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDk4MzkxNDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNUIwRTFDNERF
MDAwRjZBNTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxQzBGRjQwMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjMwNCw2ICsxNjMxMyw3IEBACiAJCQkJOTMzMDlF
MTYwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTIwNzE5MDlCRDNCQTUwMEYyMDM4RCAvKiBTdGF0
aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERC
MjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4MUIzNTEwRjE1
MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTYzNzgsNiArMTYzODgsNyBAQAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAx
RjFENyAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM3MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTlEMkM1MENF
QTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDU1LDYg
KzE2NDY2LDcgQEAKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUz
MDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzlBREQyMzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUYzNDgxMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTY1
MzUsMTQgKzE2NTQ3LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2
RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTBCQjM3ODBGMTRC
NjIyMDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQkIz
ODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTE4MUIzNTEwRjE1MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQ5ODM5MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdl
YktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTIwRjFFNzZCNDAwQzIz
NzgyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAq
LywKLQkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjgyMyw4ICsxNjgyNyw2IEBACiAJCQkJMjlB
QUM1MjAwRTUzOTYzQjAwOEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTgwMEM5NjBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVD
NjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlF
OTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyNzUzNTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAv
KiBBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2
MDg4IC8qIEFuaW1hdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZF
MURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzIwMCw2ICsxNzIwMiw3IEBACiAJCQkJODU5RDYyQzMwQUQ4ODhFRjAwMDEyOTk1IC8qIERP
TVNWR1ZpZXdFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQzYwQUQ4ODhFRjAw
MDEyOTk1IC8qIERPTVNWR1pvb21FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4Njg0
MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTEwQkIzN0IwRjE0QjY0MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUwNjU3MDEwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NTA2NTcwMzBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVl
dExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyog
RE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLApAQCAtMTcyMTEsNiArMTcyMTQsNyBAQAogCQkJCTMx
QzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTMxNkZFMDdFMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA4MTBFNkNDQzI4MDBCRjYw
ODggLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5
ODM5MTUxMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUg
LyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1
RTgwQUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAg
LTE3NTAwLDYgKzE3NTA0LDggQEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNE
T01JbXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgx
MDAyMjk0N0QgLyogSlNET01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUw
QzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyog
SlNET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2MjBD
MTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzgyNyw2ICsxNzgzMyw4IEBACiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzEwRTZD
Q0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNkZFMDczMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpT
V2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTYzMEYxRThFRTEw
MEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNjExRTVBMEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgy
OTAsNiArMTgyOTgsNyBAQAogCQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRl
eHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1
NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRp
Y1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUw
OTExIC8qIFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTM3REYwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUJDMERB
NTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODM1
MCw2ICsxODM1OSw4IEBACiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5n
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZE
NDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFEMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM2MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3Mzgw
QTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODQy
MSw2ICsxODQzMiw3IEBACiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjg4RTcyMEUzMDA1RDYwMDM2
MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEy
ODhFNzQwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0xODQ5MywxNCArMTg1MDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQy
NDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUxMEJCMzdCMEYxNEI2NDEwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmlu
Z0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8q
IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTgxQjM1NjBG
MTUwMEQ3MDBGQjc4NDcgLyogU3RhdGljU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OTgzOTEzRjBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01h
dHJpeC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBX
ZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4MzkxNjMwRjFFOEVFMTAw
QzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaAppbmRleCAzZWZhMTYwLi42ZGFiOWEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsMjcgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBs
b2NrKGZhbHNlKTsKICAgICAgICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogCiAgICAgU2NyaXB0U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmluZyYgcykKICAg
ICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBtX3N0ciArPSBz
OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNjcmlwdFN0cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxv
Y2soZmFsc2UpOwogICAgICAgICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAgICB9CiAKICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lkIGV4cG9ydGlu
ZyBhbiBleHRyYSBzeW1ib2wgYnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAgICAgICAgcmV0
dXJuICEobV9zdHIgPT0gcy5tX3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUwNGMyNWIuLmRh
Y2JlY2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVx
dWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5o
IgpAQCAtNDMwMCw2ICs0MzAxLDI2IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0CiAgICAgICAg
IHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9p
ZCBEb2N1bWVudDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgc3dpdGNoIChkZXN0aW5hdGlvbikgeworICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlckRl
c3RpbmF0aW9uOgorICAgICAgICBpZiAocGFnZSgpKQorICAgICAgICAgICAgcGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b25zb2xlRGVzdGluYXRpb246CisgICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IGRvbVdp
bmRvdygpKQorICAgICAgICAgICAgd2luZG93LT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit2b2lkIERvY3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJj
ZVN0cmluZykKK3sKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIs
IHNvdXJjZVN0cmluZyk7Cit9CisKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGlt
ZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0VGFza1RpbWVyKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDBlMDhlYjUuLjkzYjEw
YzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtNzkxLDYgKzc5MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhcnNlRE5T
UHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4
ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAg
ICB2b2lkIGFkZFRpbWVvdXQoaW50IHRpbWVvdXRJZCwgRE9NVGltZXIqKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmggYi9XZWJDb3JlL2RvbS9HZW5lcmljV29y
a2VyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZTg3MmUKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9HZW5lcmljV29ya2VyVGFzay5oCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgR2VuZXJpY1dvcmtlclRhc2tfaAorI2RlZmluZSBHZW5lcmljV29y
a2VyVGFza19oCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBH
ZW5lcmljV29ya2VyVGFza0Jhc2UgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBHZW5lcmljV29ya2VyVGFza0Jhc2UoV29ya2Vy
TWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KSA6IG1fbWVzc2FnaW5nUHJveHkobWVzc2Fn
aW5nUHJveHkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2FuUGVyZm9y
bVRhc2soKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fbWVzc2FnaW5nUHJveHkt
PmFza2VkVG9UZXJtaW5hdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQ
MywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwg
dHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgorICAgIGNsYXNzIEdlbmVy
aWNXb3JrZXJUYXNrNiA6IHB1YmxpYyBHZW5lcmljV29ya2VyVGFza0Jhc2UgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNik7CisgICAgICAgIHR5cGVkZWYgR2VuZXJp
Y1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUs
IFA2LCBNUDY+IEdlbmVyaWNXb3JrZXJUYXNrOworCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEdlbmVyaWNXb3JrZXJUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2lu
Z1Byb3h5LCBNZXRob2QgbWV0aG9kLCBQMSYgcGFyYW1ldGVyMSwgUDImIHBhcmFtZXRlcjIsIFAz
JiBwYXJhbWV0ZXIzLCBQNCYgcGFyYW1ldGVyNCwgUDUmIHBhcmFtZXRlcjUsIFA2JiBwYXJhbWV0
ZXI2KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWNX
b3JrZXJUYXNrKG1lc3NhZ2luZ1Byb3h5LCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIs
IHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYpKTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1dvcmtlclRhc2s2KFdvcmtlck1l
c3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBhcmFtZXRl
cjEsIFAyJiBwYXJhbWV0ZXIyLCBQMyYgcGFyYW1ldGVyMywgUDQmIHBhcmFtZXRlcjQsIFA1JiBw
YXJhbWV0ZXI1LCBQNiYgcGFyYW1ldGVyNikKKyAgICAgICAgICAgIDogR2VuZXJpY1dvcmtlclRh
c2tCYXNlKG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCisg
ICAgICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAgICAgLCBtX3Bh
cmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRl
cjMpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQorICAgICAgICAgICAg
LCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXI2KHBh
cmFtZXRlcjYpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIWNhblBlcmZvcm1UYXNrKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFt
ZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1l
dGVyNik7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE1ldGhvZCBtX21ldGhv
ZDsKKyAgICAgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgICAgICBQMiBtX3BhcmFtZXRlcjI7Cisg
ICAgICAgIFAzIG1fcGFyYW1ldGVyMzsKKyAgICAgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgICAg
ICBQNSBtX3BhcmFtZXRlcjU7CisgICAgICAgIFA2IG1fcGFyYW1ldGVyNjsKKyAgICB9OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1Q
Nj4KKyAgICBQYXNzUmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNrNjxQMSwgTVAxLCBQMiwgTVAyLCBQ
MywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2PiA+IGNyZWF0ZUNhbGxiYWNrVGFzaygK
KyAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LAorICAgICAgICB2
b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0
LCBNUDUsIE1QNiksCisgICAgICAgIFAxJiBwYXJhbWV0ZXIxLCBQMiYgcGFyYW1ldGVyMiwgUDMm
IHBhcmFtZXRlcjMsIFA0JiBwYXJhbWV0ZXI0LCBQNSYgcGFyYW1ldGVyNSwgUDYmIHBhcmFtZXRl
cjYpCisgICAgeworICAgICAgICByZXR1cm4gR2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAy
LCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+OjpjcmVhdGUobWVzc2Fn
aW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFy
YW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNik7CisgICAgfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIEdlbmVy
aWNXb3JrZXJUYXNrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyZTlk
NTZjLi42ZjA5ZTFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaWZuZGVmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaAogI2RlZmluZSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0X2gKIAorI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtMzgsOCArMzksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFjdGl2
ZURPTU9iamVjdDsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAgICAgY2xhc3MgU3RyaW5nOwogCisgICAg
ZW51bSBNZXNzYWdlRGVzdGluYXRpb24geworICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyRGVz
dGluYXRpb24sCisgICAgICAgIENvbnNvbGVEZXN0aW5hdGlvbiwKKyAgICB9OworCiAgICAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CkBAIC01NCw2ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRF
eGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBz
b3VyY2VTdHJpbmcpID0gMDsKIAogICAgICAgICAvLyBBY3RpdmUgb2JqZWN0cyBhcmUgbm90IGdh
cmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBlLmcuIGJlY2F1c2UgdGhlaXIg
YWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcgaW52b2tlZC4KICAgICAgICAg
Ym9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAppbmRl
eCA4YTlhZjA3Li42MDNkN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcApAQCAtMzQsMTIgKzM0LDE1
IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUYXNrLmgi
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOCw2ICsxMTEsMjggQEAgdm9pZCBXb3JrZXJDb250
ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLAogICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0V29ya2VyRXhjZXB0
aW9uKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAorc3RhdGljIHZv
aWQgYWRkTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVzc2Fn
ZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2UoZGVzdGlu
YXRpb24sIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Cit9
CisKK3ZvaWQgV29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVz
dGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCit7CisgICAgUmVmUHRyPFRhc2s+IHRhc2s7CisgICAgeworICAgICAgICBTdHJpbmcg
bWVzc2FnZUNvcHkgPSBtZXNzYWdlLmNvcHkoKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVSTENv
cHkgPSBzb3VyY2VVUkwuY29weSgpOworICAgICAgICB0YXNrID0gY3JlYXRlQ2FsbGJhY2tUYXNr
KG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLCAmYWRkTWVzc2FnZVRhc2ssIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGxldmVsLCBtZXNzYWdlQ29weSwgbGluZU51bWJlciwgc291cmNlVVJMQ29weSk7
CisgICAgfQorICAgIHBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KHRhc2sucmVsZWFzZSgpKTsKK30K
Kwordm9pZCBXb3JrZXJDb250ZXh0OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3Qo
dW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogVGhl
IGltcGxlbWVudGF0aW9uIGlzIHBlbmRpbmcgdGhlIGZpeGVzIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3NQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IHZvaWQgV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KG1lc3NhZ2UpOwpAQCAtMTkwLDYgKzIxNSwxMSBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnBv
c3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4gdGFzaykKICAgICB0aHJlYWQoKS0+bWVzc2FnZVF1ZXVl
KCkuYXBwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzazo6Y3JlYXRlKHRh
c2spKTsKIH0KIAordm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dChQ
YXNzUmVmUHRyPFRhc2s+IHRhc2spCit7CisgICAgdGhyZWFkKCktPm1lc3NhZ2luZ1Byb3h5KCkt
PnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KHRhc2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaAppbmRleCBjOTc3
NGQ5Li5hODA2OGIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKKysr
IGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCkBAIC03MiwxMSArNzIsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Owog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAogICAgICAgICB2aXJ0dWFsIFdv
cmtlckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAg
ICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sg
b24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAgdm9pZCBwb3N0VGFz
a1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFRhc2s+IHRhc2spOyAvLyBFeGVjdXRlcyB0aGUg
dGFzayBpbiB0aGUgcGFyZW50J3MgY29udGV4dCAoYW5kIHRocmVhZCkgYXN5bmNocm9ub3VzbHku
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVy
ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUv
ZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBiNjliOWM1Li43MjFiZjEzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0yMjMsNiArMjIzLDExIEBAIHZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKICAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdl
V29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlKSk7CiB9CiAKK3ZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3sKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKHRhc2spOworfQorCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
V29ya2VyRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhXb3JrZXJFeGNlcHRpb25UYXNrOjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VVUkwsIHRoaXMpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmggYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5o
CmluZGV4IGMwMDQ5NDAuLmU3YmE4YTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaApA
QCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00OCw2
ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBwb3N0
TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgICB2
b2lkIHBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4pOwogCiAgICAgICAgIHZvaWQgcG9zdFdvcmtlckV4Y2VwdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKIApAQCAtNjIsNiArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJv
b2wgd29ya2VyVGhyZWFkSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgR2VuZXJpY1dvcmtlclRhc2tCYXNlOwogICAgICAgICBm
cmllbmQgY2xhc3MgTWVzc2FnZVdvcmtlclRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3Jr
ZXJDb250ZXh0RGVzdHJveWVkVGFzazsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckV4Y2Vw
dGlvblRhc2s7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuaCBiL1dlYkNv
cmUvZG9tL1dvcmtlclRocmVhZC5oCmluZGV4IDA3ZTNlOGEuLmNhM2U5NjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVh
ZC5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXb3Jr
ZXJDb250ZXh0OwogICAgIGNsYXNzIFdvcmtlck1lc3NhZ2luZ1Byb3h5OwogICAgIGNsYXNzIFdv
cmtlclRhc2s7Ci0gICAgY2xhc3MgV29ya2VyVGhyZWFkU3RhcnR1cERhdGE7CisgICAgc3RydWN0
IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOwogCiAgICAgY2xhc3MgV29ya2VyVGhyZWFkIDogcHVi
bGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkPiB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCmluZGV4IDAxYmM0MTcuLjMzMjhmNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAg
LTMxOCw4ICszMTgsOCBAQCBzdGF0aWMgY29uc3QgWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKiBp
bml0aWFsaXplWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCkKICAgICByZXR1cm4gZHVtbXk7CiB9
CiAKLVhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChEb2N1bWVudCogZG9jKQotICAgIDog
QWN0aXZlRE9NT2JqZWN0KGRvYywgdGhpcykKK1hNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2FzeW5jKHRydWUpCiAgICAgLCBtX2luY2x1ZGVDcmVk
ZW50aWFscyhmYWxzZSkKICAgICAsIG1fc3RhdGUoVU5TRU5UKQpAQCAtMzMzLDcgKzMzMyw2IEBA
IFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChEb2N1bWVudCogZG9jKQogICAgICwgbV9y
ZWNlaXZlZExlbmd0aCgwKQogICAgICwgbV9sYXN0U2VuZExpbmVOdW1iZXIoMCkKIHsKLSAgICBB
U1NFUlQoZG9jdW1lbnQoKSk7CiAgICAgaW5pdGlhbGl6ZVhNTEh0dHBSZXF1ZXN0U3RhdGljRGF0
YSgpOwogfQogCkBAIC05NTMsMTEgKzk1Miw5IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRyb3BQ
cm90ZWN0aW9uKCkKICAgICAvLyBjYW4ndCBiZSByZWNvdXBlZCB1bnRpbCB0aGUgbG9hZCBpcyBk
b25lLCBzbyBvbmx5CiAgICAgLy8gcmVwb3J0IHRoZSBleHRyYSBjb3N0IGF0IHRoYXQgcG9pbnQu
CiAKLSAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQo
KS0+ZnJhbWUoKSkpIHsKLSAgICAgICAgSlNDOjpKU1ZhbHVlUHRyIHdyYXBwZXIgPSBnZXRDYWNo
ZWRET01PYmplY3RXcmFwcGVyKCp3aW5kb3ctPmdsb2JhbERhdGEoKSwgdGhpcyk7Ci0gICAgICAg
IGlmICh3cmFwcGVyKQotICAgICAgICAgICAgSlNDOjpIZWFwOjpoZWFwKHdyYXBwZXIpLT5yZXBv
cnRFeHRyYU1lbW9yeUNvc3QobV9yZXNwb25zZVRleHQuc2l6ZSgpICogMik7Ci0gICAgfQorICAg
aWYgKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgaWYgKERPTU9iamVjdCogd3JhcHBl
ciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoKmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LCB0aGlzKSkKKyAgICAgICAgICAgSlNDOjpIZWFwOjpoZWFwKHdyYXBwZXIpLT5yZXBvcnRFeHRy
YU1lbW9yeUNvc3QobV9yZXNwb25zZVRleHQuc2l6ZSgpICogMik7CiAjZW5kaWYKIAogICAgIHVu
c2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwpAQCAtOTY4LDE2ICs5NjUsMTMgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6b3ZlcnJpZGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKQogICAg
IG1fbWltZVR5cGVPdmVycmlkZSA9IG92ZXJyaWRlOwogfQogCi1zdGF0aWMgdm9pZCByZXBvcnRV
bnNhZmVVc2FnZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3N0
YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgaWYg
KCFmcmFtZSkKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBJdCdz
IG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0
IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KKyAgICAvLyBGSVhNRTogSXQncyBub3QgZ29vZCB0
byByZXBvcnQgdGhlIGJhZCB1c2FnZSB3aXRob3V0IGluZGljYXRpbmcgd2hhdCBzb3VyY2UgbGlu
ZSBpdCBjYW1lIGZyb20uCiAgICAgLy8gV2Ugc2hvdWxkIHBhc3MgYWRkaXRpb25hbCBwYXJhbWV0
ZXJzIHNvIHdlIGNhbiB0ZWxsIHRoZSBjb25zb2xlIHdoZXJlIHRoZSBtaXN0YWtlIG9jY3VycmVk
LgotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICBj
b250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogfQogCiB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMDAwLDcgKzk5NCw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhCiAKICAgICAvLyBBIHByaXZpbGVnZWQgc2NyaXB0IChl
LmcuIGEgRGFzaGJvYXJkIHdpZGdldCkgY2FuIHNldCBhbnkgaGVhZGVycy4KICAgICBpZiAoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuTG9hZExvY2FsUmVz
b3VyY2VzKCkgJiYgIWlzU2FmZVJlcXVlc3RIZWFkZXIobmFtZSkpIHsKLSAgICAgICAgcmVwb3J0
VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJlZnVzZWQgdG8gc2V0IHVuc2FmZSBoZWFkZXIgXCIi
ICsgbmFtZSArICJcIiIpOworICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksICJSZWZ1c2VkIHRvIHNldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAi
XCIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA3MSwxMiArMTA2NSwxMiBAQCBT
dHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZQogCiAgICAgLy8gU2VlIGNvbW1lbnQgaW4gZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzIGFib3ZlLgogICAgIGlmIChpc1NldENvb2tpZUhlYWRlcihuYW1lKSAmJiAh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxS
ZXNvdXJjZXMoKSkgewotICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShkb2N1bWVudCgpLCAiUmVm
dXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CisgICAgICAgIHJl
cG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8gZ2V0
IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwogICAgICAgICByZXR1cm4gIiI7CiAg
ICAgfQogCiAgICAgaWYgKCFtX3NhbWVPcmlnaW5SZXF1ZXN0ICYmICFpc09uQWNjZXNzQ29udHJv
bFJlc3BvbnNlSGVhZGVyV2hpdGVsaXN0KG5hbWUpKSB7Ci0gICAgICAgIHJlcG9ydFVuc2FmZVVz
YWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUg
KyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CiAg
ICAgICAgIHJldHVybiAiIjsKICAgICB9CiAKQEAgLTExODgsMTIgKzExODIsOCBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIp
CiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9yZXNwb25zZVRleHQgKz0gbV9kZWNvZGVy
LT5mbHVzaCgpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkp
IHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlmaWVyKCkgOiBtX2lkZW50aWZpZXIs
IG1fcmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwg
IlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBtX3VybCArICJcIi4iLCBtX2xhc3RTZW5kTGlu
ZU51bWJlciwgbV9sYXN0U2VuZFVSTCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QobV9sb2Fk
ZXIgPyBtX2xvYWRlci0+aWRlbnRpZmllcigpIDogbV9pZGVudGlmaWVyLCBtX3Jlc3BvbnNlVGV4
dCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKEluc3BlY3RvckNv
bnRyb2xsZXJEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsICJY
SFIgZmluaXNoZWQgbG9hZGluZzogXCIiICsgbV91cmwgKyAiXCIuIiwgbV9sYXN0U2VuZExpbmVO
dW1iZXIsIG1fbGFzdFNlbmRVUkwpOwogCiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRlcjsK
ICAgICBtX2xvYWRlciA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA4NThmMjI4Li44ZDZjZDMw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIAogY2xhc3MgWE1MSHR0cFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxYTUxI
dHRwUmVxdWVzdD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHJpdmF0ZSBTdWJyZXNvdXJjZUxvYWRl
ckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChkb2N1bWVudCkpOyB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgWE1MSHR0cFJlcXVlc3QoY29udGV4dCkp
OyB9CiAgICAgflhNTEh0dHBSZXF1ZXN0KCk7CiAKICAgICAvLyBUaGVzZSBleGFjdCBudW1lcmlj
IHZhbHVlcyBhcmUgaW1wb3J0YW50IGJlY2F1c2UgSlMgZXhwZWN0cyB0aGVtLgpAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0Pjo6
ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgWE1MSHR0cFJlcXVlc3QoRG9jdW1lbnQqKTsKKyAgICBY
TUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26847</attachid>
            <date>2009-01-19 11:49:37 -0800</date>
            <delta_ts>2009-01-22 00:33:44 -0800</delta_ts>
            <desc>Addressed comments.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>41291</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmUwNzlmYi4uNDM5ZTM3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAwOS0wMS0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgUHJvdmlkZSBhIGdlbmVyaWMgY2xhc3MgdG8gaGFuZGxlIHRoZSBwYXR0
ZXJuIG9mIHRhc2sgY2FsbGJhY2tzIGFjcm9zcyB3b3JrZXIvcGFyZW50IHRocmVhZHMuICBJdAor
ICAgICAgICBvbmx5IHdvcmtzIGZvciBtZXRob2RzIHRoYXQgbmVlZCA2IHBhcmFtZXRlcnMgYnV0
IHNpbWlsYXIgY2xhc3NlcyBjb3VsZCBiZSBhZGRlZCBhcyBuZWVkZWQgZm9yCisgICAgICAgIG90
aGVyIG51bWJlcnMgb2YgcGFyYW1ldGVycy4KKworICAgICAgICBBZGQgYWRkTWVzc2FnZSBhbmQg
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuCisKKyAgICAgICAgVXNlIHRoZXNlIG1ldGhvZHMgYW5kIG90aGVycyB0byByZW1vdmUgZG9j
dW1lbnQoKSBmcm9tIFhNTEh0dHBSZXF1ZXN0IGluIGEgZmV3IG1vcmUgcGxhY2VzLgorCisgICAg
ICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBTb3J0ZWQgcHJvamVjdCBmaWxlIHdoaWxlIGFkZGluZyBHZW5lcmljV29ya2VyVGFzay5o
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0
cmluZzo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvciE9KToKKyAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBKU0xvY2suCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0dlbmVyaWNXb3JrZXJU
YXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2tCYXNlOjpH
ZW5lcmljV29ya2VyVGFza0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRh
c2tCYXNlOjpjYW5QZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2Vy
VGFzazY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6Okdl
bmVyaWNXb3JrZXJUYXNrNik6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxiYWNrVGFzayk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZXNzYWdlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dCk6
CisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5n
UHJveHkuaDoKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxI
dHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3Rl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUp
OgorCiAyMDA5LTAxLTE3ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDE3NjEzYi4uNWJhZDI0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMTYzLDYgKzIxNjMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCBcCisJV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29y
ZS9kb20vV29ya2VyLmNwcCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDdhY2JhMzYuLjU4OGQyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMTEzOTAsNiArMTEzOTAsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9h
cmRFdmVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTk4NGVmLi40MDExZTEzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1LDYgKzEx
NSw3IEBACiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUw
RUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4
RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAw
QjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQkE1RDM4
NjBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAv
KiBHZW5lcmljV29ya2VyVGFzay5oICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzgg
LyogUmVuZGVyTWFycXVlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsg
fTsKIAkJMEY1NjAyOTAwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRkM3MDUyMTBFQjE4MTU2
MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0
cmluZ0hhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDkyOSw2ICs0OTMwLDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdN
TEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhG
Qjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJp
Y1dvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dv
cmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWFycXVlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2
MDI4RTBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hh
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYxMiw4ICs5NjE0LDYgQEAKIAkJNDlF
OTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQw
Q0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4
NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlF
OTExQjcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApA
QCAtOTYyNyw2ICs5NjI3LDggQEAKIAkJCQk0OUU5MTFCRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQkYwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRy
YW5zZm9ybU9wZXJhdGlvbnMuY3BwICovLAogCQkJCTQ5RTkxMUMwMEVGODZENDcwMDlEMENBRiAv
KiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggKi8sCisJCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCAqLywKIAkJCQk0OUU5MTFDMTBFRjg2RDQ3
MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk0OUU5
MTFDMjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggKi8s
CiAJCQkpOwpAQCAtMTI4NjAsNyArMTI4NjIsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2
NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAq
LywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCAqLywK
IAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJ
CUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBAIC0xMjg3
OSw2ICsxMjg4MCw3IEBACiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNw
cCAqLywKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywK
KwkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTEzNzQ5LDggKzEzNzUxLDYgQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNz
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdBRkU1
OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3MgKi8sCi0JCQkJMDcwREQ4
RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAogCQkJCTkzQ0E0QzlD
MDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0JCMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLApAQCAtMTM5MTMsNiAr
MTM5MTMsOCBAQAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxl
LWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3Au
cGwgKi8sCiAJCQkJOTNDQTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8s
CisJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAor
CQkJCTA3QUZFNTkwMEYxNDQ2QkQwMDg0MTYxNyAvKiBtZWRpYUNvbnRyb2xzUVQuY3NzICovLAog
CQkJCTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCTkzQ0E0
Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovLAogCQkJCTkzQ0E0Q0EzMDlERjkzRkEw
MERGODY3NyAvKiB0b2tlbml6ZXIuZmxleCAqLywKQEAgLTE0MjA4LDYgKzE0MjEwLDcgQEAKIAkJ
CQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJ
OTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQkwODU3
NzMzNDBGMDg0NjAxMDA4MDU4M0UgLyogRm9ybUNvbnRyb2xFbGVtZW50LmggKi8sCisJCQkJMEJB
NUQzODUwRjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJODUw
MzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMx
QjJFMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAw
OUY3MTEwNjAwRUIzNjY1IC8qIEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTQzNjgsNyArMTQz
NzEsNiBAQAogCQkJCTI5QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRDOEIw
MDAyNTUzNiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1h
dGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAv
KiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MjExLDYgKzE1MjEz
LDcgQEAKIAkJCQk4NTlENjJGMDBBRDg4OTI3MDAwMTI5OTUgLyogRE9NU1ZHWm9vbUV2ZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RTU0NEM0MENBOUQxQzIwMDk3RDA5QiAvKiBE
T01TVkdab29tRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2ODUwQzMz
Njc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIz
NzgwRjE0QjYyMjAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDY1NzAwMEFBQjQ3NjMwMDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUI0OThGRjBBREIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTA2NTcwMjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5
bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTUyMzQsNiArMTUyMzcsOCBAQAogCQkJ
CTMxNkZFMDdGMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwODAwRTZDQ0MyODAwQkY2MDg4IC8qIERP
TVdlYktpdENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2
Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NN
YXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBE
T01XZWJLaXRDU1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNjEw
RTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTYxMUU2MzBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NTM1OSw2ICsxNTM2NCw3IEBACiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJl
Y3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2Vu
ZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA0QzhBMERBRkY3QTAwMDdBMEY0
MSAvKiBHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCQTVEMzg2MEYyNDBGQjQwMDlC
ODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3QzYw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFC
OTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTU1MzQsNiArMTU1NDAsNyBAQAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNF
MDBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NUE4NkI2MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTEwQkIzODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGOTM3RTcwRThCMkU5NTAwNUM3QUI3IC8qIEpTRE9N
V2luZG93QmFzZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAx
RDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTgxNCw2ICsx
NTgyMSw4IEBACiAJCQkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAv
KiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQw
RTZDQ0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDk4MzkxNDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNUIwRTFDNERF
MDAwRjZBNTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxQzBGRjQwMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjMwNCw2ICsxNjMxMyw3IEBACiAJCQkJOTMzMDlF
MTYwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTIwNzE5MDlCRDNCQTUwMEYyMDM4RCAvKiBTdGF0
aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERC
MjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4MUIzNTEwRjE1
MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTYzNzgsNiArMTYzODgsNyBAQAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAx
RjFENyAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM3MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTlEMkM1MENF
QTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDU1LDYg
KzE2NDY2LDcgQEAKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUz
MDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzlBREQyMzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUYzNDgxMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTY1
MzUsMTQgKzE2NTQ3LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2
RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTBCQjM3ODBGMTRC
NjIyMDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQkIz
ODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTE4MUIzNTEwRjE1MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQ5ODM5MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdl
YktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTIwRjFFNzZCNDAwQzIz
NzgyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAq
LywKLQkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjgyMyw4ICsxNjgyNyw2IEBACiAJCQkJMjlB
QUM1MjAwRTUzOTYzQjAwOEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTgwMEM5NjBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVD
NjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlF
OTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyNzUzNTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAv
KiBBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2
MDg4IC8qIEFuaW1hdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZF
MURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzIwMCw2ICsxNzIwMiw3IEBACiAJCQkJODU5RDYyQzMwQUQ4ODhFRjAwMDEyOTk1IC8qIERP
TVNWR1ZpZXdFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQzYwQUQ4ODhFRjAw
MDEyOTk1IC8qIERPTVNWR1pvb21FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4Njg0
MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTEwQkIzN0IwRjE0QjY0MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUwNjU3MDEwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NTA2NTcwMzBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVl
dExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyog
RE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLApAQCAtMTcyMTEsNiArMTcyMTQsNyBAQAogCQkJCTMx
QzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTMxNkZFMDdFMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA4MTBFNkNDQzI4MDBCRjYw
ODggLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5
ODM5MTUxMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUg
LyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1
RTgwQUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAg
LTE3NTAwLDYgKzE3NTA0LDggQEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNE
T01JbXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgx
MDAyMjk0N0QgLyogSlNET01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUw
QzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyog
SlNET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2MjBD
MTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzgyNyw2ICsxNzgzMyw4IEBACiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzEwRTZD
Q0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNkZFMDczMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpT
V2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTYzMEYxRThFRTEw
MEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNjExRTVBMEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgy
OTAsNiArMTgyOTgsNyBAQAogCQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRl
eHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1
NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRp
Y1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUw
OTExIC8qIFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTM3REYwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUJDMERB
NTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODM1
MCw2ICsxODM1OSw4IEBACiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5n
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZE
NDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFEMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM2MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3Mzgw
QTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODQy
MSw2ICsxODQzMiw3IEBACiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjg4RTcyMEUzMDA1RDYwMDM2
MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEy
ODhFNzQwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0xODQ5MywxNCArMTg1MDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQy
NDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUxMEJCMzdCMEYxNEI2NDEwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmlu
Z0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8q
IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTgxQjM1NjBG
MTUwMEQ3MDBGQjc4NDcgLyogU3RhdGljU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OTgzOTEzRjBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01h
dHJpeC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBX
ZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4MzkxNjMwRjFFOEVFMTAw
QzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaAppbmRleCAzZWZhMTYwLi42ZGFiOWEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsMjcgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBs
b2NrKGZhbHNlKTsKICAgICAgICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogCiAgICAgU2NyaXB0U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmluZyYgcykKICAg
ICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBtX3N0ciArPSBz
OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNjcmlwdFN0cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxv
Y2soZmFsc2UpOwogICAgICAgICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAgICB9CiAKICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lkIGV4cG9ydGlu
ZyBhbiBleHRyYSBzeW1ib2wgYnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAgICAgICAgcmV0
dXJuICEobV9zdHIgPT0gcy5tX3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUwNGMyNWIuLmRh
Y2JlY2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVx
dWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5o
IgpAQCAtNDMwMCw2ICs0MzAxLDI2IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0CiAgICAgICAg
IHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9p
ZCBEb2N1bWVudDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgc3dpdGNoIChkZXN0aW5hdGlvbikgeworICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlckRl
c3RpbmF0aW9uOgorICAgICAgICBpZiAocGFnZSgpKQorICAgICAgICAgICAgcGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b25zb2xlRGVzdGluYXRpb246CisgICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IGRvbVdp
bmRvdygpKQorICAgICAgICAgICAgd2luZG93LT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit2b2lkIERvY3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJj
ZVN0cmluZykKK3sKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIs
IHNvdXJjZVN0cmluZyk7Cit9CisKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGlt
ZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0VGFza1RpbWVyKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDBlMDhlYjUuLjkzYjEw
YzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtNzkxLDYgKzc5MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhcnNlRE5T
UHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4
ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAg
ICB2b2lkIGFkZFRpbWVvdXQoaW50IHRpbWVvdXRJZCwgRE9NVGltZXIqKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmggYi9XZWJDb3JlL2RvbS9HZW5lcmljV29y
a2VyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZTg3MmUKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9HZW5lcmljV29ya2VyVGFzay5oCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgR2VuZXJpY1dvcmtlclRhc2tfaAorI2RlZmluZSBHZW5lcmljV29y
a2VyVGFza19oCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBH
ZW5lcmljV29ya2VyVGFza0Jhc2UgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBHZW5lcmljV29ya2VyVGFza0Jhc2UoV29ya2Vy
TWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KSA6IG1fbWVzc2FnaW5nUHJveHkobWVzc2Fn
aW5nUHJveHkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2FuUGVyZm9y
bVRhc2soKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fbWVzc2FnaW5nUHJveHkt
PmFza2VkVG9UZXJtaW5hdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQ
MywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwg
dHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgorICAgIGNsYXNzIEdlbmVy
aWNXb3JrZXJUYXNrNiA6IHB1YmxpYyBHZW5lcmljV29ya2VyVGFza0Jhc2UgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNik7CisgICAgICAgIHR5cGVkZWYgR2VuZXJp
Y1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUs
IFA2LCBNUDY+IEdlbmVyaWNXb3JrZXJUYXNrOworCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEdlbmVyaWNXb3JrZXJUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2lu
Z1Byb3h5LCBNZXRob2QgbWV0aG9kLCBQMSYgcGFyYW1ldGVyMSwgUDImIHBhcmFtZXRlcjIsIFAz
JiBwYXJhbWV0ZXIzLCBQNCYgcGFyYW1ldGVyNCwgUDUmIHBhcmFtZXRlcjUsIFA2JiBwYXJhbWV0
ZXI2KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWNX
b3JrZXJUYXNrKG1lc3NhZ2luZ1Byb3h5LCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIs
IHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYpKTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1dvcmtlclRhc2s2KFdvcmtlck1l
c3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBhcmFtZXRl
cjEsIFAyJiBwYXJhbWV0ZXIyLCBQMyYgcGFyYW1ldGVyMywgUDQmIHBhcmFtZXRlcjQsIFA1JiBw
YXJhbWV0ZXI1LCBQNiYgcGFyYW1ldGVyNikKKyAgICAgICAgICAgIDogR2VuZXJpY1dvcmtlclRh
c2tCYXNlKG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCisg
ICAgICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAgICAgLCBtX3Bh
cmFtZXRlcjIocGFyYW1ldGVyMikKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRl
cjMpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQorICAgICAgICAgICAg
LCBtX3BhcmFtZXRlcjUocGFyYW1ldGVyNSkKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXI2KHBh
cmFtZXRlcjYpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIWNhblBlcmZvcm1UYXNrKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFt
ZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1l
dGVyNik7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE1ldGhvZCBtX21ldGhv
ZDsKKyAgICAgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgICAgICBQMiBtX3BhcmFtZXRlcjI7Cisg
ICAgICAgIFAzIG1fcGFyYW1ldGVyMzsKKyAgICAgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgICAg
ICBQNSBtX3BhcmFtZXRlcjU7CisgICAgICAgIFA2IG1fcGFyYW1ldGVyNjsKKyAgICB9OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1Q
Nj4KKyAgICBQYXNzUmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNrNjxQMSwgTVAxLCBQMiwgTVAyLCBQ
MywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2PiA+IGNyZWF0ZUNhbGxiYWNrVGFzaygK
KyAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LAorICAgICAgICB2
b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0
LCBNUDUsIE1QNiksCisgICAgICAgIFAxJiBwYXJhbWV0ZXIxLCBQMiYgcGFyYW1ldGVyMiwgUDMm
IHBhcmFtZXRlcjMsIFA0JiBwYXJhbWV0ZXI0LCBQNSYgcGFyYW1ldGVyNSwgUDYmIHBhcmFtZXRl
cjYpCisgICAgeworICAgICAgICByZXR1cm4gR2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAy
LCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+OjpjcmVhdGUobWVzc2Fn
aW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFy
YW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNik7CisgICAgfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIEdlbmVy
aWNXb3JrZXJUYXNrX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyZTlk
NTZjLi42ZjA5ZTFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaWZuZGVmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaAogI2RlZmluZSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0X2gKIAorI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtMzgsOCArMzksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFjdGl2
ZURPTU9iamVjdDsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAgICAgY2xhc3MgU3RyaW5nOwogCisgICAg
ZW51bSBNZXNzYWdlRGVzdGluYXRpb24geworICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyRGVz
dGluYXRpb24sCisgICAgICAgIENvbnNvbGVEZXN0aW5hdGlvbiwKKyAgICB9OworCiAgICAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CkBAIC01NCw2ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRF
eGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBz
b3VyY2VTdHJpbmcpID0gMDsKIAogICAgICAgICAvLyBBY3RpdmUgb2JqZWN0cyBhcmUgbm90IGdh
cmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBlLmcuIGJlY2F1c2UgdGhlaXIg
YWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcgaW52b2tlZC4KICAgICAgICAg
Ym9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAppbmRl
eCA4YTlhZjA3Li42MDNkN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcApAQCAtMzQsMTIgKzM0LDE1
IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUYXNrLmgi
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOCw2ICsxMTEsMjggQEAgdm9pZCBXb3JrZXJDb250
ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLAogICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0V29ya2VyRXhjZXB0
aW9uKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAorc3RhdGljIHZv
aWQgYWRkTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVzc2Fn
ZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2UoZGVzdGlu
YXRpb24sIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Cit9
CisKK3ZvaWQgV29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVz
dGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCit7CisgICAgUmVmUHRyPFRhc2s+IHRhc2s7CisgICAgeworICAgICAgICBTdHJpbmcg
bWVzc2FnZUNvcHkgPSBtZXNzYWdlLmNvcHkoKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVSTENv
cHkgPSBzb3VyY2VVUkwuY29weSgpOworICAgICAgICB0YXNrID0gY3JlYXRlQ2FsbGJhY2tUYXNr
KG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLCAmYWRkTWVzc2FnZVRhc2ssIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGxldmVsLCBtZXNzYWdlQ29weSwgbGluZU51bWJlciwgc291cmNlVVJMQ29weSk7
CisgICAgfQorICAgIHBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KHRhc2sucmVsZWFzZSgpKTsKK30K
Kwordm9pZCBXb3JrZXJDb250ZXh0OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3Qo
dW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogVGhl
IGltcGxlbWVudGF0aW9uIGlzIHBlbmRpbmcgdGhlIGZpeGVzIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3NQorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IHZvaWQgV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KG1lc3NhZ2UpOwpAQCAtMTkwLDYgKzIxNSwxMSBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnBv
c3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4gdGFzaykKICAgICB0aHJlYWQoKS0+bWVzc2FnZVF1ZXVl
KCkuYXBwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzazo6Y3JlYXRlKHRh
c2spKTsKIH0KIAordm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dChQ
YXNzUmVmUHRyPFRhc2s+IHRhc2spCit7CisgICAgdGhyZWFkKCktPm1lc3NhZ2luZ1Byb3h5KCkt
PnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KHRhc2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaAppbmRleCBjOTc3
NGQ5Li40ZDRiMjk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKKysr
IGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCkBAIC03MiwxMSArNzIsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Owog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAogICAgICAgICB2aXJ0dWFsIFdv
cmtlckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAg
ICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sg
b24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAgdm9pZCBwb3N0VGFz
a1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sg
aW4gdGhlIHBhcmVudCdzIGNvbnRleHQgKGFuZCB0aHJlYWQpIGFzeW5jaHJvbm91c2x5LgogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9XZWJDb3JlL2RvbS9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggYjY5YjljNS4uNzIxYmYxMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMjIzLDYgKzIyMywxMSBAQCB2b2lkIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtl
ckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwogfQogCit2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2spCit7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayh0YXNrKTsKK30KKwogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFdvcmtl
ckV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51
bWJlciwgc291cmNlVVJMLCB0aGlzKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5oIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRl
eCBjMDA0OTQwLi5lN2JhOGE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDgsNiArNDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBw
b3N0VGFza1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KTsKIAogICAgICAgICB2b2lkIHBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7
CiAKQEAgLTYyLDYgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHdv
cmtlclRocmVhZEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrQmFzZTsKICAgICAgICAgZnJpZW5k
IGNsYXNzIE1lc3NhZ2VXb3JrZXJUYXNrOwogICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyQ29u
dGV4dERlc3Ryb3llZFRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJFeGNlcHRpb25U
YXNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmggYi9XZWJDb3JlL2Rv
bS9Xb3JrZXJUaHJlYWQuaAppbmRleCAwN2UzZThhLi5jYTNlOTY1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Xb3JrZXJUaHJlYWQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuaApA
QCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV29ya2VyQ29u
dGV4dDsKICAgICBjbGFzcyBXb3JrZXJNZXNzYWdpbmdQcm94eTsKICAgICBjbGFzcyBXb3JrZXJU
YXNrOwotICAgIGNsYXNzIFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOworICAgIHN0cnVjdCBXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YTsKIAogICAgIGNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdvcmtlclRocmVhZD4gewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAppbmRleCAwMWJjNDE3Li4zMzI4ZjYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zMTgs
OCArMzE4LDggQEAgc3RhdGljIGNvbnN0IFhNTEh0dHBSZXF1ZXN0U3RhdGljRGF0YSogaW5pdGlh
bGl6ZVhNTEh0dHBSZXF1ZXN0U3RhdGljRGF0YSgpCiAgICAgcmV0dXJuIGR1bW15OwogfQogCi1Y
TUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoRG9jdW1lbnQqIGRvYykKLSAgICA6IEFjdGl2
ZURPTU9iamVjdChkb2MsIHRoaXMpCitYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250
ZXh0LCB0aGlzKQogICAgICwgbV9hc3luYyh0cnVlKQogICAgICwgbV9pbmNsdWRlQ3JlZGVudGlh
bHMoZmFsc2UpCiAgICAgLCBtX3N0YXRlKFVOU0VOVCkKQEAgLTMzMyw3ICszMzMsNiBAQCBYTUxI
dHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoRG9jdW1lbnQqIGRvYykKICAgICAsIG1fcmVjZWl2
ZWRMZW5ndGgoMCkKICAgICAsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKDApCiB7Ci0gICAgQVNTRVJU
KGRvY3VtZW50KCkpOwogICAgIGluaXRpYWxpemVYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEoKTsK
IH0KIApAQCAtOTUzLDExICs5NTIsOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpkcm9wUHJvdGVj
dGlvbigpCiAgICAgLy8gY2FuJ3QgYmUgcmVjb3VwZWQgdW50aWwgdGhlIGxvYWQgaXMgZG9uZSwg
c28gb25seQogICAgIC8vIHJlcG9ydCB0aGUgZXh0cmEgY29zdCBhdCB0aGF0IHBvaW50LgogCi0g
ICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KGRvY3VtZW50KCktPmZy
YW1lKCkpKSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZVB0ciB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9N
T2JqZWN0V3JhcHBlcigqd2luZG93LT5nbG9iYWxEYXRhKCksIHRoaXMpOwotICAgICAgICBpZiAo
d3JhcHBlcikKLSAgICAgICAgICAgIEpTQzo6SGVhcDo6aGVhcCh3cmFwcGVyKS0+cmVwb3J0RXh0
cmFNZW1vcnlDb3N0KG1fcmVzcG9uc2VUZXh0LnNpemUoKSAqIDIpOwotICAgIH0KKyAgIGlmIChK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIgPSBn
ZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKCpnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgdGhp
cykpCisgICAgICAgICAgIEpTQzo6SGVhcDo6aGVhcCh3cmFwcGVyKS0+cmVwb3J0RXh0cmFNZW1v
cnlDb3N0KG1fcmVzcG9uc2VUZXh0LnNpemUoKSAqIDIpOwogI2VuZGlmCiAKICAgICB1bnNldFBl
bmRpbmdBY3Rpdml0eSh0aGlzKTsKQEAgLTk2OCwxNiArOTY1LDEzIEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6Om92ZXJyaWRlTWltZVR5cGUoY29uc3QgU3RyaW5nJiBvdmVycmlkZSkKICAgICBtX21p
bWVUeXBlT3ZlcnJpZGUgPSBvdmVycmlkZTsKIH0KIAotc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZl
VXNhZ2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitzdGF0aWMg
dm9pZCByZXBvcnRVbnNhZmVVc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0
dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgIGlmICghZnJh
bWUpCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAgLy8gSXQncyBub3Qg
Z29vZCB0byByZXBvcnQgdGhlIGJhZCB1c2FnZSB3aXRob3V0IGluZGljYXRpbmcgd2hhdCBzb3Vy
Y2UgbGluZSBpdCBjYW1lIGZyb20uCisgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdvb2QgdG8gcmVw
b3J0IHRoZSBiYWQgdXNhZ2Ugd2l0aG91dCBpbmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQg
Y2FtZSBmcm9tLgogICAgIC8vIFdlIHNob3VsZCBwYXNzIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBz
byB3ZSBjYW4gdGVsbCB0aGUgY29uc29sZSB3aGVyZSB0aGUgbWlzdGFrZSBvY2N1cnJlZC4KLSAg
ICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisgICAgY29udGV4
dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVx
dWVzdDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTAwMCw3ICs5OTQsNyBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YQogCiAgICAgLy8gQSBwcml2aWxlZ2VkIHNjcmlwdCAoZS5nLiBh
IERhc2hib2FyZCB3aWRnZXQpIGNhbiBzZXQgYW55IGhlYWRlcnMuCiAgICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNl
cygpICYmICFpc1NhZmVSZXF1ZXN0SGVhZGVyKG5hbWUpKSB7Ci0gICAgICAgIHJlcG9ydFVuc2Fm
ZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRvIHNldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5h
bWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAiUmVmdXNlZCB0byBzZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNzEsMTIgKzEwNjUsMTIgQEAgU3RyaW5n
IFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUKIAogICAgIC8vIFNlZSBjb21tZW50IGluIGdldEFsbFJlc3BvbnNl
SGVhZGVycyBhYm92ZS4KICAgICBpZiAoaXNTZXRDb29raWVIZWFkZXIobmFtZSkgJiYgIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuTG9hZExvY2FsUmVzb3Vy
Y2VzKCkpIHsKLSAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJlZnVzZWQg
dG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOworICAgICAgICByZXBvcnRV
bnNhZmVVc2FnZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJSZWZ1c2VkIHRvIGdldCB1bnNh
ZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0K
IAogICAgIGlmICghbV9zYW1lT3JpZ2luUmVxdWVzdCAmJiAhaXNPbkFjY2Vzc0NvbnRyb2xSZXNw
b25zZUhlYWRlcldoaXRlbGlzdChuYW1lKSkgewotICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShk
b2N1bWVudCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwi
Iik7CisgICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
IlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwogICAgICAg
ICByZXR1cm4gIiI7CiAgICAgfQogCkBAIC0xMTg4LDEyICsxMTgyLDggQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKQogICAg
IGlmIChtX2RlY29kZXIpCiAgICAgICAgIG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1
c2goKTsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0g
ICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QobV9sb2FkZXIgPyBtX2xvYWRlci0+aWRlbnRpZmllcigpIDogbV9pZGVudGlmaWVyLCBtX3Jl
c3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIg
ZmluaXNoZWQgbG9hZGluZzogXCIiICsgbV91cmwgKyAiXCIuIiwgbV9sYXN0U2VuZExpbmVOdW1i
ZXIsIG1fbGFzdFNlbmRVUkwpOwotICAgICAgICB9Ci0gICAgfQorICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KG1fbG9hZGVyID8g
bV9sb2FkZXItPmlkZW50aWZpZXIoKSA6IG1faWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQpOwor
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZShJbnNwZWN0b3JDb250cm9s
bGVyRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZp
bmlzaGVkIGxvYWRpbmc6IFwiIiArIG1fdXJsICsgIlwiLiIsIG1fbGFzdFNlbmRMaW5lTnVtYmVy
LCBtX2xhc3RTZW5kVVJMKTsKIAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2FkZXI7CiAgICAg
bV9sb2FkZXIgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBi
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggODU4ZjIyOC4uOGQ2Y2QzMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiAKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8WE1MSHR0cFJl
cXVlc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFhNTEh0dHBSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgWE1MSHR0cFJlcXVlc3QoZG9jdW1lbnQpKTsgfQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQpKTsgfQog
ICAgIH5YTUxIdHRwUmVxdWVzdCgpOwogCiAgICAgLy8gVGhlc2UgZXhhY3QgbnVtZXJpYyB2YWx1
ZXMgYXJlIGltcG9ydGFudCBiZWNhdXNlIEpTIGV4cGVjdHMgdGhlbS4KQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdD46OmRlcmVm
OwogCiBwcml2YXRlOgotICAgIFhNTEh0dHBSZXF1ZXN0KERvY3VtZW50Kik7CisgICAgWE1MSHR0
cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIHsgZGVyZWYoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26848</attachid>
            <date>2009-01-19 12:35:28 -0800</date>
            <delta_ts>2009-01-19 13:29:08 -0800</delta_ts>
            <desc>Addressed comments.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>41268</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmUwNzlmYi4uNDM5ZTM3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAwOS0wMS0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgUHJvdmlkZSBhIGdlbmVyaWMgY2xhc3MgdG8gaGFuZGxlIHRoZSBwYXR0
ZXJuIG9mIHRhc2sgY2FsbGJhY2tzIGFjcm9zcyB3b3JrZXIvcGFyZW50IHRocmVhZHMuICBJdAor
ICAgICAgICBvbmx5IHdvcmtzIGZvciBtZXRob2RzIHRoYXQgbmVlZCA2IHBhcmFtZXRlcnMgYnV0
IHNpbWlsYXIgY2xhc3NlcyBjb3VsZCBiZSBhZGRlZCBhcyBuZWVkZWQgZm9yCisgICAgICAgIG90
aGVyIG51bWJlcnMgb2YgcGFyYW1ldGVycy4KKworICAgICAgICBBZGQgYWRkTWVzc2FnZSBhbmQg
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuCisKKyAgICAgICAgVXNlIHRoZXNlIG1ldGhvZHMgYW5kIG90aGVycyB0byByZW1vdmUgZG9j
dW1lbnQoKSBmcm9tIFhNTEh0dHBSZXF1ZXN0IGluIGEgZmV3IG1vcmUgcGxhY2VzLgorCisgICAg
ICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBTb3J0ZWQgcHJvamVjdCBmaWxlIHdoaWxlIGFkZGluZyBHZW5lcmljV29ya2VyVGFzay5o
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0
cmluZzo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvciE9KToKKyAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBKU0xvY2suCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0dlbmVyaWNXb3JrZXJU
YXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2tCYXNlOjpH
ZW5lcmljV29ya2VyVGFza0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRh
c2tCYXNlOjpjYW5QZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2Vy
VGFzazY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6Okdl
bmVyaWNXb3JrZXJUYXNrNik6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxiYWNrVGFzayk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZXNzYWdlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dCk6
CisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5n
UHJveHkuaDoKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxI
dHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3Rl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUp
OgorCiAyMDA5LTAxLTE3ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDE3NjEzYi4uNWJhZDI0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMTYzLDYgKzIxNjMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCBcCisJV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29y
ZS9kb20vV29ya2VyLmNwcCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDdhY2JhMzYuLjU4OGQyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMTEzOTAsNiArMTEzOTAsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9h
cmRFdmVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTk4NGVmLi40MDExZTEzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1LDYgKzEx
NSw3IEBACiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUw
RUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4
RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAw
QjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQkE1RDM4
NjBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAv
KiBHZW5lcmljV29ya2VyVGFzay5oICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzgg
LyogUmVuZGVyTWFycXVlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsg
fTsKIAkJMEY1NjAyOTAwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRkM3MDUyMTBFQjE4MTU2
MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0
cmluZ0hhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDkyOSw2ICs0OTMwLDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdN
TEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhG
Qjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJp
Y1dvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dv
cmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWFycXVlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2
MDI4RTBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hh
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYxMiw4ICs5NjE0LDYgQEAKIAkJNDlF
OTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQw
Q0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4
NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlF
OTExQjcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApA
QCAtOTYyNyw2ICs5NjI3LDggQEAKIAkJCQk0OUU5MTFCRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQkYwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRy
YW5zZm9ybU9wZXJhdGlvbnMuY3BwICovLAogCQkJCTQ5RTkxMUMwMEVGODZENDcwMDlEMENBRiAv
KiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggKi8sCisJCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCAqLywKIAkJCQk0OUU5MTFDMTBFRjg2RDQ3
MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk0OUU5
MTFDMjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggKi8s
CiAJCQkpOwpAQCAtMTI4NjAsNyArMTI4NjIsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2
NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAq
LywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCAqLywK
IAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJ
CUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBAIC0xMjg3
OSw2ICsxMjg4MCw3IEBACiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNw
cCAqLywKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywK
KwkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTEzNzQ5LDggKzEzNzUxLDYgQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNz
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdBRkU1
OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3MgKi8sCi0JCQkJMDcwREQ4
RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAogCQkJCTkzQ0E0QzlD
MDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0JCMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLApAQCAtMTM5MTMsNiAr
MTM5MTMsOCBAQAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxl
LWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3Au
cGwgKi8sCiAJCQkJOTNDQTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8s
CisJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAor
CQkJCTA3QUZFNTkwMEYxNDQ2QkQwMDg0MTYxNyAvKiBtZWRpYUNvbnRyb2xzUVQuY3NzICovLAog
CQkJCTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCTkzQ0E0
Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovLAogCQkJCTkzQ0E0Q0EzMDlERjkzRkEw
MERGODY3NyAvKiB0b2tlbml6ZXIuZmxleCAqLywKQEAgLTE0MjA4LDYgKzE0MjEwLDcgQEAKIAkJ
CQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJ
OTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQkwODU3
NzMzNDBGMDg0NjAxMDA4MDU4M0UgLyogRm9ybUNvbnRyb2xFbGVtZW50LmggKi8sCisJCQkJMEJB
NUQzODUwRjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJODUw
MzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMx
QjJFMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAw
OUY3MTEwNjAwRUIzNjY1IC8qIEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTQzNjgsNyArMTQz
NzEsNiBAQAogCQkJCTI5QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRDOEIw
MDAyNTUzNiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1h
dGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAv
KiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MjExLDYgKzE1MjEz
LDcgQEAKIAkJCQk4NTlENjJGMDBBRDg4OTI3MDAwMTI5OTUgLyogRE9NU1ZHWm9vbUV2ZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RTU0NEM0MENBOUQxQzIwMDk3RDA5QiAvKiBE
T01TVkdab29tRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2ODUwQzMz
Njc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIz
NzgwRjE0QjYyMjAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDY1NzAwMEFBQjQ3NjMwMDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUI0OThGRjBBREIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTA2NTcwMjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5
bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTUyMzQsNiArMTUyMzcsOCBAQAogCQkJ
CTMxNkZFMDdGMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwODAwRTZDQ0MyODAwQkY2MDg4IC8qIERP
TVdlYktpdENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2
Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NN
YXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBE
T01XZWJLaXRDU1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNjEw
RTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTYxMUU2MzBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NTM1OSw2ICsxNTM2NCw3IEBACiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJl
Y3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2Vu
ZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA0QzhBMERBRkY3QTAwMDdBMEY0
MSAvKiBHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCQTVEMzg2MEYyNDBGQjQwMDlC
ODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3QzYw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFC
OTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTU1MzQsNiArMTU1NDAsNyBAQAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNF
MDBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NUE4NkI2MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTEwQkIzODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGOTM3RTcwRThCMkU5NTAwNUM3QUI3IC8qIEpTRE9N
V2luZG93QmFzZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAx
RDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTgxNCw2ICsx
NTgyMSw4IEBACiAJCQkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAv
KiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQw
RTZDQ0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDk4MzkxNDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNUIwRTFDNERF
MDAwRjZBNTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxQzBGRjQwMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjMwNCw2ICsxNjMxMyw3IEBACiAJCQkJOTMzMDlF
MTYwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTIwNzE5MDlCRDNCQTUwMEYyMDM4RCAvKiBTdGF0
aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERC
MjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4MUIzNTEwRjE1
MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTYzNzgsNiArMTYzODgsNyBAQAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAx
RjFENyAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM3MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTlEMkM1MENF
QTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDU1LDYg
KzE2NDY2LDcgQEAKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUz
MDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzlBREQyMzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUYzNDgxMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTY1
MzUsMTQgKzE2NTQ3LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2
RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTBCQjM3ODBGMTRC
NjIyMDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQkIz
ODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTE4MUIzNTEwRjE1MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQ5ODM5MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdl
YktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTIwRjFFNzZCNDAwQzIz
NzgyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAq
LywKLQkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjgyMyw4ICsxNjgyNyw2IEBACiAJCQkJMjlB
QUM1MjAwRTUzOTYzQjAwOEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTgwMEM5NjBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVD
NjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlF
OTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyNzUzNTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAv
KiBBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2
MDg4IC8qIEFuaW1hdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZF
MURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzIwMCw2ICsxNzIwMiw3IEBACiAJCQkJODU5RDYyQzMwQUQ4ODhFRjAwMDEyOTk1IC8qIERP
TVNWR1ZpZXdFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQzYwQUQ4ODhFRjAw
MDEyOTk1IC8qIERPTVNWR1pvb21FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4Njg0
MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTEwQkIzN0IwRjE0QjY0MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUwNjU3MDEwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NTA2NTcwMzBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVl
dExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyog
RE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLApAQCAtMTcyMTEsNiArMTcyMTQsNyBAQAogCQkJCTMx
QzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTMxNkZFMDdFMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA4MTBFNkNDQzI4MDBCRjYw
ODggLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5
ODM5MTUxMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUg
LyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1
RTgwQUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAg
LTE3NTAwLDYgKzE3NTA0LDggQEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNE
T01JbXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgx
MDAyMjk0N0QgLyogSlNET01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUw
QzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyog
SlNET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2MjBD
MTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzgyNyw2ICsxNzgzMyw4IEBACiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzEwRTZD
Q0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNkZFMDczMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpT
V2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTYzMEYxRThFRTEw
MEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNjExRTVBMEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgy
OTAsNiArMTgyOTgsNyBAQAogCQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRl
eHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1
NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRp
Y1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUw
OTExIC8qIFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTM3REYwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUJDMERB
NTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODM1
MCw2ICsxODM1OSw4IEBACiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5n
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZE
NDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFEMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM2MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3Mzgw
QTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODQy
MSw2ICsxODQzMiw3IEBACiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjg4RTcyMEUzMDA1RDYwMDM2
MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEy
ODhFNzQwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0xODQ5MywxNCArMTg1MDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQy
NDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUxMEJCMzdCMEYxNEI2NDEwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmlu
Z0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8q
IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTgxQjM1NjBG
MTUwMEQ3MDBGQjc4NDcgLyogU3RhdGljU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OTgzOTEzRjBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01h
dHJpeC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBX
ZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4MzkxNjMwRjFFOEVFMTAw
QzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaAppbmRleCAzZWZhMTYwLi42ZGFiOWEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsMjcgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBs
b2NrKGZhbHNlKTsKICAgICAgICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogCiAgICAgU2NyaXB0U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmluZyYgcykKICAg
ICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBtX3N0ciArPSBz
OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNjcmlwdFN0cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxv
Y2soZmFsc2UpOwogICAgICAgICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAgICB9CiAKICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lkIGV4cG9ydGlu
ZyBhbiBleHRyYSBzeW1ib2wgYnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAgICAgICAgcmV0
dXJuICEobV9zdHIgPT0gcy5tX3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUwNGMyNWIuLjhj
MWJiOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVx
dWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5o
IgpAQCAtNDMwMCw2ICs0MzAxLDI3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0CiAgICAgICAg
IHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9p
ZCBEb2N1bWVudDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgc3dpdGNoIChkZXN0aW5hdGlvbikgeworICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlckRl
c3RpbmF0aW9uOgorICAgICAgICBpZiAocGFnZSgpKQorICAgICAgICAgICAgcGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
Q29uc29sZURlc3RpbmF0aW9uOgorICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBkb21X
aW5kb3coKSkKKyAgICAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQoreworICAgIGlmIChwYWdlKCkp
CisgICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKK30KKwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewogcHVi
bGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGltZXIoUGFzc1JlZlB0cjxEb2N1
bWVudD4gY29udGV4dCwgUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggMGUwOGViNS4uOTNiMTBjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03OTEsNiArNzkxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OworICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
VGFzayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdz
IHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQgYWRkVGltZW91dChpbnQgdGltZW91
dElkLCBET01UaW1lciopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRh
c2suaCBiL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzlmZDE0OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9t
L0dlbmVyaWNXb3JrZXJUYXNrLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmljV29y
a2VyVGFza19oCisjZGVmaW5lIEdlbmVyaWNXb3JrZXJUYXNrX2gKKworI2lmIEVOQUJMRShXT1JL
RVJTKQorCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrQmFzZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IEdlbmVyaWNXb3JrZXJUYXNrQmFzZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHkpIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBjYW5QZXJmb3JtVGFzaygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAhbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0
LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0
eXBlbmFtZSBNUDY+CisgICAgY2xhc3MgR2VuZXJpY1dvcmtlclRhc2s2IDogcHVibGljIEdlbmVy
aWNXb3JrZXJUYXNrQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIHZvaWQgKCpN
ZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwg
TVA2KTsKKyAgICAgICAgdHlwZWRlZiBHZW5lcmljV29ya2VyVGFzazY8UDEsIE1QMSwgUDIsIE1Q
MiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNj4gR2VuZXJpY1dvcmtlclRhc2s7
CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s+IGNyZWF0ZShX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1ldGhvZCBtZXRob2QsIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRl
cjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYm
IHBhcmFtZXRlcjYpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2VuZXJpY1dvcmtlclRhc2sobWVzc2FnaW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFy
YW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNikp
OworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBHZW5lcmljV29ya2VyVGFzazYo
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXRob2QgbWV0aG9kLCBjb25z
dCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2
JiBwYXJhbWV0ZXI2KQorICAgICAgICAgICAgOiBHZW5lcmljV29ya2VyVGFza0Jhc2UobWVzc2Fn
aW5nUHJveHkpCisgICAgICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgICAgICwg
bV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJh
bWV0ZXIyKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAg
ICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVy
NShwYXJhbWV0ZXI1KQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVyNikKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghY2FuUGVyZm9ybVRhc2soKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJh
bWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWV0aG9kIG1fbWV0aG9kOworICAgICAgICBQ
MSBtX3BhcmFtZXRlcjE7CisgICAgICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICAgICAgUDMgbV9w
YXJhbWV0ZXIzOworICAgICAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgICAgIFA1IG1fcGFyYW1l
dGVyNTsKKyAgICAgICAgUDYgbV9wYXJhbWV0ZXI2OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFt
ZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgorICAgIFBhc3NS
ZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBN
UDQsIFA1LCBNUDUsIFA2LCBNUDY+ID4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorICAgICAgICBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksCisgICAgICAgIHZvaWQgKCptZXRob2Qp
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwK
KyAgICAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25z
dCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0
ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKKyAgICB7CisgICAgICAgIHJldHVybiBHZW5lcmlj
V29ya2VyVGFzazY8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwg
UDYsIE1QNj46OmNyZWF0ZShtZXNzYWdpbmdQcm94eSwgbWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2KTsK
KyAgICB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JL
RVJTKQorCisjZW5kaWYgLy8gR2VuZXJpY1dvcmtlclRhc2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IDJlOWQ1NmMuLjZmMDllMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dF9oCiAjZGVmaW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaAogCisjaW5jbHVkZSAi
Q29uc29sZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zOCw4ICszOSwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0OwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0
OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFNjcmlwdFN0cmluZzsKICAg
ICBjbGFzcyBTdHJpbmc7CiAKKyAgICBlbnVtIE1lc3NhZ2VEZXN0aW5hdGlvbiB7CisgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwKKyAgICAgICAgQ29uc29sZURlc3RpbmF0
aW9uLAorICAgIH07CisKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTU0LDYgKzYxLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykgPSAwOwogCiAgICAgICAgIC8vIEFj
dGl2ZSBvYmplY3RzIGFyZSBub3QgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlbiBpZiBpbmFjY2Vzc2li
bGUsIGUuZy4gYmVjYXVzZSB0aGVpciBhY3Rpdml0eSBtYXkgcmVzdWx0IGluIGNhbGxiYWNrcyBi
ZWluZyBpbnZva2VkLgogICAgICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDhhOWFmMDcuLmM4NGU0ZmEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRl
eHQuY3BwCkBAIC0zNCwxMiArMzQsMTUgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2Vu
ZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJXb3JrZXJNZXNzYWdpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgog
I2luY2x1ZGUgIldvcmtlclRhc2suaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA4LDYgKzEx
MSwyMiBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsCiAgICAgbV90aHJlYWQtPm1lc3NhZ2luZ1By
b3h5KCktPnBvc3RXb3JrZXJFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpOwogfQogCitzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgY29u
dGV4dC0+YWRkTWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdl
KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBwb3N0VGFza1RvUGFyZW50Q29u
dGV4dChjcmVhdGVDYWxsYmFja1Rhc2sobV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCksICZhZGRN
ZXNzYWdlVGFzaywgZGVzdGluYXRpb24sIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UuY29weSgpLCBs
aW5lTnVtYmVyLCBzb3VyY2VVUkwuY29weSgpKSk7Cit9CisKK3ZvaWQgV29ya2VyQ29udGV4dDo6
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNj
cmlwdFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwZW5k
aW5nIHRoZSBmaXhlcyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxNzUKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdvcmtlckNvbnRleHQ6OnBv
c3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBtX3RocmVhZC0+bWVzc2Fn
aW5nUHJveHkoKS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlKTsKQEAgLTE5MCw2
ICsyMDksMTEgQEAgdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQYXNzUmVmUHRyPFRhc2s+
IHRhc2spCiAgICAgdGhyZWFkKCktPm1lc3NhZ2VRdWV1ZSgpLmFwcGVuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgV29ya2Vy
Q29udGV4dDo6cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPiB0YXNrKQor
eworICAgIHRocmVhZCgpLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0VGFza1RvUGFyZW50Q29udGV4
dCh0YXNrKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmggYi9XZWJD
b3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKaW5kZXggYzk3NzRkOS4uNGQ0YjI5OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNv
bnRleHQuaApAQCAtNzIsMTEgKzcyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVz
c2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0
cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNv
dXJjZVN0cmluZyk7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNv
bnRleHQoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1Jl
ZlB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5
bmNocm9ub3VzbHkuCisgICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1Jl
ZlB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIGluIHRoZSBwYXJlbnQncyBjb250ZXh0
IChhbmQgdGhyZWFkKSBhc3luY2hyb25vdXNseS4KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CmluZGV4IGI2OWI5YzUuLjcyMWJmMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKQEAgLTIyMyw2ICsyMjMsMTEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1l
c3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICBtX3F1
ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1l
c3NhZ2UpKTsKIH0KIAordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1BhcmVu
dENvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQor
eworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7Cit9CisKIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
IHsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlckV4Y2VwdGlv
blRhc2s6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCwgdGhpcykp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNv
cmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggYzAwNDk0MC4uZTdiYThhOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9XZWJDb3Jl
L2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFC
TEUoV09SS0VSUykKIAorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ4LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisgICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQo
UGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAKICAgICAgICAgdm9p
ZCBwb3N0V29ya2VyRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCkBAIC02Miw2ICs2NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCB3b3JrZXJUaHJlYWRIYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBHZW5l
cmljV29ya2VyVGFza0Jhc2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNZXNzYWdlV29ya2VyVGFz
azsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrOwogICAg
ICAgICBmcmllbmQgY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzazsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1dvcmtlclRocmVhZC5oIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKaW5kZXgg
MDdlM2U4YS4uY2EzZTk2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgK
KysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2Vy
TWVzc2FnaW5nUHJveHk7CiAgICAgY2xhc3MgV29ya2VyVGFzazsKLSAgICBjbGFzcyBXb3JrZXJU
aHJlYWRTdGFydHVwRGF0YTsKKyAgICBzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1cERhdGE7CiAK
ICAgICBjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+
IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDFiYzQxNy4uMzMyOGY2
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzE4LDggKzMxOCw4IEBAIHN0YXRpYyBjb25z
dCBYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEqIGluaXRpYWxpemVYTUxIdHRwUmVxdWVzdFN0YXRp
Y0RhdGEoKQogICAgIHJldHVybiBkdW1teTsKIH0KIAotWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBS
ZXF1ZXN0KERvY3VtZW50KiBkb2MpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jLCB0aGlzKQor
WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYXN5
bmModHJ1ZSkKICAgICAsIG1faW5jbHVkZUNyZWRlbnRpYWxzKGZhbHNlKQogICAgICwgbV9zdGF0
ZShVTlNFTlQpCkBAIC0zMzMsNyArMzMzLDYgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1
ZXN0KERvY3VtZW50KiBkb2MpCiAgICAgLCBtX3JlY2VpdmVkTGVuZ3RoKDApCiAgICAgLCBtX2xh
c3RTZW5kTGluZU51bWJlcigwKQogewotICAgIEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBpbml0
aWFsaXplWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCk7CiB9CiAKQEAgLTk1MywxMSArOTUyLDkg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3RlY3Rpb24oKQogICAgIC8vIGNhbid0IGJl
IHJlY291cGVkIHVudGlsIHRoZSBsb2FkIGlzIGRvbmUsIHNvIG9ubHkKICAgICAvLyByZXBvcnQg
dGhlIGV4dHJhIGNvc3QgYXQgdGhhdCBwb2ludC4KIAotICAgIGlmIChKU0RPTVdpbmRvdyogd2lu
ZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudCgpLT5mcmFtZSgpKSkgewotICAgICAgICBKU0M6
OkpTVmFsdWVQdHIgd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoKndpbmRvdy0+
Z2xvYmFsRGF0YSgpLCB0aGlzKTsKLSAgICAgICAgaWYgKHdyYXBwZXIpCi0gICAgICAgICAgICBK
U0M6OkhlYXA6OmhlYXAod3JhcHBlciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3BvbnNl
VGV4dC5zaXplKCkgKiAyKTsKLSAgICB9CisgICBpZiAoSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkK
KyAgICAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBl
cigqZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHRoaXMpKQorICAgICAgICAgICBKU0M6Okhl
YXA6OmhlYXAod3JhcHBlciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3BvbnNlVGV4dC5z
aXplKCkgKiAyKTsKICNlbmRpZgogCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CkBA
IC05NjgsMTYgKzk2NSwxMyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1pbWVUeXBl
KGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpCiAgICAgbV9taW1lVHlwZU92ZXJyaWRlID0gb3ZlcnJp
ZGU7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZlVXNhZ2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogZnJhbWUg
PSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQorICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwotICAgIC8vIEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRoZSBiYWQg
dXNhZ2Ugd2l0aG91dCBpbmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBmcm9tLgor
ICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdlIHdpdGhv
dXQgaW5kaWNhdGluZyB3aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KICAgICAvLyBXZSBz
aG91bGQgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgc28gd2UgY2FuIHRlbGwgdGhlIGNvbnNv
bGUgd2hlcmUgdGhlIG1pc3Rha2Ugb2NjdXJyZWQuCi0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
bWVzc2FnZSwgMSwgU3RyaW5nKCkpOworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURl
c3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAx
LCBTdHJpbmcoKSk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTEwMDAsNyArOTk0LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVx
dWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmEKIAog
ICAgIC8vIEEgcHJpdmlsZWdlZCBzY3JpcHQgKGUuZy4gYSBEYXNoYm9hcmQgd2lkZ2V0KSBjYW4g
c2V0IGFueSBoZWFkZXJzLgogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSAmJiAhaXNTYWZlUmVxdWVzdEhl
YWRlcihuYW1lKSkgewotICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShkb2N1bWVudCgpLCAiUmVm
dXNlZCB0byBzZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CisgICAgICAgIHJl
cG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8gc2V0
IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMDcxLDEyICsxMDY1LDEyIEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVz
cG9uc2VIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlCiAKICAg
ICAvLyBTZWUgY29tbWVudCBpbiBnZXRBbGxSZXNwb25zZUhlYWRlcnMgYWJvdmUuCiAgICAgaWYg
KGlzU2V0Q29va2llSGVhZGVyKG5hbWUpICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygpKSB7Ci0gICAgICAgIHJlcG9y
dFVuc2FmZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyIFwi
IiArIG5hbWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsg
IlwiIik7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAKICAgICBpZiAoIW1fc2FtZU9yaWdp
blJlcXVlc3QgJiYgIWlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3QobmFt
ZSkpIHsKLSAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJlZnVzZWQgdG8g
Z2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOworICAgICAgICByZXBvcnRVbnNh
ZmVVc2FnZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJSZWZ1c2VkIHRvIGdldCB1bnNhZmUg
aGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIApA
QCAtMTE4OCwxMiArMTE4Miw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICBpZiAobV9kZWNvZGVyKQogICAgICAg
ICBtX3Jlc3BvbnNlVGV4dCArPSBtX2RlY29kZXItPmZsdXNoKCk7CiAKLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KG1fbG9hZGVyID8gbV9sb2FkZXIt
PmlkZW50aWZpZXIoKSA6IG1faWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQpOwotICAgICAgICAg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6IFwiIiAr
IG1fdXJsICsgIlwiLiIsIG1fbGFzdFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RTZW5kVVJMKTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJlc291cmNlUmV0
cmlldmVkQnlYTUxIdHRwUmVxdWVzdChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlmaWVyKCkg
OiBtX2lkZW50aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmFkZE1lc3NhZ2UoSW5zcGVjdG9yQ29udHJvbGxlckRlc3RpbmF0aW9uLCBKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBt
X3VybCArICJcIi4iLCBtX2xhc3RTZW5kTGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCk7CiAKICAg
ICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCmluZGV4IDg1OGYyMjguLjhkNmNkMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMzgs
NyArMzgsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBYTUxIdHRwUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2ZW50VGFy
Z2V0LCBwcml2YXRlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4gY3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1
ZXN0KGRvY3VtZW50KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0KSk7IH0KICAgICB+WE1MSHR0cFJlcXVlc3QoKTsK
IAogICAgIC8vIFRoZXNlIGV4YWN0IG51bWVyaWMgdmFsdWVzIGFyZSBpbXBvcnRhbnQgYmVjYXVz
ZSBKUyBleHBlY3RzIHRoZW0uCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBYTUxI
dHRwUmVxdWVzdChEb2N1bWVudCopOworICAgIFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJl
ZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26850</attachid>
            <date>2009-01-19 13:29:08 -0800</date>
            <delta_ts>2009-01-19 14:10:34 -0800</delta_ts>
            <desc>Remove a few more document() from xhr code (with comments addressed).</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>41760</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmUwNzlmYi4uNDM5ZTM3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAwOS0wMS0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgUHJvdmlkZSBhIGdlbmVyaWMgY2xhc3MgdG8gaGFuZGxlIHRoZSBwYXR0
ZXJuIG9mIHRhc2sgY2FsbGJhY2tzIGFjcm9zcyB3b3JrZXIvcGFyZW50IHRocmVhZHMuICBJdAor
ICAgICAgICBvbmx5IHdvcmtzIGZvciBtZXRob2RzIHRoYXQgbmVlZCA2IHBhcmFtZXRlcnMgYnV0
IHNpbWlsYXIgY2xhc3NlcyBjb3VsZCBiZSBhZGRlZCBhcyBuZWVkZWQgZm9yCisgICAgICAgIG90
aGVyIG51bWJlcnMgb2YgcGFyYW1ldGVycy4KKworICAgICAgICBBZGQgYWRkTWVzc2FnZSBhbmQg
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuCisKKyAgICAgICAgVXNlIHRoZXNlIG1ldGhvZHMgYW5kIG90aGVycyB0byByZW1vdmUgZG9j
dW1lbnQoKSBmcm9tIFhNTEh0dHBSZXF1ZXN0IGluIGEgZmV3IG1vcmUgcGxhY2VzLgorCisgICAg
ICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBTb3J0ZWQgcHJvamVjdCBmaWxlIHdoaWxlIGFkZGluZyBHZW5lcmljV29ya2VyVGFzay5o
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0
cmluZzo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvciE9KToKKyAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBKU0xvY2suCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0dlbmVyaWNXb3JrZXJU
YXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2tCYXNlOjpH
ZW5lcmljV29ya2VyVGFza0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRh
c2tCYXNlOjpjYW5QZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2Vy
VGFzazY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6Okdl
bmVyaWNXb3JrZXJUYXNrNik6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxiYWNrVGFzayk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZXNzYWdlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dCk6
CisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5n
UHJveHkuaDoKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxI
dHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3Rl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUp
OgorCiAyMDA5LTAxLTE3ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDE3NjEzYi4uNWJhZDI0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMTYzLDYgKzIxNjMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCBcCisJV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29y
ZS9kb20vV29ya2VyLmNwcCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDdhY2JhMzYuLjU4OGQyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMTEzOTAsNiArMTEzOTAsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9h
cmRFdmVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTk4NGVmLi40MDExZTEzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1LDYgKzEx
NSw3IEBACiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUw
RUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4
RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAw
QjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQkE1RDM4
NjBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAv
KiBHZW5lcmljV29ya2VyVGFzay5oICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzgg
LyogUmVuZGVyTWFycXVlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsg
fTsKIAkJMEY1NjAyOTAwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRkM3MDUyMTBFQjE4MTU2
MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0
cmluZ0hhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDkyOSw2ICs0OTMwLDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdN
TEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhG
Qjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJp
Y1dvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dv
cmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWFycXVlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2
MDI4RTBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hh
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYxMiw4ICs5NjE0LDYgQEAKIAkJNDlF
OTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQw
Q0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4
NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlF
OTExQjcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApA
QCAtOTYyNyw2ICs5NjI3LDggQEAKIAkJCQk0OUU5MTFCRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQkYwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRy
YW5zZm9ybU9wZXJhdGlvbnMuY3BwICovLAogCQkJCTQ5RTkxMUMwMEVGODZENDcwMDlEMENBRiAv
KiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggKi8sCisJCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCAqLywKIAkJCQk0OUU5MTFDMTBFRjg2RDQ3
MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk0OUU5
MTFDMjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggKi8s
CiAJCQkpOwpAQCAtMTI4NjAsNyArMTI4NjIsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2
NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAq
LywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCAqLywK
IAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJ
CUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBAIC0xMjg3
OSw2ICsxMjg4MCw3IEBACiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNw
cCAqLywKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywK
KwkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTEzNzQ5LDggKzEzNzUxLDYgQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNz
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdBRkU1
OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3MgKi8sCi0JCQkJMDcwREQ4
RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAogCQkJCTkzQ0E0QzlD
MDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0JCMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLApAQCAtMTM5MTMsNiAr
MTM5MTMsOCBAQAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxl
LWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3Au
cGwgKi8sCiAJCQkJOTNDQTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8s
CisJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAor
CQkJCTA3QUZFNTkwMEYxNDQ2QkQwMDg0MTYxNyAvKiBtZWRpYUNvbnRyb2xzUVQuY3NzICovLAog
CQkJCTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCTkzQ0E0
Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovLAogCQkJCTkzQ0E0Q0EzMDlERjkzRkEw
MERGODY3NyAvKiB0b2tlbml6ZXIuZmxleCAqLywKQEAgLTE0MjA4LDYgKzE0MjEwLDcgQEAKIAkJ
CQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJ
OTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQkwODU3
NzMzNDBGMDg0NjAxMDA4MDU4M0UgLyogRm9ybUNvbnRyb2xFbGVtZW50LmggKi8sCisJCQkJMEJB
NUQzODUwRjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJODUw
MzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMx
QjJFMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAw
OUY3MTEwNjAwRUIzNjY1IC8qIEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTQzNjgsNyArMTQz
NzEsNiBAQAogCQkJCTI5QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRDOEIw
MDAyNTUzNiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1h
dGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAv
KiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MjExLDYgKzE1MjEz
LDcgQEAKIAkJCQk4NTlENjJGMDBBRDg4OTI3MDAwMTI5OTUgLyogRE9NU1ZHWm9vbUV2ZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RTU0NEM0MENBOUQxQzIwMDk3RDA5QiAvKiBE
T01TVkdab29tRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2ODUwQzMz
Njc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIz
NzgwRjE0QjYyMjAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDY1NzAwMEFBQjQ3NjMwMDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUI0OThGRjBBREIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTA2NTcwMjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5
bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTUyMzQsNiArMTUyMzcsOCBAQAogCQkJ
CTMxNkZFMDdGMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwODAwRTZDQ0MyODAwQkY2MDg4IC8qIERP
TVdlYktpdENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2
Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NN
YXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBE
T01XZWJLaXRDU1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNjEw
RTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTYxMUU2MzBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NTM1OSw2ICsxNTM2NCw3IEBACiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJl
Y3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2Vu
ZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA0QzhBMERBRkY3QTAwMDdBMEY0
MSAvKiBHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCQTVEMzg2MEYyNDBGQjQwMDlC
ODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3QzYw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFC
OTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTU1MzQsNiArMTU1NDAsNyBAQAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNF
MDBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NUE4NkI2MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTEwQkIzODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGOTM3RTcwRThCMkU5NTAwNUM3QUI3IC8qIEpTRE9N
V2luZG93QmFzZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAx
RDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTgxNCw2ICsx
NTgyMSw4IEBACiAJCQkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAv
KiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQw
RTZDQ0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDk4MzkxNDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNUIwRTFDNERF
MDAwRjZBNTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxQzBGRjQwMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjMwNCw2ICsxNjMxMyw3IEBACiAJCQkJOTMzMDlF
MTYwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTIwNzE5MDlCRDNCQTUwMEYyMDM4RCAvKiBTdGF0
aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERC
MjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4MUIzNTEwRjE1
MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTYzNzgsNiArMTYzODgsNyBAQAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAx
RjFENyAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM3MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTlEMkM1MENF
QTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDU1LDYg
KzE2NDY2LDcgQEAKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUz
MDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzlBREQyMzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUYzNDgxMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTY1
MzUsMTQgKzE2NTQ3LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2
RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTBCQjM3ODBGMTRC
NjIyMDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQkIz
ODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTE4MUIzNTEwRjE1MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQ5ODM5MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdl
YktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTIwRjFFNzZCNDAwQzIz
NzgyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAq
LywKLQkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjgyMyw4ICsxNjgyNyw2IEBACiAJCQkJMjlB
QUM1MjAwRTUzOTYzQjAwOEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTgwMEM5NjBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVD
NjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlF
OTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyNzUzNTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAv
KiBBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2
MDg4IC8qIEFuaW1hdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZF
MURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzIwMCw2ICsxNzIwMiw3IEBACiAJCQkJODU5RDYyQzMwQUQ4ODhFRjAwMDEyOTk1IC8qIERP
TVNWR1ZpZXdFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQzYwQUQ4ODhFRjAw
MDEyOTk1IC8qIERPTVNWR1pvb21FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4Njg0
MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTEwQkIzN0IwRjE0QjY0MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUwNjU3MDEwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NTA2NTcwMzBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVl
dExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyog
RE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLApAQCAtMTcyMTEsNiArMTcyMTQsNyBAQAogCQkJCTMx
QzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTMxNkZFMDdFMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA4MTBFNkNDQzI4MDBCRjYw
ODggLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5
ODM5MTUxMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUg
LyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1
RTgwQUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAg
LTE3NTAwLDYgKzE3NTA0LDggQEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNE
T01JbXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgx
MDAyMjk0N0QgLyogSlNET01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUw
QzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyog
SlNET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2MjBD
MTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzgyNyw2ICsxNzgzMyw4IEBACiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzEwRTZD
Q0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNkZFMDczMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpT
V2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTYzMEYxRThFRTEw
MEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNjExRTVBMEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgy
OTAsNiArMTgyOTgsNyBAQAogCQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRl
eHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1
NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRp
Y1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUw
OTExIC8qIFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTM3REYwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUJDMERB
NTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODM1
MCw2ICsxODM1OSw4IEBACiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5n
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZE
NDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFEMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM2MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3Mzgw
QTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODQy
MSw2ICsxODQzMiw3IEBACiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjg4RTcyMEUzMDA1RDYwMDM2
MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEy
ODhFNzQwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0xODQ5MywxNCArMTg1MDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQy
NDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUxMEJCMzdCMEYxNEI2NDEwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmlu
Z0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8q
IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTgxQjM1NjBG
MTUwMEQ3MDBGQjc4NDcgLyogU3RhdGljU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OTgzOTEzRjBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01h
dHJpeC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBX
ZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4MzkxNjMwRjFFOEVFMTAw
QzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaAppbmRleCAzZWZhMTYwLi42ZGFiOWEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsMjcgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBs
b2NrKGZhbHNlKTsKICAgICAgICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogCiAgICAgU2NyaXB0U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmluZyYgcykKICAg
ICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBtX3N0ciArPSBz
OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNjcmlwdFN0cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxv
Y2soZmFsc2UpOwogICAgICAgICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAgICB9CiAKICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lkIGV4cG9ydGlu
ZyBhbiBleHRyYSBzeW1ib2wgYnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAgICAgICAgcmV0
dXJuICEobV9zdHIgPT0gcy5tX3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUwNGMyNWIuLjhj
MWJiOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVx
dWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5o
IgpAQCAtNDMwMCw2ICs0MzAxLDI3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0CiAgICAgICAg
IHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9p
ZCBEb2N1bWVudDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgc3dpdGNoIChkZXN0aW5hdGlvbikgeworICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlckRl
c3RpbmF0aW9uOgorICAgICAgICBpZiAocGFnZSgpKQorICAgICAgICAgICAgcGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
Q29uc29sZURlc3RpbmF0aW9uOgorICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBkb21X
aW5kb3coKSkKKyAgICAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQoreworICAgIGlmIChwYWdlKCkp
CisgICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKK30KKwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewogcHVi
bGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGltZXIoUGFzc1JlZlB0cjxEb2N1
bWVudD4gY29udGV4dCwgUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggMGUwOGViNS4uOTNiMTBjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03OTEsNiArNzkxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OworICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
VGFzayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdz
IHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQgYWRkVGltZW91dChpbnQgdGltZW91
dElkLCBET01UaW1lciopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRh
c2suaCBiL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzlmZDE0OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9t
L0dlbmVyaWNXb3JrZXJUYXNrLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmljV29y
a2VyVGFza19oCisjZGVmaW5lIEdlbmVyaWNXb3JrZXJUYXNrX2gKKworI2lmIEVOQUJMRShXT1JL
RVJTKQorCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrQmFzZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IEdlbmVyaWNXb3JrZXJUYXNrQmFzZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHkpIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBjYW5QZXJmb3JtVGFzaygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAhbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0
LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0
eXBlbmFtZSBNUDY+CisgICAgY2xhc3MgR2VuZXJpY1dvcmtlclRhc2s2IDogcHVibGljIEdlbmVy
aWNXb3JrZXJUYXNrQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIHZvaWQgKCpN
ZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwg
TVA2KTsKKyAgICAgICAgdHlwZWRlZiBHZW5lcmljV29ya2VyVGFzazY8UDEsIE1QMSwgUDIsIE1Q
MiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNj4gR2VuZXJpY1dvcmtlclRhc2s7
CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s+IGNyZWF0ZShX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1ldGhvZCBtZXRob2QsIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRl
cjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYm
IHBhcmFtZXRlcjYpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2VuZXJpY1dvcmtlclRhc2sobWVzc2FnaW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFy
YW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNikp
OworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBHZW5lcmljV29ya2VyVGFzazYo
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXRob2QgbWV0aG9kLCBjb25z
dCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2
JiBwYXJhbWV0ZXI2KQorICAgICAgICAgICAgOiBHZW5lcmljV29ya2VyVGFza0Jhc2UobWVzc2Fn
aW5nUHJveHkpCisgICAgICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgICAgICwg
bV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJh
bWV0ZXIyKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAg
ICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVy
NShwYXJhbWV0ZXI1KQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVyNikKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghY2FuUGVyZm9ybVRhc2soKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJh
bWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWV0aG9kIG1fbWV0aG9kOworICAgICAgICBQ
MSBtX3BhcmFtZXRlcjE7CisgICAgICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICAgICAgUDMgbV9w
YXJhbWV0ZXIzOworICAgICAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgICAgIFA1IG1fcGFyYW1l
dGVyNTsKKyAgICAgICAgUDYgbV9wYXJhbWV0ZXI2OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFt
ZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgorICAgIFBhc3NS
ZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBN
UDQsIFA1LCBNUDUsIFA2LCBNUDY+ID4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorICAgICAgICBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksCisgICAgICAgIHZvaWQgKCptZXRob2Qp
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwK
KyAgICAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25z
dCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0
ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKKyAgICB7CisgICAgICAgIHJldHVybiBHZW5lcmlj
V29ya2VyVGFzazY8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwg
UDYsIE1QNj46OmNyZWF0ZShtZXNzYWdpbmdQcm94eSwgbWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2KTsK
KyAgICB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JL
RVJTKQorCisjZW5kaWYgLy8gR2VuZXJpY1dvcmtlclRhc2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IDJlOWQ1NmMuLjZmMDllMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dF9oCiAjZGVmaW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaAogCisjaW5jbHVkZSAi
Q29uc29sZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zOCw4ICszOSwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0OwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0
OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFNjcmlwdFN0cmluZzsKICAg
ICBjbGFzcyBTdHJpbmc7CiAKKyAgICBlbnVtIE1lc3NhZ2VEZXN0aW5hdGlvbiB7CisgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwKKyAgICAgICAgQ29uc29sZURlc3RpbmF0
aW9uLAorICAgIH07CisKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTU0LDYgKzYxLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykgPSAwOwogCiAgICAgICAgIC8vIEFj
dGl2ZSBvYmplY3RzIGFyZSBub3QgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlbiBpZiBpbmFjY2Vzc2li
bGUsIGUuZy4gYmVjYXVzZSB0aGVpciBhY3Rpdml0eSBtYXkgcmVzdWx0IGluIGNhbGxiYWNrcyBi
ZWluZyBpbnZva2VkLgogICAgICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDhhOWFmMDcuLmY4ZDRkNTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRl
eHQuY3BwCkBAIC0zNCwxMiArMzQsMTUgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2Vu
ZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJXb3JrZXJNZXNzYWdpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgog
I2luY2x1ZGUgIldvcmtlclRhc2suaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA4LDYgKzEx
MSwyNyBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsCiAgICAgbV90aHJlYWQtPm1lc3NhZ2luZ1By
b3h5KCktPnBvc3RXb3JrZXJFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpOwogfQogCitzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgY29u
dGV4dC0+YWRkTWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdl
KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICAvLyBjcmVhdGVDYWxsYmFja1Rh
c2sgaGFzIHRvIGJlIGEgc2VwYXJhdGUgc3RhdGVtZW50IGZyb20gcG9zdFRhc2tUb1BhcmVudENv
bnRleHQgdG8gbWFrZSB0aGUgZGVzdHJ1Y3RvcgorICAgIC8vIGZvciBtZXNzYWdlLmNvcHkoKSBn
ZXQgY2FsbGVkIGJlZm9yZSBwb3N0VGFza1RvUGFyZW50Q29udGV4dC4gIChJZiB0aGV5IGFyZSBv
bmUgc3RhdGVtZW50LCB0aGUgZGVzdHJ1Y3RvcgorICAgIC8vIGdldHMgY2FsbGVkIGFmdGVyIHBv
c3RUYXNrVG9QYXJlbnRDb250ZXh0IHdoaWNoIGNhdXNlcyBhIHJhY2UgY29uZGl0aW9uLikgIFRP
RE86IEV2ZW4gYmV0dGVyIHdvdWxkIGJlIHRvIGhhdmUKKyAgICAvLyBhZGFwdGVycyBmb3IgdGhl
IHBhcmFtZXRlcnMgdG8gZG8gY29waWVzIG9mIHRoZW0gYXMgYXBwcm9wcmlhdGUsIGFuZCB0aGlz
IHdvdWxkIGFsc28gZml4IHRoaXMgaXNzdWUuCisgICAgUmVmUHRyPFRhc2s+IHRhc2sgPSBjcmVh
dGVDYWxsYmFja1Rhc2sobV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCksICZhZGRNZXNzYWdlVGFz
aywgZGVzdGluYXRpb24sIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UuY29weSgpLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwuY29weSgpKTsKKyAgICBwb3N0VGFza1RvUGFyZW50Q29udGV4dCh0YXNrLnJl
bGVhc2UoKSk7Cit9CisKK3ZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCit7CisgICAg
Ly8gRklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzUKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBtX3RocmVhZC0+bWVzc2FnaW5nUHJveHkoKS0+cG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdChtZXNzYWdlKTsKQEAgLTE5MCw2ICsyMTQsMTEgQEAgdm9pZCBXb3Jr
ZXJDb250ZXh0Ojpwb3N0VGFzayhQYXNzUmVmUHRyPFRhc2s+IHRhc2spCiAgICAgdGhyZWFkKCkt
Pm1lc3NhZ2VRdWV1ZSgpLmFwcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRh
c2s6OmNyZWF0ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgV29ya2VyQ29udGV4dDo6cG9zdFRhc2tUb1Bh
cmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPiB0YXNrKQoreworICAgIHRocmVhZCgpLT5tZXNz
YWdpbmdQcm94eSgpLT5wb3N0VGFza1RvUGFyZW50Q29udGV4dCh0YXNrKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmgKaW5kZXggYzk3NzRkOS4uNGQ0YjI5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2Vy
Q29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaApAQCAtNzIsMTEgKzcy
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRp
b24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICAg
ICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlz
OyB9CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4ZWN1
dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCisgICAgICAg
IHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4ZWN1
dGVzIHRoZSB0YXNrIGluIHRoZSBwYXJlbnQncyBjb250ZXh0IChhbmQgdGhyZWFkKSBhc3luY2hy
b25vdXNseS4KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1
cmUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIv
V2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGI2OWI5YzUuLjcyMWJm
MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTIyMyw2ICsyMjMsMTEg
QEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5k
KE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKIH0KIAordm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQoreworICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7Cit9CisKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKICAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlckV4Y2VwdGlvblRhc2s6OmNyZWF0ZShlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCwgdGhpcykpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmgKaW5kZXggYzAwNDk0MC4uZTdiYThhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
V29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTQ4LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPik7CiAKICAgICAgICAgdm9pZCBwb3N0V29ya2VyRXhjZXB0aW9u
KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOwogCkBAIC02Miw2ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCB3b3JrZXJUaHJlYWRIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBHZW5lcmljV29ya2VyVGFza0Jhc2U7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBNZXNzYWdlV29ya2VyVGFzazsKICAgICAgICAgZnJpZW5kIGNs
YXNzIFdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrOwogICAgICAgICBmcmllbmQgY2xhc3MgV29y
a2VyRXhjZXB0aW9uVGFzazsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5o
IGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKaW5kZXggMDdlM2U4YS4uY2EzZTk2NSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKKysrIGIvV2ViQ29yZS9kb20vV29y
a2VyVGhyZWFkLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyTWVzc2FnaW5nUHJveHk7CiAgICAg
Y2xhc3MgV29ya2VyVGFzazsKLSAgICBjbGFzcyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTsKKyAg
ICBzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1cERhdGE7CiAKICAgICBjbGFzcyBXb3JrZXJUaHJl
YWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsKICAgICBwdWJsaWM6CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKaW5kZXggMDFiYzQxNy4uMzMyOGY2MyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcApAQCAtMzE4LDggKzMxOCw4IEBAIHN0YXRpYyBjb25zdCBYTUxIdHRwUmVxdWVzdFN0YXRp
Y0RhdGEqIGluaXRpYWxpemVYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEoKQogICAgIHJldHVybiBk
dW1teTsKIH0KIAotWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KERvY3VtZW50KiBkb2Mp
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jLCB0aGlzKQorWE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYXN5bmModHJ1ZSkKICAgICAsIG1faW5j
bHVkZUNyZWRlbnRpYWxzKGZhbHNlKQogICAgICwgbV9zdGF0ZShVTlNFTlQpCkBAIC0zMzMsNyAr
MzMzLDYgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KERvY3VtZW50KiBkb2MpCiAg
ICAgLCBtX3JlY2VpdmVkTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RTZW5kTGluZU51bWJlcigwKQog
ewotICAgIEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBpbml0aWFsaXplWE1MSHR0cFJlcXVlc3RT
dGF0aWNEYXRhKCk7CiB9CiAKQEAgLTk1MywxMSArOTUyLDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVz
dDo6ZHJvcFByb3RlY3Rpb24oKQogICAgIC8vIGNhbid0IGJlIHJlY291cGVkIHVudGlsIHRoZSBs
b2FkIGlzIGRvbmUsIHNvIG9ubHkKICAgICAvLyByZXBvcnQgdGhlIGV4dHJhIGNvc3QgYXQgdGhh
dCBwb2ludC4KIAotICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhk
b2N1bWVudCgpLT5mcmFtZSgpKSkgewotICAgICAgICBKU0M6OkpTVmFsdWVQdHIgd3JhcHBlciA9
IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoKndpbmRvdy0+Z2xvYmFsRGF0YSgpLCB0aGlzKTsK
LSAgICAgICAgaWYgKHdyYXBwZXIpCi0gICAgICAgICAgICBKU0M6OkhlYXA6OmhlYXAod3JhcHBl
ciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3BvbnNlVGV4dC5zaXplKCkgKiAyKTsKLSAg
ICB9CisgICBpZiAoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9i
YWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICBpZiAoRE9NT2JqZWN0
KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcigqZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCksIHRoaXMpKQorICAgICAgICAgICBKU0M6OkhlYXA6OmhlYXAod3JhcHBlciktPnJl
cG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3BvbnNlVGV4dC5zaXplKCkgKiAyKTsKICNlbmRpZgog
CiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CkBAIC05NjgsMTYgKzk2NSwxMyBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGUpCiAgICAgbV9taW1lVHlwZU92ZXJyaWRlID0gb3ZlcnJpZGU7CiB9CiAKLXN0YXRpYyB2b2lk
IHJlcG9ydFVuc2FmZVVzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQorc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZlVXNhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmICghZG9jdW1lbnQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lKQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAg
IC8vIEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRoZSBiYWQgdXNhZ2Ugd2l0aG91dCBpbmRpY2F0
aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBmcm9tLgorICAgIC8vIEZJWE1FOiBJdCdzIG5v
dCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0IHNv
dXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KICAgICAvLyBXZSBzaG91bGQgcGFzcyBhZGRpdGlvbmFs
IHBhcmFtZXRlcnMgc28gd2UgY2FuIHRlbGwgdGhlIGNvbnNvbGUgd2hlcmUgdGhlIG1pc3Rha2Ug
b2NjdXJyZWQuCi0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkp
OworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiB9CiAKIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEwMDAsNyAr
OTk0LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmEKIAogICAgIC8vIEEgcHJpdmlsZWdlZCBz
Y3JpcHQgKGUuZy4gYSBEYXNoYm9hcmQgd2lkZ2V0KSBjYW4gc2V0IGFueSBoZWFkZXJzLgogICAg
IGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5Mb2Fk
TG9jYWxSZXNvdXJjZXMoKSAmJiAhaXNTYWZlUmVxdWVzdEhlYWRlcihuYW1lKSkgewotICAgICAg
ICByZXBvcnRVbnNhZmVVc2FnZShkb2N1bWVudCgpLCAiUmVmdXNlZCB0byBzZXQgdW5zYWZlIGhl
YWRlciBcIiIgKyBuYW1lICsgIlwiIik7CisgICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8gc2V0IHVuc2FmZSBoZWFkZXIgXCIiICsg
bmFtZSArICJcIiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcxLDEyICsxMDY1
LDEyIEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlCiAKICAgICAvLyBTZWUgY29tbWVudCBpbiBn
ZXRBbGxSZXNwb25zZUhlYWRlcnMgYWJvdmUuCiAgICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKG5h
bWUpICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxv
YWRMb2NhbFJlc291cmNlcygpKSB7Ci0gICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKGRvY3VtZW50
KCksICJSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAg
ICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiUmVmdXNl
ZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CiAgICAgICAgIHJldHVy
biAiIjsKICAgICB9CiAKICAgICBpZiAoIW1fc2FtZU9yaWdpblJlcXVlc3QgJiYgIWlzT25BY2Nl
c3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3QobmFtZSkpIHsKLSAgICAgICAgcmVwb3J0
VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIi
ICsgbmFtZSArICJcIiIpOworICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksICJSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAi
XCIiKTsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIApAQCAtMTE4OCwxMiArMTE4Miw4IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIq
IGxvYWRlcikKICAgICBpZiAobV9kZWNvZGVyKQogICAgICAgICBtX3Jlc3BvbnNlVGV4dCArPSBt
X2RlY29kZXItPmZsdXNoKCk7CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAg
ICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRC
eVhNTEh0dHBSZXF1ZXN0KG1fbG9hZGVyID8gbV9sb2FkZXItPmlkZW50aWZpZXIoKSA6IG1faWRl
bnRpZmllciwgbV9yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6IFwiIiArIG1fdXJsICsgIlwiLiIsIG1fbGFz
dFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RTZW5kVVJMKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlmaWVyKCkgOiBtX2lkZW50aWZpZXIsIG1fcmVz
cG9uc2VUZXh0KTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZE1lc3NhZ2UoSW5z
cGVjdG9yQ29udHJvbGxlckRlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VM
ZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBtX3VybCArICJcIi4iLCBtX2xhc3RT
ZW5kTGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCk7CiAKICAgICBib29sIGhhZExvYWRlciA9IG1f
bG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDg1OGYyMjgu
LjhkNmNkMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBYTUxIdHRwUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwcml2YXRlIFN1YnJlc291
cmNlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGRvY3VtZW50KSk7IH0KKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChj
b250ZXh0KSk7IH0KICAgICB+WE1MSHR0cFJlcXVlc3QoKTsKIAogICAgIC8vIFRoZXNlIGV4YWN0
IG51bWVyaWMgdmFsdWVzIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSBKUyBleHBlY3RzIHRoZW0uCkBA
IC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8WE1MSHR0cFJl
cXVlc3Q+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBYTUxIdHRwUmVxdWVzdChEb2N1bWVudCop
OworICAgIFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26851</attachid>
            <date>2009-01-19 13:38:29 -0800</date>
            <delta_ts>2009-01-19 14:10:50 -0800</delta_ts>
            <desc>same as above but removed TODO from comment.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>41616</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmUwNzlmYi4uNDM5ZTM3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAwOS0wMS0xOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgUHJvdmlkZSBhIGdlbmVyaWMgY2xhc3MgdG8gaGFuZGxlIHRoZSBwYXR0
ZXJuIG9mIHRhc2sgY2FsbGJhY2tzIGFjcm9zcyB3b3JrZXIvcGFyZW50IHRocmVhZHMuICBJdAor
ICAgICAgICBvbmx5IHdvcmtzIGZvciBtZXRob2RzIHRoYXQgbmVlZCA2IHBhcmFtZXRlcnMgYnV0
IHNpbWlsYXIgY2xhc3NlcyBjb3VsZCBiZSBhZGRlZCBhcyBuZWVkZWQgZm9yCisgICAgICAgIG90
aGVyIG51bWJlcnMgb2YgcGFyYW1ldGVycy4KKworICAgICAgICBBZGQgYWRkTWVzc2FnZSBhbmQg
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuCisKKyAgICAgICAgVXNlIHRoZXNlIG1ldGhvZHMgYW5kIG90aGVycyB0byByZW1vdmUgZG9j
dW1lbnQoKSBmcm9tIFhNTEh0dHBSZXF1ZXN0IGluIGEgZmV3IG1vcmUgcGxhY2VzLgorCisgICAg
ICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBTb3J0ZWQgcHJvamVjdCBmaWxlIHdoaWxlIGFkZGluZyBHZW5lcmljV29ya2VyVGFzay5o
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0
cmluZzo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRvciE9KToKKyAg
ICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBKU0xvY2suCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0dlbmVyaWNXb3JrZXJU
YXNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2tCYXNlOjpH
ZW5lcmljV29ya2VyVGFza0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRh
c2tCYXNlOjpjYW5QZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2Vy
VGFzazY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6Okdl
bmVyaWNXb3JrZXJUYXNrNik6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazY6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxiYWNrVGFzayk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29y
a2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNZXNzYWdlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dCk6
CisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5n
UHJveHkuaDoKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxI
dHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3Rl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUp
OgorCiAyMDA5LTAxLTE3ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDE3NjEzYi4uNWJhZDI0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0yMTYzLDYgKzIxNjMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCBcCisJV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29y
ZS9kb20vV29ya2VyLmNwcCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDdhY2JhMzYuLjU4OGQyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMTEzOTAsNiArMTEzOTAsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9h
cmRFdmVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMTk4NGVmLi40MDExZTEzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1LDYgKzEx
NSw3IEBACiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUw
RUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4
RTZFMEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAy
OUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAw
QjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQkE1RDM4
NjBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAv
KiBHZW5lcmljV29ya2VyVGFzay5oICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzgg
LyogUmVuZGVyTWFycXVlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsg
fTsKIAkJMEY1NjAyOTAwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRkM3MDUyMTBFQjE4MTU2
MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0
cmluZ0hhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDkyOSw2ICs0OTMwLDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdN
TEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhG
Qjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJp
Y1dvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dv
cmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWFycXVlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2
MDI4RTBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDNzA1MjAwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hh
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYxMiw4ICs5NjE0LDYgQEAKIAkJNDlF
OTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQw
Q0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4
NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlF
OTExQjcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApA
QCAtOTYyNyw2ICs5NjI3LDggQEAKIAkJCQk0OUU5MTFCRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQkYwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRy
YW5zZm9ybU9wZXJhdGlvbnMuY3BwICovLAogCQkJCTQ5RTkxMUMwMEVGODZENDcwMDlEMENBRiAv
KiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggKi8sCisJCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCAqLywKIAkJCQk0OUU5MTFDMTBFRjg2RDQ3
MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLywKIAkJCQk0OUU5
MTFDMjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmggKi8s
CiAJCQkpOwpAQCAtMTI4NjAsNyArMTI4NjIsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2
NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCAq
LywKIAkJCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCAqLywK
IAkJCQlCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJ
CUIyNzUzNTJEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVDRy5jcHAgKi8sCkBAIC0xMjg3
OSw2ICsxMjg4MCw3IEBACiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuaCAqLywKIAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNw
cCAqLywKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywK
KwkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTEzNzQ5LDggKzEzNzUxLDYgQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNz
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdBRkU1
OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3MgKi8sCi0JCQkJMDcwREQ4
RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAogCQkJCTkzQ0E0QzlD
MDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0JCMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLApAQCAtMTM5MTMsNiAr
MTM5MTMsOCBAQAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxl
LWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3Au
cGwgKi8sCiAJCQkJOTNDQTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8s
CisJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLAor
CQkJCTA3QUZFNTkwMEYxNDQ2QkQwMDg0MTYxNyAvKiBtZWRpYUNvbnRyb2xzUVQuY3NzICovLAog
CQkJCTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCTkzQ0E0
Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovLAogCQkJCTkzQ0E0Q0EzMDlERjkzRkEw
MERGODY3NyAvKiB0b2tlbml6ZXIuZmxleCAqLywKQEAgLTE0MjA4LDYgKzE0MjEwLDcgQEAKIAkJ
CQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJ
OTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQkwODU3
NzMzNDBGMDg0NjAxMDA4MDU4M0UgLyogRm9ybUNvbnRyb2xFbGVtZW50LmggKi8sCisJCQkJMEJB
NUQzODUwRjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8sCiAJCQkJODUw
MzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1MDMx
QjJFMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdDMjAw
OUY3MTEwNjAwRUIzNjY1IC8qIEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMTQzNjgsNyArMTQz
NzEsNiBAQAogCQkJCTI5QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRDOEIw
MDAyNTUzNiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1h
dGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAv
KiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MjExLDYgKzE1MjEz
LDcgQEAKIAkJCQk4NTlENjJGMDBBRDg4OTI3MDAwMTI5OTUgLyogRE9NU1ZHWm9vbUV2ZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RTU0NEM0MENBOUQxQzIwMDk3RDA5QiAvKiBE
T01TVkdab29tRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2ODUwQzMz
Njc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEwQkIz
NzgwRjE0QjYyMjAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDY1NzAwMEFBQjQ3NjMwMDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUI0OThGRjBBREIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTA2NTcwMjBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5
bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTUyMzQsNiArMTUyMzcsOCBAQAogCQkJ
CTMxNkZFMDdGMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZVJ1bGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwODAwRTZDQ0MyODAwQkY2MDg4IC8qIERP
TVdlYktpdENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2
Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NN
YXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBE
T01XZWJLaXRDU1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNjEw
RTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTYxMUU2MzBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NTM1OSw2ICsxNTM2NCw3IEBACiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJl
Y3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2Vu
ZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA0QzhBMERBRkY3QTAwMDdBMEY0
MSAvKiBHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCQTVEMzg2MEYyNDBGQjQwMDlC
ODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3QzYw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUFC
OTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTU1MzQsNiArMTU1NDAsNyBAQAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNF
MDBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NUE4NkI2MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTEwQkIzODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGOTM3RTcwRThCMkU5NTAwNUM3QUI3IC8qIEpTRE9N
V2luZG93QmFzZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAx
RDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTgxNCw2ICsx
NTgyMSw4IEBACiAJCQkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAv
KiBKU1dlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQw
RTZDQ0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDk4MzkxNDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2MTFFNUIwRTFDNERF
MDAwRjZBNTc5IC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxQzBGRjQwMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjMwNCw2ICsxNjMxMyw3IEBACiAJCQkJOTMzMDlF
MTYwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTIwNzE5MDlCRDNCQTUwMEYyMDM4RCAvKiBTdGF0
aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0ZBNjJEMEQxRjBFRkYwMERC
MjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4MUIzNTEwRjE1
MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMEJBQkIwREE1NTQ3MTAwQTlFNDE3IC8qIFN0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTYzNzgsNiArMTYzODgsNyBAQAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAx
RjFENyAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUQwMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQyMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM3MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTlEMkM1MENF
QTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDU1LDYg
KzE2NDY2LDcgQEAKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTczMEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMjg4RTc1MEUz
MDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzlBREQyMzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUYzNDgxMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTY1
MzUsMTQgKzE2NTQ3LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2
RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTBCQjM3ODBGMTRC
NjIyMDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQkIz
ODYwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTE4MUIzNTEwRjE1MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQ5ODM5MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdl
YktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk4MzkxNTIwRjFFNzZCNDAwQzIz
NzgyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAq
LywKLQkJCQk0OTgzOTE2NDBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjgyMyw4ICsxNjgyNyw2IEBACiAJCQkJMjlB
QUM1MjAwRTUzOTYzQjAwOEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTgwMEM5NjBFNTI0QzhCMDAwMjU1MzYgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVD
NjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlF
OTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyNzUzNTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAv
KiBBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2
MDg4IC8qIEFuaW1hdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZF
MURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzIwMCw2ICsxNzIwMiw3IEBACiAJCQkJODU5RDYyQzMwQUQ4ODhFRjAwMDEyOTk1IC8qIERP
TVNWR1ZpZXdFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQzYwQUQ4ODhFRjAw
MDEyOTk1IC8qIERPTVNWR1pvb21FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4Njg0
MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTEwQkIzN0IwRjE0QjY0MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUwNjU3MDEwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4NTA2NTcwMzBBQUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVl
dExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyog
RE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLApAQCAtMTcyMTEsNiArMTcyMTQsNyBAQAogCQkJCTMx
QzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTMxNkZFMDdFMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA4MTBFNkNDQzI4MDBCRjYw
ODggLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5
ODM5MTUxMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBGNkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUg
LyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1
RTgwQUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAg
LTE3NTAwLDYgKzE3NTA0LDggQEAKIAkJCQk2NURGMzFGNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNE
T01JbXBsZW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgx
MDAyMjk0N0QgLyogSlNET01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUw
QzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8qIEpTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyog
SlNET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2MjBD
MTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xNzgyNyw2ICsxNzgzMyw4IEBACiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1IC8qIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzEwRTZD
Q0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNkZFMDczMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpT
V2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5ODM5MTYzMEYxRThFRTEw
MEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxNjExRTVBMEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNGMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwNTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgy
OTAsNiArMTgyOTgsNyBAQAogCQkJCTkzMzA5RTEzMDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRl
eHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1
NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRp
Y1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFM0Y5QzcwREEwNTlEQzAwMjUw
OTExIC8qIFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTM3REYwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTBCQUJDMERB
NTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODM1
MCw2ICsxODM1OSw4IEBACiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5n
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBU
cmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZE
NDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFEMTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM2MEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3Mzgw
QTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODQy
MSw2ICsxODQzMiw3IEBACiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjg4RTcyMEUzMDA1RDYwMDM2
MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEy
ODhFNzQwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0xODQ5MywxNCArMTg1MDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQy
NDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUxMEJCMzdCMEYxNEI2NDEwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmlu
Z0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTE4MUIyNTcwRjE0QzFBNjAwRkI3ODQ3IC8q
IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTgxQjM1NjBG
MTUwMEQ3MDBGQjc4NDcgLyogU3RhdGljU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OTgzOTEzRjBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01h
dHJpeC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBX
ZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk4MzkxNjMwRjFFOEVFMTAw
QzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaAppbmRleCAzZWZhMTYwLi42ZGFiOWEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsMjcgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHMpCiAgICAgewotICAgICAgICBKU0M6OkpTTG9jayBs
b2NrKGZhbHNlKTsKICAgICAgICAgbV9zdHIgPSBzOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogCiAgICAgU2NyaXB0U3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IFN0cmluZyYgcykKICAg
ICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBtX3N0ciArPSBz
OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNjcmlwdFN0cmluZyYgcykgY29uc3QKICAgICB7Ci0gICAgICAgIEpTQzo6SlNMb2NrIGxv
Y2soZmFsc2UpOwogICAgICAgICByZXR1cm4gbV9zdHIgPT0gcy5tX3N0cjsKICAgICB9CiAKICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0U3RyaW5nJiBzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIC8vIEF2b2lkIGV4cG9ydGlu
ZyBhbiBleHRyYSBzeW1ib2wgYnkgcmUtdXNpbmcgIj09IiBvcGVyYXRvci4KICAgICAgICAgcmV0
dXJuICEobV9zdHIgPT0gcy5tX3N0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUwNGMyNWIuLjhj
MWJiOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVx
dWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5o
IgpAQCAtNDMwMCw2ICs0MzAxLDI3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0CiAgICAgICAg
IHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9p
ZCBEb2N1bWVudDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgc3dpdGNoIChkZXN0aW5hdGlvbikgeworICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlckRl
c3RpbmF0aW9uOgorICAgICAgICBpZiAocGFnZSgpKQorICAgICAgICAgICAgcGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
Q29uc29sZURlc3RpbmF0aW9uOgorICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBkb21X
aW5kb3coKSkKKyAgICAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQoreworICAgIGlmIChwYWdlKCkp
CisgICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKK30KKwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewogcHVi
bGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrVGltZXIoUGFzc1JlZlB0cjxEb2N1
bWVudD4gY29udGV4dCwgUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggMGUwOGViNS4uOTNiMTBjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03OTEsNiArNzkxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OworICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
VGFzayhQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdz
IHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQgYWRkVGltZW91dChpbnQgdGltZW91
dElkLCBET01UaW1lciopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRh
c2suaCBiL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzlmZDE0OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9t
L0dlbmVyaWNXb3JrZXJUYXNrLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmljV29y
a2VyVGFza19oCisjZGVmaW5lIEdlbmVyaWNXb3JrZXJUYXNrX2gKKworI2lmIEVOQUJMRShXT1JL
RVJTKQorCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrQmFzZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IEdlbmVyaWNXb3JrZXJUYXNrQmFzZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHkpIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBjYW5QZXJmb3JtVGFzaygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAhbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0
LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0
eXBlbmFtZSBNUDY+CisgICAgY2xhc3MgR2VuZXJpY1dvcmtlclRhc2s2IDogcHVibGljIEdlbmVy
aWNXb3JrZXJUYXNrQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIHZvaWQgKCpN
ZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwg
TVA2KTsKKyAgICAgICAgdHlwZWRlZiBHZW5lcmljV29ya2VyVGFzazY8UDEsIE1QMSwgUDIsIE1Q
MiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNj4gR2VuZXJpY1dvcmtlclRhc2s7
CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s+IGNyZWF0ZShX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1ldGhvZCBtZXRob2QsIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRl
cjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYm
IHBhcmFtZXRlcjYpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2VuZXJpY1dvcmtlclRhc2sobWVzc2FnaW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFy
YW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNikp
OworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBHZW5lcmljV29ya2VyVGFzazYo
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXRob2QgbWV0aG9kLCBjb25z
dCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2
JiBwYXJhbWV0ZXI2KQorICAgICAgICAgICAgOiBHZW5lcmljV29ya2VyVGFza0Jhc2UobWVzc2Fn
aW5nUHJveHkpCisgICAgICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgICAgICwg
bV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJh
bWV0ZXIyKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAg
ICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVy
NShwYXJhbWV0ZXI1KQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjYocGFyYW1ldGVyNikKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghY2FuUGVyZm9ybVRhc2soKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJh
bWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2KTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWV0aG9kIG1fbWV0aG9kOworICAgICAgICBQ
MSBtX3BhcmFtZXRlcjE7CisgICAgICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICAgICAgUDMgbV9w
YXJhbWV0ZXIzOworICAgICAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgICAgIFA1IG1fcGFyYW1l
dGVyNTsKKyAgICAgICAgUDYgbV9wYXJhbWV0ZXI2OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFt
ZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2PgorICAgIFBhc3NS
ZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBN
UDQsIFA1LCBNUDUsIFA2LCBNUDY+ID4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorICAgICAgICBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksCisgICAgICAgIHZvaWQgKCptZXRob2Qp
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwK
KyAgICAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25z
dCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0
ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKKyAgICB7CisgICAgICAgIHJldHVybiBHZW5lcmlj
V29ya2VyVGFzazY8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwg
UDYsIE1QNj46OmNyZWF0ZShtZXNzYWdpbmdQcm94eSwgbWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2KTsK
KyAgICB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JL
RVJTKQorCisjZW5kaWYgLy8gR2VuZXJpY1dvcmtlclRhc2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IDJlOWQ1NmMuLjZmMDllMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dF9oCiAjZGVmaW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRfaAogCisjaW5jbHVkZSAi
Q29uc29sZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zOCw4ICszOSwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0OwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0
OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFNjcmlwdFN0cmluZzsKICAg
ICBjbGFzcyBTdHJpbmc7CiAKKyAgICBlbnVtIE1lc3NhZ2VEZXN0aW5hdGlvbiB7CisgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwKKyAgICAgICAgQ29uc29sZURlc3RpbmF0
aW9uLAorICAgIH07CisKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTU0LDYgKzYxLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykgPSAwOwogCiAgICAgICAgIC8vIEFj
dGl2ZSBvYmplY3RzIGFyZSBub3QgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlbiBpZiBpbmFjY2Vzc2li
bGUsIGUuZy4gYmVjYXVzZSB0aGVpciBhY3Rpdml0eSBtYXkgcmVzdWx0IGluIGNhbGxiYWNrcyBi
ZWluZyBpbnZva2VkLgogICAgICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDhhOWFmMDcuLjg2MjA4ODEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRl
eHQuY3BwCkBAIC0zNCwxMiArMzQsMTUgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2Vu
ZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJXb3JrZXJNZXNzYWdpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgog
I2luY2x1ZGUgIldvcmtlclRhc2suaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA4LDYgKzEx
MSwyNiBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsCiAgICAgbV90aHJlYWQtPm1lc3NhZ2luZ1By
b3h5KCktPnBvc3RXb3JrZXJFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpOwogfQogCitzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgY29u
dGV4dC0+YWRkTWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdl
KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICAvLyBjcmVhdGVDYWxsYmFja1Rh
c2sgaGFzIHRvIGJlIGEgc2VwYXJhdGUgc3RhdGVtZW50IGZyb20gcG9zdFRhc2tUb1BhcmVudENv
bnRleHQgdG8gbWFrZSB0aGUgZGVzdHJ1Y3RvcgorICAgIC8vIGZvciBtZXNzYWdlLmNvcHkoKSBn
ZXQgY2FsbGVkIGJlZm9yZSBwb3N0VGFza1RvUGFyZW50Q29udGV4dC4gIChJZiB0aGV5IGFyZSBv
bmUgc3RhdGVtZW50LCB0aGUgZGVzdHJ1Y3RvcgorICAgIC8vIGdldHMgY2FsbGVkIGFmdGVyIHBv
c3RUYXNrVG9QYXJlbnRDb250ZXh0IHdoaWNoIGNhdXNlcyBhIHJhY2UgY29uZGl0aW9uLikgCisg
ICAgUmVmUHRyPFRhc2s+IHRhc2sgPSBjcmVhdGVDYWxsYmFja1Rhc2sobV90aHJlYWQtPm1lc3Nh
Z2luZ1Byb3h5KCksICZhZGRNZXNzYWdlVGFzaywgZGVzdGluYXRpb24sIHNvdXJjZSwgbGV2ZWws
IG1lc3NhZ2UuY29weSgpLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwuY29weSgpKTsKKyAgICBwb3N0
VGFza1RvUGFyZW50Q29udGV4dCh0YXNrLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgV29ya2VyQ29u
dGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFNjcmlwdFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNzUKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdvcmtlckNvbnRl
eHQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBtX3RocmVhZC0+
bWVzc2FnaW5nUHJveHkoKS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlKTsKQEAg
LTE5MCw2ICsyMTMsMTEgQEAgdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQYXNzUmVmUHRy
PFRhc2s+IHRhc2spCiAgICAgdGhyZWFkKCktPm1lc3NhZ2VRdWV1ZSgpLmFwcGVuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7CiB9CiAKK3ZvaWQg
V29ya2VyQ29udGV4dDo6cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPiB0
YXNrKQoreworICAgIHRocmVhZCgpLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0VGFza1RvUGFyZW50
Q29udGV4dCh0YXNrKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0Lmgg
Yi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKaW5kZXggYzk3NzRkOS4uNGQ0YjI5OSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1dv
cmtlckNvbnRleHQuaApAQCAtNzIsMTEgKzcyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJp
bmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dv
cmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2so
UGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJl
YWQgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQo
UGFzc1JlZlB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIGluIHRoZSBwYXJlbnQncyBj
b250ZXh0IChhbmQgdGhyZWFkKSBhc3luY2hyb25vdXNseS4KIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCmluZGV4IGI2OWI5YzUuLjcyMWJmMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKQEAgLTIyMyw2ICsyMjMsMTEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAg
ICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3Jl
YXRlKG1lc3NhZ2UpKTsKIH0KIAordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tU
b1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrKQoreworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7Cit9
CisKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkKIHsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlckV4
Y2VwdGlvblRhc2s6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCwg
dGhpcykpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaCBi
L1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggYzAwNDk0MC4uZTdiYThh
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9X
ZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBFTkFCTEUoV09SS0VSUykKIAorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ4LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENv
bnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAKICAgICAg
ICAgdm9pZCBwb3N0V29ya2VyRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCkBAIC02Miw2ICs2NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCB3b3JrZXJUaHJlYWRIYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBHZW5lcmljV29ya2VyVGFza0Jhc2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNZXNzYWdlV29y
a2VyVGFzazsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckNvbnRleHREZXN0cm95ZWRUYXNr
OwogICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzazsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgK
aW5kZXggMDdlM2U4YS4uY2EzZTk2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyVGhy
ZWFkLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3Mg
V29ya2VyTWVzc2FnaW5nUHJveHk7CiAgICAgY2xhc3MgV29ya2VyVGFzazsKLSAgICBjbGFzcyBX
b3JrZXJUaHJlYWRTdGFydHVwRGF0YTsKKyAgICBzdHJ1Y3QgV29ya2VyVGhyZWFkU3RhcnR1cERh
dGE7CiAKICAgICBjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJU
aHJlYWQ+IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDFiYzQxNy4u
MzMyOGY2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzE4LDggKzMxOCw4IEBAIHN0YXRp
YyBjb25zdCBYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEqIGluaXRpYWxpemVYTUxIdHRwUmVxdWVz
dFN0YXRpY0RhdGEoKQogICAgIHJldHVybiBkdW1teTsKIH0KIAotWE1MSHR0cFJlcXVlc3Q6OlhN
TEh0dHBSZXF1ZXN0KERvY3VtZW50KiBkb2MpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jLCB0
aGlzKQorWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAs
IG1fYXN5bmModHJ1ZSkKICAgICAsIG1faW5jbHVkZUNyZWRlbnRpYWxzKGZhbHNlKQogICAgICwg
bV9zdGF0ZShVTlNFTlQpCkBAIC0zMzMsNyArMzMzLDYgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KERvY3VtZW50KiBkb2MpCiAgICAgLCBtX3JlY2VpdmVkTGVuZ3RoKDApCiAgICAg
LCBtX2xhc3RTZW5kTGluZU51bWJlcigwKQogewotICAgIEFTU0VSVChkb2N1bWVudCgpKTsKICAg
ICBpbml0aWFsaXplWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCk7CiB9CiAKQEAgLTk1MywxMSAr
OTUyLDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZHJvcFByb3RlY3Rpb24oKQogICAgIC8vIGNh
bid0IGJlIHJlY291cGVkIHVudGlsIHRoZSBsb2FkIGlzIGRvbmUsIHNvIG9ubHkKICAgICAvLyBy
ZXBvcnQgdGhlIGV4dHJhIGNvc3QgYXQgdGhhdCBwb2ludC4KIAotICAgIGlmIChKU0RPTVdpbmRv
dyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudCgpLT5mcmFtZSgpKSkgewotICAgICAg
ICBKU0M6OkpTVmFsdWVQdHIgd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoKndp
bmRvdy0+Z2xvYmFsRGF0YSgpLCB0aGlzKTsKLSAgICAgICAgaWYgKHdyYXBwZXIpCi0gICAgICAg
ICAgICBKU0M6OkhlYXA6OmhlYXAod3JhcHBlciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jl
c3BvbnNlVGV4dC5zaXplKCkgKiAyKTsKLSAgICB9CisgICBpZiAoSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkKKyAgICAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0
V3JhcHBlcigqZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHRoaXMpKQorICAgICAgICAgICBK
U0M6OkhlYXA6OmhlYXAod3JhcHBlciktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX3Jlc3BvbnNl
VGV4dC5zaXplKCkgKiAyKTsKICNlbmRpZgogCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhp
cyk7CkBAIC05NjgsMTYgKzk2NSwxMyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1p
bWVUeXBlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpCiAgICAgbV9taW1lVHlwZU92ZXJyaWRlID0g
b3ZlcnJpZGU7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZl
VXNhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQorICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRo
ZSBiYWQgdXNhZ2Ugd2l0aG91dCBpbmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBm
cm9tLgorICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdl
IHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KICAgICAv
LyBXZSBzaG91bGQgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgc28gd2UgY2FuIHRlbGwgdGhl
IGNvbnNvbGUgd2hlcmUgdGhlIG1pc3Rha2Ugb2NjdXJyZWQuCi0gICAgZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2UoQ29u
c29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNz
YWdlLCAxLCBTdHJpbmcoKSk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RI
ZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKQEAgLTEwMDAsNyArOTk0LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmEKIAogICAgIC8vIEEgcHJpdmlsZWdlZCBzY3JpcHQgKGUuZy4gYSBEYXNoYm9hcmQgd2lkZ2V0
KSBjYW4gc2V0IGFueSBoZWFkZXJzLgogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSAmJiAhaXNTYWZlUmVx
dWVzdEhlYWRlcihuYW1lKSkgewotICAgICAgICByZXBvcnRVbnNhZmVVc2FnZShkb2N1bWVudCgp
LCAiUmVmdXNlZCB0byBzZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7CisgICAg
ICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQg
dG8gc2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMDcxLDEyICsxMDY1LDEyIEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6
Z2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
CiAKICAgICAvLyBTZWUgY29tbWVudCBpbiBnZXRBbGxSZXNwb25zZUhlYWRlcnMgYWJvdmUuCiAg
ICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKG5hbWUpICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygpKSB7Ci0gICAgICAg
IHJlcG9ydFVuc2FmZVVzYWdlKGRvY3VtZW50KCksICJSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVh
ZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBu
YW1lICsgIlwiIik7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAKICAgICBpZiAoIW1fc2Ft
ZU9yaWdpblJlcXVlc3QgJiYgIWlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxp
c3QobmFtZSkpIHsKLSAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2UoZG9jdW1lbnQoKSwgIlJlZnVz
ZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOworICAgICAgICByZXBv
cnRVbnNhZmVVc2FnZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJSZWZ1c2VkIHRvIGdldCB1
bnNhZmUgaGVhZGVyIFwiIiArIG5hbWUgKyAiXCIiKTsKICAgICAgICAgcmV0dXJuICIiOwogICAg
IH0KIApAQCAtMTE4OCwxMiArMTE4Miw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlz
aExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICBpZiAobV9kZWNvZGVyKQog
ICAgICAgICBtX3Jlc3BvbnNlVGV4dCArPSBtX2RlY29kZXItPmZsdXNoKCk7CiAKLSAgICBpZiAo
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSog
cGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KG1fbG9hZGVyID8gbV9s
b2FkZXItPmlkZW50aWZpZXIoKSA6IG1faWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQpOwotICAg
ICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xl
KEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6
IFwiIiArIG1fdXJsICsgIlwiLiIsIG1fbGFzdFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RTZW5kVVJM
KTsKLSAgICAgICAgfQotICAgIH0KKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVudGlm
aWVyKCkgOiBtX2lkZW50aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKKyAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmFkZE1lc3NhZ2UoSW5zcGVjdG9yQ29udHJvbGxlckRlc3RpbmF0aW9uLCBK
U01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBc
IiIgKyBtX3VybCArICJcIi4iLCBtX2xhc3RTZW5kTGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCk7
CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCmluZGV4IDg1OGYyMjguLjhkNmNkMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApA
QCAtMzgsNyArMzgsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBYTUxI
dHRwUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2
ZW50VGFyZ2V0LCBwcml2YXRlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVz
dD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0
dHBSZXF1ZXN0KGRvY3VtZW50KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVx
dWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0KSk7IH0KICAgICB+WE1MSHR0cFJlcXVl
c3QoKTsKIAogICAgIC8vIFRoZXNlIGV4YWN0IG51bWVyaWMgdmFsdWVzIGFyZSBpbXBvcnRhbnQg
YmVjYXVzZSBKUyBleHBlY3RzIHRoZW0uCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAg
ICBYTUxIdHRwUmVxdWVzdChEb2N1bWVudCopOworICAgIFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVm
KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26855</attachid>
            <date>2009-01-20 00:35:52 -0800</date>
            <delta_ts>2009-01-20 23:43:56 -0800</delta_ts>
            <desc>Part 2: More work on cleaning up instances of document in the XMLHttpRequest class.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>47366</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmFkMmE1NC4uODBiYWE1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAwOS0wMS0yMCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgTW9yZSByZW1vdmFsIG9mIGRvY3VtZW50IHVzYWdlIGZyb20gWE1MSHR0
cFJlcXVlc3QuCisgICAgICAgICogQWJzdHJhY3RlZCBhd2F5IHRoZSBzeW5jIGFuZCBhc3luYyBy
ZXF1ZXN0cyBiZWhpbmQgdGhlIFhNTEh0dHBSZXF1ZXN0TG9hZGVyIGNsYXNzLCB3aGljaAorICAg
ICAgICAgIHdpbGwgZ2V0IGFuIGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXJzLiAgSXQgZm9sbG93
cyB0aGUgc2FtZSBtb2RlbCBhcyBTdWJyZXNvdXJjZUxvYWRlciwgc2luY2UKKyAgICAgICAgICBp
dCBpcyBhIHRoaW4gd3JhcHBlciBhcm91bmQgaXQuCisgICAgICAgICogQ29uc29saWRhdGVkIGRh
c2hib2FyZCBjb21wYXRpYmlsaXR5IGNoZWNrcyBpbnRvIHVzZXNEYXNoYm9hcmRCYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlCisgICAgICAgICAgd2hpY2ggaGFuZGxlcyB3b3JrZXJzLgorCisgICAg
ICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5zY29uczoKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50WE1MSHR0cFJl
cXVlc3RMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50WE1MSHR0
cFJlcXVlc3RMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFhNTEh0
dHBSZXF1ZXN0TG9hZGVyOjpEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXI6On5Eb2N1bWVudFhNTEh0dHBS
ZXF1ZXN0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50WE1MSHR0cFJlcXVlc3RM
b2FkZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFhNTEh0dHBSZXF1ZXN0
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRYTUxI
dHRwUmVxdWVzdExvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRYTUxIdHRwUmVxdWVzdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlcjo6
ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVy
OjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50WE1MSHR0
cFJlcXVlc3RMb2FkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFhNTEh0
dHBSZXF1ZXN0TG9hZGVyOjpyZWZYTUxIdHRwUmVxdWVzdExvYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyOjpkZXJlZlhNTEh0dHBSZXF1ZXN0TG9h
ZGVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL1hNTEh0dHBSZXF1ZXN0TG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdExvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKiBsb2FkZXIvWE1MSHR0cFJlcXVlc3RMb2FkZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RMb2FkZXI6OnJlZik6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdExvYWRlcjo6ZGVyZWYpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RMb2FkZXI6On5YTUxIdHRwUmVxdWVzdExvYWRlcik6
CisgICAgICAgICogbG9hZGVyL1hNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RMb2FkZXJDbGllbnQ6OmRpZFNlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0TG9h
ZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0TG9hZGVyQ2xpZW50OjpkaWRHZXRDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3RMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNl
bGxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdExvYWRlckNsaWVudDo6
flhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1c2VzRGFzaGJvYXJkQmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6bG9hZFJlcXVlc3RTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpsb2FkUmVxdWVz
dEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRS
ZXF1ZXN0SGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpwcm9jZXNz
U3luY0xvYWRSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRHZXRDYW5jZWxsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmdQcmVmbGln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFNlbmREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMDkt
MDEtMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggUXQgYnVp
bGQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCBhZmJhYzY1Li42ZGUzZjc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEwMzQsNiArMTAzNCw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmggXAog
CVdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaCBcCisJV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExv
YWRlci5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL0RvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXIu
aCBcCiAJV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggXAogCVdlYkNvcmUvbG9hZGVyL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuaCBcCkBAIC0xMDc1LDYgKzEwNzcsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5oIFwKIAlXZWJDb3JlL2xvYWRlci9UZXh0UmVzb3Vy
Y2VEZWNvZGVyLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5oIFwK
KwlXZWJDb3JlL2xvYWRlci9YTUxIdHRwUmVxdWVzdExvYWRlci5jcHAgXAorCVdlYkNvcmUvbG9h
ZGVyL1hNTEh0dHBSZXF1ZXN0TG9hZGVyLmggXAorCVdlYkNvcmUvbG9hZGVyL1hNTEh0dHBSZXF1
ZXN0TG9hZGVyQ2xpZW50LmggXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZS5oIFwK
IAlXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBcCiAJV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5zY29ucyBiL1dlYkNvcmUvV2ViQ29yZS5zY29ucwppbmRleCBkMjRmYTVkLi40YTg5NzQ3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuc2NvbnMKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
LnNjb25zCkBAIC0zMzEsNiArMzMxLDcgQEAgc291cmNlc1snbG9hZGVyJ10gPSBbCiAgICAgJ2xv
YWRlci9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCcsCiAgICAgJ2xvYWRlci9Eb2NMb2FkZXIuY3Bw
JywKICAgICAnbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCcsCisgICAgJ2xvYWRlci9Eb2N1bWVu
dFhNTEh0dHBSZXF1ZXN0TG9hZGVyLmNwcCcsCiAgICAgJ2xvYWRlci9Gb3JtU3RhdGUuY3BwJywK
ICAgICAnbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCcsCiAgICAgJ2xvYWRlci9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAnLApAQCAtMzUwLDYgKzM1MSw3IEBAIHNvdXJjZXNbJ2xvYWRlciddID0gWwog
ICAgICdsb2FkZXIvVGV4dERvY3VtZW50LmNwcCcsCiAgICAgJ2xvYWRlci9UZXh0UmVzb3VyY2VE
ZWNvZGVyLmNwcCcsCiAgICAgJ2xvYWRlci9Vc2VyU3R5bGVTaGVldExvYWRlci5jcHAnLAorICAg
ICdsb2FkZXIvWE1MSHR0cFJlcXVlc3RMb2FkZXIuY3BwJywKIF0KIHNvdXJjZXNbJ3BhZ2UnXSA9
IFsKICAgICAncGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCcsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0M2E3MGRiLi5mZTM1NjVjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI3ODQsNiArMjc4NCwxNCBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRG9j
dW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRG9jdW1lbnRYTUxIdHRwUmVxdWVz
dExvYWRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cbG9hZGVyXEZvcm1TdGF0ZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAt
Mjk1MSw2ICsyOTU5LDE4IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcVGV4dFJlc291
cmNlRGVjb2Rlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cbG9hZGVyXFhNTEh0dHBSZXF1ZXN0TG9hZGVyLmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxYTUxIdHRw
UmVxdWVzdExvYWRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cbG9hZGVyXFhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50LmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJpY29uIg0KIAkJCQk+DQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MzllZjczLi5m
NTRmNDBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTE1LDYgKzExNSwxMSBAQAogCQkwOEU2RTBGMTBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRT
ZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwICov
OyB9OwogCQkwOEU2RTBGMjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBGMDBF
RkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRFbGVtZW50LmggKi87IH07CiAJCTBBNDg0NDk5
MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRM
aW5raW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEI5MDU2MTkwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5
MDU2MTUwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXIuY3Bw
ICovOyB9OworCQkwQjkwNTYxQTBGMjU3OEJGMDA5NUZGNkEgLyogRG9jdW1lbnRYTUxIdHRwUmVx
dWVzdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEI5MDU2MTYwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2Fk
ZXIuaCAqLzsgfTsKKwkJMEI5MDU2MUIwRjI1NzhCRjAwOTVGRjZBIC8qIFhNTEh0dHBSZXF1ZXN0
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QjkwNTYxNzBGMjU3OEJFMDA5NUZGNkEgLyogWE1MSHR0cFJlcXVlc3RMb2FkZXIuaCAqLzsgfTsK
KwkJMEI5MDU2MUMwRjI1NzhCRjAwOTVGRjZBIC8qIFhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYx
ODBGMjU3OEJFMDA5NUZGNkEgLyogWE1MSHR0cFJlcXVlc3RMb2FkZXJDbGllbnQuaCAqLzsgfTsK
KwkJMEI5MDU2MUUwRjI1N0U5MzAwOTVGRjZBIC8qIFhNTEh0dHBSZXF1ZXN0TG9hZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NjFEMEYy
NTdFOTMwMDk1RkY2QSAvKiBYTUxIdHRwUmVxdWVzdExvYWRlci5jcHAgKi87IH07CiAJCTBCQTVE
Mzg2MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBNUQzODUwRjI0MEZCNDAwOUI4NzBC
IC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi87IH07CiAJCTBGNTYwMjhGMEU0Qjc2NTgwMDY1QjAz
OCAvKiBSZW5kZXJNYXJxdWVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjU2MDI4RDBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5oICov
OyB9OwogCQkwRjU2MDI5MDBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2MDI4RTBFNEI3
NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi87IH07CkBAIC00OTMxLDYgKzQ5MzYs
MTEgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjg0QjEwRUNFMzczMzAwREMw
NjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBB
NDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwQjkwNTYxNTBGMjU3OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFhN
TEh0dHBSZXF1ZXN0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEI5
MDU2MTYwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQjkwNTYxNzBGMjU3OEJFMDA5
NUZGNkEgLyogWE1MSHR0cFJlcXVlc3RMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEI5MDU2MTgwRjI1NzhCRTAwOTVGRjZBIC8qIFhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0TG9h
ZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBCOTA1NjFEMEYyNTdF
OTMwMDk1RkY2QSAvKiBYTUxIdHRwUmVxdWVzdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBYTUxIdHRwUmVxdWVzdExvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29y
a2VyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljV29ya2Vy
VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2MDI4RDBFNEI3NjU4MDA2
NUIwMzggLyogUmVuZGVyTWFycXVlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJNYXJxdWVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTYwMjhF
MEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hcnF1ZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM0ODIsNiArMTM0OTIsOCBAQAogCQkJCUJDQjE2QzExMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBEb2NMb2FkZXIuaCAqLywKIAkJCQk5M0UyMjdEQjBBRjU4OUFEMDBENDgzMjQgLyog
RG9jdW1lbnRMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzFFMEFEQkE1REUwMEE0NTU0RCAvKiBE
b2N1bWVudExvYWRlci5oICovLAorCQkJCTBCOTA1NjE1MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1
bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyLmNwcCAqLywKKwkJCQkwQjkwNTYxNjBGMjU3OEJFMDA5
NUZGNkEgLyogRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlci5oICovLAogCQkJCUIyNTU5OTBE
MEQwMEQ4QjkwMEJCODI1QyAvKiBFbXB0eUNsaWVudHMuaCAqLywKIAkJCQk1MUU0QURCMjBDNDJC
NENGMDA0MkJDNTUgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwICovLAogCQkJCTUxRTRBREIz
MEM0MkI0Q0YwMDQyQkM1NSAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5oICovLApAQCAtMTM1MjUs
NiArMTM1MzcsOSBAQAogCQkJCUY1MjNEMjc5MDJERTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmggKi8sCiAJCQkJNzI4NEFEREIwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHls
ZVNoZWV0TG9hZGVyLmNwcCAqLywKIAkJCQk3Mjg0QUREQzBFNkZFQjMxMDAyRUVGQkQgLyogVXNl
clN0eWxlU2hlZXRMb2FkZXIuaCAqLywKKwkJCQkwQjkwNTYxRDBGMjU3RTkzMDA5NUZGNkEgLyog
WE1MSHR0cFJlcXVlc3RMb2FkZXIuY3BwICovLAorCQkJCTBCOTA1NjE3MEYyNTc4QkUwMDk1RkY2
QSAvKiBYTUxIdHRwUmVxdWVzdExvYWRlci5oICovLAorCQkJCTBCOTA1NjE4MEYyNTc4QkUwMDk1
RkY2QSAvKiBYTUxIdHRwUmVxdWVzdExvYWRlckNsaWVudC5oICovLAogCQkJCUJDQjE2QzEzMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuY3BwICovLAogCQkJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2
Nzc0MSAvKiBsb2FkZXIuaCAqLywKIAkJCSk7CkBAIC0xNTI4NCw2ICsxNTI5OSw3IEBACiAJCQkJ
NjU2RDM3MzYwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MTg1RjM5MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBCOTA1NjFBMEYyNTc4QkYwMDk1RkY2QSAvKiBEb2N1bWVu
dFhNTEh0dHBSZXF1ZXN0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzE4NzYwRTBCMkEx
MjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0E1OTYz
MEIyN0MxRjIwMEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NB
NTk1RDBCMjdCRDlFMDBGQTAyMUQgLyogRHJhZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMTY0OTksNiArMTY1MTUsOCBAQAogCQkJCTY1NjU4MjAyMDlEMTUwOEQwMDBFNjFENyAvKiBY
TGlua05hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkM0NzBDNEVCMkM2MDA4MzI4NUYg
LyogWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEOUM5MEQyQTI5RTUw
MEI5OTE4RiAvKiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEI5MDU2MUIwRjI1NzhCRjAwOTVGRjZBIC8qIFhNTEh0dHBSZXF1ZXN0TG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwQjkwNTYxQzBGMjU3OEJGMDA5NUZGNkEgLyogWE1MSHR0cFJlcXVlc3RM
b2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRC
OSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
REZENDhFMEUzMDUyOTAwMDlEMTBBRCAvKiBYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTgzM0M4MEQwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE3MjUwLDYgKzE3MjY4LDcgQEAKIAkJCQk5M0UyMjdFMDBBRjU4OUFEMDBE
NDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMyNjQ5N0Ew
RDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MTg1RjNBMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEI5MDU2MTkwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50WE1MSHR0cFJl
cXVlc3RMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDQTU5NUUwQjI3QkQ5RTAwRkEw
MjFEIC8qIERyYWdDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MTg3ODkwMEIy
RDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUE3OTU0NjQzMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFnRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTE4NDY1LDYgKzE4NDg0LDcgQEAKIAkJCQk5MzMwOUUyMzA5OUU2NDkyMDA1NkU1ODEgLyog
V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNzcyQzQ2MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwQjkwNTYxRTBGMjU3RTkzMDA5NUZGNkEgLyogWE1MSHR0cFJlcXVlc3RM
b2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERkQ0OEYwRTMwNTI5MDAwOUQxMEFEIC8q
IFhNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEy
Q0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNF
QTBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXIuY3Bw
IGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0NWYwNwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXIuY3BwCkBAIC0wLDAg
KzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVudFhNTEh0dHBS
ZXF1ZXN0TG9hZGVyLmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgor
I2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc1JlZlB0cjxEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyPiBEb2N1bWVu
dFhNTEh0dHBSZXF1ZXN0TG9hZGVyOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBYTUxIdHRw
UmVxdWVzdExvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIExvYWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRT
bmlmZikKK3sKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXI+IGxv
YWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyKGRvY3VtZW50
LCBjbGllbnQsIHJlcXVlc3QsIGNhbGxiYWNrc1NldHRpbmcsIGNvbnRlbnRTbmlmZikpOworICAg
IGlmICghbG9hZGVyLT5tX2xvYWRlcikKKyAgICAgICAgbG9hZGVyID0gMDsKKyAgICByZXR1cm4g
bG9hZGVyOworfQorCitEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyOjpEb2N1bWVudFhNTEh0
dHBSZXF1ZXN0TG9hZGVyKERvY3VtZW50KiBkb2N1bWVudCwgWE1MSHR0cFJlcXVlc3RMb2FkZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJh
Y2tzIGNhbGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQoreworICAgIEFTU0VS
VChkb2N1bWVudCAmJiBjbGllbnQpOworICAgIG1fbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZShkb2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgZmFsc2UsIGNhbGxiYWNr
c1NldHRpbmcgPT0gRG9Mb2FkQ2FsbGJhY2tzLCBjb250ZW50U25pZmYgPT0gRG9Db250ZW50U25p
ZmYpOworfQorCitEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyOjp+RG9jdW1lbnRYTUxIdHRw
UmVxdWVzdExvYWRlcigpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fbG9hZGVyLT5jbGVhckNsaWVudCgpOworfQorCit2b2lkIERvY3VtZW50WE1MSHR0cFJl
cXVlc3RMb2FkZXI6OmNhbmNlbCgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9sb2FkZXItPmNhbmNlbCgpOworICAgIG1fbG9hZGVyLT5jbGVhckNsaWVu
dCgpOworICAgIG1fbG9hZGVyID0gMDsKKyAgICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQgRG9j
dW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFN1YnJlc291cmNlTG9h
ZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
K3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworCisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8g
YmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVjdCBjb3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3Mt
ZG9tYWluIHJlcXVlc3RzLgorICAgIGlmICghbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuUmVxdWVzdChyZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBSZWZQdHI8RG9jdW1lbnRYTUxI
dHRwUmVxdWVzdExvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZh
aWwoKTsKKyAgICAgICAgY2FuY2VsKCk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50WE1MSHR0
cFJlcXVlc3RMb2FkZXI6OmRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kaWRTZW5kRGF0YShi
eXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRYTUxIdHRw
UmVxdWVzdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsK
KyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKwordm9pZCBE
b2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxv
YWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBBU1NF
UlQobV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGhS
ZWNlaXZlZCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKQoreworICAgIEFTU0VSVChsb2Fk
ZXIpOworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRp
bmcobG9hZGVyLT5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIERvY3VtZW50WE1MSHR0cFJlcXVl
c3RMb2FkZXI6OmRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGlmIChlcnJvci5pc0NhbmNl
bGxhdGlvbigpKQorICAgICAgICBtX2NsaWVudC0+ZGlkR2V0Q2FuY2VsbGVkKCk7CisgICAgZWxz
ZQorICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbCgpOworfQorCit2b2lkIERvY3VtZW50WE1MSHR0
cFJlcXVlc3RMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQo
bV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxs
YXRpb24oY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRYTUxIdHRwUmVxdWVz
dExvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhOTE4YWMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyLmgKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXJfaAorI2Rl
ZmluZSBEb2N1bWVudFhNTEh0dHBSZXF1ZXN0TG9hZGVyX2gKKworI2luY2x1ZGUgIlN1YnJlc291
cmNlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RMb2FkZXIuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3Mg
RG9jdW1lbnQ7CisgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworICAgIGNsYXNzIFhNTEh0dHBS
ZXF1ZXN0TG9hZGVyQ2xpZW50OworCisgICAgY2xhc3MgRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXI+LCBw
dWJsaWMgWE1MSHR0cFJlcXVlc3RMb2FkZXIsIHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50WE1M
SHR0cFJlcXVlc3RMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCosIFhNTEh0dHBSZXF1ZXN0TG9hZGVy
Q2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNu
aWZmKTsKKyAgICAgICAgdmlydHVhbCB+RG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlcigpOwor
CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKworICAgICAgICB1c2luZyBSZWZDb3Vu
dGVkPERvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXI+OjpyZWY7CisgICAgICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8RG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlcj46OmRlcmVmOworCisgICAgcHJv
dGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmWE1MSHR0cFJlcXVlc3RMb2FkZXIoKSB7
IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlhNTEh0dHBSZXF1ZXN0TG9hZGVy
KCkgeyBkZXJlZigpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBEb2N1bWVudFhNTEh0dHBS
ZXF1ZXN0TG9hZGVyKERvY3VtZW50KiwgWE1MSHR0cFJlcXVlc3RMb2FkZXJDbGllbnQqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFN1YnJlc291cmNlTG9hZGVyKiwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhT
dWJyZXNvdXJjZUxvYWRlciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTdWJyZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOworCisgICAgICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
bV9sb2FkZXI7CisgICAgICAgIFhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50KiBtX2NsaWVudDsK
KyAgICAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRG9jdW1lbnRYTUxIdHRwUmVxdWVzdExvYWRlcl9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIGIvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaAppbmRleCA0ZTE0ZGVhLi43NmZkZTQ3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCisr
KyBiL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShTdWJyZXNvdXJjZUxv
YWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxv
bmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IGNoYXIqLCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShT
dWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQgLypsZW5ndGhSZWNlaXZlZCovKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvWE1M
SHR0cFJlcXVlc3RMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvWE1MSHR0cFJlcXVlc3RMb2Fk
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YzA3OWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9YTUxIdHRwUmVxdWVzdExvYWRlci5jcHAKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3RMb2FkZXIuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50WE1MSHR0cFJlcXVlc3RMb2FkZXIuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdExvYWRlcj4gWE1MSHR0
cFJlcXVlc3RMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBY
TUxIdHRwUmVxdWVzdExvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIExvYWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNv
bnRlbnRTbmlmZikgCit7CisgICAgQVNTRVJUKGNvbnRleHQgJiYgY2xpZW50KTsKKyAgICBBU1NF
UlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gRG9jdW1lbnRYTUxIdHRwUmVx
dWVzdExvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGNsaWVu
dCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKTsKK30KKwordW5zaWdu
ZWQgbG9uZyBYTUxIdHRwUmVxdWVzdExvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
VmVjdG9yPGNoYXI+JiBkYXRhKQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkp
OworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCk7CisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz46Om1heCgpOworICAgIHJldHVybiBkb2N1bWVudC0+
ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvWE1MSHR0cFJlcXVlc3RMb2FkZXIuaCBiL1dlYkNvcmUvbG9h
ZGVyL1hNTEh0dHBSZXF1ZXN0TG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDZiODMxMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL1hNTEh0dHBS
ZXF1ZXN0TG9hZGVyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAw
OSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFhNTEh0dHBSZXF1ZXN0TG9h
ZGVyX2gKKyNkZWZpbmUgWE1MSHR0cFJlcXVlc3RMb2FkZXJfaAorCisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFJlc291cmNlRXJy
b3I7CisgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworICAgIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBYTUxIdHRw
UmVxdWVzdExvYWRlckNsaWVudDsKKworICAgIGVudW0gTG9hZENhbGxiYWNrcyB7CisgICAgICAg
IE5vTG9hZENhbGxiYWNrcywKKyAgICAgICAgRG9Mb2FkQ2FsbGJhY2tzCisgICAgfTsKKyAgICBl
bnVtIENvbnRlbnRTbmlmZiB7CisgICAgICAgIE5vQ29udGVudFNuaWZmLAorICAgICAgICBEb0Nv
bnRlbnRTbmlmZgorICAgIH07CisKKyAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdExvYWRlciA6IE5v
bmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhNTEh0
dHBSZXF1ZXN0TG9hZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBS
ZXF1ZXN0TG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZENhbGxiYWNr
cywgQ29udGVudFNuaWZmKTsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4m
IGRhdGEpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7CisgICAgICAgIHZv
aWQgcmVmKCkgeyByZWZYTUxIdHRwUmVxdWVzdExvYWRlcigpOyB9CisgICAgICAgIHZvaWQgZGVy
ZWYoKSB7IGRlcmVmWE1MSHR0cFJlcXVlc3RMb2FkZXIoKTsgfQorCisgICAgcHJvdGVjdGVkOgor
ICAgICAgICB2aXJ0dWFsIH5YTUxIdHRwUmVxdWVzdExvYWRlcigpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVmWE1MSHR0cFJlcXVlc3RMb2FkZXIoKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkZXJlZlhNTEh0dHBSZXF1ZXN0TG9hZGVyKCkgPSAwOworICAgIH07CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFhNTEh0dHBSZXF1ZXN0TG9hZGVyX2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL1hNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50LmggYi9XZWJD
b3JlL2xvYWRlci9YTUxIdHRwUmVxdWVzdExvYWRlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjlhOWY0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xv
YWRlci9YTUxIdHRwUmVxdWVzdExvYWRlckNsaWVudC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBYTUxIdHRwUmVxdWVzdExvYWRlckNsaWVudF9oCisjZGVmaW5lIFhNTEh0dHBSZXF1ZXN0TG9h
ZGVyQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKKworICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxv
bmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50
Ki8pIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCAvKmxlbmd0aFJlY2VpdmVkKi8pIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmVyKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkR2V0Q2FuY2VsbGVkKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9
CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgflhNTEh0dHBSZXF1ZXN0TG9hZGVy
Q2xpZW50KCkgeyB9CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gWE1MSHR0cFJlcXVlc3RMb2FkZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4
IDMzMjhmNjMuLjZhYTU2NGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIzLDI1ICsyMywy
NCBAQAogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCi0j
aW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
dmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGaWxlLmgiCi0jaW5j
bHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlICJLVVJMSGFzaC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5j
bHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RMb2FkZXIuaCIKICNpbmNsdWRlICJY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVw
bG9hZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtMzIzLDcgKzMyMiw2IEBAIFhNTEh0dHBS
ZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgICwgbV9hc3luYyh0cnVlKQogICAgICwgbV9pbmNsdWRlQ3JlZGVudGlhbHMoZmFsc2UpCiAg
ICAgLCBtX3N0YXRlKFVOU0VOVCkKLSAgICAsIG1faWRlbnRpZmllcihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkIGxvbmc+OjptYXgoKSkKICAgICAsIG1fcmVzcG9uc2VUZXh0KCIiKQogICAg
ICwgbV9jcmVhdGVkRG9jdW1lbnQoZmFsc2UpCiAgICAgLCBtX2Vycm9yKGZhbHNlKQpAQCAtMzQ4
LDYgKzM0NiwxNiBAQCBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OmRvY3VtZW50KCkgY29uc3QK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwogfQogCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorYm9vbCBYTUxIdHRwUmVx
dWVzdDo6dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSBjb25zdAorewor
ICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyQ29udGV4dCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+
c2V0dGluZ3MoKTsKKyAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7Cit9CisjZW5kaWYKKwogWE1MSHR0cFJlcXVl
c3Q6OlN0YXRlIFhNTEh0dHBSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9zdGF0ZTsKQEAgLTU1OCw4ICs1NjYsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5k
KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIFN0cmluZyBj
b250ZW50VHlwZSA9IGdldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIpOwogICAgICAgICBp
ZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKSB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQotICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7
Ci0gICAgICAgICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCisgICAgICAgICAgICBpZiAodXNlc0Rhc2hib2FyZEJh
Y2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKICAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVh
ZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu
Y29kZWQiKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgpAQCAtNTkwLDggKzU5Nyw3IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoY29uc3QgU3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcigiQ29u
dGVudC1UeXBlIik7CiAgICAgICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpIHsKICNpZiBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgICAgICAgICAgaWYgKHNldHRpbmdzICYmIHNl
dHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQorICAgICAg
ICAgICAgaWYgKHVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCiAgICAg
ICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CiAgICAgICAgICAgICBlbHNlCiAjZW5k
aWYKQEAgLTgwNSwxNSArODExLDEzIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEV4Y2VwdGlvCiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAg
aWYgKGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIG1faWRlbnRpZmllciA9IGRvY3VtZW50
KCktPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3Qs
IGVycm9yLCByZXNwb25zZSwgZGF0YSk7Ci0KKyAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIg
PSBYTUxIdHRwUmVxdWVzdExvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAg
bV9sb2FkZXIgPSAwOwogCiAgICAgLy8gTm8gZXhjZXB0aW9uIGZvciBmaWxlOi8vLyByZXNvdXJj
ZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2MjI5OD4uCiAgICAgLy8gQWxzbywgaWYgd2UgaGF2
ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0IHdhc24ndCBhIG5ldHdvcmsgZXJyb3IgaW4gZmFj
dC4KICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgfHwgcmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgp
IHx8IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPiAwKSB7Ci0gICAgICAgIHByb2Nlc3NTeW5j
TG9hZFJlc3VsdHMoZGF0YSwgcmVzcG9uc2UsIGVjKTsKKyAgICAgICAgcHJvY2Vzc1N5bmNMb2Fk
UmVzdWx0cyhpZGVudGlmaWVyLCBkYXRhLCByZXNwb25zZSwgZWMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC04MzcsOCArODQxLDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6bG9hZFJl
cXVlc3RBc3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgLy8gRklY
TUU6IE1heWJlIGNyZWF0ZSBjYW4gcmV0dXJuIG51bGwgZm9yIG90aGVyIHJlYXNvbnMgdG9vPwog
ICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBjb250ZW50IHNuaWZmaW5nIGVuYWJsZWQgZm9yIGxvY2Fs
IGZpbGVzIGR1ZSB0byBDRk5ldHdvcmsgbm90IHByb3ZpZGluZyBhIE1JTUUgdHlwZQogICAgIC8v
IGZvciBsb2NhbCBmaWxlcyBvdGhlcndpc2UsIDxyZGFyOi8vcHJvYmxlbS81NjcxODEzPi4KLSAg
ICBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSAhbV9pblByZWZsaWdodDsKLSAgICBt
X2xvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQoKS0+ZnJhbWUoKSwg
dGhpcywgcmVxdWVzdCwgZmFsc2UsIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIHJlcXVlc3Qu
dXJsKCkuaXNMb2NhbEZpbGUoKSk7CisgICAgTG9hZENhbGxiYWNrcyBjYWxsYmFja3MgPSBtX2lu
UHJlZmxpZ2h0ID8gTm9Mb2FkQ2FsbGJhY2tzIDogRG9Mb2FkQ2FsbGJhY2tzOworICAgIENvbnRl
bnRTbmlmZiBjb250ZW50U25pZmYgPSAgcmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpID8gRG9D
b250ZW50U25pZmYgOiBOb0NvbnRlbnRTbmlmZjsKKyAgICBtX2xvYWRlciA9IFhNTEh0dHBSZXF1
ZXN0TG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0
LCBjYWxsYmFja3MsIGNvbnRlbnRTbmlmZik7CiAKICAgICBpZiAobV9sb2FkZXIpIHsKICAgICAg
ICAgLy8gTmVpdGhlciB0aGlzIG9iamVjdCBub3IgdGhlIEphdmFTY3JpcHQgd3JhcHBlciBzaG91
bGQgYmUgZGVsZXRlZCB3aGlsZQpAQCAtOTc4LDggKzk4Myw3IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gT1BFTkVEIHx8IG1fbG9hZGVyKSB7CiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBk
b2N1bWVudCgpID8gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6IDA7Ci0gICAgICAgIGlmIChzZXR0
aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUo
KSkKKyAgICAgICAgaWYgKHVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIApAQCAtMTEzMCw1OSArMTEzNCw2MSBAQCBT
dHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnN0YXR1c1RleHQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0Ojpwcm9jZXNz
U3luY0xvYWRSZXN1bHRzKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVz
dDo6cHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFZlY3RvcjxjaGFyPiYgZGF0YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3NhbWVPcmlnaW5SZXF1ZXN0ICYmICFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzcG9u
c2UudXJsKCkpKSB7CiAgICAgICAgIGFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKDAsIHJlc3BvbnNlKTsKKyAgICBkaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UpOwogICAgIGNoYW5nZVN0YXRlKEhFQURFUlNfUkVDRUlWRUQpOwog
CiAgICAgY29uc3QgY2hhciogYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5k
YXRhKCkpOwogICAgIGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEuc2l6ZSgpKTsKLSAg
ICBkaWRSZWNlaXZlRGF0YSgwLCBieXRlcywgbGVuKTsKKyAgICBkaWRSZWNlaXZlRGF0YShieXRl
cywgbGVuKTsKIAotICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7CisgICAgZGlkRmluaXNoTG9hZGlu
ZyhpZGVudGlmaWVyKTsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgZWMgPSBYTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3Zv
aWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZhaWwoKQogewogICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5
IGluIGFuIGVycm9yIHN0YXRlLCBmb3IgaW5zdGFuY2Ugd2UgY2FsbGVkIGFib3J0KCksIGJhaWwg
b3V0IGVhcmx5LgogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
ZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkgewotICAgICAgICBhYm9ydEVycm9yKCk7CisgICAgaW50
ZXJuYWxBYm9ydCgpOworICAgIG5ldHdvcmtFcnJvcigpOworfQorCit2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRHZXRDYW5jZWxsZWQoKQoreworICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGluIGFu
IGVycm9yIHN0YXRlLCBmb3IgaW5zdGFuY2Ugd2UgY2FsbGVkIGFib3J0KCksIGJhaWwgb3V0IGVh
cmx5LgorICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgbmV0
d29ya0Vycm9yKCk7Ci0gICAgcmV0dXJuOworICAgIGFib3J0RXJyb3IoKTsKIH0KIAotdm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVy
KQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2luUHJlZmxpZ2h0KSB7Ci0gICAgICAgIGRpZEZpbmlzaExvYWRpbmdQcmVmbGlnaHQobG9h
ZGVyKTsKKyAgICAgICAgZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGxvYWRlciA9PSBtX2xvYWRlcik7Ci0KICAgICBpZiAo
bV9zdGF0ZSA8IEhFQURFUlNfUkVDRUlWRUQpCiAgICAgICAgIGNoYW5nZVN0YXRlKEhFQURFUlNf
UkVDRUlWRUQpOwogCiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9yZXNwb25zZVRleHQg
Kz0gbV9kZWNvZGVyLT5mbHVzaCgpOwogCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5y
ZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QobV9sb2FkZXIgPyBtX2xvYWRlci0+aWRl
bnRpZmllcigpIDogbV9pZGVudGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7CisgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRp
ZmllciwgbV9yZXNwb25zZVRleHQpOwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRk
TWVzc2FnZShJbnNwZWN0b3JDb250cm9sbGVyRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6IFwiIiArIG1fdXJsICsgIlwi
LiIsIG1fbGFzdFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RTZW5kVVJMKTsKIAogICAgIGJvb2wgaGFk
TG9hZGVyID0gbV9sb2FkZXI7CkBAIC0xMTk1LDcgKzEyMDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiAgICAgICAg
IGRyb3BQcm90ZWN0aW9uKCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExv
YWRpbmdQcmVmbGlnaHQoU3VicmVzb3VyY2VMb2FkZXIqKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodCgpCiB7CiAgICAgQVNTRVJUKG1faW5QcmVmbGlnaHQp
OwogICAgIEFTU0VSVCghbV9zYW1lT3JpZ2luUmVxdWVzdCk7CkBAIC0xMjA4LDE2ICsxMjE0LDcg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodChTdWJyZXNv
dXJjZUxvYWRlciopCiAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCi12
b2lkIFhNTEh0dHBSZXF1ZXN0Ojp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQotewotICAg
IC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3Qg
Y29ycmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cy4KLSAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXF1ZXN0
LnVybCgpKSkgewotICAgICAgICBpbnRlcm5hbEFib3J0KCk7Ci0gICAgICAgIG5ldHdvcmtFcnJv
cigpOwotICAgIH0KLX0KLQotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkU2VuZERhdGEoU3VicmVz
b3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkKIHsKICAgICBpZiAoIW1fdXBsb2FkKQogICAgICAgICByZXR1cm47CkBA
IC0xMjUzLDEwICsxMjUwLDEwIEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmFjY2Vzc0NvbnRyb2xD
aGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIGlmIChtX2luUHJlZmxpZ2h0KSB7Ci0gICAgICAgIGRpZFJlY2Vp
dmVSZXNwb25zZVByZWZsaWdodChsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgZGlkUmVjZWl2
ZVJlc3BvbnNlUHJlZmxpZ2h0KHJlc3BvbnNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI3Myw3ICsxMjcwLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmMKICAgICAgICAgbV9y
ZXNwb25zZUVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogfQogCi12b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGlnaHQoU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQobV9pblByZWZsaWdodCk7CiAgICAgQVNTRVJUKCFt
X3NhbWVPcmlnaW5SZXF1ZXN0KTsKQEAgLTEyODQsMTcgKzEyODEsOSBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGlnaHQoU3VicmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBSZXNvdQogICAgIH0KIAogICAgIE93blB0cjxQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+
IHByZWZsaWdodFJlc3VsdChuZXcgUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtKG1faW5jbHVkZUNy
ZWRlbnRpYWxzKSk7Ci0gICAgaWYgKCFwcmVmbGlnaHRSZXN1bHQtPnBhcnNlKHJlc3BvbnNlKSkg
IHsKLSAgICAgICAgbmV0d29ya0Vycm9yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIXByZWZsaWdodFJlc3VsdC0+YWxsb3dzQ3Jvc3NTaXRlTWV0aG9kKG1fbWV0aG9kKSkg
ewotICAgICAgICBuZXR3b3JrRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghcHJlZmxpZ2h0UmVzdWx0LT5hbGxvd3NDcm9zc1NpdGVIZWFkZXJzKG1fcmVxdWVzdEhl
YWRlcnMpKSB7CisgICAgaWYgKCFwcmVmbGlnaHRSZXN1bHQtPnBhcnNlKHJlc3BvbnNlKQorICAg
ICAgICB8fCAhcHJlZmxpZ2h0UmVzdWx0LT5hbGxvd3NDcm9zc1NpdGVNZXRob2QobV9tZXRob2Qp
CisgICAgICAgIHx8ICFwcmVmbGlnaHRSZXN1bHQtPmFsbG93c0Nyb3NzU2l0ZUhlYWRlcnMobV9y
ZXF1ZXN0SGVhZGVycykpIHsKICAgICAgICAgbmV0d29ya0Vycm9yKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xMzAyLDEyICsxMjkxLDEyIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
CiAgICAgUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNoYXJlZCgpLmFwcGVuZEVudHJ5KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbV91cmwsIHBy
ZWZsaWdodFJlc3VsdC5yZWxlYXNlKCkpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpyZWNl
aXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgZmFpbHVyZVJl
c3BvbnNlKQogewotICAgIG1fcmVzcG9uc2UgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCk7
CisgICAgbV9yZXNwb25zZSA9IGZhaWx1cmVSZXNwb25zZTsKIH0KIAotdm9pZCBYTUxIdHRwUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbikKIHsKICAgICBpZiAobV9pblByZWZsaWdodCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTMyNiw3ICsxMzE1LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGUKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiAgICAgfQotICAgIGlmIChsZW4gPT0gMCkKKyAg
ICBpZiAoIWxlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGxlbiA9PSAtMSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCmluZGV4IDhkNmNkMzAuLjQxYmI2ODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAt
MjYsMTcgKzI2LDE5IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgorI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRmlsZTsKK2Ns
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CitjbGFzcyBY
TUxIdHRwUmVxdWVzdExvYWRlcjsKIAotY2xhc3MgWE1MSHR0cFJlcXVlc3QgOiBwdWJsaWMgUmVm
Q291bnRlZDxYTUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHJpdmF0ZSBTdWJy
ZXNvdXJjZUxvYWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBYTUxI
dHRwUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2
ZW50VGFyZ2V0LCBwcml2YXRlIFhNTEh0dHBSZXF1ZXN0TG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVx
dWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0KSk7IH0KICAgICB+WE1MSHR0cFJlcXVl
c3QoKTsKQEAgLTExOSwxOSArMTIxLDIzIEBAIHByaXZhdGU6CiAKICAgICBEb2N1bWVudCogZG9j
dW1lbnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoU3VicmVz
b3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShT
dWJyZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29u
c3QgY2hhciogZGF0YSwgaW50IHNpemUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFN1YnJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICAgYm9vbCB1
c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpIGNvbnN0OworI2VuZGlmCisK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNl
aXZlZCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRHZXRDYW5jZWxsZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIFNw
ZWNpYWwgdmVyc2lvbnMgZm9yIHRoZSBwcmVmbGlnaHQKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZVByZWZsaWdodChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdQcmVmbGlnaHQoU3VicmVzb3VyY2VMb2FkZXIq
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0KCk7CiAKLSAgICB2
b2lkIHByb2Nlc3NTeW5jTG9hZFJlc3VsdHMoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcHJvY2Vzc1N5
bmNMb2FkUmVzdWx0cyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxjaGFy
PiYgZGF0YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHVwZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVzcyh1bnNpZ25lZCBpbnQgbGVuKTsKIAogICAg
IFN0cmluZyByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CkBAIC0xOTgsMTYgKzIwNCwxNSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9hc3luYzsKICAgICBib29sIG1faW5jbHVkZUNyZWRlbnRpYWxz
OwogCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICBSZWZQdHI8
WE1MSHR0cFJlcXVlc3RMb2FkZXI+IG1fbG9hZGVyOwogICAgIFN0YXRlIG1fc3RhdGU7CiAKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgU3RyaW5nIG1fcmVzcG9uc2VFbmNv
ZGluZzsKIAogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAg
dW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAKLSAgICAvLyBVbmxpa2UgbW9zdCBzdHJpbmdz
IGluIHRoZSBET00sIHdlIGtlZXAgdGhpcyBhcyBhIEpTQzo6VVN0cmluZywgbm90IGEgV2ViQ29y
ZTo6U3RyaW5nLgorICAgIC8vIFVubGlrZSBtb3N0IHN0cmluZ3MgaW4gdGhlIERPTSwgd2Uga2Vl
cCB0aGlzIGFzIGEgU2NyaXB0U3RyaW5nLCBub3QgYSBXZWJDb3JlOjpTdHJpbmcuCiAgICAgLy8g
VGhhdCdzIGJlY2F1c2UgdGhlc2Ugc3RyaW5ncyBjYW4gZWFzaWx5IGdldCBodWdlICh0aGV5IGFy
ZSBmaWxsZWQgZnJvbSB0aGUgbmV0d29yayB3aXRoCiAgICAgLy8gbm8gcGFyc2luZykgYW5kIGJl
Y2F1c2UgSlMgY2FuIGVhc2lseSBvYnNlcnZlIG1hbnkgaW50ZXJtZWRpYXRlIHN0YXRlcywgc28g
aXQncyB2ZXJ5IHVzZWZ1bAogICAgIC8vIHRvIGJlIGFibGUgdG8gc2hhcmUgdGhlIGJ1ZmZlciB3
aXRoIEphdmFTY3JpcHQgdmVyc2lvbnMgb2YgdGhlIHdob2xlIG9yIHBhcnRpYWwgc3RyaW5nLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26888</attachid>
            <date>2009-01-20 23:43:56 -0800</date>
            <delta_ts>2009-01-21 17:31:16 -0800</delta_ts>
            <desc>Part 2: More work on cleaning up instances of document in the XMLHttpRequest class.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>48603</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVjMDhhNy4uYzE5ODY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAwOS0wMS0yMCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwCisKKyAgICAgICAgTW9yZSByZW1vdmFsIG9mIGRvY3VtZW50IHVzYWdlIGZyb20gWE1MSHR0
cFJlcXVlc3QuCisgICAgICAgICogQWJzdHJhY3RlZCBhd2F5IHRoZSBzeW5jIGFuZCBhc3luYyBy
ZXF1ZXN0cyBiZWhpbmQgdGhlIFRocmVhZGFibGVMb2FkZXIgY2xhc3MsIHdoaWNoCisgICAgICAg
ICAgd2lsbCBnZXQgYW4gaW1wbGVtZW50YXRpb24gZm9yIFdvcmtlcnMuICBJdCBmb2xsb3dzIHRo
ZSBzYW1lIG1vZGVsIGFzIFN1YnJlc291cmNlTG9hZGVyLCBzaW5jZQorICAgICAgICAgIGl0IGlz
IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBpdC4KKyAgICAgICAgKiBDb25zb2xpZGF0ZWQgZGFzaGJv
YXJkIGNvbXBhdGliaWxpdHkgY2hlY2tzIGludG8gdXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUKKyAgICAgICAgICB3aGljaCBoYW5kbGVzIHdvcmtlcnMuCisKKyAgICAgICAg
Tm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnNjb25zOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlU291cmNlcy5ia2w6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpE
b2N1bWVudFRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjp+RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OnJlZlRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkZXJlZlRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9T
dWJyZXNvdXJjZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVM
b2FkZXI6OnJlZik6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpkZXJlZik6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjp+VGhyZWFkYWJsZUxvYWRlcik6
CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRTZW5kRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZEdldENh
bmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZUxvYWRlckNsaWVudDo6flRocmVhZGFibGVMb2FkZXJDbGllbnQpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnVz
ZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
Ojpsb2FkUmVxdWVzdFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmxvYWRSZXF1ZXN0QXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnByb2Nlc3NTeW5jTG9hZFJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmRpZEdldENhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmlu
aXNoTG9hZGluZ1ByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlUHJlZmxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJl
cXVlc3QuaDoKKwogMjAwOS0wMS0yMCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IE1hYyBidWlsZCBidXN0YWdlIGZyb20gbXkgc2VsZWN0aW9uIGNoYW5nZXMu
ICBJIGZvcmdvdCB0byBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9ucyBvbiBSZW5kZXJUaGVtZU1hYwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggNzg3YzRhNC4uYzBkNmRiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDM3LDYgKzEwMzcsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oIFwKIAlXZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmggXAorCVdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
XAorCVdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIFwKIAlXZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaCBcCiAJV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5oIFwKQEAg
LTEwNzgsNiArMTA4MCw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2FkZXIv
VGV4dERvY3VtZW50LmggXAogCVdlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3Bw
IFwKIAlXZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmggXAorCVdlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIFwKKwlXZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmggXAorCVdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBcCiAJV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlLmggXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZUZhY3RvcnkuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0
b3J5LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KaW5kZXggOGQ2MzA2ZS4uZjQ1ZmE5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03ODMsNiArNzgzLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgbG9hZGVyL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIFwKICAgICBsb2FkZXIv
RG9jTG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBcCisgICAgbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgXAogICAgIGxvYWRlci9Gb3JtU3RhdGUu
Y3BwIFwKICAgICBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIFwKQEAgLTgwMyw2ICs4MDQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvVGV4dERvY3VtZW50LmNwcCBc
CiAgICAgbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIFwKKyAgICBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAgXAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAg
XAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgXCAgICAKICAgICBwYWdlL0FjY2Vz
c2liaWxpdHlMaXN0LmNwcCBcICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnNjb25z
IGIvV2ViQ29yZS9XZWJDb3JlLnNjb25zCmluZGV4IGYzOTNmYTQuLjcyMjk1ZDMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5zY29ucworKysgYi9XZWJDb3JlL1dlYkNvcmUuc2NvbnMKQEAg
LTMzMyw2ICszMzMsNyBAQCBzb3VyY2VzWydsb2FkZXInXSA9IFsKICAgICAnbG9hZGVyL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwJywKICAgICAnbG9hZGVyL0RvY0xvYWRlci5jcHAnLAogICAgICds
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwJywKKyAgICAnbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAnLAogICAgICdsb2FkZXIvRm9ybVN0YXRlLmNwcCcsCiAgICAgJ2xvYWRlci9G
cmFtZUxvYWRlci5jcHAnLAogICAgICdsb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwJywK
QEAgLTM1MSw2ICszNTIsNyBAQCBzb3VyY2VzWydsb2FkZXInXSA9IFsKICAgICAnbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCcsCiAgICAgJ2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwJywKICAg
ICAnbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwJywKKyAgICAnbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwJywKICAgICAnbG9hZGVyL1VzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCcsCiBd
CiBzb3VyY2VzWydwYWdlJ10gPSBbCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBjMTRkMDU4Li5iNTI1MjJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTI3NDgsNiArMjc0OCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGxvYWRlclxEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxGb3JtU3RhdGUuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTI5MTUsNiArMjkyMywxOCBAQAogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cbG9hZGVyXFRleHRSZXNvdXJjZURlY29kZXIuaCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxUaHJlYWRhYmxlTG9h
ZGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxUaHJlYWRhYmxlTG9hZGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iaWNv
biINCiAJCQkJPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYjZiZjg4NS4uMGRjNzg0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyMCw2ICsxMjAsMTEgQEAKIAkJMDhFNkUwRjEwRUZGNDJCQTAwMDI5RkJG
IC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEU2RTBFRjBFRkY0MkJBMDAwMjlGQkYgLyogV01MRmllbGRTZXRF
bGVtZW50LmNwcCAqLzsgfTsKIAkJMDhFNkUwRjIwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxk
U2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDhFNkUwRjAwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5oICovOyB9
OwogCQkwQTQ4NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3
QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBCOTA1NjE5MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEI5MDU2MTUwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAgKi87IH07CisJCTBCOTA1NjFBMEYyNTc4QkYwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBCOTA1NjE2MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkwQjkwNTYxQjBGMjU3
OEJGMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MTcwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVh
ZGFibGVMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkw
QjkwNTYxQzBGMjU3OEJGMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MTgwRjI1NzhC
RTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9ICgpOyB9OyB9OworCQkwQjkwNTYxRTBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFk
YWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQjkwNTYxRDBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgKi87
IH07CiAJCTBCQTVEMzg2MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBNUQzODUwRjI0
MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi87IH07CiAJCTBGNTYwMjhGMEU0
Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2MDI4RDBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVy
TWFycXVlZS5oICovOyB9OwogCQkwRjU2MDI5MDBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFy
cXVlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjU2MDI4RTBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5jcHAgKi87IH07CkBAIC00
OTQwLDYgKzQ5NDUsMTEgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1l
bnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEVs
ZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjg0QjEw
RUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwQjkwNTYxNTBGMjU3OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBCOTA1NjE2MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBCOTA1NjE3MEYyNTc4QkUwMDk1RkY2
QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRocmVhZGFibGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEI5MDU2
MTgwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwQjkwNTYxRDBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFk
YWJsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJl
YWRhYmxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJBNUQzODUw
RjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNXb3JrZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hcnF1ZWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEUwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1h
cnF1ZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWFy
cXVlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ5MSw2ICsxMzUwMSw4
IEBACiAJCQkJQkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIERvY0xvYWRlci5oICovLAogCQkJ
CTkzRTIyN0RCMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAgKi8sCiAJCQkJ
NjU2RDM3MUUwQURCQTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8sCisJCQkJMEI5
MDU2MTUwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgKi8s
CisJCQkJMEI5MDU2MTYwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oICovLAogCQkJCUIyNTU5OTBEMEQwMEQ4QjkwMEJCODI1QyAvKiBFbXB0eUNsaWVudHMuaCAq
LywKIAkJCQk1MUU0QURCMjBDNDJCNENGMDA0MkJDNTUgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwICovLAogCQkJCTUxRTRBREIzMEM0MkI0Q0YwMDQyQkM1NSAvKiBGVFBEaXJlY3RvcnlEb2N1
bWVudC5oICovLApAQCAtMTM1MzIsNiArMTM1NDQsOSBAQAogCQkJCTFBNjkzODAwMEExMTEwMEEw
MEMxMjdGRSAvKiBUZXh0RG9jdW1lbnQuaCAqLywKIAkJCQlGNTIzRDI3ODAyREU0M0Q3MDE4NjM1
Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgKi8sCiAJCQkJRjUyM0QyNzkwMkRFNDNENzAx
ODYzNUNBIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCAqLywKKwkJCQkwQjkwNTYxRDBGMjU3RTkz
MDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgKi8sCisJCQkJMEI5MDU2MTcwRjI1NzhC
RTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuaCAqLywKKwkJCQkwQjkwNTYxODBGMjU3OEJF
MDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oICovLAogCQkJCTcyODRBRERCMEU2
RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5jcHAgKi8sCiAJCQkJNzI4NEFE
REMwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmggKi8sCiAJCQkJQkNC
MTZDMTMwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRlci5jcHAgKi8sCkBAIC0xNTI5NSw2ICsxNTMx
MCw3IEBACiAJCQkJQTgxODVGM0QwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzM2MEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVu
dExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8q
IERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwQjkwNTYxQTBGMjU3OEJGMDA5
NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NUYzOTA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzE4NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3Q0E1OTYzMEIyN0MxRjIwMEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTE2NDA1LDYgKzE2NDIxLDggQEAKIAkJCQlCQ0U2NTlBOTBFQTkyN0I5MDA3
RTQ1MzMgLyogVGhlbWVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFERjZEN0UwQjkyQTE2
RDAwQzJEQzg1IC8qIFRocmVhZENoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUZGNTdBMzBG
MDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEI5MDU2MUIwRjI1NzhCRjAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBCOTA1NjFDMEYyNTc4QkYwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNCMDBDRDYzMzEwMDBGQURBNzUgLyogVGlt
ZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8q
IFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyog
VGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTcyNjMsNiArMTcyODEsNyBAQAog
CQkJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzRTIyN0UwMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9j
dW1lbnRMb2FkZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEI5MDU2MTkwRjI1NzhCRTAw
OTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODE4NUYzQTA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3Q0E1OTVFMEIyN0JEOUUwMEZBMDIxRCAvKiBEcmFnQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzE4Nzg5MDBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRy
b2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTE4MzgzLDYgKzE4NDAyLDcgQEAKIAkJCQlC
Q0U2NTlFOTBFQTkyRkZBMDA3RTQ1MzMgLyogVGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MURGNkQ4MDBCOTJBMThFMDBDMkRDODUgLyogVGhyZWFkQ2hlY2subW0gaW4gU291cmNlcyAq
LywKIAkJCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwQjkwNTYxRTBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJs
ZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNBRjBDRDYzMzEwMDBGQURBNzUg
LyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUVBNDA5OUVCNzhDMDA1
NkU1ODEgLyogVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTExQ0YwRUY4NkQ0NzAw
OUQwQ0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMu
YmtsCmluZGV4IGZjMzI1MTYuLmY5NmU5MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNv
dXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCkBAIC02MzIsNiArNjMy
LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWls
ZCBXZWJDb3JlLgogICAgICAgICBsb2FkZXIvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKICAgICAg
ICAgbG9hZGVyL0RvY0xvYWRlci5jcHAKICAgICAgICAgbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAorICAgICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAogICAgICAgICBs
b2FkZXIvRm9ybVN0YXRlLmNwcAogICAgICAgICBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwCiAgICAg
ICAgIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTY1MCw2ICs2NTEsNyBAQCBUaGlz
IGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUu
CiAgICAgICAgIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKICAgICAgICAgbG9hZGVyL1Rl
eHREb2N1bWVudC5jcHAKICAgICAgICAgbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisg
ICAgICAgIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAogICAgICAgICBsb2FkZXIvbG9hZGVy
LmNwcAogICAgIDwvc2V0PgogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmODY2Nwot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VM
b2FkZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExv
YWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZikK
K3sKKyAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJl
ZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCBjbGllbnQsIHJlcXVlc3Qs
IGNhbGxiYWNrc1NldHRpbmcsIGNvbnRlbnRTbmlmZikpOworICAgIGlmICghbG9hZGVyLT5tX2xv
YWRlcikKKyAgICAgICAgbG9hZGVyID0gMDsKKyAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsK
K30KKworRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNrcyBjYWxsYmFja3NTZXR0aW5n
LCBDb250ZW50U25pZmYgY29udGVudFNuaWZmKQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAg
ICwgbV9kb2N1bWVudChkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIEFT
U0VSVChjbGllbnQpOworICAgIG1fbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShk
b2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgZmFsc2UsIGNhbGxiYWNrc1NldHRpbmcg
PT0gU2VuZExvYWRDYWxsYmFja3MsIGNvbnRlbnRTbmlmZiA9PSBTbmlmZkNvbnRlbnQpOworfQor
CitEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6On5Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKQor
eworICAgIGlmIChtX2xvYWRlcikKKyAgICAgICAgbV9sb2FkZXItPmNsZWFyQ2xpZW50KCk7Cit9
CisKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQoreworICAgIGlmICgh
bV9sb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAg
ICBtX2xvYWRlci0+Y2xlYXJDbGllbnQoKTsKKyAgICBtX2xvYWRlciA9IDA7CisgICAgbV9jbGll
bnQgPSAwOworfQorCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFN1YnJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworCisgICAgLy8gRklY
TUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVjdCBjb3JyZWN0
bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgorICAgIGlmICghbV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBS
ZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOworICAgICAgICBt
X2NsaWVudC0+ZGlkRmFpbCgpOworICAgICAgICBjYW5jZWwoKTsKKyAgICB9Cit9CisKK3ZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRTZW5kRGF0YShTdWJyZXNvdXJjZUxvYWRlcios
IHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICBtX2NsaWVudC0+ZGlk
U2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworfQorCit2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgQVNTRVJUKG1fY2xp
ZW50KTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKwor
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworICAgIEFT
U0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0
aFJlY2VpdmVkKTsKK30KKwordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBBU1NFUlQobG9hZGVy
KTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5n
KGxvYWRlci0+aWRlbnRpZmllcigpKTsKK30KKwordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlv
bigpKQorICAgICAgICBtX2NsaWVudC0+ZGlkR2V0Q2FuY2VsbGVkKCk7CisgICAgZWxzZQorICAg
ICAgICBtX2NsaWVudC0+ZGlkRmFpbCgpOworfQorCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7
CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjaGFs
bGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ5MDkwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKKyNkZWZpbmUgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyX2gKKworI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBEb2N1bWVudDsKKyAgICBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CisgICAgY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudDsKKworICAgIGNsYXNzIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyLCBwcml2YXRlIFN1YnJlc291cmNlTG9h
ZGVyQ2xpZW50ICB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCosIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25p
ZmYpOworICAgICAgICB2aXJ0dWFsIH5Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKTsKKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CisKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPjo6ZGVyZWY7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRhYmxlTG9hZGVyKCkgeyByZWYoKTsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZUaHJlYWRhYmxlTG9hZGVyKCkgeyBkZXJlZigpOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQqLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZENhbGxi
YWNrcywgQ29udGVudFNuaWZmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVz
dChTdWJyZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEoU3VicmVzb3VyY2VMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU3VicmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJl
c291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKworICAgICAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgICAgICBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDRlMTRkZWEuLjc2ZmRlNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNl
bmREYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50
Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCAv
Kmxlbmd0aFJlY2VpdmVkKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFN1YnJlc291cmNlTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBm
MjJmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExv
YWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZikg
Cit7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgQVNTRVJUKGNvbnRleHQpOworICAgIEFTU0VS
VChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworCisgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGNsaWVudCwg
cmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKTsKK30KKwordW5zaWduZWQg
bG9uZyBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8
Y2hhcj4mIGRhdGEpCit7CisgICAgQVNTRVJUKGNvbnRleHQpOworICAgIEFTU0VSVChjb250ZXh0
LT5pc0RvY3VtZW50KCkpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPjo6bWF4KCk7CisgICAg
cmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShyZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgg
Yi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZThmZjA1OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGhyZWFkYWJsZUxv
YWRlcl9oCisjZGVmaW5lIFRocmVhZGFibGVMb2FkZXJfaAorCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFJlc291cmNlRXJyb3I7
CisgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50OworCisgICAgZW51bSBMb2FkQ2FsbGJhY2tzIHsKKyAgICAgICAgU2VuZExv
YWRDYWxsYmFja3MsCisgICAgICAgIERvTm90U2VuZExvYWRDYWxsYmFja3MKKyAgICB9OworCisg
ICAgZW51bSBDb250ZW50U25pZmYgeworICAgICAgICBTbmlmZkNvbnRlbnQsCisgICAgICAgIERv
Tm90U25pZmZDb250ZW50CisgICAgfTsKKworICAgIC8vIFVzZWZ1bCBmb3IgZG9pbmcgbG9hZGVy
IG9wZXJhdGlvbnMgZnJvbSBhbnkgdGhyZWFkIChub3QgdGhyZWFkc2FmZSwgCisgICAgLy8ganVz
dCBhYmxlIHRvIHJ1biBvbiB0aHJlYWRzIG90aGVyIHRoYW4gdGhlIG1haW4gdGhyZWFkKS4KKyAg
ICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyIDogTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmKTsKKyAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWwoKSA9IDA7CisgICAgICAgIHZvaWQgcmVmKCkgeyByZWZUaHJlYWRhYmxlTG9hZGVyKCk7IH0K
KyAgICAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZUaHJlYWRhYmxlTG9hZGVyKCk7IH0KKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+VGhyZWFkYWJsZUxvYWRlcigpIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVmVGhyZWFkYWJsZUxvYWRlcigpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRlcmVmVGhyZWFkYWJsZUxvYWRlcigpID0gMDsKKyAgICB9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBUaHJlYWRhYmxlTG9hZGVyX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBiL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40ZmRlNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50X2gKKyNkZWZpbmUgVGhyZWFkYWJsZUxvYWRlckNsaWVudF9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CisKKyAgICBjbGFzcyBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQg
bG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQorCisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCAvKmxlbmd0
aFJlY2VpdmVkKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIC8qaWRlbnRpZmVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0Q2FuY2VsbGVkKCkgeyB9CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlv
bihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IHZpcnR1YWwgflRocmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IH0KKyAgICB9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAppbmRleCAzMzI4ZjYzLi5lNDg0Njg2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCkBAIC0yMywyNCArMjMsMjMgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgog
CiAjaW5jbHVkZSAiQ1N0cmluZy5oIgotI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKLSNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVk
ZSAiU3lzdGVtVGltZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRp
b24uaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRl
ICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIgpAQCAtMzIzLDcgKzMyMiw2IEBAIFhNTEh0dHBSZXF1
ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAg
ICwgbV9hc3luYyh0cnVlKQogICAgICwgbV9pbmNsdWRlQ3JlZGVudGlhbHMoZmFsc2UpCiAgICAg
LCBtX3N0YXRlKFVOU0VOVCkKLSAgICAsIG1faWRlbnRpZmllcihzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkIGxvbmc+OjptYXgoKSkKICAgICAsIG1fcmVzcG9uc2VUZXh0KCIiKQogICAgICwg
bV9jcmVhdGVkRG9jdW1lbnQoZmFsc2UpCiAgICAgLCBtX2Vycm9yKGZhbHNlKQpAQCAtMzQ4LDYg
KzM0NiwxNiBAQCBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OmRvY3VtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwogfQogCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorYm9vbCBYTUxIdHRwUmVxdWVz
dDo6dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSBjb25zdAoreworICAg
IGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKTsKKyAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRC
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7Cit9CisjZW5kaWYKKwogWE1MSHR0cFJlcXVlc3Q6
OlN0YXRlIFhNTEh0dHBSZXF1ZXN0OjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9zdGF0ZTsKQEAgLTU1OCw4ICs1NjYsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERv
Y3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIFN0cmluZyBjb250
ZW50VHlwZSA9IGdldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIpOwogICAgICAgICBpZiAo
Y29udGVudFR5cGUuaXNFbXB0eSgpKSB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQot
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0g
ICAgICAgICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlKCkpCisgICAgICAgICAgICBpZiAodXNlc0Rhc2hib2FyZEJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKICAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVy
SW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29k
ZWQiKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgpAQCAtNTkwLDggKzU5Nyw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OnNlbmQoY29uc3QgU3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcigiQ29udGVu
dC1UeXBlIik7CiAgICAgICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpIHsKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBk
b2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgICAgICAgICAgaWYgKHNldHRpbmdzICYmIHNldHRp
bmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQorICAgICAgICAg
ICAgaWYgKHVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCiAgICAgICAg
ICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYK
QEAgLTgwNSwxNSArODExLDEzIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0U3lu
Y2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEV4Y2VwdGlvCiAgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgaWYg
KGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIG1faWRlbnRpZmllciA9IGRvY3VtZW50KCkt
PmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVy
cm9yLCByZXNwb25zZSwgZGF0YSk7Ci0KKyAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgcmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICBtX2xvYWRl
ciA9IDA7CiAKICAgICAvLyBObyBleGNlcHRpb24gZm9yIGZpbGU6Ly8vIHJlc291cmNlcywgc2Vl
IDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KICAgICAvLyBBbHNvLCBpZiB3ZSBoYXZlIGFuIEhU
VFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0d29yayBlcnJvciBpbiBmYWN0LgogICAg
IGlmIChlcnJvci5pc051bGwoKSB8fCByZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkgfHwgcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+IDApIHsKLSAgICAgICAgcHJvY2Vzc1N5bmNMb2FkUmVz
dWx0cyhkYXRhLCByZXNwb25zZSwgZWMpOworICAgICAgICBwcm9jZXNzU3luY0xvYWRSZXN1bHRz
KGlkZW50aWZpZXIsIGRhdGEsIHJlc3BvbnNlLCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTgzNyw4ICs4NDEsOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpsb2FkUmVxdWVzdEFz
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAvLyBGSVhNRTogTWF5
YmUgY3JlYXRlIGNhbiByZXR1cm4gbnVsbCBmb3Igb3RoZXIgcmVhc29ucyB0b28/CiAgICAgLy8g
V2UgbmVlZCB0byBrZWVwIGNvbnRlbnQgc25pZmZpbmcgZW5hYmxlZCBmb3IgbG9jYWwgZmlsZXMg
ZHVlIHRvIENGTmV0d29yayBub3QgcHJvdmlkaW5nIGEgTUlNRSB0eXBlCiAgICAgLy8gZm9yIGxv
Y2FsIGZpbGVzIG90aGVyd2lzZSwgPHJkYXI6Ly9wcm9ibGVtLzU2NzE4MTM+LgotICAgIGJvb2wg
c2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyA9ICFtX2luUHJlZmxpZ2h0OwotICAgIG1fbG9hZGVy
ID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShkb2N1bWVudCgpLT5mcmFtZSgpLCB0aGlzLCBy
ZXF1ZXN0LCBmYWxzZSwgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcywgcmVxdWVzdC51cmwoKS5p
c0xvY2FsRmlsZSgpKTsKKyAgICBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IG1faW5QcmVmbGln
aHQgPyBEb05vdFNlbmRMb2FkQ2FsbGJhY2tzIDogU2VuZExvYWRDYWxsYmFja3M7CisgICAgQ29u
dGVudFNuaWZmIGNvbnRlbnRTbmlmZiA9ICByZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkgPyBT
bmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKKyAgICBtX2xvYWRlciA9IFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHJlcXVlc3Qs
IGNhbGxiYWNrcywgY29udGVudFNuaWZmKTsKIAogICAgIGlmIChtX2xvYWRlcikgewogICAgICAg
ICAvLyBOZWl0aGVyIHRoaXMgb2JqZWN0IG5vciB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHNob3Vs
ZCBiZSBkZWxldGVkIHdoaWxlCkBAIC05NzgsOCArOTgzLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVz
dDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmEKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBPUEVORUQgfHwgbV9sb2FkZXIpIHsKICNpZiBF
TkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRv
Y3VtZW50KCkgPyBkb2N1bWVudCgpLT5zZXR0aW5ncygpIDogMDsKLSAgICAgICAgaWYgKHNldHRp
bmdzICYmIHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgp
KQorICAgICAgICBpZiAodXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCkBAIC0xMTMwLDU5ICsxMTM0LDYxIEBAIFN0
cmluZyBYTUxIdHRwUmVxdWVzdDo6c3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnByb2Nlc3NT
eW5jTG9hZFJlc3VsdHMoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0
Ojpwcm9jZXNzU3luY0xvYWRSZXN1bHRzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc2FtZU9yaWdpblJlcXVlc3QgJiYgIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXNwb25z
ZS51cmwoKSkpIHsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBkaWRSZWNlaXZlUmVzcG9uc2UoMCwgcmVzcG9uc2UpOworICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSk7CiAgICAgY2hhbmdlU3RhdGUoSEVBREVSU19SRUNFSVZFRCk7CiAK
ICAgICBjb25zdCBjaGFyKiBieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRh
dGEoKSk7CiAgICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4oZGF0YS5zaXplKCkpOwotICAg
IGRpZFJlY2VpdmVEYXRhKDAsIGJ5dGVzLCBsZW4pOworICAgIGRpZFJlY2VpdmVEYXRhKGJ5dGVz
LCBsZW4pOwogCi0gICAgZGlkRmluaXNoTG9hZGluZygwKTsKKyAgICBkaWRGaW5pc2hMb2FkaW5n
KGlkZW50aWZpZXIpOwogICAgIGlmIChtX2Vycm9yKQogICAgICAgICBlYyA9IFhNTEh0dHBSZXF1
ZXN0RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlk
RmFpbChTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbCgpCiB7CiAgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkg
aW4gYW4gZXJyb3Igc3RhdGUsIGZvciBpbnN0YW5jZSB3ZSBjYWxsZWQgYWJvcnQoKSwgYmFpbCBv
dXQgZWFybHkuCiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChl
cnJvci5pc0NhbmNlbGxhdGlvbigpKSB7Ci0gICAgICAgIGFib3J0RXJyb3IoKTsKKyAgICBpbnRl
cm5hbEFib3J0KCk7CisgICAgbmV0d29ya0Vycm9yKCk7Cit9CisKK3ZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZEdldENhbmNlbGxlZCgpCit7CisgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgaW4gYW4g
ZXJyb3Igc3RhdGUsIGZvciBpbnN0YW5jZSB3ZSBjYWxsZWQgYWJvcnQoKSwgYmFpbCBvdXQgZWFy
bHkuCisgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBuZXR3
b3JrRXJyb3IoKTsKLSAgICByZXR1cm47CisgICAgYWJvcnRFcnJvcigpOwogfQogCi12b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIp
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKIHsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1faW5QcmVmbGlnaHQpIHsKLSAgICAgICAgZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodChsb2Fk
ZXIpOworICAgICAgICBkaWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlQobG9hZGVyID09IG1fbG9hZGVyKTsKLQogICAgIGlmICht
X3N0YXRlIDwgSEVBREVSU19SRUNFSVZFRCkKICAgICAgICAgY2hhbmdlU3RhdGUoSEVBREVSU19S
RUNFSVZFRCk7CiAKICAgICBpZiAobV9kZWNvZGVyKQogICAgICAgICBtX3Jlc3BvbnNlVGV4dCAr
PSBtX2RlY29kZXItPmZsdXNoKCk7CiAKLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChtX2xvYWRlciA/IG1fbG9hZGVyLT5pZGVu
dGlmaWVyKCkgOiBtX2lkZW50aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKKyAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChpZGVudGlm
aWVyLCBtX3Jlc3BvbnNlVGV4dCk7CiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRN
ZXNzYWdlKEluc3BlY3RvckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9hZGluZzogXCIiICsgbV91cmwgKyAiXCIu
IiwgbV9sYXN0U2VuZExpbmVOdW1iZXIsIG1fbGFzdFNlbmRVUkwpOwogCiAgICAgYm9vbCBoYWRM
b2FkZXIgPSBtX2xvYWRlcjsKQEAgLTExOTUsNyArMTIwMSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICAgICAg
ZHJvcFByb3RlY3Rpb24oKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9h
ZGluZ1ByZWZsaWdodChTdWJyZXNvdXJjZUxvYWRlciopCit2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpk
aWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0KCkKIHsKICAgICBBU1NFUlQobV9pblByZWZsaWdodCk7
CiAgICAgQVNTRVJUKCFtX3NhbWVPcmlnaW5SZXF1ZXN0KTsKQEAgLTEyMDgsMTYgKzEyMTQsNyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0KFN1YnJlc291
cmNlTG9hZGVyKikKICAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiB9CiAKLXZv
aWQgWE1MSHR0cFJlcXVlc3Q6OndpbGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCi17Ci0gICAg
Ly8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVjdCBj
b3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgotICAgIGlmICghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlcXVlc3Qu
dXJsKCkpKSB7Ci0gICAgICAgIGludGVybmFsQWJvcnQoKTsKLSAgICAgICAgbmV0d29ya0Vycm9y
KCk7Ci0gICAgfQotfQotCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRTZW5kRGF0YShTdWJyZXNv
dXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KQogewogICAgIGlmICghbV91cGxvYWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTEyNTMsMTAgKzEyNTAsMTAgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6YWNjZXNzQ29udHJvbENo
ZWNrKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgaWYgKG1faW5QcmVmbGlnaHQpIHsKLSAgICAgICAgZGlkUmVjZWl2
ZVJlc3BvbnNlUHJlZmxpZ2h0KGxvYWRlciwgcmVzcG9uc2UpOworICAgICAgICBkaWRSZWNlaXZl
UmVzcG9uc2VQcmVmbGlnaHQocmVzcG9uc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMjczLDcgKzEyNzAsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9u
c2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyYwogICAgICAgICBtX3Jl
c3BvbnNlRW5jb2RpbmcgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CiB9CiAKLXZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChTdWJyZXNvdXJjZUxv
YWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBYTUxIdHRwUmVx
dWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIEFTU0VSVChtX2luUHJlZmxpZ2h0KTsKICAgICBBU1NFUlQoIW1f
c2FtZU9yaWdpblJlcXVlc3QpOwpAQCAtMTI4NCwxNyArMTI4MSw5IEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChTdWJyZXNvdXJjZUxvYWRlciosIGNv
bnN0IFJlc291CiAgICAgfQogCiAgICAgT3duUHRyPFByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4g
cHJlZmxpZ2h0UmVzdWx0KG5ldyBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0obV9pbmNsdWRlQ3Jl
ZGVudGlhbHMpKTsKLSAgICBpZiAoIXByZWZsaWdodFJlc3VsdC0+cGFyc2UocmVzcG9uc2UpKSAg
ewotICAgICAgICBuZXR3b3JrRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghcHJlZmxpZ2h0UmVzdWx0LT5hbGxvd3NDcm9zc1NpdGVNZXRob2QobV9tZXRob2QpKSB7
Ci0gICAgICAgIG5ldHdvcmtFcnJvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFwcmVmbGlnaHRSZXN1bHQtPmFsbG93c0Nyb3NzU2l0ZUhlYWRlcnMobV9yZXF1ZXN0SGVh
ZGVycykpIHsKKyAgICBpZiAoIXByZWZsaWdodFJlc3VsdC0+cGFyc2UocmVzcG9uc2UpCisgICAg
ICAgIHx8ICFwcmVmbGlnaHRSZXN1bHQtPmFsbG93c0Nyb3NzU2l0ZU1ldGhvZChtX21ldGhvZCkK
KyAgICAgICAgfHwgIXByZWZsaWdodFJlc3VsdC0+YWxsb3dzQ3Jvc3NTaXRlSGVhZGVycyhtX3Jl
cXVlc3RIZWFkZXJzKSkgewogICAgICAgICBuZXR3b3JrRXJyb3IoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEzMDIsMTIgKzEyOTEsMTIgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3UK
ICAgICBQcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2hhcmVkKCkuYXBwZW5kRW50cnkoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBtX3VybCwgcHJl
ZmxpZ2h0UmVzdWx0LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlY2Vp
dmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBmYWlsdXJlUmVz
cG9uc2UpCiB7Ci0gICAgbV9yZXNwb25zZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKTsK
KyAgICBtX3Jlc3BvbnNlID0gZmFpbHVyZVJlc3BvbnNlOwogfQogCi12b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuKQogewogICAgIGlmIChtX2luUHJlZmxpZ2h0KQogICAgICAgICByZXR1
cm47CkBAIC0xMzI2LDcgKzEzMTUsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZQogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsKICAgICB9Ci0gICAgaWYgKGxlbiA9PSAwKQorICAg
IGlmICghbGVuKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobGVuID09IC0xKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKaW5kZXggOGQ2Y2QzMC4uZDdjMGQzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0y
NiwxNyArMjYsMTkgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZvcm1E
YXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlN1YnJlc291
cmNlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgiCisjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZpbGU7CitjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOworY2xhc3MgVGhyZWFk
YWJsZUxvYWRlcjsKIAotY2xhc3MgWE1MSHR0cFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxY
TUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHJpdmF0ZSBTdWJyZXNvdXJjZUxv
YWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBYTUxIdHRwUmVxdWVz
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0
LCBwcml2YXRlIFRocmVhZGFibGVMb2FkZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhN
TEh0dHBSZXF1ZXN0KGNvbnRleHQpKTsgfQogICAgIH5YTUxIdHRwUmVxdWVzdCgpOwpAQCAtMTE5
LDE5ICsxMjEsMjMgQEAgcHJpdmF0ZToKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlcios
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFN1YnJlc291cmNlTG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShT
dWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgc2l6ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoU3VicmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxs
YXRpb24oU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
OworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKyAgICBib29sIHVzZXNEYXNoYm9hcmRC
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgY29uc3Q7CisjZW5kaWYKKworICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEdldENhbmNl
bGxlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxs
YXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gU3BlY2lhbCB2ZXJzaW9u
cyBmb3IgdGhlIHByZWZsaWdodAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZ1ByZWZsaWdodChTdWJyZXNvdXJjZUxvYWRlciopOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmdQcmVmbGlnaHQoKTsKIAotICAgIHZvaWQgcHJvY2Vzc1N5
bmNMb2FkUmVzdWx0cyhjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwcm9jZXNzU3luY0xvYWRSZXN1bHRz
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgdXBkYXRlQW5k
RGlzcGF0Y2hPblByb2dyZXNzKHVuc2lnbmVkIGludCBsZW4pOwogCiAgICAgU3RyaW5nIHJlc3Bv
bnNlTUlNRVR5cGUoKSBjb25zdDsKQEAgLTE5OCwxNiArMjA0LDE1IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2FzeW5jOwogICAgIGJvb2wgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CiAKLSAgICBSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9h
ZGVyPiBtX2xvYWRlcjsKICAgICBTdGF0ZSBtX3N0YXRlOwogCiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogICAgIFN0cmluZyBtX3Jlc3BvbnNlRW5jb2Rpbmc7CiAKICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIHVuc2lnbmVkIGxvbmcgbV9p
ZGVudGlmaWVyOwogCi0gICAgLy8gVW5saWtlIG1vc3Qgc3RyaW5ncyBpbiB0aGUgRE9NLCB3ZSBr
ZWVwIHRoaXMgYXMgYSBKU0M6OlVTdHJpbmcsIG5vdCBhIFdlYkNvcmU6OlN0cmluZy4KKyAgICAv
LyBVbmxpa2UgbW9zdCBzdHJpbmdzIGluIHRoZSBET00sIHdlIGtlZXAgdGhpcyBhcyBhIFNjcmlw
dFN0cmluZywgbm90IGEgV2ViQ29yZTo6U3RyaW5nLgogICAgIC8vIFRoYXQncyBiZWNhdXNlIHRo
ZXNlIHN0cmluZ3MgY2FuIGVhc2lseSBnZXQgaHVnZSAodGhleSBhcmUgZmlsbGVkIGZyb20gdGhl
IG5ldHdvcmsgd2l0aAogICAgIC8vIG5vIHBhcnNpbmcpIGFuZCBiZWNhdXNlIEpTIGNhbiBlYXNp
bHkgb2JzZXJ2ZSBtYW55IGludGVybWVkaWF0ZSBzdGF0ZXMsIHNvIGl0J3MgdmVyeSB1c2VmdWwK
ICAgICAvLyB0byBiZSBhYmxlIHRvIHNoYXJlIHRoZSBidWZmZXIgd2l0aCBKYXZhU2NyaXB0IHZl
cnNpb25zIG9mIHRoZSB3aG9sZSBvciBwYXJ0aWFsIHN0cmluZy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26925</attachid>
            <date>2009-01-22 00:32:22 -0800</date>
            <delta_ts>2009-01-22 00:58:44 -0800</delta_ts>
            <desc>Part 3: Add ability for HTTPHeaderMap to be transfered across threads.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>13293</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGMwNGEyZS4uMjJlNzI5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMS0yMiAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIEFkZCBjb3B5L2Fkb3B0IGZvciBIVFRQSGVhZGVyTWFwIHRvIGFsbG93
IHRoZSBkYXRhIHRvIGJlIHBhc3NlZCBhY3Jvc3MgdGhyZWFkcy4KKworICAgICAgICBObyBvYnNl
cnZhYmxlIGNoYW5nZSBpbiBiZWhhdmlvciwgc28gbm8gdGVzdC4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUuc2Nv
bnM6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmVTb3Vy
Y2VzLmJrbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmNvcHlEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkb3B0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBIZWFkZXJNYXAuaDoKKwogMjAwOS0wMS0yMSAgRGF2aWQgSHlhdHQgIDxoeWF0
dEBhcHBsZS5jb20+CiAKICAgICAgICAgQmFjayBvdXQgYSBwb3J0aW9uIG9mIG15IHBhdGNoIHRo
YXQgSSBkaWQgbm90IG1lYW4gdG8gbGFuZC4gIFJldmVydCBwYWludE91dGxpbmUgYmFjayB0byB0
aGUgd2F5IGl0CkBAIC02MDAsOCArNjIyLDkgQEAKIAogICAgICAgICBNb3JlIHJlbW92YWwgb2Yg
ZG9jdW1lbnQgdXNhZ2UgZnJvbSBYTUxIdHRwUmVxdWVzdC4KICAgICAgICAgKiBBYnN0cmFjdGVk
IGF3YXkgdGhlIHN5bmMgYW5kIGFzeW5jIHJlcXVlc3RzIGJlaGluZCB0aGUgVGhyZWFkYWJsZUxv
YWRlciBjbGFzcywgd2hpY2gKLSAgICAgICAgICB3aWxsIGdldCBhbiBpbXBsZW1lbnRhdGlvbiBm
b3IgV29ya2Vycy4gIEl0IGZvbGxvd3MgdGhlIHNhbWUgbW9kZWwgYXMgU3VicmVzb3VyY2VMb2Fk
ZXIsIHNpbmNlCi0gICAgICAgICAgaXQgaXMgYSB0aGluIHdyYXBwZXIgYXJvdW5kIGl0LgorICAg
ICAgICAgIHdpbGwgZ2V0IGFuIGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXJzLiAgVGhyZWFkYWJs
ZUxvYWRlciBmb2xsb3dzIHRoZSBzYW1lIG1vZGVsIGFzCisgICAgICAgICAgU3VicmVzb3VyY2VM
b2FkZXIgYmVjYXVzZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaXMgYSB0aGluIHdyYXBwZXIg
YXJvdW5kIFN1YnJlc291cmNlTG9hZGVyLgorICAgICAgICAgIEFsc28sIFdvcmtlclRocmVhZGFi
bGVMb2FkZXIgKGNvbWluZyBzb29uKSB3aWxsIHVzZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIg
dG8gZ2V0IHRoaW5ncyBkb25lLgogICAgICAgICAqIENvbnNvbGlkYXRlZCBkYXNoYm9hcmQgY29t
cGF0aWJpbGl0eSBjaGVja3MgaW50byB1c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5
TW9kZQogICAgICAgICAgIHdoaWNoIGhhbmRsZXMgd29ya2Vycy4KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZDE2ODMy
Yy4uNGFkNDk2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMzg2LDYgKzEzODYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmggXAogCVdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMTZk
ZWZlMC4uMWI3YjNjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC05MDksNiArOTA5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBcCisg
ICAgcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRl
Tm90aWZpZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnNjb25zIGIvV2ViQ29yZS9XZWJDb3JlLnNj
b25zCmluZGV4IDJjNDAwN2EuLjkwMjE1ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5z
Y29ucworKysgYi9XZWJDb3JlL1dlYkNvcmUuc2NvbnMKQEAgLTc5OSw2ICs3OTksNyBAQCBzb3Vy
Y2VzWydwbGF0Zm9ybS9uZXR3b3JrJ10gPSBbCiAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVu
dGlhbC5jcHAnLAogICAgICdwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCcsCiAgICAgJ3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCcsCisgICAgJ3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5jcHAnLAogICAgICdwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcCcsCiAgICAgJ3BsYXRmb3JtL25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFj
LmNwcCcsCiAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGNjZTRhYzcuLjliNzI5NzYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTgyNSw2ICs1ODI1LDEw
IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEhUVFBIZWFkZXJNYXAuY3BwIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcSFRUUEhlYWRlck1hcC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZGIyZDc5Li44NWQ4MGY5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0LDYgKzEyNCw3
IEBACiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYw
RUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZF
MEYyMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZC
RiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdC
RDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQjhDNTZENDBG
Mjg2MjdGMDAwNTAyRTEgLyogSFRUUEhlYWRlck1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjhDNTZEMzBGMjg2MjdGMDAwNTAyRTEgLyogSFRU
UEhlYWRlck1hcC5jcHAgKi87IH07CiAJCTBCOTA1NjE5MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEI5MDU2MTUwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgKi87IH07CiAJCTBCOTA1NjFBMEYyNTc4QkYwMDk1RkY2QSAvKiBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCOTA1NjE2MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwQjkw
NTYxQjBGMjU3OEJGMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MTcwRjI1NzhCRTAwOTVGRjZB
IC8qIFRocmVhZGFibGVMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9
OyB9OwpAQCAtNDk1NSw2ICs0OTU2LDcgQEAKIAkJMDhGQjg0QjAwRUNFMzczMzAwREMwNjRFIC8q
IFdNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDhGQjg0QjEwRUNFMzczMzAwREMwNjRFIC8qIFdNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2lu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQjhDNTZEMzBGMjg2MjdGMDAwNTAyRTEgLyogSFRU
UEhlYWRlck1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQ
SGVhZGVyTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI5MDU2MTUwRjI1
NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjkwNTYxNjBGMjU3OEJFMDA5NUZGNkEgLyog
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwQjkwNTYxNzBGMjU3OEJFMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRhYmxlTG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTE1LDYgKzk5MTcsNyBAQAogCQkJCTUxNEM3NjVCMENF
OTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oICovLAogCQkJCTA4NUI5MkI4MEVGREU3M0QwMEU2
MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovLAogCQkJCTA4NUI5MkI5MEVGREU3M0QwMEU2
MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLywKKwkJCQkwQjhDNTZEMzBGMjg2MjdGMDAwNTAy
RTEgLyogSFRUUEhlYWRlck1hcC5jcHAgKi8sCiAJCQkJNTE0Qzc2NUMwQ0U5MjNBMTAwN0VGM0NE
IC8qIEhUVFBIZWFkZXJNYXAuaCAqLywKIAkJCQk1MTRDNzY1RDBDRTkyM0ExMDA3RUYzQ0QgLyog
SFRUUFBhcnNlcnMuY3BwICovLAogCQkJCTUxNEM3NjVFMENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQ
UGFyc2Vycy5oICovLApAQCAtMTY2NzksNiArMTY2ODIsNyBAQAogCQkJaXNhID0gUEJYUmVzb3Vy
Y2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKKwkJCQlBNzA5NEFGQzBGMjdBRUUzMDA1OTZDRUMgLyogQ2FudmFzUGl4ZWxBcnJheS5p
ZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUIyNTU5OTQ4MEQwMEQ4QkEwMEJCODI1QyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUIyNTU5OTRCMEQw
MEQ4QkEwMEJCODI1QyAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2VybmVsIGluIFJlc291
cmNlcyAqLywKIAkJCQlCMjU1OTk0RTBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaWZmdXNlTGlnaHRp
bmdGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLApAQCAtMTY3MjUsNyArMTY3MjksNiBA
QAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBp
biBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1
cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAv
KiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQTcwOTRBRkMwRjI3QUVF
MzAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE2
OTgyLDYgKzE2OTg1LDcgQEAKIAkJCQlCQ0IxNkMyNzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VFQzIwMjA5QzI4Nzc3MDBD
NTE1RDEgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFRUMyNkYw
OUMzMjE4MDAwQzUxNUQxIC8qIENhbnZhc1BhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTcwOTRBRkEwRjI3QUU2MDAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTNFRUMxRkYwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VFQzI3MTA5QzMyMTg4MDBDNTE1RDEg
LyogQ2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0MTg1RUYwQ0Q2NUYwNDAw
NzYzQzk5IC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTc0
ODQsNiArMTc0ODgsNyBAQAogCQkJCUE4RUE3OUYzMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MVUxp
c3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxM0FBMENENjMzMTAwMEZBREE3
NSAvKiBIVE1MVmlkZW9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQ0Q3NEU1MEE0
QzhEREYwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNEM3NjcyMENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQUGFyc2Vycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk0RDE1MzBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTc0MUQxMjBCMDcyNTlBMDBFRDQ0MkMgLyogSGlz
dG9yeUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODU3Niw3ICsxODU4MSw2IEBACiAJCQkJ
MUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5p
dHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTcwOTRBRkEwRjI3QUU2MDAwNTk2Q0VDIC8qIENh
bnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IDk0Yjc4
MmUuLmI0Y2YxODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBi
L1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCkBAIC03ODcsNiArNzg3LDcgQEAgVGhpcyBmaWxl
IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5jcHAKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UuY3BwCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAKKyAgICAg
ICAgcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAogICAgICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42OGM0M2VmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKworI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCit1c2luZyBzdGQ6OmF1dG9fcHRyOwordXNpbmcgc3Rk
OjptYWtlX3BhaXI7Cit1c2luZyBzdGQ6OnBhaXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
YXV0b19wdHI8SFRUUEhlYWRlck1hcERhdGE+IEhUVFBIZWFkZXJNYXA6OmNvcHlEYXRhKCkgY29u
c3QKK3sKKyAgICBhdXRvX3B0cjxIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YShuZXcgSFRUUEhlYWRl
ck1hcERhdGEoKSk7CisgICAgZGF0YS0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUoKSk7CisKKyAgICBI
VFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmRfaXQgPSBlbmQoKTsKKyAgICBmb3IgKEhU
VFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5kX2l0OyAr
K2l0KSB7CisgICAgICAgIGRhdGEtPmFwcGVuZChtYWtlX3BhaXIoaXQtPmZpcnN0LnN0cmluZygp
LmNvcHkoKSwgaXQtPnNlY29uZC5jb3B5KCkpKTsKKyAgICB9CisgICAgcmV0dXJuIGRhdGE7Cit9
CisKK3ZvaWQgSFRUUEhlYWRlck1hcDo6YWRvcHQoYXV0b19wdHI8SFRUUEhlYWRlck1hcERhdGE+
IGRhdGEpCit7CisgICAgY2xlYXIoKTsKKyAgICBIVFRQSGVhZGVyTWFwRGF0YTo6Y29uc3RfaXRl
cmF0b3IgZW5kX2l0ID0gZGF0YS0+ZW5kKCk7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwRGF0YTo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXRhLT5iZWdpbigpOyBpdCAhPSBlbmRfaXQ7ICsraXQpIHsK
KyAgICAgICAgc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZCk7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApp
bmRleCAzN2JhMzlhLi4xMjZjNTdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmgKQEAgLTI5LDExICsyOSwyMiBAQAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgog
I2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNo
PiBIVFRQSGVhZGVyTWFwOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4gPiBIVFRQSGVhZGVyTWFwRGF0YTsKKworICAgIGNsYXNzIEhUVFBIZWFkZXJNYXAgOiBw
dWJsaWMgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiB7Cisg
ICAgcHVibGljOgorICAgICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBm
b3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KKyAgICAgICAgc3RkOjphdXRvX3B0cjxIVFRQ
SGVhZGVyTWFwRGF0YT4gY29weURhdGEoKSBjb25zdDsKKworICAgICAgICB2b2lkIGFkb3B0KHN0
ZDo6YXV0b19wdHI8SFRUUEhlYWRlck1hcERhdGE+KTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26927</attachid>
            <date>2009-01-22 09:21:29 -0800</date>
            <delta_ts>2009-01-23 02:11:53 -0800</delta_ts>
            <desc>Part 4: Add ability for ResourceRequest/ResourceResponse to be transfered across threads.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>13402</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmRlMDQ0NC4uMWE0ODZlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAogMjAwOS0wMS0yMiAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIEFkZCBjb3B5L2Fkb3B0IGZvciBSZXNvdXJjZVJlc3BvbnNlKEJhc2Up
L1Jlc291cmNlUmVxdWVzdChCYXNlKSB0byBhbGxvdyB0aGUKKyAgICAgICAgZGF0YSB0byBiZSBw
YXNzZWQgYWNyb3NzIHRocmVhZHMuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4g
YmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpkZWVwQ29weSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3RCYXNlOjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNl
Ojpjb3B5RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisKKzIwMDktMDEtMjIg
IERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IEFsZXhleSBQcm9za3VyeWFrb3YuCiAKICAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBS
ZXF1ZXN0IHdvcmsgaW4gV29ya2VycwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAK
aW5kZXggMGQzMTg1Ni4uNWI1MTE5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTkwLDYgKzkxLDI4IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjb3B5KCkgY29u
c3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvcm1EYXRhKCp0aGlzKSk7CiB9CiAKK1Bhc3NS
ZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0Cit7CisgICAgUmVmUHRy
PEZvcm1EYXRhPiBmb3JtRGF0YShjcmVhdGUoKSk7CisKKyAgICBmb3JtRGF0YS0+bV9hbHdheXNT
dHJlYW0gPSBtX2Fsd2F5c1N0cmVhbTsKKworICAgIHNpemVfdCBuID0gbV9lbGVtZW50cy5zaXpl
KCk7CisgICAgZm9ybURhdGEtPm1fZWxlbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG4pOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgZSA9IG1fZWxlbWVudHNbaV07CisgICAgICAgIHN3aXRjaCAoZS5tX3R5cGUpIHsKKyAg
ICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGE6CisgICAgICAgICAgICBmb3JtRGF0YS0+
bV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGUubV9kYXRhKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlOgorICAg
ICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1f
ZmlsZW5hbWUsIGUubV9zaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmb3JtRGF0YS5yZWxlYXNlKCk7Cit9CisKIHZv
aWQgRm9ybURhdGE6OmFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgaWYgKG1fZWxlbWVudHMuaXNFbXB0eSgpIHx8IG1fZWxlbWVudHMubGFzdCgpLm1fdHlw
ZSAhPSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CmluZGV4IGNiOTFmYWIuLjU5OThiMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGNvcHkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWVwQ29weSgpIGNvbnN0
OwogICAgIH5Gb3JtRGF0YSgpOwogICAgIAogICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCmluZGV4IDM5ODRkOGUuLmZkY2U4ZmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw2ICsyNyw4IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGlubGluZSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlUmVxdWVz
dEJhc2U6OmFzUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QKQEAgLTMzLDYgKzM2LDU4IEBAIGlubGlu
ZSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlUmVxdWVzdEJhc2U6OmFzUmVzb3VyY2VS
ZXF1ZXN0KCkgY29uc3QKICAgICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVx
dWVzdCo+KHRoaXMpOwogfQogCithdXRvX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVx
dWVzdEJhc2U6OmFkb3B0KGF1dG9fcHRyPFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpCit7Cisg
ICAgYXV0b19wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KG5ldyBSZXNvdXJjZVJlcXVlc3Qo
KSk7CisgICAgcmVxdWVzdC0+c2V0VVJMKGRhdGEtPm1fdXJsKTsKKyAgICByZXF1ZXN0LT5zZXRD
YWNoZVBvbGljeShkYXRhLT5tX2NhY2hlUG9saWN5KTsKKyAgICByZXF1ZXN0LT5zZXRUaW1lb3V0
SW50ZXJ2YWwoZGF0YS0+bV90aW1lb3V0SW50ZXJ2YWwpOworICAgIHJlcXVlc3QtPnNldE1haW5E
b2N1bWVudFVSTChkYXRhLT5tX21haW5Eb2N1bWVudFVSTCk7CisgICAgcmVxdWVzdC0+c2V0SFRU
UE1ldGhvZChkYXRhLT5tX2h0dHBNZXRob2QpOworCisgICAgcmVxdWVzdC0+dXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7CisgICAgcmVxdWVzdC0+bV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KGF1dG9f
cHRyPEhUVFBIZWFkZXJNYXBEYXRhPihkYXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSkpOwor
CisgICAgc2l6ZV90IGVuY29kaW5nQ291bnQgPSBkYXRhLT5tX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKKyAgICBpZiAoZW5jb2RpbmdDb3Vu
dCA+IDApIHsKKyAgICAgICAgU3RyaW5nIGVuY29kaW5nMSA9IGRhdGEtPm1fcmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbMF07CisgICAgICAgIFN0cmluZyBl
bmNvZGluZzI7CisgICAgICAgIFN0cmluZyBlbmNvZGluZzM7CisgICAgICAgIGlmIChlbmNvZGlu
Z0NvdW50ID4gMSkgeworICAgICAgICAgICAgZW5jb2RpbmcyID0gZGF0YS0+bV9yZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsxXTsKKyAgICAgICAgICAgIGlm
IChlbmNvZGluZ0NvdW50ID4gMikKKyAgICAgICAgICAgICAgICBlbmNvZGluZzMgPSBkYXRhLT5t
X3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5WzJdOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChlbmNvZGluZ0NvdW50IDw9IDMpOworICAgICAgICByZXF1
ZXN0LT5zZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShl
bmNvZGluZzEsIGVuY29kaW5nMiwgZW5jb2RpbmczKTsKKyAgICB9CisgICAgcmVxdWVzdC0+c2V0
SFRUUEJvZHkoZGF0YS0+bV9odHRwQm9keSk7CisgICAgcmVxdWVzdC0+c2V0QWxsb3dIVFRQQ29v
a2llcyhkYXRhLT5tX2FsbG93SFRUUENvb2tpZXMpOworICAgIHJldHVybiByZXF1ZXN0OworfQor
CithdXRvX3B0cjxSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5
RGF0YSgpIGNvbnN0Cit7CisgICAgYXV0b19wdHI8UmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YShu
ZXcgUmVzb3VyY2VSZXF1ZXN0RGF0YSgpKTsKKyAgICBkYXRhLT5tX3VybCA9IHVybCgpLmNvcHko
KTsKKyAgICBkYXRhLT5tX2NhY2hlUG9saWN5ID0gY2FjaGVQb2xpY3koKTsKKyAgICBkYXRhLT5t
X3RpbWVvdXRJbnRlcnZhbCA9IHRpbWVvdXRJbnRlcnZhbCgpOworICAgIGRhdGEtPm1fbWFpbkRv
Y3VtZW50VVJMID0gbWFpbkRvY3VtZW50VVJMKCkuY29weSgpOworICAgIGRhdGEtPm1faHR0cE1l
dGhvZCA9IGh0dHBNZXRob2QoKS5jb3B5KCk7CisgICAgZGF0YS0+bV9odHRwSGVhZGVycy5hZG9w
dChodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKSk7CisKKyAgICBkYXRhLT5tX3Jlc3BvbnNl
Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnJlc2VydmVDYXBhY2l0eSht
X3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKSk7
CisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9IG1fcmVz
cG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuYmVnaW4oKTsKKyAg
ICAgICAgIGN1cnJlbnQgIT0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheS5lbmQoKTsKKyAgICAgICAgICsrY3VycmVudCkgeworICAgICAgICBkYXRhLT5t
X3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LmFwcGVuZChj
dXJyZW50LT5jb3B5KCkpOworICAgIH0KKyAgICBpZiAobV9odHRwQm9keSkKKyAgICAgICAgZGF0
YS0+bV9odHRwQm9keSA9IG1faHR0cEJvZHktPmRlZXBDb3B5KCk7CisgICAgZGF0YS0+bV9hbGxv
d0hUVFBDb29raWVzID0gbV9hbGxvd0hUVFBDb29raWVzOworICAgIHJldHVybiBkYXRhOworfQor
CiBib29sIFJlc291cmNlUmVxdWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdAogewogICAgIHVwZGF0
ZVJlc291cmNlUmVxdWVzdCgpOyAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCmluZGV4IDFjYmYyMWUuLjNjZjViNWMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2Ft
LndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDYgKzMyLDkgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5o
IgogCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgZW51bSBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSB7CkBA
IC00MywxMCArNDcsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNvbnN0IGludCB1bnNw
ZWNpZmllZFRpbWVvdXRJbnRlcnZhbCA9IElOVF9NQVg7CiAKICAgICBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CisgICAgc3RydWN0IFJlc291cmNlUmVxdWVzdERhdGE7CiAKICAgICAvLyBEbyBub3Qg
dXNlIHRoaXMgdHlwZSBkaXJlY3RseS4gIFVzZSBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KICAg
ICBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBzdGQ6OmF1dG9fcHRyPFJlc291cmNlUmVxdWVzdD4gYWRvcHQoc3RkOjphdXRvX3B0cjxSZXNv
dXJjZVJlcXVlc3REYXRhPiBkYXRhKTsKKworICAgICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUg
ZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KKyAgICAgICAgc3Rk
OjphdXRvX3B0cjxSZXNvdXJjZVJlcXVlc3REYXRhPiBjb3B5RGF0YSgpIGNvbnN0OworCiAgICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owog
CkBAIC0xNDIsNiArMTUyLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdEJh
c2UmKTsKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFJlc291cmNlUmVxdWVzdEJhc2UmIGEs
IGNvbnN0IFJlc291cmNlUmVxdWVzdEJhc2UmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCisg
ICAgc3RydWN0IFJlc291cmNlUmVxdWVzdERhdGEgeworICAgICAgICBLVVJMIG1fdXJsOworCisg
ICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IG1fY2FjaGVQb2xpY3k7CisgICAgICAg
IGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsKKyAgICAgICAgS1VSTCBtX21haW5Eb2N1bWVudFVS
TDsKKworICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOworICAgICAgICBPd25QdHI8SFRUUEhl
YWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVz
cG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CisgICAgICAgIFJl
ZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsKKyAgICAgICAgYm9vbCBtX2FsbG93SFRUUENvb2tp
ZXM7CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmVzb3Vy
Y2VSZXF1ZXN0QmFzZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmNwcAppbmRleCBmYjdmNWM3Li4xNTc5MWQ1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI5
LDU1IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAKK3VzaW5nIG5hbWVzcGFj
ZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcGFyc2VDYWNoZUhl
YWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgVmVjdG9yPHBhaXI8U3RyaW5nLCBTdHJpbmc+ID4m
IHJlc3VsdCk7CiBzdGF0aWMgdm9pZCBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZVZhbHVlcyhj
b25zdCBTdHJpbmcmIGRpcmVjdGl2ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOwogCithdXRv
X3B0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQoYXV0b19w
dHI8UmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpCit7CisgICAgYXV0b19wdHI8UmVzb3VyY2VS
ZXNwb25zZT4gcmVzcG9uc2UobmV3IFJlc291cmNlUmVzcG9uc2UoKSk7CisgICAgcmVzcG9uc2Ut
PnNldFVybChkYXRhLT5tX3VybCk7CisgICAgcmVzcG9uc2UtPnNldE1pbWVUeXBlKGRhdGEtPm1f
bWltZVR5cGUpOworICAgIHJlc3BvbnNlLT5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZGF0YS0+
bV9leHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgIHJlc3BvbnNlLT5zZXRUZXh0RW5jb2RpbmdO
YW1lKGRhdGEtPm1fdGV4dEVuY29kaW5nTmFtZSk7CisgICAgcmVzcG9uc2UtPnNldFN1Z2dlc3Rl
ZEZpbGVuYW1lKGRhdGEtPm1fc3VnZ2VzdGVkRmlsZW5hbWUpOworCisgICAgcmVzcG9uc2UtPnNl
dEhUVFBTdGF0dXNDb2RlKGRhdGEtPm1faHR0cFN0YXR1c0NvZGUpOworICAgIHJlc3BvbnNlLT5z
ZXRIVFRQU3RhdHVzVGV4dChkYXRhLT5tX2h0dHBTdGF0dXNUZXh0KTsKKworICAgIHJlc3BvbnNl
LT5sYXp5SW5pdCgpOworICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQoc3Rk
OjphdXRvX3B0cjxIVFRQSGVhZGVyTWFwRGF0YT4oZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNl
KCkpKTsKKworICAgIHJlc3BvbnNlLT5zZXRFeHBpcmF0aW9uRGF0ZShkYXRhLT5tX2V4cGlyYXRp
b25EYXRlKTsKKyAgICByZXNwb25zZS0+c2V0TGFzdE1vZGlmaWVkRGF0ZShkYXRhLT5tX2xhc3RN
b2RpZmllZERhdGUpOworICAgIHJlc3BvbnNlLT5tX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2wgPSBk
YXRhLT5tX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2w7CisgICAgcmVzcG9uc2UtPm1fY2FjaGVDb250
cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSA9IGRhdGEtPm1fY2FjaGVDb250cm9sQ29udGFpbnNN
dXN0UmV2YWxpZGF0ZTsKKyAgICByZXNwb25zZS0+bV9jYWNoZUNvbnRyb2xDb250YWluc05vQ2Fj
aGUgPSBkYXRhLT5tX2NhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZTsKKyAgICByZXR1cm4gcmVz
cG9uc2U7Cit9CisKK2F1dG9fcHRyPFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6Y29weURhdGEoKSBjb25zdAoreworICAgIGF1dG9fcHRyPFJlc291cmNlUmVzcG9u
c2VEYXRhPiBkYXRhKG5ldyBSZXNvdXJjZVJlc3BvbnNlRGF0YSgpKTsKKyAgICBkYXRhLT5tX3Vy
bCA9IHVybCgpLmNvcHkoKTsKKyAgICBkYXRhLT5tX21pbWVUeXBlID0gbWltZVR5cGUoKS5jb3B5
KCk7CisgICAgZGF0YS0+bV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRM
ZW5ndGgoKTsKKyAgICBkYXRhLT5tX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1l
KCkuY29weSgpOworICAgIGRhdGEtPm1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxl
bmFtZSgpLmNvcHkoKTsKKyAgICBkYXRhLT5tX2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0Nv
ZGUoKTsKKyAgICBkYXRhLT5tX2h0dHBTdGF0dXNUZXh0ID0gaHR0cFN0YXR1c1RleHQoKS5jb3B5
KCk7CisgICAgZGF0YS0+bV9odHRwSGVhZGVycy5hZG9wdChodHRwSGVhZGVyRmllbGRzKCkuY29w
eURhdGEoKSk7CisgICAgZGF0YS0+bV9leHBpcmF0aW9uRGF0ZSA9IGV4cGlyYXRpb25EYXRlKCk7
CisgICAgZGF0YS0+bV9sYXN0TW9kaWZpZWREYXRlID0gbGFzdE1vZGlmaWVkRGF0ZSgpOworICAg
IGRhdGEtPm1faGF2ZVBhcnNlZENhY2hlQ29udHJvbCA9IG1faGF2ZVBhcnNlZENhY2hlQ29udHJv
bDsKKyAgICBkYXRhLT5tX2NhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUgPSBtX2Nh
Y2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGU7CisgICAgZGF0YS0+bV9jYWNoZUNvbnRy
b2xDb250YWluc05vQ2FjaGUgPSBtX2NhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZTsKKyAgICBy
ZXR1cm4gZGF0YTsKK30KKwogYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkgY29u
c3QKIHsKICAgICBsYXp5SW5pdCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCAyMGRmOGFmLi45YTJiYzkzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMyArMzAs
MjEgQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogCisj
aW5jbHVkZSA8bWVtb3J5PgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CitzdHJ1Y3QgUmVzb3VyY2VSZXNwb25zZURhdGE7CiAKIC8vIERvIG5vdCB1c2Ug
dGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRoZSBjbGFzcyBSZXNwb25zZVJlc3BvbnNlIGluc3Rl
YWQKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
OjphdXRvX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiBhZG9wdChzdGQ6OmF1dG9fcHRyPFJlc291cmNl
UmVzcG9uc2VEYXRhPiBkYXRhKTsKKworICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1
aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgorICAgIHN0ZDo6YXV0b19wdHI8
UmVzb3VyY2VSZXNwb25zZURhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CisKICAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CiAgICAgYm9vbCBpc0hUVFAoKSBjb25zdDsK
IApAQCAtMTQ2LDYgKzE1NSwyMiBAQCBwcml2YXRlOgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJl
dHVybiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAorc3RydWN0IFJlc291cmNlUmVzcG9uc2VE
YXRhIHsKKyAgICBLVVJMIG1fdXJsOworICAgIFN0cmluZyBtX21pbWVUeXBlOworICAgIGxvbmcg
bG9uZyBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdO
YW1lOworICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVuYW1lOworICAgIGludCBtX2h0dHBTdGF0
dXNDb2RlOworICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OworICAgIE93blB0cjxIVFRQSGVh
ZGVyTWFwRGF0YT4gbV9odHRwSGVhZGVyczsKKyAgICB0aW1lX3QgbV9leHBpcmF0aW9uRGF0ZTsK
KyAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRlOworICAgIGJvb2wgbV9oYXZlUGFyc2VkQ2Fj
aGVDb250cm9sIDogMTsKKyAgICBib29sIG1fY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxp
ZGF0ZSA6IDE7CisgICAgYm9vbCBtX2NhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSA6IDE7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNl
QmFzZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26965</attachid>
            <date>2009-01-23 02:11:53 -0800</date>
            <delta_ts>2009-01-23 08:08:02 -0800</delta_ts>
            <desc>Part 4: Add ability for ResourceRequest/ResourceResponse to be transfered across threads.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>16475</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmRlMDQ0NC4uZTA0YTQ2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0wMS0yMyAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIEFkZCBjb3B5L2Fkb3B0IGZvciBSZXNvdXJjZVJlc3BvbnNlKEJhc2Up
L1Jlc291cmNlUmVxdWVzdChCYXNlKSB0byBhbGxvdyB0aGUKKyAgICAgICAgZGF0YSB0byBiZSBw
YXNzZWQgYWNyb3NzIHRocmVhZHMuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4g
YmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpkZWVwQ29weSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpj
b3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjphZG9wdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9w
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29weURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAw
OS0wMS0yMiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCmluZGV4IDBkMzE4NTYuLjNjYWMxNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTkwLDYgKzkxLDI4IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjb3B5
KCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvcm1EYXRhKCp0aGlzKSk7CiB9CiAK
K1Bhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0Cit7CisgICAg
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YShjcmVhdGUoKSk7CisKKyAgICBmb3JtRGF0YS0+bV9h
bHdheXNTdHJlYW0gPSBtX2Fsd2F5c1N0cmVhbTsKKworICAgIHNpemVfdCBuID0gbV9lbGVtZW50
cy5zaXplKCk7CisgICAgZm9ybURhdGEtPm1fZWxlbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG4pOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGNvbnN0IEZvcm1E
YXRhRWxlbWVudCYgZSA9IG1fZWxlbWVudHNbaV07CisgICAgICAgIHN3aXRjaCAoZS5tX3R5cGUp
IHsKKyAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGE6CisgICAgICAgICAgICBmb3Jt
RGF0YS0+bV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGUubV9kYXRhKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxl
OgorICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVu
dChlLm1fZmlsZW5hbWUsIGUubV9zaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmb3JtRGF0YS5yZWxlYXNlKCk7Cit9
CisKIHZvaWQgRm9ybURhdGE6OmFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNp
emUpCiB7CiAgICAgaWYgKG1fZWxlbWVudHMuaXNFbXB0eSgpIHx8IG1fZWxlbWVudHMubGFzdCgp
Lm1fdHlwZSAhPSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCmluZGV4IGNiOTFmYWIuLjU5OThiMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWVwQ29weSgp
IGNvbnN0OwogICAgIH5Gb3JtRGF0YSgpOwogICAgIAogICAgIHZvaWQgYXBwZW5kRGF0YShjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFk
ZXJNYXAuY3BwCmluZGV4IDRhZTMwMzUuLmFhOWM1ZmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zOCw5ICszOCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYXV0b19wdHI8SFRUUEhlYWRlck1hcERhdGE+
IEhUVFBIZWFkZXJNYXA6OmNvcHlEYXRhKCkgY29uc3QKK2F1dG9fcHRyPENyb3NzVGhyZWFkSFRU
UEhlYWRlck1hcERhdGE+IEhUVFBIZWFkZXJNYXA6OmNvcHlEYXRhKCkgY29uc3QKIHsKLSAgICBh
dXRvX3B0cjxIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YShuZXcgSFRUUEhlYWRlck1hcERhdGEoKSk7
CisgICAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YShuZXcgQ3Jv
c3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YSgpKTsKICAgICBkYXRhLT5yZXNlcnZlQ2FwYWNpdHko
c2l6ZSgpKTsKIAogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZF9pdCA9IGVu
ZCgpOwpAQCAtNTAsMTIgKzUwLDEzIEBAIGF1dG9fcHRyPEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQ
SGVhZGVyTWFwOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQg
SFRUUEhlYWRlck1hcDo6YWRvcHQoYXV0b19wdHI8SFRUUEhlYWRlck1hcERhdGE+IGRhdGEpCit2
b2lkIEhUVFBIZWFkZXJNYXA6OmFkb3B0KGF1dG9fcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IGRhdGEpCiB7CiAgICAgY2xlYXIoKTsKLSAgICBIVFRQSGVhZGVyTWFwRGF0YTo6Y29u
c3RfaXRlcmF0b3IgZW5kX2l0ID0gZGF0YS0+ZW5kKCk7Ci0gICAgZm9yIChIVFRQSGVhZGVyTWFw
RGF0YTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXRhLT5iZWdpbigpOyBpdCAhPSBlbmRfaXQ7ICsr
aXQpIHsKLSAgICAgICAgc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZCk7CisgICAgc2l6ZV90IGRh
dGFTaXplID0gZGF0YS0+c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBkYXRhU2l6ZTsgKytpbmRleCkgeworICAgICAgICBwYWlyPFN0cmluZywgU3RyaW5nPiYgaGVh
ZGVyID0gKCpkYXRhKVtpbmRleF07CisgICAgICAgIHNldChoZWFkZXIuZmlyc3QsIGhlYWRlci5z
ZWNvbmQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmgKaW5kZXggMTI2YzU3ZC4uNmRhMWI5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNiwxNCArMzcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiA+IEhUVFBI
ZWFkZXJNYXBEYXRhOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4gPiBDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhOwogCiAgICAgY2xhc3MgSFRUUEhlYWRl
ck1hcCA6IHB1YmxpYyBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hh
c2g+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1
aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgotICAgICAgICBzdGQ6OmF1dG9f
cHRyPEhUVFBIZWFkZXJNYXBEYXRhPiBjb3B5RGF0YSgpIGNvbnN0OworICAgICAgICBzdGQ6OmF1
dG9fcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CiAK
LSAgICAgICAgdm9pZCBhZG9wdChzdGQ6OmF1dG9fcHRyPEhUVFBIZWFkZXJNYXBEYXRhPik7Cisg
ICAgICAgIHZvaWQgYWRvcHQoc3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBE
YXRhPik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDM5ODRkOGUuLjE1
NDY5YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI3LDggQEAKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3RCYXNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdApA
QCAtMzMsNiArMzYsNTcgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAogICAgIHJldHVybiAqc3RhdGlj
X2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kj4odGhpcyk7CiB9CiAKK2F1dG9fcHRyPFJlc291
cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoYXV0b19wdHI8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKQoreworICAgIGF1dG9fcHRyPFJlc291cmNlUmVx
dWVzdD4gcmVxdWVzdChuZXcgUmVzb3VyY2VSZXF1ZXN0KCkpOworICAgIHJlcXVlc3QtPnNldFVS
TChkYXRhLT5tX3VybCk7CisgICAgcmVxdWVzdC0+c2V0Q2FjaGVQb2xpY3koZGF0YS0+bV9jYWNo
ZVBvbGljeSk7CisgICAgcmVxdWVzdC0+c2V0VGltZW91dEludGVydmFsKGRhdGEtPm1fdGltZW91
dEludGVydmFsKTsKKyAgICByZXF1ZXN0LT5zZXRNYWluRG9jdW1lbnRVUkwoZGF0YS0+bV9tYWlu
RG9jdW1lbnRVUkwpOworICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoZGF0YS0+bV9odHRwTWV0
aG9kKTsKKworICAgIHJlcXVlc3QtPnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgIHJlcXVl
c3QtPm1faHR0cEhlYWRlckZpZWxkcy5hZG9wdChhdXRvX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFk
ZXJNYXBEYXRhPihkYXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSkpOworCisgICAgc2l6ZV90
IGVuY29kaW5nQ291bnQgPSBkYXRhLT5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5LnNpemUoKTsKKyAgICBpZiAoZW5jb2RpbmdDb3VudCA+IDApIHsKKyAg
ICAgICAgU3RyaW5nIGVuY29kaW5nMSA9IGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbMF07CisgICAgICAgIFN0cmluZyBlbmNvZGluZzI7Cisg
ICAgICAgIFN0cmluZyBlbmNvZGluZzM7CisgICAgICAgIGlmIChlbmNvZGluZ0NvdW50ID4gMSkg
eworICAgICAgICAgICAgZW5jb2RpbmcyID0gZGF0YS0+bV9yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsxXTsKKyAgICAgICAgICAgIGlmIChlbmNvZGluZ0Nv
dW50ID4gMikKKyAgICAgICAgICAgICAgICBlbmNvZGluZzMgPSBkYXRhLT5tX3Jlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5WzJdOworICAgICAgICB9CisgICAg
ICAgIEFTU0VSVChlbmNvZGluZ0NvdW50IDw9IDMpOworICAgICAgICByZXF1ZXN0LT5zZXRSZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShlbmNvZGluZzEsIGVu
Y29kaW5nMiwgZW5jb2RpbmczKTsKKyAgICB9CisgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHkoZGF0
YS0+bV9odHRwQm9keSk7CisgICAgcmVxdWVzdC0+c2V0QWxsb3dIVFRQQ29va2llcyhkYXRhLT5t
X2FsbG93SFRUUENvb2tpZXMpOworICAgIHJldHVybiByZXF1ZXN0OworfQorCithdXRvX3B0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJlc291cmNlUmVxdWVzdEJhc2U6OmNvcHlE
YXRhKCkgY29uc3QKK3sKKyAgICBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+IGRhdGEobmV3IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YSgpKTsKKyAgICBkYXRh
LT5tX3VybCA9IHVybCgpLmNvcHkoKTsKKyAgICBkYXRhLT5tX2NhY2hlUG9saWN5ID0gY2FjaGVQ
b2xpY3koKTsKKyAgICBkYXRhLT5tX3RpbWVvdXRJbnRlcnZhbCA9IHRpbWVvdXRJbnRlcnZhbCgp
OworICAgIGRhdGEtPm1fbWFpbkRvY3VtZW50VVJMID0gbWFpbkRvY3VtZW50VVJMKCkuY29weSgp
OworICAgIGRhdGEtPm1faHR0cE1ldGhvZCA9IGh0dHBNZXRob2QoKS5jb3B5KCk7CisgICAgZGF0
YS0+bV9odHRwSGVhZGVycy5hZG9wdChodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKSk7CisK
KyAgICBkYXRhLT5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5LnJlc2VydmVDYXBhY2l0eShtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5LnNpemUoKSk7CisgICAgc2l6ZV90IGVuY29kaW5nQXJyYXlTaXplID0gbV9y
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGVuY29kaW5nQXJyYXlTaXplOyArK2lu
ZGV4KSB7CisgICAgICAgIGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkuYXBwZW5kKG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXlbaW5kZXhdLmNvcHkoKSk7CisgICAgfQorICAgIGlmIChtX2h0dHBCb2R5
KQorICAgICAgICBkYXRhLT5tX2h0dHBCb2R5ID0gbV9odHRwQm9keS0+ZGVlcENvcHkoKTsKKyAg
ICBkYXRhLT5tX2FsbG93SFRUUENvb2tpZXMgPSBtX2FsbG93SFRUUENvb2tpZXM7CisgICAgcmV0
dXJuIGRhdGE7Cit9CisKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0eSgpIGNvbnN0
CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggMWNiZjIxZS4uMGY2YmI0NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0x
LDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMSw2ICszMiw5IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJNYXAuaCIKIAorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGVudW0gUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3kgewpAQCAtNDMsMTAgKzQ3LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
b25zdCBpbnQgdW5zcGVjaWZpZWRUaW1lb3V0SW50ZXJ2YWwgPSBJTlRfTUFYOwogCiAgICAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OworICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE7CiAKICAgICAvLyBEbyBub3QgdXNlIHRoaXMgdHlwZSBkaXJlY3RseS4gIFVzZSBSZXNv
dXJjZVJlcXVlc3QgaW5zdGVhZC4KICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBzdGQ6OmF1dG9fcHRyPFJlc291cmNlUmVxdWVzdD4g
YWRvcHQoc3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKKwor
ICAgICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0
byBhbm90aGVyIHRocmVhZC4KKyAgICAgICAgc3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CisKICAgICAgICAgYm9vbCBpc051bGwo
KSBjb25zdDsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKQEAgLTE0Miw2ICsxNTIs
MjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNv
dXJjZVJlcXVlc3RCYXNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYpOwogICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0QmFzZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKKyAgICBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhIHsKKyAgICAgICAgS1VSTCBtX3VybDsKKworICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtX2NhY2hlUG9saWN5OworICAgICAgICBkb3Vi
bGUgbV90aW1lb3V0SW50ZXJ2YWw7CisgICAgICAgIEtVUkwgbV9tYWluRG9jdW1lbnRVUkw7CisK
KyAgICAgICAgU3RyaW5nIG1faHR0cE1ldGhvZDsKKyAgICAgICAgT3duUHRyPENyb3NzVGhyZWFk
SFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CisgICAg
ICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsKKyAgICAgICAgYm9vbCBtX2FsbG93SFRU
UENvb2tpZXM7CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
UmVzb3VyY2VSZXF1ZXN0QmFzZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBmYjdmNWM3Li5mODRlOTdkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwx
MSArMjksNTUgQEAKIAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKIAordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBwYXJzZUNh
Y2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmlu
Zz4gPiYgcmVzdWx0KTsKIHN0YXRpYyB2b2lkIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlVmFs
dWVzKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7CiAK
K2F1dG9fcHRyPFJlc291cmNlUmVzcG9uc2U+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9wdChh
dXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKQoreworICAgIGF1
dG9fcHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKG5ldyBSZXNvdXJjZVJlc3BvbnNlKCkp
OworICAgIHJlc3BvbnNlLT5zZXRVcmwoZGF0YS0+bV91cmwpOworICAgIHJlc3BvbnNlLT5zZXRN
aW1lVHlwZShkYXRhLT5tX21pbWVUeXBlKTsKKyAgICByZXNwb25zZS0+c2V0RXhwZWN0ZWRDb250
ZW50TGVuZ3RoKGRhdGEtPm1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKKyAgICByZXNwb25zZS0+
c2V0VGV4dEVuY29kaW5nTmFtZShkYXRhLT5tX3RleHRFbmNvZGluZ05hbWUpOworICAgIHJlc3Bv
bnNlLT5zZXRTdWdnZXN0ZWRGaWxlbmFtZShkYXRhLT5tX3N1Z2dlc3RlZEZpbGVuYW1lKTsKKwor
ICAgIHJlc3BvbnNlLT5zZXRIVFRQU3RhdHVzQ29kZShkYXRhLT5tX2h0dHBTdGF0dXNDb2RlKTsK
KyAgICByZXNwb25zZS0+c2V0SFRUUFN0YXR1c1RleHQoZGF0YS0+bV9odHRwU3RhdHVzVGV4dCk7
CisKKyAgICByZXNwb25zZS0+bGF6eUluaXQoKTsKKyAgICByZXNwb25zZS0+bV9odHRwSGVhZGVy
RmllbGRzLmFkb3B0KHN0ZDo6YXV0b19wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4o
ZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNlKCkpKTsKKworICAgIHJlc3BvbnNlLT5zZXRFeHBp
cmF0aW9uRGF0ZShkYXRhLT5tX2V4cGlyYXRpb25EYXRlKTsKKyAgICByZXNwb25zZS0+c2V0TGFz
dE1vZGlmaWVkRGF0ZShkYXRhLT5tX2xhc3RNb2RpZmllZERhdGUpOworICAgIHJlc3BvbnNlLT5t
X2hhdmVQYXJzZWRDYWNoZUNvbnRyb2wgPSBkYXRhLT5tX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2w7
CisgICAgcmVzcG9uc2UtPm1fY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSA9IGRh
dGEtPm1fY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZTsKKyAgICByZXNwb25zZS0+
bV9jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUgPSBkYXRhLT5tX2NhY2hlQ29udHJvbENvbnRh
aW5zTm9DYWNoZTsKKyAgICByZXR1cm4gcmVzcG9uc2U7Cit9CisKK2F1dG9fcHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSgp
IGNvbnN0Cit7CisgICAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4g
ZGF0YShuZXcgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSgpKTsKKyAgICBkYXRhLT5t
X3VybCA9IHVybCgpLmNvcHkoKTsKKyAgICBkYXRhLT5tX21pbWVUeXBlID0gbWltZVR5cGUoKS5j
b3B5KCk7CisgICAgZGF0YS0+bV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRl
bnRMZW5ndGgoKTsKKyAgICBkYXRhLT5tX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdO
YW1lKCkuY29weSgpOworICAgIGRhdGEtPm1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRG
aWxlbmFtZSgpLmNvcHkoKTsKKyAgICBkYXRhLT5tX2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1
c0NvZGUoKTsKKyAgICBkYXRhLT5tX2h0dHBTdGF0dXNUZXh0ID0gaHR0cFN0YXR1c1RleHQoKS5j
b3B5KCk7CisgICAgZGF0YS0+bV9odHRwSGVhZGVycy5hZG9wdChodHRwSGVhZGVyRmllbGRzKCku
Y29weURhdGEoKSk7CisgICAgZGF0YS0+bV9leHBpcmF0aW9uRGF0ZSA9IGV4cGlyYXRpb25EYXRl
KCk7CisgICAgZGF0YS0+bV9sYXN0TW9kaWZpZWREYXRlID0gbGFzdE1vZGlmaWVkRGF0ZSgpOwor
ICAgIGRhdGEtPm1faGF2ZVBhcnNlZENhY2hlQ29udHJvbCA9IG1faGF2ZVBhcnNlZENhY2hlQ29u
dHJvbDsKKyAgICBkYXRhLT5tX2NhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUgPSBt
X2NhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGU7CisgICAgZGF0YS0+bV9jYWNoZUNv
bnRyb2xDb250YWluc05vQ2FjaGUgPSBtX2NhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZTsKKyAg
ICByZXR1cm4gZGF0YTsKK30KKwogYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkg
Y29uc3QKIHsKICAgICBsYXp5SW5pdCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCAyMGRmOGFmLi5hYmM3NTZlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEzICsz
MCwyMSBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAK
KyNpbmNsdWRlIDxtZW1vcnk+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKK3N0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhOwogCiAv
LyBEbyBub3QgdXNlIHRoaXMgY2xhc3MgZGlyZWN0bHksIHVzZSB0aGUgY2xhc3MgUmVzcG9uc2VS
ZXNwb25zZSBpbnN0ZWFkCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiBwdWJsaWM6Cisg
ICAgc3RhdGljIHN0ZDo6YXV0b19wdHI8UmVzb3VyY2VSZXNwb25zZT4gYWRvcHQoc3RkOjphdXRv
X3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPik7CisKKyAgICAvLyBHZXRzIGEg
Y29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4K
KyAgICBzdGQ6OmF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGNvcHlE
YXRhKCkgY29uc3Q7CisKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxs
OyB9CiAgICAgYm9vbCBpc0hUVFAoKSBjb25zdDsKIApAQCAtMTQ2LDYgKzE1NSwyMiBAQCBwcml2
YXRlOgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7
IH0KIAorc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgeworICAgIEtVUkwg
bV91cmw7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7CisgICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOworICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAgU3RyaW5n
IG1fc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CisgICAgU3Ry
aW5nIG1faHR0cFN0YXR1c1RleHQ7CisgICAgT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IG1faHR0cEhlYWRlcnM7CisgICAgdGltZV90IG1fZXhwaXJhdGlvbkRhdGU7CisgICAg
dGltZV90IG1fbGFzdE1vZGlmaWVkRGF0ZTsKKyAgICBib29sIG1faGF2ZVBhcnNlZENhY2hlQ29u
dHJvbCA6IDE7CisgICAgYm9vbCBtX2NhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUg
OiAxOworICAgIGJvb2wgbV9jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUgOiAxOworfTsKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmVzb3VyY2VSZXNwb25zZUJhc2Vf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26981</attachid>
            <date>2009-01-23 13:53:53 -0800</date>
            <delta_ts>2009-01-27 02:29:07 -0800</delta_ts>
            <desc>Part 5: Add a Worker implementation for the async portion of ThreadableLoader.</desc>
            <filename>bug22720.txt</filename>
            <type>text/plain</type>
            <size>43415</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmVlODNhNS4uN2UwODUxOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAwOS0wMS0yMyAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIEVuYWJsZSBUaHJlYWRhYmxlTG9hZGVyIGZvciB3b3JrZXJzLiAgTm93
LCB3aGVuIHRoZSB4aHIgYmluZGluZ3MgYXJlCisgICAgICAgIGV4cG9zZWQgdG8gd29ya2Vycywg
YXN5bmMgeGhyIHdpbGwgd29yay4KKworICAgICAgICBBZGQgbW9yZSB3cmFwcGVycyBmb3IgdGFz
ayBjYWxsYmFja3MgYW5kIGFkZCBhbiBhZGFwdGVyIHRvIGNvcHkgc3RyaW5ncworICAgICAgICBm
b3IgdGhhdCBhciB0byBiZSB1c2VkIG9uIGFub3RoZXIgdGhyZWFkLgorCisgICAgICAgIE5vIG9i
c2VydmFibGUgY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS5z
Y29uczoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNv
dXJjZXMuYmtsOgorICAgICAgICAqIGRvbS9HZW5lcmljV29ya2VyVGFzay5oOgorICAgICAgICAo
V2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2tCYXNlOjpjYW5QZXJmb3JtVGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljV29ya2VyVGFzazE6OkdlbmVyaWNXb3JrZXJUYXNrMSk6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljV29ya2VyVGFzazE6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkdlbmVyaWNXb3JrZXJUYXNrMjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNX
b3JrZXJUYXNrMjo6R2VuZXJpY1dvcmtlclRhc2syKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNXb3JrZXJUYXNrMjo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dv
cmtlclRhc2szOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2sz
OjpHZW5lcmljV29ya2VyVGFzazMpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRh
c2szOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazQ6OkdlbmVyaWNX
b3JrZXJUYXNrNCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazQ6OnBlcmZv
cm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrNTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrNTo6R2VuZXJpY1dvcmtlclRhc2s1
KToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrNTo6cGVyZm9ybVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2s2OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2s2OjpHZW5lcmljV29ya2VyVGFzazYpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRBZGFwdGVyOjphZGFwdCk6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2FsbGJhY2tUYXNrKToKKyAgICAgICAgKiBk
b20vV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojph
ZGRNZXNzYWdlKToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAg
ICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpkb0ZpbmFsRGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVMb2FkZXI6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Om1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6On5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpjYW5jZWxMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OnRlbGxD
bGllbnREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZEZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6ZGlkR2V0Q2FuY2VsbGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRHZXRDYW5jZWxs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxs
YXRpb24pOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OnJlZlRocmVhZGFibGVMb2Fk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6ZGVyZWZUaHJl
YWRhYmxlTG9hZGVyKToKKwogMjAwOS0wMS0yMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eW9wLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMmIyZTMyMi4uMzU2NDYy
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMDg5LDYgKzEwODksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyLmggXAogCVdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQu
aCBcCisJV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgXAorCVdlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBcCiAJV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlLmggXAogCVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwIFwKIAlXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOThh
Y2YxZS4uZTM4YTJlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC04MDcsNiArODA3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgbG9h
ZGVyL1RleHREb2N1bWVudC5jcHAgXAogICAgIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNw
cCBcCiAgICAgbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIFwKKyAgICBsb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAgXAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5jcHAgXAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgXCAgICAKICAgICBwYWdl
L0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBcICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnNjb25zIGIvV2ViQ29yZS9XZWJDb3JlLnNjb25zCmluZGV4IGJmNzc0ZGEuLjA0Y2QwM2MgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5zY29ucworKysgYi9XZWJDb3JlL1dlYkNvcmUuc2Nv
bnMKQEAgLTM1NSw2ICszNTUsNyBAQCBzb3VyY2VzWydsb2FkZXInXSA9IFsKICAgICAnbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuY3BwJywKICAgICAnbG9hZGVyL1RocmVhZGFibGVMb2FkZXIu
Y3BwJywKICAgICAnbG9hZGVyL1VzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCcsCisgICAgJ2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCcsCiBdCiBzb3VyY2VzWydwYWdlJ10gPSBbCiAg
ICAgJ3BhZ2UvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAnLApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZWIwNTMzNC4uMGJlMDQzOCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTM1LDYgKzI5MzUsMTQgQEAKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGxvYWRlclxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iaWNvbiINCiAJCQkJPg0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjA4NTdkNy4uMDk1
MjBlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
NCw2ICsxMzQsOCBAQAogCQkwQjkwNTYxQjBGMjU3OEJGMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5
MDU2MTcwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwQjkwNTYxQzBGMjU3OEJGMDA5NUZGNkEgLyog
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEI5MDU2MTgwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwQjkw
NTYxRTBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYxRDBGMjU3RTkzMDA5NUZG
NkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgKi87IH07CisJCTBCOTA1NkY4MEYyNjg1RjMwMDk1
RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NkY2MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLzsgfTsKKwkJMEI5MDU2RjkwRjI2ODVGMzAwOTVGRjZB
IC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NkY3MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJ
MEJBNUQzODYwRjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkE1RDM4NTBGMjQwRkI0MDA5
Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLzsgfTsKIAkJMEY1NjAyOEYwRTRCNzY1ODAw
NjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVl
LmggKi87IH07CiAJCTBGNTYwMjkwMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTYwMjhF
MEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmNwcCAqLzsgfTsKQEAgLTQ5NzAsNiAr
NDk3Miw4IEBACiAJCTBCOTA1NjE3MEYyNTc4QkUwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZGFibGVMb2FkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI5MDU2MTgwRjI1NzhCRTAwOTVGRjZBIC8q
IFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwQjkwNTYxRDBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRhYmxlTG9hZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEI5MDU2RjYwRjI2ODVGMzAwOTVGRjZBIC8qIFdv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBCOTA1NkY3MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJBNUQzODUwRjI0MEZCNDAwOUI4
NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyaWNXb3JrZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hcnF1ZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1NjAyOEUwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWFycXVlZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU3Niw2ICsxMzU4MCw4IEBACiAJCQkJMEI5
MDU2MTgwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCAqLywKIAkJ
CQk3Mjg0QUREQjBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwICov
LAogCQkJCTcyODRBRERDMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5o
ICovLAorCQkJCTBCOTA1NkY2MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCAqLywKKwkJCQkwQjkwNTZGNzBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5oICovLAogCQkJCUJDQjE2QzEzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
Y3BwICovLAogCQkJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLywKIAkJ
CSk7CkBAIC0xNjU2NCw2ICsxNjU3MCw3IEBACiAJCQkJRTFBNjQzRjIwRUMwOTcyNTAwNzc5NjY4
IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMDgyMjRC
MEVDMzE1M0EwMEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUMy
QzQyNDBFQUNFMEJDMDA3RTYxRkIgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50
c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgyMDIwOUQxNTA4
RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQzQ3MEM0
RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODU0
Miw2ICsxODU0OSw3IEBACiAJCQkJRTFBNjQzRkQwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEwODIyNEYwRUMzMTU2NzAw
RTkzOTUzIC8qIFdvcmtlclRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDMkM0MjkwRUFD
RTBFMDAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwQjkw
NTZGODBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzMwOUUyMzA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRzSW5E
dW1teVNwYW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQw
MEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyQzQ2MEM0
RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNl
cy5ia2wKaW5kZXggMmYzMTI3MC4uOTBkMzNiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTY1NSw2ICs2
NTUsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1
aWxkIFdlYkNvcmUuCiAgICAgICAgIGxvYWRlci9UZXh0RG9jdW1lbnQuY3BwCiAgICAgICAgIGxv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAogICAgICAgICBsb2FkZXIvVGhyZWFkYWJsZUxv
YWRlci5jcHAKKyAgICAgICAgbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCiAgICAg
ICAgIGxvYWRlci9sb2FkZXIuY3BwCiAgICAgPC9zZXQ+CiAgICAgCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9HZW5lcmljV29ya2VyVGFzay5oIGIvV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRh
c2suaAppbmRleCA3OWZkMTQ4Li4yMjYyY2ExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9HZW5l
cmljV29ya2VyVGFzay5oCisrKyBiL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0z
NSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJNZXNzYWdpbmdQcm94eS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ2LDI1ICs0NywyMDAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgY2Fu
UGVyZm9ybVRhc2soKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIW1fbWVzc2FnaW5n
UHJveHktPmFza2VkVG9UZXJtaW5hdGUoKTsKKyAgICAgICAgICAgIHJldHVybiAhbV9tZXNzYWdp
bmdQcm94eSB8fCAhbV9tZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpOwogICAgICAg
ICB9CiAKICAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CiAg
ICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+CisgICAgY2xh
c3MgR2VuZXJpY1dvcmtlclRhc2sxIDogcHVibGljIEdlbmVyaWNXb3JrZXJUYXNrQmFzZSB7Cisg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBNUDEpOworICAgICAgICB0eXBlZGVmIEdlbmVyaWNXb3JrZXJUYXNrMTxQMSwg
TVAxPiBHZW5lcmljV29ya2VyVGFzazsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5l
cmljV29ya2VyVGFzaz4gY3JlYXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94
eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBhcmFtZXRlcjEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY1dvcmtlclRhc2sobWVzc2FnaW5nUHJveHksIG1l
dGhvZCwgcGFyYW1ldGVyMSkpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBH
ZW5lcmljV29ya2VyVGFzazEoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBN
ZXRob2QgbWV0aG9kLCBQMSYgcGFyYW1ldGVyMSkKKyAgICAgICAgICAgIDogR2VuZXJpY1dvcmtl
clRhc2tCYXNlKG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICAgICAgLCBtX21ldGhvZChtZXRob2Qp
CisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjYW5QZXJmb3Jt
VGFzaygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICgqbV9tZXRob2Qp
KGNvbnRleHQsIG1fcGFyYW1ldGVyMSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICAgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgIH07CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgTVAyPgorICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrMiA6IHB1YmxpYyBHZW5lcmlj
V29ya2VyVGFza0Jhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqTWV0
aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIpOworICAgICAgICB0eXBlZGVm
IEdlbmVyaWNXb3JrZXJUYXNrMjxQMSwgTVAxLCBQMiwgTVAyPiBHZW5lcmljV29ya2VyVGFzazsK
KworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljV29ya2VyVGFzaz4gY3JlYXRlKFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBh
cmFtZXRlcjEsIFAyJiBwYXJhbWV0ZXIyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEdlbmVyaWNXb3JrZXJUYXNrKG1lc3NhZ2luZ1Byb3h5LCBtZXRob2QsIHBh
cmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgR2VuZXJpY1dvcmtlclRhc2syKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94
eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBhcmFtZXRlcjEsIFAyJiBwYXJhbWV0ZXIyKQorICAgICAg
ICAgICAgOiBHZW5lcmljV29ya2VyVGFza0Jhc2UobWVzc2FnaW5nUHJveHkpCisgICAgICAgICAg
ICAsIG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRl
cjEpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJhbWV0ZXIyKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjYW5QZXJm
b3JtVGFzaygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICgqbV9tZXRo
b2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyKTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgTWV0aG9kIG1fbWV0aG9kOworICAgICAgICBQMSBtX3BhcmFt
ZXRlcjE7CisgICAgICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICB9OworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4KKyAgICBjbGFzcyBHZW5lcmljV29ya2VyVGFzazMgOiBw
dWJsaWMgR2VuZXJpY1dvcmtlclRhc2tCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVk
ZWYgdm9pZCAoKk1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMp
OworICAgICAgICB0eXBlZGVmIEdlbmVyaWNXb3JrZXJUYXNrMzxQMSwgTVAxLCBQMiwgTVAyLCBQ
MywgTVAzPiBHZW5lcmljV29ya2VyVGFzazsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
ZW5lcmljV29ya2VyVGFzaz4gY3JlYXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQ
cm94eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBhcmFtZXRlcjEsIFAyJiBwYXJhbWV0ZXIyLCBQMyYg
cGFyYW1ldGVyMykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
ZW5lcmljV29ya2VyVGFzayhtZXNzYWdpbmdQcm94eSwgbWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IEdlbmVyaWNXb3JrZXJUYXNrMyhXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHks
IE1ldGhvZCBtZXRob2QsIFAxJiBwYXJhbWV0ZXIxLCBQMiYgcGFyYW1ldGVyMiwgUDMmIHBhcmFt
ZXRlcjMpCisgICAgICAgICAgICA6IEdlbmVyaWNXb3JrZXJUYXNrQmFzZShtZXNzYWdpbmdQcm94
eSkKKyAgICAgICAgICAgICwgbV9tZXRob2QobWV0aG9kKQorICAgICAgICAgICAgLCBtX3BhcmFt
ZXRlcjEocGFyYW1ldGVyMSkKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIp
CisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjYW5QZXJmb3Jt
VGFzaygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICgqbV9tZXRob2Qp
KGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMpOworICAg
ICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgICAg
IFAxIG1fcGFyYW1ldGVyMTsKKyAgICAgICAgUDIgbV9wYXJhbWV0ZXIyOworICAgICAgICBQMyBt
X3BhcmFtZXRlcjM7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBN
UDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+CisgICAgY2xhc3MgR2VuZXJpY1dvcmtlclRh
c2s0IDogcHVibGljIEdlbmVyaWNXb3JrZXJUYXNrQmFzZSB7CisgICAgcHVibGljOgorICAgICAg
ICB0eXBlZGVmIHZvaWQgKCpNZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1Q
MiwgTVAzLCBNUDQpOworICAgICAgICB0eXBlZGVmIEdlbmVyaWNXb3JrZXJUYXNrNDxQMSwgTVAx
LCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0PiBHZW5lcmljV29ya2VyVGFzazsKKworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljV29ya2VyVGFzaz4gY3JlYXRlKFdvcmtlck1lc3Nh
Z2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBhcmFtZXRlcjEs
IFAyJiBwYXJhbWV0ZXIyLCBQMyYgcGFyYW1ldGVyMywgUDQmIHBhcmFtZXRlcjQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY1dvcmtlclRhc2sobWVz
c2FnaW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywg
cGFyYW1ldGVyNCkpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBHZW5lcmlj
V29ya2VyVGFzazQoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXRob2Qg
bWV0aG9kLCBQMSYgcGFyYW1ldGVyMSwgUDImIHBhcmFtZXRlcjIsIFAzJiBwYXJhbWV0ZXIzLCBQ
NCYgcGFyYW1ldGVyNCkKKyAgICAgICAgICAgIDogR2VuZXJpY1dvcmtlclRhc2tCYXNlKG1lc3Nh
Z2luZ1Byb3h5KQorICAgICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCisgICAgICAgICAgICAs
IG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFy
YW1ldGVyMikKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAg
ICAgICAsIG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjYW5QZXJmb3JtVGFzaygpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQs
IG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE1ldGhvZCBtX21ldGhvZDsKKyAg
ICAgICAgUDEgbV9wYXJhbWV0ZXIxOworICAgICAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgICAg
IFAzIG1fcGFyYW1ldGVyMzsKKyAgICAgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgIH07CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUg
TVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1PgorICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJU
YXNrNSA6IHB1YmxpYyBHZW5lcmljV29ya2VyVGFza0Jhc2UgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBN
UDIsIE1QMywgTVA0LCBNUDUpOworICAgICAgICB0eXBlZGVmIEdlbmVyaWNXb3JrZXJUYXNrNTxQ
MSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1PiBHZW5lcmljV29ya2Vy
VGFzazsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljV29ya2VyVGFzaz4gY3Jl
YXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwg
UDEmIHBhcmFtZXRlcjEsIFAyJiBwYXJhbWV0ZXIyLCBQMyYgcGFyYW1ldGVyMywgUDQmIHBhcmFt
ZXRlcjQsIFA1JiBwYXJhbWV0ZXI1KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEdlbmVyaWNXb3JrZXJUYXNrKG1lc3NhZ2luZ1Byb3h5LCBtZXRob2QsIHBhcmFt
ZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUpKTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1dvcmtlclRhc2s1KFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwgUDEmIHBh
cmFtZXRlcjEsIFAyJiBwYXJhbWV0ZXIyLCBQMyYgcGFyYW1ldGVyMywgUDQmIHBhcmFtZXRlcjQs
IFA1JiBwYXJhbWV0ZXI1KQorICAgICAgICAgICAgOiBHZW5lcmljV29ya2VyVGFza0Jhc2UobWVz
c2FnaW5nUHJveHkpCisgICAgICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgICAg
ICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMihw
YXJhbWV0ZXIyKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAg
ICAgICAgICwgbV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICAgICAsIG1fcGFyYW1l
dGVyNShwYXJhbWV0ZXI1KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFjYW5QZXJmb3JtVGFzaygpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwg
bV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCwgbV9wYXJhbWV0ZXI1KTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWV0aG9kIG1fbWV0aG9kOworICAg
ICAgICBQMSBtX3BhcmFtZXRlcjE7CisgICAgICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICAgICAg
UDMgbV9wYXJhbWV0ZXIzOworICAgICAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgICAgIFA1IG1f
cGFyYW1ldGVyNTsKKyAgICB9OworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1l
IE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1Q
MywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwg
dHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KICAgICBjbGFzcyBHZW5lcmljV29ya2VyVGFzazYg
OiBwdWJsaWMgR2VuZXJpY1dvcmtlclRhc2tCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgdm9pZCAoKk1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBN
UDMsIE1QNCwgTVA1LCBNUDYpOwogICAgICAgICB0eXBlZGVmIEdlbmVyaWNXb3JrZXJUYXNrNjxQ
MSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2PiBHZW5l
cmljV29ya2VyVGFzazsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljV29ya2Vy
VGFzaz4gY3JlYXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9k
IG1ldGhvZCwgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25z
dCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0
ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2Vu
ZXJpY1dvcmtlclRhc2s+IGNyZWF0ZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHksIE1ldGhvZCBtZXRob2QsIFAxJiBwYXJhbWV0ZXIxLCBQMiYgcGFyYW1ldGVyMiwgUDMmIHBh
cmFtZXRlcjMsIFA0JiBwYXJhbWV0ZXI0LCBQNSYgcGFyYW1ldGVyNSwgUDYmIHBhcmFtZXRlcjYp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY1dvcmtl
clRhc2sobWVzc2FnaW5nUHJveHksIG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFy
YW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNikpOwogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBHZW5lcmljV29ya2VyVGFzazYoV29ya2VyTWVzc2Fn
aW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXRob2QgbWV0aG9kLCBjb25zdCBQMSYgcGFyYW1l
dGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQ
NCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2
KQorICAgICAgICBHZW5lcmljV29ya2VyVGFzazYoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3Nh
Z2luZ1Byb3h5LCBNZXRob2QgbWV0aG9kLCBQMSYgcGFyYW1ldGVyMSwgUDImIHBhcmFtZXRlcjIs
IFAzJiBwYXJhbWV0ZXIzLCBQNCYgcGFyYW1ldGVyNCwgUDUmIHBhcmFtZXRlcjUsIFA2JiBwYXJh
bWV0ZXI2KQogICAgICAgICAgICAgOiBHZW5lcmljV29ya2VyVGFza0Jhc2UobWVzc2FnaW5nUHJv
eHkpCiAgICAgICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgICAgICwgbV9wYXJh
bWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC05MywxMyArMjY5LDcyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgUDYgbV9wYXJhbWV0ZXI2OwogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRBZGFwdGVyIHsgc3RhdGljIFQmIGFkYXB0KFQmIHBh
cmFtZXRlcikgeyByZXR1cm4gcGFyYW1ldGVyOyB9IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q3Jvc3NUaHJlYWRBZGFwdGVyPFN0cmluZz4geyBzdGF0aWMgU3RyaW5nIGFkYXB0KFN0cmluZyYg
cGFyYW1ldGVyKSB7IHJldHVybiBwYXJhbWV0ZXIuY29weSgpOyB9IH07CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxPgorICAgIFBhc3NSZWZQdHI8R2VuZXJpY1dvcmtl
clRhc2sxPFAxLCBNUDE+ID4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorICAgICAgICBXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksCisgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEpLAorICAgICAgICBQMSYgcGFyYW1ldGVyMSkKKyAgICB7
CisgICAgICAgIHJldHVybiBHZW5lcmljV29ya2VyVGFzazE8UDEsIE1QMT46OmNyZWF0ZShtZXNz
YWdpbmdQcm94eSwgbWV0aG9kLCBDcm9zc1RocmVhZEFkYXB0ZXI8UDE+OjphZGFwdChwYXJhbWV0
ZXIxKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KKyAgICBQYXNzUmVmUHRyPEdlbmVyaWNXb3JrZXJU
YXNrMjxQMSwgTVAxLCBQMiwgTVAyPiA+IGNyZWF0ZUNhbGxiYWNrVGFzaygKKyAgICAgICAgV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LAorICAgICAgICB2b2lkICgqbWV0aG9k
KShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIpLAorICAgICAgICBQMSYgcGFyYW1l
dGVyMSwgUDImIHBhcmFtZXRlcjIpCisgICAgeworICAgICAgICByZXR1cm4gR2VuZXJpY1dvcmtl
clRhc2syPFAxLCBNUDEsIFAyLCBNUDI+OjpjcmVhdGUobWVzc2FnaW5nUHJveHksIG1ldGhvZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMT46OmFkYXB0KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVh
ZEFkYXB0ZXI8UDI+OjphZGFwdChwYXJhbWV0ZXIyKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlw
ZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4KKyAgICBQYXNzUmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNr
MzxQMSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzPiA+IGNyZWF0ZUNhbGxiYWNrVGFzaygKKyAgICAg
ICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LAorICAgICAgICB2b2lkICgq
bWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMyksCisgICAgICAg
IFAxJiBwYXJhbWV0ZXIxLCBQMiYgcGFyYW1ldGVyMiwgUDMmIHBhcmFtZXRlcjMpCisgICAgewor
ICAgICAgICByZXR1cm4gR2VuZXJpY1dvcmtlclRhc2szPFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBN
UDM+OjpjcmVhdGUobWVzc2FnaW5nUHJveHksIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhy
ZWFkQWRhcHRlcjxQMT46OmFkYXB0KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZEFkYXB0ZXI8UDI+
OjphZGFwdChwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMz46
OmFkYXB0KHBhcmFtZXRlcjMpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlw
ZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0PgorICAgIFBhc3NSZWZQdHI8R2Vu
ZXJpY1dvcmtlclRhc2s0PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQ+ID4gY3Jl
YXRlQ2FsbGJhY2tUYXNrKAorICAgICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5n
UHJveHksCisgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBN
UDEsIE1QMiwgTVAzLCBNUDQpLAorICAgICAgICBQMSYgcGFyYW1ldGVyMSwgUDImIHBhcmFtZXRl
cjIsIFAzJiBwYXJhbWV0ZXIzLCBQNCYgcGFyYW1ldGVyNCkKKyAgICB7CisgICAgICAgIHJldHVy
biBHZW5lcmljV29ya2VyVGFzazQ8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QND46
OmNyZWF0ZShtZXNzYWdpbmdQcm94eSwgbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jv
c3NUaHJlYWRBZGFwdGVyPFAxPjo6YWRhcHQocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQWRhcHRl
cjxQMj46OmFkYXB0KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJl
YWRBZGFwdGVyPFAzPjo6YWRhcHQocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQWRhcHRlcjxQND46
OmFkYXB0KHBhcmFtZXRlcjQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlw
ZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5h
bWUgTVA1PgorICAgIFBhc3NSZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s1PFAxLCBNUDEsIFAyLCBN
UDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDU+ID4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorICAg
ICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksCisgICAgICAgIHZvaWQg
KCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1Q
NSksCisgICAgICAgIFAxJiBwYXJhbWV0ZXIxLCBQMiYgcGFyYW1ldGVyMiwgUDMmIHBhcmFtZXRl
cjMsIFA0JiBwYXJhbWV0ZXI0LCBQNSYgcGFyYW1ldGVyNSkKKyAgICB7CisgICAgICAgIHJldHVy
biBHZW5lcmljV29ya2VyVGFzazU8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwg
UDUsIE1QNT46OmNyZWF0ZShtZXNzYWdpbmdQcm94eSwgbWV0aG9kLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAxPjo6YWRhcHQocGFyYW1ldGVyMSks
IENyb3NzVGhyZWFkQWRhcHRlcjxQMj46OmFkYXB0KHBhcmFtZXRlcjIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAzPjo6YWRhcHQocGFyYW1ldGVy
MyksIENyb3NzVGhyZWFkQWRhcHRlcjxQND46OmFkYXB0KHBhcmFtZXRlcjQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRBZGFwdGVyPFA1Pjo6YWRhcHQocGFyYW1l
dGVyNSkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEs
IHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5
cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVu
YW1lIFA2LCB0eXBlbmFtZSBNUDY+CiAgICAgUGFzc1JlZlB0cjxHZW5lcmljV29ya2VyVGFzazY8
UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNj4gPiBj
cmVhdGVDYWxsYmFja1Rhc2soCiAgICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdp
bmdQcm94eSwKICAgICAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYpLAotICAgICAgICBjb25zdCBQMSYgcGFyYW1l
dGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQ
NCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2
KQorICAgICAgICBQMSYgcGFyYW1ldGVyMSwgUDImIHBhcmFtZXRlcjIsIFAzJiBwYXJhbWV0ZXIz
LCBQNCYgcGFyYW1ldGVyNCwgUDUmIHBhcmFtZXRlcjUsIFA2JiBwYXJhbWV0ZXI2KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEdlbmVyaWNXb3JrZXJUYXNrNjxQMSwgTVAxLCBQMiwgTVAyLCBQMywg
TVAzLCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2Pjo6Y3JlYXRlKG1lc3NhZ2luZ1Byb3h5LCBt
ZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBh
cmFtZXRlcjUsIHBhcmFtZXRlcjYpOworICAgICAgICByZXR1cm4gR2VuZXJpY1dvcmtlclRhc2s2
PFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+Ojpj
cmVhdGUobWVzc2FnaW5nUHJveHksIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMT46OmFkYXB0KHBhcmFtZXRlcjEpLCBD
cm9zc1RocmVhZEFkYXB0ZXI8UDI+OjphZGFwdChwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMz46OmFkYXB0KHBh
cmFtZXRlcjMpLCBDcm9zc1RocmVhZEFkYXB0ZXI8UDQ+OjphZGFwdChwYXJhbWV0ZXI0KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQ
NT46OmFkYXB0KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZEFkYXB0ZXI8UDY+OjphZGFwdChwYXJh
bWV0ZXI2KSk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQu
Y3BwCmluZGV4IGZlNDY0M2UuLjQ3ODEyYzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC0xMTgs
MTEgKzExOCw3IEBAIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIE1lc3NhZ2VEZXN0aW5hdGlvbiBkCiAKIHZvaWQgV29ya2VyQ29udGV4
dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgLy8gY3Jl
YXRlQ2FsbGJhY2tUYXNrIGhhcyB0byBiZSBhIHNlcGFyYXRlIHN0YXRlbWVudCBmcm9tIHBvc3RU
YXNrVG9QYXJlbnRDb250ZXh0IHRvIG1ha2UgdGhlIGRlc3RydWN0b3IKLSAgICAvLyBmb3IgbWVz
c2FnZS5jb3B5KCkgZ2V0IGNhbGxlZCBiZWZvcmUgcG9zdFRhc2tUb1BhcmVudENvbnRleHQuICAo
SWYgdGhleSBhcmUgb25lIHN0YXRlbWVudCwgdGhlIGRlc3RydWN0b3IKLSAgICAvLyBnZXRzIGNh
bGxlZCBhZnRlciBwb3N0VGFza1RvUGFyZW50Q29udGV4dCB3aGljaCBjYXVzZXMgYSByYWNlIGNv
bmRpdGlvbi4pIAotICAgIFJlZlB0cjxUYXNrPiB0YXNrID0gY3JlYXRlQ2FsbGJhY2tUYXNrKG1f
dGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLCAmYWRkTWVzc2FnZVRhc2ssIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGxldmVsLCBtZXNzYWdlLmNvcHkoKSwgbGluZU51bWJlciwgc291cmNlVVJMLmNvcHko
KSk7Ci0gICAgcG9zdFRhc2tUb1BhcmVudENvbnRleHQodGFzay5yZWxlYXNlKCkpOworICAgIHBv
c3RUYXNrVG9QYXJlbnRDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzayhtX3RocmVhZC0+bWVzc2Fn
aW5nUHJveHkoKSwgJmFkZE1lc3NhZ2VUYXNrLCBkZXN0aW5hdGlvbiwgc291cmNlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29udGV4
dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0
IFNjcmlwdFN0cmluZyYpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCBlN2JhOGE5
Li5kNDA0NTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5o
CisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTY5LDYgKzY5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyQ29udGV4
dERlc3Ryb3llZFRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJFeGNlcHRpb25UYXNr
OwogICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrOwor
ICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjsKIAogICAgICAgICB+
V29ya2VyTWVzc2FnaW5nUHJveHkoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCAwZjIyZmJlLi4wYmEwYzU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw4ICs0NSwxMyBAQCBQYXNzUmVmUHRyPFRocmVhZGFi
bGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjbwogewogICAgIEFTU0VSVChjbGllbnQpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBB
U1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAorI2lmIEVOQUJMRShXT1JLRVJTKQorICAg
IGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4
dCksIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKTsKKyNl
bmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50
KCkpOwogICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLCBjbGllbnQsIHJlcXVlc3QsIGNhbGxiYWNrc1NldHRp
bmcsIGNvbnRlbnRTbmlmZik7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCBiL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnQuaAppbmRleCA0ZmRlNDA0Li4yMTBiNzgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
LCBpbnQgLypsZW5ndGhSZWNlaXZlZCovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyAvKmlkZW50aWZlciovKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLykg
eyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRHZXRDYW5jZWxsZWQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmM4MzBl
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTAsMCArMSwyMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
V09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKKworI2luY2x1
ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIK
KyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJDb250ZXh0KiB3
b3JrZXJDb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNrcyBjYWxsYmFja3NTZXR0aW5nLCBDb250
ZW50U25pZmYgY29udGVudFNuaWZmKQorICAgIDogbV93b3JrZXJDb250ZXh0KHdvcmtlckNvbnRl
eHQpCisgICAgLCBtX2NsaWVudChjbGllbnQpCit7CisgICAgQVNTRVJUKHdvcmtlckNvbnRleHQp
OworICAgIEFTU0VSVChjbGllbnQpOworCisgICAgcmVmKCk7CisgICAgYXV0b19wdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YShyZXF1ZXN0LmNvcHlEYXRhKCkp
OworICAgIG1fd29ya2VyQ29udGV4dC0+cG9zdFRhc2tUb1BhcmVudENvbnRleHQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKG1lc3NhZ2luZ1Byb3h5KCksICZXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVh
dGVMb2FkZXIsIHRoaXMsIHJlcXVlc3REYXRhLCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25p
ZmYpKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpkb0ZpbmFsRGVyZWYoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqIHdvcmtlckxvYWRl
cikKK3sKKyAgICAvLyBEbyB0aGUgZmluYWwgZGVyZWYgb24gdGhlIHdvcmtlciB3aGljaCB3aWxs
IGRlcmVmIHRoZSBsb2FkZXIuCisgICAgQVNTRVJUKHdvcmtlckxvYWRlci0+aGFzT25lUmVmKCkp
OworICAgIHdvcmtlckxvYWRlci0+UmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPjo6
ZGVyZWYoKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGVMb2FkZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciog
d29ya2VyTG9hZGVyLCBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJl
cXVlc3REYXRhLCBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBj
b250ZW50U25pZmYpCit7CisgICAgLy8gRklYTUU6IHRoZSBjcmVhdGVkIGxvYWRlciBoYXMgbm8g
a25vd2xlZGdlIG9mIHRoZSBvcmlnaW4gb2YgdGhlIHdvcmtlciBkb2luZyB0aGUgbG9hZCByZXF1
ZXN0LgorICAgIC8vIEJhc2ljYWxseSBldmVyeSBzZXR0aW5nIGRvbmUgaW4gU3VicmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZSAoaW5jbHVkaW5nIHRoZSBjb250ZW50cyBvZiBhZGRFeHRyYUZpZWxkc1Rv
UmVxdWVzdCkKKyAgICAvLyBuZWVkcyB0byBiZSBleGFtaW5lZCBmb3IgaG93IGl0IHNob3VsZCBi
ZSB0YWtlIGludG8gYWNjb3VudCBhIGRpZmZlcmVudCBvcmlnaW5hdG9yLgorICAgIE93blB0cjxS
ZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0
YSkpOworICAgIHdvcmtlckxvYWRlci0+bV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVh
dGUoY29udGV4dCwgd29ya2VyTG9hZGVyLCAqcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29u
dGVudFNuaWZmKTsKKyAgICBpZiAoIXdvcmtlckxvYWRlci0+bV9sb2FkZXIpCisgICAgICAgIHdv
cmtlckxvYWRlci0+ZGlkRmFpbCgpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQoIWhhc09uZVJlZigpKTsKKworICAgIFJlZkNvdW50ZWQ8
V29ya2VyVGhyZWFkYWJsZUxvYWRlcj46OmRlcmVmKCk7CisgICAgaWYgKGhhc09uZVJlZigpKSB7
CisgICAgICAgIC8vIENsZWFyIG91dCBpdGVtcyB0aGF0IHdlcmUgc2V0IG9uIHRoZSB3b3JrZXIg
dGhyZWFkLgorICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gbV93b3JrZXJD
b250ZXh0OworICAgICAgICBtX3dvcmtlckNvbnRleHQgPSAwOworICAgICAgICBtX2NsaWVudCA9
IDA7CisgICAgICAgIC8vIFBvc3QgYSBtZXNzYWdlIHRvIGRvIHRoZSBmaW5hbCBkZXJlZiBzbyB0
aGF0IHRoZSBkZXJlZiBvZiB0aGUgbV9sb2FkZXIgaGFwcGVucyBvbiB0aGUgcGFyZW50IHRocmVh
ZC4KKyAgICAgICAgd29ya2VyQ29udGV4dC0+cG9zdFRhc2tUb1BhcmVudENvbnRleHQoY3JlYXRl
Q2FsbGJhY2tUYXNrKE5VTEwsICZXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpkb0ZpbmFsRGVyZWYs
IHRoaXMpKTsKKyAgICB9Cit9CisKK1dvcmtlck1lc3NhZ2luZ1Byb3h5KiBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjptZXNzYWdpbmdQcm94eSgpCit7CisgICAgcmV0dXJuIG1fd29ya2VyQ29udGV4
dC0+dGhyZWFkKCktPm1lc3NhZ2luZ1Byb3h5KCk7Cit9CisKK1dvcmtlclRocmVhZGFibGVMb2Fk
ZXI6On5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyKCkKK3sKKyAgICBBU1NFUlQoIW1fbG9hZGVyKTsK
K30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQoreworICAgIG1fd29y
a2VyQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKG1lc3NhZ2luZ1Byb3h5KCks
ICZXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWxMb2FkZXIsIHRoaXMpKTsKK30KKwordm9p
ZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWxMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqIHdvcmtlckxvYWRlcikKK3sKKyAgICBpZiAo
IXdvcmtlckxvYWRlci0+bV9sb2FkZXIpCisgICAgICAgIHJldHVybjsKKyAgICB3b3JrZXJMb2Fk
ZXItPm1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICB3b3JrZXJMb2FkZXItPm1fbG9hZGVyID0gMDsK
K30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KQoreworICAgIG1fd29ya2VyQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKG1l
c3NhZ2luZ1Byb3h5KCksICZXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkU2Vu
ZERhdGEsIHRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSk7Cit9CisKK3ZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZFNlbmREYXRhKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKiB3b3JrZXJMb2FkZXIsIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpCit7CisgICAgaWYgKCF3b3JrZXJMb2FkZXItPm1fY2xpZW50KQorICAgICAgICByZXR1
cm47CisgICAgd29ya2VyTG9hZGVyLT5tX2NsaWVudC0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0
b3RhbEJ5dGVzVG9CZVNlbnQpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAg
ICBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNwb25zZURhdGEo
cmVzcG9uc2UuY29weURhdGEoKSk7CisgICAgbV93b3JrZXJDb250ZXh0LT5wb3N0VGFzayhjcmVh
dGVDYWxsYmFja1Rhc2sobWVzc2FnaW5nUHJveHkoKSwgJldvcmtlclRocmVhZGFibGVMb2FkZXI6
OnRlbGxDbGllbnREaWRSZWNlaXZlUmVzcG9uc2UsIHRoaXMsIHJlc3BvbnNlRGF0YSkpOworfQor
Cit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRSZWNlaXZlUmVzcG9u
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqIHdvcmtl
ckxvYWRlciwgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVzcG9u
c2VEYXRhKQoreworICAgIGlmICghd29ya2VyTG9hZGVyLT5tX2NsaWVudCkKKyAgICAgICAgcmV0
dXJuOworICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlOjphZG9wdChyZXNwb25zZURhdGEpKTsKKyAgICB3b3JrZXJMb2FkZXItPm1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoKnJlc3BvbnNlKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2
ZWQpCit7CisgICAgY2hhciogY29waWVkRGF0YSA9IG5ldyBjaGFyW2xlbmd0aFJlY2VpdmVkXTsK
KyAgICBtZW1jcHkoY29waWVkRGF0YSwgZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOworICAgIG1fd29y
a2VyQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKE5VTEwsICZXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkUmVjZWl2ZURhdGEsIHRoaXMsIGNvcGllZERhdGEs
IGxlbmd0aFJlY2VpdmVkKSk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVs
bENsaWVudERpZFJlY2VpdmVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyKiB3b3JrZXJMb2FkZXIsIGNoYXIqIGNvcGllZERhdGEsIGludCBsZW5ndGhS
ZWNlaXZlZCkKK3sKKyAgICBpZiAoIXdvcmtlckxvYWRlci0+bWVzc2FnaW5nUHJveHkoKS0+YXNr
ZWRUb1Rlcm1pbmF0ZSgpICYmIHdvcmtlckxvYWRlci0+bV9jbGllbnQpCisgICAgICAgIHdvcmtl
ckxvYWRlci0+bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGNvcGllZERhdGEsIGxlbmd0aFJlY2Vp
dmVkKTsKKyAgICBkZWxldGVbXSBjb3BpZWREYXRhOworfQorCit2b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGlkZW50aWZpZXIpCit7CisgICAgbV93b3Jr
ZXJDb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2sobWVzc2FnaW5nUHJveHkoKSwg
JldvcmtlclRocmVhZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRGaW5pc2hMb2FkaW5nLCB0aGlz
LCBpZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVsbENs
aWVudERpZEZpbmlzaExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVh
ZGFibGVMb2FkZXIqIHdvcmtlckxvYWRlciwgaW50IGlkZW50aWZpZXIpCit7CisgICAgaWYgKCF3
b3JrZXJMb2FkZXItPm1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgd29ya2VyTG9hZGVy
LT5tX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKK30KKwordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKCkKK3sKKyAgICBtX3dvcmtlckNvbnRleHQtPnBv
c3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzayhtZXNzYWdpbmdQcm94eSgpLCAmV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6dGVsbENsaWVudERpZEZhaWwsIHRoaXMpKTsKK30KKwordm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciogd29ya2VyTG9hZGVyKQoreworICAgIGlmICghd29y
a2VyTG9hZGVyLT5tX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHdvcmtlckxvYWRlci0+
bV9jbGllbnQtPmRpZEZhaWwoKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpk
aWRHZXRDYW5jZWxsZWQoKQoreworICAgIG1fd29ya2VyQ29udGV4dC0+cG9zdFRhc2soY3JlYXRl
Q2FsbGJhY2tUYXNrKG1lc3NhZ2luZ1Byb3h5KCksICZXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp0
ZWxsQ2xpZW50RGlkR2V0Q2FuY2VsbGVkLCB0aGlzKSk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6dGVsbENsaWVudERpZEdldENhbmNlbGxlZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciogd29ya2VyTG9hZGVyKQoreworICAgIGlmICgh
d29ya2VyTG9hZGVyLT5tX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHdvcmtlckxvYWRl
ci0+bV9jbGllbnQtPmRpZEdldENhbmNlbGxlZCgpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhPiByZXNwb25zZURhdGEocmVzcG9uc2UuY29weURhdGEoKSk7CisgICAg
bV93b3JrZXJDb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2sobWVzc2FnaW5nUHJv
eHkoKSwgJldvcmtlclRocmVhZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DYW5jZWxsYXRpb24sIHRoaXMsIHJlc3BvbnNlRGF0YSkpOworfQorCit2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
YW5jZWxsYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIqIHdvcmtlckxvYWRlciwgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gcmVzcG9uc2VEYXRhKQoreworICAgIGlmICghd29ya2VyTG9hZGVyLT5tX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURhdGEpKTsKKyAgICB3b3JrZXJMb2FkZXItPm1f
Y2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oKnJlc3BvbnNlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMWI0MmJmYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcl9oCisjZGVmaW5lIFdvcmtlclRocmVhZGFibGVMb2FkZXJfaAor
CisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCisj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorCisjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFz
cyBEb2N1bWVudDsKKyAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CisgICAgY2xhc3MgV29ya2Vy
Q29udGV4dDsKKyAgICBjbGFzcyBXb3JrZXJNZXNzYWdpbmdQcm94eTsKKyAgICBjbGFzcyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50OworICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE7CisgICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE7CisKKyAg
ICBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyLCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtl
clRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShXb3JrZXJDb250ZXh0KiB3b3JrZXIsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBM
b2FkQ2FsbGJhY2tzIGNhbGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcih3b3JrZXIsIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29u
dGVudFNuaWZmKSk7CisgICAgICAgIH0KKworICAgICAgICB+V29ya2VyVGhyZWFkYWJsZUxvYWRl
cigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKworICAgICAgICB1c2luZyBS
ZWZDb3VudGVkPFdvcmtlclRocmVhZGFibGVMb2FkZXI+OjpyZWY7CisgICAgICAgIHZvaWQgZGVy
ZWYoKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFi
bGVMb2FkZXIoKSB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlRocmVhZGFi
bGVMb2FkZXIoKSB7IGRlcmVmKCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFdvcmtlclRo
cmVhZGFibGVMb2FkZXIoV29ya2VyQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYpOworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNT
ZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGxlbmd0
aFJlY2VpdmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoaW50IGlk
ZW50aWZpZXIpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkR2V0Q2FuY2VsbGVkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
CisgICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSgpOworCisgICAg
ICAgIHN0YXRpYyB2b2lkIGRvRmluYWxEZXJlZihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29y
a2VyVGhyZWFkYWJsZUxvYWRlciopOworICAgICAgICBzdGF0aWMgdm9pZCBjcmVhdGVMb2FkZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqLCBzdGQ6OmF1
dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIExvYWRDYWxsYmFja3MsIENv
bnRlbnRTbmlmZik7CisgICAgICAgIHN0YXRpYyB2b2lkIGNhbmNlbExvYWRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciopOworICAgICAgICBzdGF0aWMg
dm9pZCB0ZWxsQ2xpZW50RGlkU2VuZERhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtl
clRocmVhZGFibGVMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICAgICAgc3RhdGljIHZvaWQgdGVs
bENsaWVudERpZFJlY2VpdmVSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlciosIHN0ZDo6YXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4pOworICAgICAgICBzdGF0aWMgdm9pZCB0ZWxsQ2xpZW50RGlkUmVjZWl2ZURhdGEo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqLCBjaGFyKiwg
aW50IGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdGVsbENsaWVudERpZEZp
bmlzaExvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIqLCBpbnQgaWRlbnRpZmllcik7CisgICAgICAgIHN0YXRpYyB2b2lkIHRlbGxDbGllbnREaWRG
YWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKik7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIHRlbGxDbGllbnREaWRHZXRDYW5jZWxsZWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgdGVsbENsaWVudERpZEZhaWxEdWVUb1NlY3VyaXR5T3JpZ2luQ2hlY2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgdGVsbENsaWVudERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciosIHN0ZDo6YXV0b19wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pOworCisgICAgICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICAgICAgV29ya2VyQ29udGV4dCogbV93b3JrZXJD
b250ZXh0OworICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICB9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykK
KworI2VuZGlmIC8vIFdvcmtlclRocmVhZGFibGVMb2FkZXJfaAo=
</data>
<flag name="review"
          id="12933"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27006</attachid>
            <date>2009-01-24 21:51:51 -0800</date>
            <delta_ts>2009-01-27 03:34:32 -0800</delta_ts>
            <desc>Part 6: Small adjustments to the ThreadableLoader::loadResourceSynchronously to make it easier to implement for Workers</desc>
            <filename>bug22720_part6.txt</filename>
            <type>text/plain</type>
            <size>7538</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTFkMzcwYi4uMGMxNDIyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0wMS0yNCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIFNvbWUgc21hbGwgY2hhbmdlcyB0byBUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5CisgICAgICAgIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRv
IGZvciB3b3JrZXJzIChhY3Jvc3MgdGhyZWFkcykuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBj
aGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OlByZWZsaWdodFJlc3VsdENhY2hlOjpjYW5Ta2lwUHJlZmxp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpsb2FkUmVxdWVzdFN5bmNo
cm9ub3VzbHkpOgorCiAyMDA5LTAxLTIzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggMGJhMGM1Ni4uZTNmZjIwMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgiCkBAIC01NSwxNSArNTYsMjYgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAgICByZXR1
cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihjb250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25p
ZmYpOwogfQogCi11bnNpZ25lZCBsb25nIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3Vuc2lnbmVkIGxvbmcgVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRlckVycm9yVHlw
ZSYgZXJyb3JUeXBlLCBzdGQ6OmF1dG9fcHRyPFJlc291cmNlUmVzcG9uc2U+JiByZXNwb25zZSwg
VmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQo
Y29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7Ci0gICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkK
KyAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpKSB7CisgICAgICAgIGVycm9yVHlwZSA9IEZhaWxl
ZExvYWRlckVycm9yOwogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZCBsb25nPjo6bWF4KCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEp
OworICAgIH0KKyAgICBSZXNvdXJjZUVycm9yIGVycm9yOworICAgIHJlc3BvbnNlLnJlc2V0KG5l
dyBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIHVuc2lnbmVkIGxvbmcgaWRlbml0aWZlciA9IGRv
Y3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1
ZXN0LCBlcnJvciwgKnJlc3BvbnNlLCBkYXRhKTsKKyAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisg
ICAgICAgIGVycm9yVHlwZSA9IE5vTG9hZGVyRXJyb3I7CisgICAgZWxzZSBpZiAoZXJyb3IuaXND
YW5jZWxsYXRpb24oKSkKKyAgICAgICAgZXJyb3JUeXBlID0gQ2FuY2VsbGVkTG9hZGVyRXJyb3I7
CisgICAgZWxzZQorICAgICAgICBlcnJvclR5cGUgPSBGYWlsZWRMb2FkZXJFcnJvcjsKKyAgICBy
ZXR1cm4gaWRlbml0aWZlcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5oCmluZGV4IGU4ZmYwNTguLmUwOWQ5YzYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmgKQEAgLTUzLDEyICs1MywxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERvTm90U25pZmZDb250ZW50CiAgICAgfTsKIAorICAgIGVudW0gTG9hZGVyRXJyb3JUeXBl
IHsKKyAgICAgICAgTm9Mb2FkZXJFcnJvciwKKyAgICAgICAgRmFpbGVkTG9hZGVyRXJyb3IsCisg
ICAgICAgIENhbmNlbGxlZExvYWRlckVycm9yCisgICAgfTsKKwogICAgIC8vIFVzZWZ1bCBmb3Ig
ZG9pbmcgbG9hZGVyIG9wZXJhdGlvbnMgZnJvbSBhbnkgdGhyZWFkIChub3QgdGhyZWFkc2FmZSwg
CiAgICAgLy8ganVzdCBhYmxlIHRvIHJ1biBvbiB0aHJlYWRzIG90aGVyIHRoYW4gdGhlIG1haW4g
dGhyZWFkKS4KICAgICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyIDogTm9uY29weWFibGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmKTsKLSAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgbG9uZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkZXJFcnJvclR5cGUmLCBzdGQ6OmF1
dG9fcHRyPFJlc291cmNlUmVzcG9uc2U+JiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwogICAgICAgICB2b2lkIHJlZigpIHsgcmVmVGhy
ZWFkYWJsZUxvYWRlcigpOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZTQ4NDY4Ni4uMjIz
MjBkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0VXBsb2FkLmgiCiAjaW5jbHVkZSAibWFy
a3VwLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KQEAgLTUzLDYgKzUzLDggQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2VuZGlmCiAK
K3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBIZWFkZXJzU2V0OwpAQCAtMTMyLDcgKzEz
NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUHJlZmxpZ2h0UmVzdWx0Q2FjaGUoKSB7IH0K
IAotICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBLVVJMPiwgUHJlZmxpZ2h0
UmVzdWx0Q2FjaGVJdGVtKj4gUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8cGFpcjxTdHJpbmcsIEtVUkw+LCBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0qPiBQcmVm
bGlnaHRSZXN1bHRIYXNoTWFwOwogCiAgICAgUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcCBtX3ByZWZs
aWdodEhhc2hNYXA7CiAgICAgTXV0ZXggbV9tdXRleDsKQEAgLTI4MywxNCArMjg1LDE0IEBAIHZv
aWQgUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBLVVJMJiB1cmwsIFByCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
ICAgICAvLyBOb3RlIHRoYXQgdGhlIGVudHJ5IG1heSBhbHJlYWR5IGJlIHByZXNlbnQgaW4gdGhl
IEhhc2hNYXAgaWYgYW5vdGhlciB0aHJlYWQgaXMgYWNjZXNzaW5nIHRoZSBzYW1lIGxvY2F0aW9u
LgotICAgIG1fcHJlZmxpZ2h0SGFzaE1hcC5zZXQoc3RkOjptYWtlX3BhaXIob3JpZ2luLmNvcHko
KSwgdXJsLmNvcHkoKSksIHByZWZsaWdodFJlc3VsdCk7CisgICAgbV9wcmVmbGlnaHRIYXNoTWFw
LnNldChtYWtlX3BhaXIob3JpZ2luLmNvcHkoKSwgdXJsLmNvcHkoKSksIHByZWZsaWdodFJlc3Vs
dCk7CiB9CiAKIGJvb2wgUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpbmNsdWRlQ3JlZGVudGlh
bHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykKIHsKICAg
ICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIFByZWZsaWdodFJlc3VsdEhhc2hNYXA6
Oml0ZXJhdG9yIGNhY2hlSXQgPSBtX3ByZWZsaWdodEhhc2hNYXAuZmluZChzdGQ6Om1ha2VfcGFp
cihvcmlnaW4sIHVybCkpOworICAgIFByZWZsaWdodFJlc3VsdEhhc2hNYXA6Oml0ZXJhdG9yIGNh
Y2hlSXQgPSBtX3ByZWZsaWdodEhhc2hNYXAuZmluZChtYWtlX3BhaXIob3JpZ2luLCB1cmwpKTsK
ICAgICBpZiAoY2FjaGVJdCA9PSBtX3ByZWZsaWdodEhhc2hNYXAuZW5kKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtODA4LDI1ICs4MTAsMjYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
bG9hZFJlcXVlc3RTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRXhjZXB0
aW8KIHsKICAgICBBU1NFUlQoIW1fYXN5bmMpOwogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAg
IFJlc291cmNlRXJyb3IgZXJyb3I7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAg
ICBhdXRvX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZTsKKyAgICBMb2FkZXJFcnJvclR5
cGUgZXJyb3JUeXBlID0gTm9Mb2FkZXJFcnJvcjsKIAotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciA9IFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOworICAg
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCBlcnJvclR5
cGUsIHJlc3BvbnNlLCBkYXRhKTsKICAgICBtX2xvYWRlciA9IDA7CiAKICAgICAvLyBObyBleGNl
cHRpb24gZm9yIGZpbGU6Ly8vIHJlc291cmNlcywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4
Pi4KICAgICAvLyBBbHNvLCBpZiB3ZSBoYXZlIGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fz
bid0IGEgbmV0d29yayBlcnJvciBpbiBmYWN0LgotICAgIGlmIChlcnJvci5pc051bGwoKSB8fCBy
ZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+
IDApIHsKLSAgICAgICAgcHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyhpZGVudGlmaWVyLCBkYXRhLCBy
ZXNwb25zZSwgZWMpOworICAgIGlmIChlcnJvclR5cGUgPT0gTm9Mb2FkZXJFcnJvciB8fCByZXF1
ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkgfHwgKHJlc3BvbnNlLmdldCgpICYmIHJlc3BvbnNlLT5o
dHRwU3RhdHVzQ29kZSgpID4gMCkpIHsKKyAgICAgICAgcHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyhp
ZGVudGlmaWVyLCBkYXRhLCAqcmVzcG9uc2UsIGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlvbigpKSB7CisgICAgaWYgKGVycm9yVHlwZSA9
PSBDYW5jZWxsZWRMb2FkZXJFcnJvcikgewogICAgICAgICBhYm9ydEVycm9yKCk7CiAgICAgICAg
IGVjID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OkFCT1JUX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIEFTU0VSVChlcnJvclR5cGUgPT0gRmFpbGVkTG9hZGVyRXJyb3IpOwog
ICAgIG5ldHdvcmtFcnJvcigpOwogICAgIGVjID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5F
VFdPUktfRVJSOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27070</attachid>
            <date>2009-01-27 02:29:07 -0800</date>
            <delta_ts>2009-01-29 15:35:49 -0800</delta_ts>
            <desc>Part 5a: Add the GenericWorkTask infrastructure needed for WorkerThreadableLoader.</desc>
            <filename>bug22720_part5a.txt</filename>
            <type>text/plain</type>
            <size>59759</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzOWJhNjcxLi4yM2Q1NTUyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMDktMDEtMjcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMjcyMDogTWFr
ZSBYTUxIdHRwUmVxdWVzdCB3b3JrIGluIFdvcmtlcnMKKyAgICAgICAgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMD4KKworICAgICAgICBTcGxpdCBvdXQgSXNJ
bnRlZ2VyLmggZnJvbSBIYXNoVHJhaXRzLmggdG8gbWFrZSBpdCBlYXNpbHkgYXZhaWxhYmxlCisg
ICAgICAgIHRvIG90aGVyIGZpbGVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0hh
c2hUcmFpdHMuaDoKKyAgICAgICAgKiB3dGYvSXNJbnRlZ2VyLmg6IEFkZGVkLgorICAgICAgICAo
V1RGOjopOgorCiAyMDA5LTAxLTI1ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0K
aW5kZXggMjgwYjJjOC4uMWJjN2Y4YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIxMiw2ICsy
MTIsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS93dGYv
SGFzaFRhYmxlLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0cy5oIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvSXNJbnRl
Z2VyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oIFwKIAlKYXZhU2NyaXB0
Q29yZS93dGYvTGlzdFJlZlB0ci5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvTG9ja2VyLmggXApk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qCmluZGV4IDM5MzRiMTUuLmI0NWNjZjggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTMxOSw2ICszMTksMTAgQEAK
IAkJCT4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZc
SXNJbnRlZ2VyLmgiDQorCQkJPg0KKwkJPC9GaWxlPg0KKwkJPEZpbGUNCiAJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHd0ZlxMaXN0SGFzaFNldC5oIg0KIAkJCT4NCiAJCTwvRmlsZT4NCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3NWE2NjgwLi42NjY0NDMzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwLDYgKzQw
LDcgQEAKIAkJMDg4RkE1QkMwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4RkE1QkEwRUY3NkQ0
MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA4RTI3OUU5MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21O
dW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovOyB9Owog
CQkwQjFGOTIxRDBGMTc1MzUwMDAzNjQ2OEUgLyogUHRyQW5kRmxhZ3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCMUY5MjFCMEYxNzUwMkQwMDM2NDY4
RSAvKiBQdHJBbmRGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBCNENFNzBGMEYyRTQ4NTYwMEY2RUMwNCAvKiBJc0ludGVnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCNENFNzBFMEYyRTQ4
NTYwMEY2RUMwNCAvKiBJc0ludGVnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxNDBCN0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNBY3RpdmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uY3BwICovOyB9OwogCQkxNDBE
MTdENzBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8q
IEpTQmFzZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxNDEyMTEzMTBBNDg3OTREMDA0ODAyNTUgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsg
fTsKQEAgLTQyMyw2ICs0MjQsNyBAQAogCQkwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFu
ZG9tTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmRvbU51bWJl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1
MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSYW5kb21OdW1iZXJTZWVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMUY5
MjFCMEYxNzUwMkQwMDM2NDY4RSAvKiBQdHJBbmRGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQdHJBbmRGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwQjRDRTcwRTBGMkU0ODU2MDBGNkVDMDQgLyogSXNJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElzSW50ZWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDBEMTdENjBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jhc2VQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0MTIxMTAyMEE0ODc4MDkwMDQ4MDI1NSAvKiBtaW5pZG9tLmMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IG1pbmlkb20uYzsgcGF0aCA9IHRlc3RzL21p
bmlkb20uYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxMjExMEQwQTQ4Nzg4NzAw
NDgwMjU1IC8qIG1pbmlkb20uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBtaW5pZG9tLmpzOyBwYXRoID0gdGVzdHMvbWluaWRvbS5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExMDEsNiArMTEwMyw3IEBACiAJCQkJNjVERkM5MkQwOEVBMTczQTAw
RjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgKi8sCiAJCQkJNjVERkM5MkUwOEVBMTczQTAwRjczMDBC
IC8qIEhhc2hUYWJsZS5oICovLAogCQkJCTY1REZDOTJGMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNo
VHJhaXRzLmggKi8sCisJCQkJMEI0Q0U3MEUwRjJFNDg1NjAwRjZFQzA0IC8qIElzSW50ZWdlci5o
ICovLAogCQkJCTY1N0VCNzQ1MEI3MDhGNTQwMDYzNDYxQiAvKiBMaXN0SGFzaFNldC5oICovLAog
CQkJCTE0OEExNjI2MDk1RDE2QkIwMDY2NkQwRCAvKiBMaXN0UmVmUHRyLmggKi8sCiAJCQkJRTFF
RTc5MjcwRDZDOTY0NTAwRkVBM0JBIC8qIExvY2tlci5oICovLApAQCAtMTQ5OSw2ICsxNTAyLDcg
QEAKIAkJCQlCQzE4QzNFQTBFMTZGNUNEMDBCMzQ0NjAgLyogQXNzZXJ0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9u
T3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0NjAg
LyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBMUY3QUQwRjI1MkIzQzAw
RTE4NEUyIC8qIEJ5dGVBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MjMwRUQxQ0Uz
MzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzNFRDBFMTZGNUNEMDBCMzQ0NjAgLyogQ2FsbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
MjlEOERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApAQCAt
MTU1MCw2ICsxNTU0LDcgQEAKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJ
bnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDc3QzBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCNENFNzBGMEYyRTQ4
NTYwMEY2RUMwNCAvKiBJc0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlEOTMwMEVE
MjJENzAwMEI4OTYxOSAvKiBKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlB
NDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTE2OTksNyArMTcwNCw2IEBACiAJCQkJQkMxOEM0NEQwRTE2RjVDRDAwQjM0NDYwIC8qIHBjcmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDRFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBwY3JlX2lu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3MjBFMTZGNUNEMDBCMzQ0NjAgLyog
dWNwaW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3QTFGN0FEMEYyNTJCM0MwMEUxODRF
MiAvKiBCeXRlQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk4NSw2ICsxOTg5LDcgQEAKIAkJ
CWZpbGVzID0gKAogCQkJCTY1OTEyNkJEMEJERDE3MjgwMDE5MjFGQiAvKiBBbGxJbk9uZUZpbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVGREU0OUMwQkREMUQ0QTAwRTgwMTExIC8qIEFzc2Vy
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdBMUY3QUMwRjI1MkIzQzAwRTE4NEUyIC8q
IEJ5dGVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5RDhERDBFRDIyMDVCMDBCODk2
MTkgLyogQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlEOUM0MEVEMjNDMzkw
MEI4OTYxOSAvKiBDaGFyYWN0ZXJDbGFzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTJBREQ5
MDBFNzlBQzExMDBENTBDNTEgLyogQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTIwNTAsNyArMjA1NSw2IEBACiAJCQkJOTMwNzU0RDAwOEIwRjc0NjAwQUIz
MDU2IC8qIHBjcmVfdGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNzAxMzQ4MENBOTdF
MEUwMEZBMTREMyAvKiBwY3JlX3VjcF9zZWFyY2hmdW5jcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0UyNkJENDA4QjE1MTQxMDBGODUyMjYgLyogcGNyZV94Y2xhc3MuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQTdBMUY3QUMwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmggYi9K
YXZhU2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0cy5oCmluZGV4IGIzYzBiN2EuLjQ1MTQ2MDggMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvd3RmL0hhc2hUcmFpdHMuaApAQCAtMTgsNjAgKzE4LDE5IEBACiAgKgogICovCiAKLSNp
Zm5kZWYgV1RGX0hhc2hUcmFpdHNfaAotI2RlZmluZSBXVEZfSGFzaFRyYWl0c19oCisjaWZuZGVm
IEhhc2hUcmFpdHNfaAorI2RlZmluZSBIYXNoVHJhaXRzX2gKIAotI2luY2x1ZGUgIkFzc2VydGlv
bnMuaCIKICNpbmNsdWRlICJIYXNoRnVuY3Rpb25zLmgiCi0jaW5jbHVkZSA8dXRpbGl0eT4KKyNp
bmNsdWRlICJJc0ludGVnZXIuaCIKICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8dXRpbGl0
eT4KIAogbmFtZXNwYWNlIFdURiB7CiAKICAgICB1c2luZyBzdGQ6OnBhaXI7CiAgICAgdXNpbmcg
c3RkOjptYWtlX3BhaXI7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNJbnRl
Z2VyICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07Ci0gICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGJvb2w+ICAgICAgICAgICAgICAgeyBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRl
Z2VyPGNoYXI+ICAgICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7
IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNpZ25lZCBjaGFyPiAgICAgICAg
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGNoYXI+ICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNob3J0PiAgICAg
ICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIHNob3J0PiAgICAgeyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGlu
dD4gICAgICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0g
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGludD4gICAgICAgeyBzdGF0
aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJ
bnRlZ2VyPGxvbmc+ICAgICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy
dWU7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGxvbmc+ICAg
ICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgSXNJbnRlZ2VyPGxvbmcgbG9uZz4gICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2
YWx1ZSA9IHRydWU7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVk
IGxvbmcgbG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0KLSNpZiAh
Q09NUElMRVIoTVNWQykgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKLSAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8d2NoYXJfdD4gICAgICAgICAgICB7IHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSNlbmRpZgotCi0gICAgQ09NUElMRV9BU1NFUlQo
SXNJbnRlZ2VyPGJvb2w+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9ib29sX3RydWUpOwotICAgIENP
TVBJTEVfQVNTRVJUKElzSW50ZWdlcjxjaGFyPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfY2hhcl90
cnVlKTsKLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8c2lnbmVkIGNoYXI+Ojp2YWx1ZSwg
V1RGX0lzSW50ZWdlcl9zaWduZWRfY2hhcl90cnVlKTsKLSAgICBDT01QSUxFX0FTU0VSVChJc0lu
dGVnZXI8dW5zaWduZWQgY2hhcj46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2NoYXJf
dHJ1ZSk7Ci0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPHNob3J0Pjo6dmFsdWUsIFdURl9J
c0ludGVnZXJfc2hvcnRfdHJ1ZSk7Ci0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPHVuc2ln
bmVkIHNob3J0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfdW5zaWduZWRfc2hvcnRfdHJ1ZSk7Ci0g
ICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPGludD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2lu
dF90cnVlKTsKLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8dW5zaWduZWQgaW50Pjo6dmFs
dWUsIFdURl9Jc0ludGVnZXJfdW5zaWduZWRfaW50X3RydWUpOwotICAgIENPTVBJTEVfQVNTRVJU
KElzSW50ZWdlcjxsb25nPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfbG9uZ190cnVlKTsKLSAgICBD
T01QSUxFX0FTU0VSVChJc0ludGVnZXI8dW5zaWduZWQgbG9uZz46OnZhbHVlLCBXVEZfSXNJbnRl
Z2VyX3Vuc2lnbmVkX2xvbmdfdHJ1ZSk7Ci0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPGxv
bmcgbG9uZz46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2xvbmdfbG9uZ190cnVlKTsKLSAgICBDT01Q
SUxFX0FTU0VSVChJc0ludGVnZXI8dW5zaWduZWQgbG9uZyBsb25nPjo6dmFsdWUsIFdURl9Jc0lu
dGVnZXJfdW5zaWduZWRfbG9uZ19sb25nX3RydWUpOwotCi0jaWYgIUNPTVBJTEVSKE1TVkMpIHx8
IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCi0gICAgQ09NUElMRV9BU1NFUlQoSXNJ
bnRlZ2VyPHdjaGFyX3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl93Y2hhcl90X3RydWUpOwotI2Vu
ZGlmCi0KLSAgICBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPGNoYXIqPjo6dmFsdWUsIFdURl9J
c0ludGVnZXJfY2hhcl9wb2ludGVyX2ZhbHNlKTsKLSAgICBDT01QSUxFX0FTU0VSVCghSXNJbnRl
Z2VyPGNvbnN0IGNoYXIqID46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2NvbnN0X2NoYXJfcG9pbnRl
cl9mYWxzZSk7Ci0gICAgQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjx2b2xhdGlsZSBjaGFyKiA+
Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl92b2xhdGlsZV9jaGFyX3BvaW50ZXJfX2ZhbHNlKTsKLSAg
ICBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPGRvdWJsZT46OnZhbHVlLCBXVEZfSXNJbnRlZ2Vy
X2RvdWJsZV9mYWxzZSk7Ci0gICAgQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxmbG9hdD46OnZh
bHVlLCBXVEZfSXNJbnRlZ2VyX2Zsb2F0X2ZhbHNlKTsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwogCiAgICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVnZXIsIHR5
cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2U7CkBAIC0xNTMsNCArMTEyLDQg
QEAgbmFtZXNwYWNlIFdURiB7CiB1c2luZyBXVEY6Okhhc2hUcmFpdHM7CiB1c2luZyBXVEY6OlBh
aXJIYXNoVHJhaXRzOwogCi0jZW5kaWYgLy8gV1RGX0hhc2hUcmFpdHNfaAorI2VuZGlmIC8vIEhh
c2hUcmFpdHNfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0lzSW50ZWdlci5oIGIv
SmF2YVNjcmlwdENvcmUvd3RmL0lzSW50ZWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjBjYzhhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYv
SXNJbnRlZ2VyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZu
ZGVmIElzSW50ZWdlcl9oCisjZGVmaW5lIElzSW50ZWdlcl9oCisKKyNpbmNsdWRlICJBc3NlcnRp
b25zLmgiCisKK25hbWVzcGFjZSBXVEYgeworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IElzSW50ZWdlciAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNl
OyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxib29sPiAgICAgICAgICAgICAg
IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IElzSW50ZWdlcjxjaGFyPiAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxzaWduZWQgY2hh
cj4gICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBs
YXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBjaGFyPiAgICAgIHsgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxz
aG9ydD4gICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBzaG9ydD4gICAgIHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IElz
SW50ZWdlcjxpbnQ+ICAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBpbnQ+ICAg
ICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4g
c3RydWN0IElzSW50ZWdlcjxsb25nPiAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25l
ZCBsb25nPiAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRl
bXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxsb25nIGxvbmc+ICAgICAgICAgIHsgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdl
cjx1bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
OworCisjaWYgIUNPTVBJTEVSKE1TVkMpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklO
RUQpCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHdjaGFyX3Q+ICAgICAgICAgICAg
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisjZW5kaWYKKworICAgIENPTVBJ
TEVfQVNTRVJUKElzSW50ZWdlcjxib29sPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfYm9vbF90cnVl
KTsKKyAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8Y2hhcj46OnZhbHVlLCBXVEZfSXNJbnRl
Z2VyX2NoYXJfdHJ1ZSk7CisgICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPHNpZ25lZCBjaGFy
Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfc2lnbmVkX2NoYXJfdHJ1ZSk7CisgICAgQ09NUElMRV9B
U1NFUlQoSXNJbnRlZ2VyPHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNp
Z25lZF9jaGFyX3RydWUpOworICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxzaG9ydD46OnZh
bHVlLCBXVEZfSXNJbnRlZ2VyX3Nob3J0X3RydWUpOworICAgIENPTVBJTEVfQVNTRVJUKElzSW50
ZWdlcjx1bnNpZ25lZCBzaG9ydD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX3Nob3J0
X3RydWUpOworICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxpbnQ+Ojp2YWx1ZSwgV1RGX0lz
SW50ZWdlcl9pbnRfdHJ1ZSk7CisgICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPHVuc2lnbmVk
IGludD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2ludF90cnVlKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChJc0ludGVnZXI8bG9uZz46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2xvbmdfdHJ1
ZSk7CisgICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPHVuc2lnbmVkIGxvbmc+Ojp2YWx1ZSwg
V1RGX0lzSW50ZWdlcl91bnNpZ25lZF9sb25nX3RydWUpOworICAgIENPTVBJTEVfQVNTRVJUKElz
SW50ZWdlcjxsb25nIGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9sb25nX2xvbmdfdHJ1ZSk7
CisgICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPHVuc2lnbmVkIGxvbmcgbG9uZz46OnZhbHVl
LCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2xvbmdfbG9uZ190cnVlKTsKKworI2lmICFDT01QSUxF
UihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorICAgIENPTVBJTEVf
QVNTRVJUKElzSW50ZWdlcjx3Y2hhcl90Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfd2NoYXJfdF90
cnVlKTsKKyNlbmRpZgorCisgICAgQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxjaGFyKj46OnZh
bHVlLCBXVEZfSXNJbnRlZ2VyX2NoYXJfcG9pbnRlcl9mYWxzZSk7CisgICAgQ09NUElMRV9BU1NF
UlQoIUlzSW50ZWdlcjxjb25zdCBjaGFyKiA+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9jb25zdF9j
aGFyX3BvaW50ZXJfZmFsc2UpOworICAgIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8dm9sYXRp
bGUgY2hhciogPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfdm9sYXRpbGVfY2hhcl9wb2ludGVyX19m
YWxzZSk7CisgICAgQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxkb3VibGU+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl9kb3VibGVfZmFsc2UpOworICAgIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8
ZmxvYXQ+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9mbG9hdF9mYWxzZSk7CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCisjZW5kaWYgLy8gSXNJbnRlZ2VyX2gKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRH
bHVlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCA2MDRjNTUxLi41
NWFjMjllIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNj
cmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDEtMjcgIERhdmlkIExl
dmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJ1ZyAyMjcyMDogTWFrZSBYTUxIdHRwUmVxdWVzdCB3b3JrIGlu
IFdvcmtlcnMKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjcyMD4KKworICAgICAgICBBZGQgZm9yd2FyZGluZyBoZWFkZXIuCisKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy93dGYvSXNJbnRlZ2VyLmg6IEFkZGVkLgorCiAyMDA5LTAxLTIyICBN
YXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
QW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL0lzSW50ZWdlci5oIGIvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0lzSW50ZWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NTc2
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvSXNJbnRlZ2VyLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lz
SW50ZWdlci5oPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBjZmRlYTg0Li41OWJjZWM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDA5LTAxLTI3ICBE
YXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjI3MjA6IE1ha2UgWE1MSHR0cFJlcXVlc3Qg
d29yayBpbiBXb3JrZXJzCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3MjA+CisKKyAgICAgICAgQWRkIGFsbCBvZiB0aGUgZ2VuZXJpYyB3b3JrZXJz
IG5lZWRlZCBmb3IgdGhlIGFzeW5jIHhocgorICAgICAgICBhbmQgZW5zdXJlIGFsbCBwYXJhbWV0
ZXJzIHBhc3NlZCB0aHJvdWdoIHRoZW0gYXJlIHByb3Blcmx5CisgICAgICAgIGNvcGllZCBhdXRv
bWF0aWNhbGx5LgorCisgICAgICAgIFN0b3AgZG9pbmcgdGhlIFdvcmtlck1zc2FnaW5nUHJveHk6
OmFza2VkVG9UZXJtaW5hdGUgY2FsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgIGJlY2F1c2UgaXQg
c2VlbWVkIGEgYml0IHRvbyBoaWRkZW4uICBJdCB3YXMgbmVlZGVkIGluIG1hbnkgY2FzZXMgYnV0
IG5vdCBhbGwsCisgICAgICAgIHNvIGl0IHNlZW1lZCBnb29kIHRvIG1ha2UgdGhpcyB2aXNpYmxl
IGluIGNhbGxiYWNrcy4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZSBpbiBiZWhhdmlv
ciwgc28gbm8gdGVzdC4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Jc0ludGVn
ZXIuaDogQWRkZWQuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogV2ViQ29yZS5zY29uczoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGRvbS9Dcm9z
c1RocmVhZEFkYXB0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ojo6YWRhcHQpOgor
ICAgICAgICAqIGRvbS9Dcm9zc1RocmVhZEFkYXB0ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDcm9zc1RocmVhZEFkYXB0ZXJQYXNzVGhyb3VnaDo6YWRhcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6KToKKyAgICAgICAgKiBkb20vR2VuZXJpY1dvcmtlclRhc2suaDoKKyAgICAgICAgKFdl
YkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazE6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazE6OkdlbmVyaWNXb3JrZXJUYXNr
MSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazE6OnBlcmZvcm1UYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrMjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrMjo6R2VuZXJpY1dvcmtlclRhc2syKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrMjo6cGVyZm9ybVRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2szOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY1dvcmtlclRhc2szOjpHZW5lcmljV29ya2VyVGFzazMpOgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY1dvcmtlclRhc2szOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljV29ya2VyVGFzazQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29y
a2VyVGFzazQ6OkdlbmVyaWNXb3JrZXJUYXNrNCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmlj
V29ya2VyVGFzazQ6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNXb3Jr
ZXJUYXNrNTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNrNTo6
R2VuZXJpY1dvcmtlclRhc2s1KToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNXb3JrZXJUYXNr
NTo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2s2Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2s2OjpHZW5lcmljV29y
a2VyVGFzazYpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1dvcmtlclRhc2s2OjpwZXJmb3Jt
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazc6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazc6OkdlbmVyaWNXb3JrZXJUYXNrNyk6
CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljV29ya2VyVGFzazc6OnBlcmZvcm1UYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxiYWNrVGFzayk6CisgICAgICAgICogZG9tL1dvcmtl
ckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVzc2FnZVRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZSk6CisgICAgICAgICogZG9tL1dv
cmtlck1lc3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6YXNrZWRUb1Rlcm1pbmF0ZSk6CisKIDIwMDktMDEtMjUgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggVGlnZXIgYnVpbGRib3QuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Jc0ludGVnZXIuaCBiL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0lzSW50ZWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5NTc2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9Jc0ludGVnZXIuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSXNJbnRlZ2VyLmg+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAzMGY0MjlmLi5iZTE3MmQ4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTIxODIsNiArMjE4Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oIFwKKwlXZWJDb3JlL2RvbS9Dcm9zc1RocmVhZEFkYXB0ZXIuY3BwIFwK
KwlXZWJDb3JlL2RvbS9Dcm9zc1RocmVhZEFkYXB0ZXIuaCBcCiAJV2ViQ29yZS9kb20vR2VuZXJp
Y1dvcmtlclRhc2suaCBcCiAJV2ViQ29yZS9kb20vV29ya2VyLmNwcCBcCiAJV2ViQ29yZS9kb20v
V29ya2VyLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KaW5kZXggMTMzZjMzNi4uMDI0MTAyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01NjcsNiArNTY3LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgZG9tL0NsaXBib2FyZEV2ZW50LmNwcCBcCiAgICAgZG9tL0NvbW1lbnQu
Y3BwIFwKICAgICBkb20vQ29udGFpbmVyTm9kZS5jcHAgXAorICAgIGRvbS9Dcm9zc1RocmVhZEFk
YXB0ZXIuY3BwIFwKICAgICBkb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uY3BwIFwK
ICAgICBkb20vRG9jdW1lbnQuY3BwIFwKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnNjb25zIGIvV2ViQ29yZS9XZWJDb3JlLnNjb25z
CmluZGV4IGI4YmYwYmIuLmQwYjQ5NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5zY29u
cworKysgYi9XZWJDb3JlL1dlYkNvcmUuc2NvbnMKQEAgLTc4LDYgKzc4LDcgQEAgc291cmNlc1sn
ZG9tJ10gPSBbCiAgICAgJ2RvbS9DbGlwYm9hcmRFdmVudC5jcHAnLAogICAgICdkb20vQ29tbWVu
dC5jcHAnLAogICAgICdkb20vQ29udGFpbmVyTm9kZS5jcHAnLAorICAgICdkb20vQ3Jvc3NUaHJl
YWRBZGFwdGVyLmNwcCcsCiAgICAgJ2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5j
cHAnLAogICAgICdkb20vRG9jdW1lbnQuY3BwJywKICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGViZTZiZDMuLjk5
NDRmZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMTEwOTQsNiAr
MTEwOTQsMjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXENyb3NzVGhyZWFkQWRhcHRlci5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVBy
b2dyYW1PcHRpbWl6YXRpb249InRydWUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxD
cm9zc1RocmVhZEFkYXB0ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMDU3MjE4Li43MjJmZGZkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyLDYgKzEzMiw3IEBACiAJCTA4
RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNkUwRUYwRUZGNDJCQTAw
MDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJCTA4RTZFMEYyMEVGRjQy
QkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZFMEYwMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxG
aWVsZFNldEVsZW1lbnQuaCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwQjRDRTdEQjBGMkU0QkRFMDBG
NkVDMDQgLyogQ3Jvc3NUaHJlYWRBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQjRDRTdEQTBGMkU0QkRFMDBGNkVDMDQgLyogQ3Jvc3NUaHJl
YWRBZGFwdGVyLmggKi87IH07CiAJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVh
ZGVyTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKIAkJ
MEI5MDU2MTkwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYxNTBG
MjU3OEJFMDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJ
MEI5MDU2MUEwRjI1NzhCRjAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MTYwRjI1
NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC0xMzksNiArMTQwLDcgQEAKIAkJMEI5MDU2MUMw
RjI1NzhCRjAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NjE4MEYyNTc4QkUwMDk1RkY2
QSAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoKTsgfTsgfTsKIAkJMEI5MDU2MUUwRjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5
MDU2MUQwRjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuY3BwICovOyB9OwogCQkw
QkE1RDM4NjBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlC
ODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oICovOyB9OworCQkwQkI0REJFMjBGMkVFMjk4MDAz
NTQ2MTkgLyogQ3Jvc3NUaHJlYWRBZGFwdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQjREQkUxMEYyRUUyOTgwMDM1NDYxOSAvKiBDcm9zc1Ro
cmVhZEFkYXB0ZXIuY3BwICovOyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzggLyogUmVu
ZGVyTWFycXVlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsgfTsKIAkJ
MEY1NjAyOTAwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1ODAwNjVC
MDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovOyB9OwogCQkwRjZFQ0Q0NTBGMjUyRjM3MDBCREUy
NzEgLyogQ1NTUHJvcGVydHlMb25naGFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2RUNENDMwRjI1MkYzNzAwQkRFMjcxIC8qIENTU1Byb3BlcnR5
TG9uZ2hhbmQuaCAqLzsgfTsKQEAgLTQ5NzUsNiArNDk3Nyw3IEBACiAJCTA4RkI4NEIwMEVDRTM3
MzMwMERDMDY0RSAvKiBXTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA4RkI4NEIxMEVDRTM3MzMwMERDMDY0RSAvKiBXTUxFbGVtZW50RmFjdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxFbGVtZW50RmFjdG9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDgg
LyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExp
bmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEI0Q0U3REEwRjJFNEJERTAw
RjZFQzA0IC8qIENyb3NzVGhyZWFkQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcm9zc1RocmVhZEFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUEhlYWRlck1hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NjE1MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEI5MDU2MTYwRjI1NzhCRTAwOTVGRjZBIC8qIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5ODIsNiArNDk4NSw3IEBA
CiAJCTBCOTA1NjE4MEYyNTc4QkUwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZGFibGVMb2FkZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI5MDU2MUQwRjI1N0U5MzAwOTVGRjZB
IC8qIFRocmVhZGFibGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGhyZWFkYWJsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljV29ya2VyVGFzay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwQkI0REJFMTBGMkVFMjk4MDAzNTQ2MTkgLyogQ3Jvc3NUaHJl
YWRBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3Nz
VGhyZWFkQWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTYwMjhE
MEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlck1hcnF1ZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NjAyOEUwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWFycXVlZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkVDRDQzMEYyNTJGMzcwMEJERTI3MSAvKiBDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3Bl
cnR5TG9uZ2hhbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjMwLDYgKzE0
MjM0LDggQEAKIAkJCQk4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwgKi8s
CiAJCQkJQTgxODcyMTQwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuY3BwICovLAog
CQkJCUE4MTg3MjExMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggKi8sCisJCQkJ
MEJCNERCRTEwRjJFRTI5ODAwMzU0NjE5IC8qIENyb3NzVGhyZWFkQWRhcHRlci5jcHAgKi8sCisJ
CQkJMEI0Q0U3REEwRjJFNEJERTAwRjZFQzA0IC8qIENyb3NzVGhyZWFkQWRhcHRlci5oICovLAog
CQkJCUJDNjBENkU4MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01Db3JlRXhjZXB0aW9uLmggKi8sCiAJ
CQkJQkM2MEQ2RUIwRDI4RDk5OTAwQjk5MThGIC8qIERPTUNvcmVFeGNlcHRpb24uaWRsICovLAog
CQkJCUE4MTg1RjM2MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAgKi8s
CkBAIC0xNDU1MSw5ICsxNDU1NywxMCBAQAogCQkJCTkzRjE5OTUwMDgyNDVFNTkwMDFFOUFCQyAv
KiBDYWNoZVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5QzNCRDAwNDY3
NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjRCNEND
MENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUMw
QUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFDQkZDOTkwRDEwRTQ4MzAwMkRCRjUxIC8qIENh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMyMDA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkIy
RTVFMDk3OUU0NjQwMEJBNzAzRCAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNCMTZDMjIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjAyLDYgKzE0NjA5LDcgQEAKIAkJCQk5Mzky
RjE0QzBBRDE4NjFCMDA2OTFCRDQgLyogQ291bnRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUQwQjA1NTY4MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBCNENFN0RCMEYyRTRCREUwMEY2RUMwNCAvKiBDcm9zc1RocmVhZEFk
YXB0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBD
dXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3MkEyMEU4MkU4N0MwMEU3Rjk3NSAvKiBD
dXJzb3JEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJBRDBFODJFOEYzMDBFN0Y5NzUg
LyogQ3Vyc29yTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjU4NCw2ICsxNjU5Miw3IEBACiAJ
CQkJRTFDMzYzMDEwRUFGMkNDNjAwNzQxMEJDIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTQ3OTlBNzBFQ0RFM0E0MDAyOTJCRjMgLyogV29ya2VyTWVzc2FnaW5nUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjcxQTBCMEVFRUM3N0EwMEY2MTIxMyAvKiBXb3Jr
ZXJOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE4QTA1MzdEMEYyNjg1OUMwMEE1MTcw
NSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUE2NDNGMjBFQzA5NzI1
MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEwODIyNEIwRUMzMTUzQTAwRTkzOTUzIC8qIFdvcmtlclRhc2suaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQzJDNDI0MEVBQ0UwQkMwMDdFNjFGQiAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTY2NTAsOCArMTY2NTksNiBAQAogCQkJCTFBNTY5RDIzMEQ3RTJCODIwMDdDMzk4
MyAvKiBydW50aW1lX29iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMjUwRDdFMkI4
MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUUw
OTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5pdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTE4
QTA1MzdEMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMTcwMTMsNiArMTcwMjAsNyBAQAogCQkJCUJDQjE2QzE3MDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0IxNkMxOTA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjRD
QjBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MUMwQUE0MTBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNCMTZDMUIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDQjE2QzFGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE3MDU2LDYgKzE3MDY0LDcgQEAKIAkJCQk5Mzky
RjE1MDBBRDE4NjIzMDA2OTFCRDQgLyogQ291bnRlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDBCMDU1NjkwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNEM3NjZEMENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBCQjREQkUyMEYyRUUyOTgwMDM1NDYxOSAvKiBDcm9zc1Ro
cmVhZEFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBMjYwODI0NUU1OTAwMUU5
QUJDIC8qIEN1cnNvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyRjM0RkU5MEU4MkY4Mjcw
MEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdBRTA5N0M3
MTVGMDAxOUYzRDggLyogRE9NLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xNzU3Miw2ICsxNzU4MSw3
IEBACiAJCQkJRTRFRUZGQzgwRDM0NTUwQzAwNDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEyNEVGRjBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2NCAvKiBK
U0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5M0JBNTlCMjBGMkFBNUZFMDA4
RThFOTkgLyogSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0
NkMxRkEwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTQ2hhcnNldFJ1bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0NkMxRkMwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDZDMUZFMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0lt
cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xODYyMyw4ICsxODYzMyw2IEBACiAJCQkJ
MUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5p
dHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFDMEFBNDEwRjJBQTE1RTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTkzQkE1OUIyMEYyQUE1RkUwMDhFOEU5
OSAvKiBKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wK
aW5kZXggOTVkZGRkMy4uMjNlNGRhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNl
cy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTM5OCw2ICszOTgsNyBA
QCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdl
YkNvcmUuCiAgICAgICAgIGRvbS9DbGlwYm9hcmRFdmVudC5jcHAKICAgICAgICAgZG9tL0NvbW1l
bnQuY3BwCiAgICAgICAgIGRvbS9Db250YWluZXJOb2RlLmNwcAorICAgICAgICBkb20vQ3Jvc3NU
aHJlYWRBZGFwdGVyLmNwcAogICAgICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCiAgICAg
ICAgIGRvbS9ET01TdHJpbmdMaXN0LmNwcAogICAgICAgICBkb20vRG9jdW1lbnQuY3BwCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZEFkYXB0ZXIuY3BwIGIvV2ViQ29yZS9kb20v
Q3Jvc3NUaHJlYWRBZGFwdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iNThmNjBiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRBZGFw
dGVyLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJDcm9zc1RocmVh
ZEFkYXB0ZXIuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0Nyb3NzVGhyZWFkQWRhcHRlckJhc2U8ZmFsc2UsIFN0cmluZz46OlJl
dHVyblR5cGUgQ3Jvc3NUaHJlYWRBZGFwdGVyQmFzZTxmYWxzZSwgU3RyaW5nPjo6YWRhcHQoY29u
c3QgU3RyaW5nJiBwYXJhbWV0ZXIpCit7CisgICAgcmV0dXJuIHBhcmFtZXRlci5jb3B5KCk7Cit9
CisKK0Nyb3NzVGhyZWFkQWRhcHRlckJhc2U8ZmFsc2UsIFJlc291cmNlUmVxdWVzdD46OlJldHVy
blR5cGUgQ3Jvc3NUaHJlYWRBZGFwdGVyQmFzZTxmYWxzZSwgUmVzb3VyY2VSZXF1ZXN0Pjo6YWRh
cHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiByZXF1ZXN0
LmNvcHlEYXRhKCk7Cit9CisKK0Nyb3NzVGhyZWFkQWRhcHRlckJhc2U8ZmFsc2UsIFJlc291cmNl
UmVzcG9uc2U+OjpSZXR1cm5UeXBlIENyb3NzVGhyZWFkQWRhcHRlckJhc2U8ZmFsc2UsIFJlc291
cmNlUmVzcG9uc2U+OjphZGFwdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sK
KyAgICByZXR1cm4gcmVzcG9uc2UuY29weURhdGEoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Dcm9zc1RocmVhZEFkYXB0ZXIuaCBiL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkQWRhcHRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNTA0MmYKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZEFkYXB0ZXIuaApAQCAtMCwwICsxLDEwNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQ3Jvc3NUaHJlYWRBZGFwdGVyX2gKKyNk
ZWZpbmUgQ3Jvc3NUaHJlYWRBZGFwdGVyX2gKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5j
bHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHd0Zi9Jc0ludGVnZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQ3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YTsKKyAgICBjbGFzcyBDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE7CisgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworICAgIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CisgICAgY2xhc3MgU3RyaW5nOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQWRhcHRlclBhc3NUaHJvdWdoIHsKKyAgICAgICAgdHlw
ZWRlZiBUIFJldHVyblR5cGU7CisgICAgICAgIHN0YXRpYyBSZXR1cm5UeXBlIGFkYXB0KGNvbnN0
IFQmIHBhcmFtZXRlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcjsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTxib29sIGlzSW50ZWdlciwgdHlwZW5h
bWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQWRhcHRlckJhc2U7CisKKyAgICAvLyBJbnRlZ2VycyBn
ZXQgcGFzc2VkIHRocm91Z2ggd2l0aG91dCBhbnkgY2hhbmdlcy4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRBZGFwdGVyQmFzZTx0cnVlLCBUPiA6IHB1YmxpYyBD
cm9zc1RocmVhZEFkYXB0ZXJQYXNzVGhyb3VnaDxUPiB7CisgICAgfTsKKworICAgIC8vIFBvaW50
ZXJzIGdldCBwYXNzZWQgdGhyb3VnaCB3aXRob3V0IGFueSBjaGFuZ2VzLgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZEFkYXB0ZXJCYXNlPGZhbHNlLCBUKj4gOiBw
dWJsaWMgQ3Jvc3NUaHJlYWRBZGFwdGVyUGFzc1Rocm91Z2g8VCo+IHsKKyAgICB9OworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQWRhcHRlckJhc2U8ZmFsc2Us
IFQqIGNvbnN0PiB7CisgICAgICAgIHR5cGVkZWYgVCogUmV0dXJuVHlwZTsKKyAgICAgICAgc3Rh
dGljIFJldHVyblR5cGUgYWRhcHQoVCogcGFyYW1ldGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gcGFyYW1ldGVyOworICAgICAgICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4g
c3RydWN0IENyb3NzVGhyZWFkQWRhcHRlckJhc2U8ZmFsc2UsIFN0cmluZz4geworICAgICAgICB0
eXBlZGVmIFN0cmluZyBSZXR1cm5UeXBlOworICAgICAgICBzdGF0aWMgUmV0dXJuVHlwZSBhZGFw
dChjb25zdCBTdHJpbmcmKTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRBZGFwdGVyQmFzZTxmYWxzZSwgUmVzb3VyY2VSZXF1ZXN0PiB7CisgICAgICAgIHR5cGVk
ZWYgc3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJldHVyblR5
cGU7CisgICAgICAgIHN0YXRpYyBSZXR1cm5UeXBlIGFkYXB0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZEFkYXB0ZXJC
YXNlPGZhbHNlLCBSZXNvdXJjZVJlc3BvbnNlPiB7CisgICAgICAgIHR5cGVkZWYgc3RkOjphdXRv
X3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXR1cm5UeXBlOworICAgICAg
ICBzdGF0aWMgUmV0dXJuVHlwZSBhZGFwdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
fTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQWRhcHRlckJhc2U8ZmFsc2Us
IENvbnRlbnRTbmlmZj4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRBZGFwdGVyUGFzc1Rocm91Z2g8Q29u
dGVudFNuaWZmPiB7CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFk
QWRhcHRlckJhc2U8ZmFsc2UsIExvYWRDYWxsYmFja3M+IDogcHVibGljIENyb3NzVGhyZWFkQWRh
cHRlclBhc3NUaHJvdWdoPExvYWRDYWxsYmFja3M+IHsKKyAgICB9OworCisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRBZGFwdGVyQmFzZTxmYWxzZSwgTWVzc2FnZURlc3RpbmF0aW9u
PiA6IHB1YmxpYyBDcm9zc1RocmVhZEFkYXB0ZXJQYXNzVGhyb3VnaDxNZXNzYWdlRGVzdGluYXRp
b24+IHsKKyAgICB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRBZGFwdGVy
QmFzZTxmYWxzZSwgTWVzc2FnZUxldmVsPiA6IHB1YmxpYyBDcm9zc1RocmVhZEFkYXB0ZXJQYXNz
VGhyb3VnaDxNZXNzYWdlTGV2ZWw+IHsKKyAgICB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q3Jvc3NUaHJlYWRBZGFwdGVyQmFzZTxmYWxzZSwgTWVzc2FnZVNvdXJjZT4gOiBwdWJsaWMgQ3Jv
c3NUaHJlYWRBZGFwdGVyUGFzc1Rocm91Z2g8TWVzc2FnZVNvdXJjZT4geworICAgIH07CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRBZGFwdGVyIDogcHVibGlj
IENyb3NzVGhyZWFkQWRhcHRlckJhc2U8V1RGOjpJc0ludGVnZXI8VD46OnZhbHVlLCBUPiB7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktF
UlMpCisKKyNlbmRpZiAvLyBDcm9zc1RocmVhZEFkYXB0ZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaCBiL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNr
LmgKaW5kZXggNzlmZDE0OC4uZTZmZWU1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vR2VuZXJp
Y1dvcmtlclRhc2suaAorKysgYi9XZWJDb3JlL2RvbS9HZW5lcmljV29ya2VyVGFzay5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzMs
NDAgKzMzLDIzNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlICJXb3JrZXJN
ZXNzYWdpbmdQcm94eS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJDcm9zc1RocmVhZEFkYXB0ZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEdl
bmVyaWNXb3JrZXJUYXNrQmFzZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEdlbmVyaWNXb3JrZXJUYXNrQmFzZShXb3JrZXJN
ZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdp
bmdQcm94eSkKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IFJlZmVyZW5jZVR5cGUgeworICAgICAgICB0eXBlZGVmIGNv
bnN0IFQmIFR5cGU7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBB
dXRvUHRyVHlwZSB7CisgICAgICAgIHR5cGVkZWYgVCBUeXBlOworICAgIH07CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUHRyVHlwZSB7CisgICAgICAgIHR5cGVkZWYgVCBUeXBl
OworICAgIH07CisKKyAgICAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdHlwZSBUIHRvIGEgOjpUeXBl
IHRoYXQgd291bGQgaW52b2x2ZSBvbmx5IGEgc2ltcGxlIGNvcHkgZm9yIGEgcGFzc2VkIGluIFQu
CisgICAgLy8gU3BlY2lmaWNhbGx5LAorICAgIC8vICAgIGF1dG9fcHRyPFQ+IC0+IGF1dG9fcHRy
PFQ+CisgICAgLy8gICAgVCogLT4gVCoKKyAgICAvLyAgICBUIC0+IGNvbnN0IFQmIGZvciBhbGwg
b3RoZXIgdHlwZXMuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbXBsZXhDb3B5
QXZvaWRlciA6IHB1YmxpYyBSZWZlcmVuY2VUeXBlPFQ+IHsKKyAgICB9OworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbXBsZXhDb3B5QXZvaWRlcjxUKj4gOiBwdWJsaWMgUHRy
VHlwZTxUKj4geworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29t
cGxleENvcHlBdm9pZGVyPFQqIGNvbnN0PiA6IHB1YmxpYyBQdHJUeXBlPFQqPiB7CisgICAgfTsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb21wbGV4Q29weUF2b2lkZXI8c3Rk
OjphdXRvX3B0cjxUPiA+IDogcHVibGljIEF1dG9QdHJUeXBlPHN0ZDo6YXV0b19wdHI8VD4gPiB7
CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+CisgICAg
Y2xhc3MgR2VuZXJpY1dvcmtlclRhc2sxIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTVAxKTsKKyAgICAgICAgdHlwZWRlZiBHZW5lcmljV29ya2Vy
VGFzazE8UDEsIE1QMT4gR2VuZXJpY1dvcmtlclRhc2s7CisgICAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ29tcGxleENvcHlBdm9pZGVyPFAxPjo6VHlwZSBJblBhcmFtMTsKKworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxHZW5lcmljV29ya2VyVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIElu
UGFyYW0xIHBhcmFtZXRlcjEpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR2VuZXJpY1dvcmtlclRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBib29sIGNhblBlcmZvcm1UYXNrKCkKKyAgICBwcml2YXRlOgorICAgICAgICBH
ZW5lcmljV29ya2VyVGFzazEoTWV0aG9kIG1ldGhvZCwgSW5QYXJhbTEgcGFyYW1ldGVyMSkKKyAg
ICAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFtX21lc3NhZ2luZ1By
b3h5LT5hc2tlZFRvVGVybWluYXRlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBXb3JrZXJNZXNz
YWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSk7CisgICAgICAgIH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICAgICAgUDEgbV9wYXJh
bWV0ZXIxOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgorICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNr
MiA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHR5cGVkZWYgdm9pZCAoKk1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1Q
MSwgTVAyKTsKKyAgICAgICAgdHlwZWRlZiBHZW5lcmljV29ya2VyVGFzazI8UDEsIE1QMSwgUDIs
IE1QMj4gR2VuZXJpY1dvcmtlclRhc2s7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29tcGxl
eENvcHlBdm9pZGVyPFAxPjo6VHlwZSBJblBhcmFtMTsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBDb21wbGV4Q29weUF2b2lkZXI8UDI+OjpUeXBlIEluUGFyYW0yOworCisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgSW5Q
YXJhbTEgcGFyYW1ldGVyMSwgSW5QYXJhbTIgcGFyYW1ldGVyMikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljV29ya2VyVGFzayhtZXRob2QsIHBhcmFt
ZXRlcjEsIHBhcmFtZXRlcjIpKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
R2VuZXJpY1dvcmtlclRhc2syKE1ldGhvZCBtZXRob2QsIEluUGFyYW0xIHBhcmFtZXRlcjEsIElu
UGFyYW0yIHBhcmFtZXRlcjIpCisgICAgICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAg
ICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICAgICAsIG1fcGFyYW1l
dGVyMihwYXJhbWV0ZXIyKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3Bh
cmFtZXRlcjIpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBNZXRob2QgbV9t
ZXRob2Q7CisgICAgICAgIFAxIG1fcGFyYW1ldGVyMTsKKyAgICAgICAgUDIgbV9wYXJhbWV0ZXIy
OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgorICAgIGNs
YXNzIEdlbmVyaWNXb3JrZXJUYXNrMyA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKk1ldGhvZCkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMpOworICAgICAgICB0eXBlZGVmIEdlbmVy
aWNXb3JrZXJUYXNrMzxQMSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzPiBHZW5lcmljV29ya2VyVGFz
azsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb21wbGV4Q29weUF2b2lkZXI8UDE+OjpUeXBl
IEluUGFyYW0xOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIENvbXBsZXhDb3B5QXZvaWRlcjxQ
Mj46OlR5cGUgSW5QYXJhbTI7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29tcGxleENvcHlB
dm9pZGVyPFAzPjo6VHlwZSBJblBhcmFtMzsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
ZW5lcmljV29ya2VyVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIEluUGFyYW0xIHBhcmFtZXRl
cjEsIEluUGFyYW0yIHBhcmFtZXRlcjIsIEluUGFyYW0zIHBhcmFtZXRlcjMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY1dvcmtlclRhc2sobWV0aG9k
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CisgICAgICAgIH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIEdlbmVyaWNXb3JrZXJUYXNrMyhNZXRob2QgbWV0aG9kLCBJblBh
cmFtMSBwYXJhbWV0ZXIxLCBJblBhcmFtMiBwYXJhbWV0ZXIyLCBJblBhcmFtMyBwYXJhbWV0ZXIz
KQorICAgICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgICAgICAgICAsIG1fcGFyYW1l
dGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVyMikK
KyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICAoKm1fbWV0aG9kKShjb250
ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsKKyAgICAgICAg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWV0aG9kIG1fbWV0aG9kOworICAgICAgICBQMSBt
X3BhcmFtZXRlcjE7CisgICAgICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICAgICAgUDMgbV9wYXJh
bWV0ZXIzOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAx
LCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0
eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0PgorICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrNCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHR5cGVkZWYgdm9pZCAoKk1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwg
TVAyLCBNUDMsIE1QNCk7CisgICAgICAgIHR5cGVkZWYgR2VuZXJpY1dvcmtlclRhc2s0PFAxLCBN
UDEsIFAyLCBNUDIsIFAzLCBNUDMsIFA0LCBNUDQ+IEdlbmVyaWNXb3JrZXJUYXNrOworICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIENvbXBsZXhDb3B5QXZvaWRlcjxQMT46OlR5cGUgSW5QYXJhbTE7
CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29tcGxleENvcHlBdm9pZGVyPFAyPjo6VHlwZSBJ
blBhcmFtMjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb21wbGV4Q29weUF2b2lkZXI8UDM+
OjpUeXBlIEluUGFyYW0zOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIENvbXBsZXhDb3B5QXZv
aWRlcjxQND46OlR5cGUgSW5QYXJhbTQ7CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2Vu
ZXJpY1dvcmtlclRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBJblBhcmFtMSBwYXJhbWV0ZXIx
LCBJblBhcmFtMiBwYXJhbWV0ZXIyLCBJblBhcmFtMyBwYXJhbWV0ZXIzLCBJblBhcmFtNCBwYXJh
bWV0ZXI0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVy
aWNXb3JrZXJUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywg
cGFyYW1ldGVyNCkpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBHZW5lcmlj
V29ya2VyVGFzazQoTWV0aG9kIG1ldGhvZCwgSW5QYXJhbTEgcGFyYW1ldGVyMSwgSW5QYXJhbTIg
cGFyYW1ldGVyMiwgSW5QYXJhbTMgcGFyYW1ldGVyMywgSW5QYXJhbTQgcGFyYW1ldGVyNCkKKyAg
ICAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCisgICAg
ICAgICAgICAsIG1fcGFyYW1ldGVyMyhwYXJhbWV0ZXIzKQorICAgICAgICAgICAgLCBtX3BhcmFt
ZXRlcjQocGFyYW1ldGVyNCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9w
YXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7CisgICAgICAgIH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICAgICAgUDEgbV9wYXJhbWV0
ZXIxOworICAgICAgICBQMiBtX3BhcmFtZXRlcjI7CisgICAgICAgIFAzIG1fcGFyYW1ldGVyMzsK
KyAgICAgICAgUDQgbV9wYXJhbWV0ZXI0OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQ
MywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwg
dHlwZW5hbWUgTVA1PgorICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrNSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYg
dm9pZCAoKk1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1Q
NCwgTVA1KTsKKyAgICAgICAgdHlwZWRlZiBHZW5lcmljV29ya2VyVGFzazU8UDEsIE1QMSwgUDIs
IE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNT4gR2VuZXJpY1dvcmtlclRhc2s7CisgICAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29tcGxleENvcHlBdm9pZGVyPFAxPjo6VHlwZSBJblBhcmFt
MTsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb21wbGV4Q29weUF2b2lkZXI8UDI+OjpUeXBl
IEluUGFyYW0yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIENvbXBsZXhDb3B5QXZvaWRlcjxQ
Mz46OlR5cGUgSW5QYXJhbTM7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29tcGxleENvcHlB
dm9pZGVyPFA0Pjo6VHlwZSBJblBhcmFtNDsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb21w
bGV4Q29weUF2b2lkZXI8UDU+OjpUeXBlIEluUGFyYW01OworCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEdlbmVyaWNXb3JrZXJUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgSW5QYXJhbTEg
cGFyYW1ldGVyMSwgSW5QYXJhbTIgcGFyYW1ldGVyMiwgSW5QYXJhbTMgcGFyYW1ldGVyMywgSW5Q
YXJhbTQgcGFyYW1ldGVyNCwgSW5QYXJhbTUgcGFyYW1ldGVyNSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljV29ya2VyVGFzayhtZXRob2QsIHBhcmFt
ZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUpKTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgR2VuZXJpY1dvcmtlclRhc2s1KE1l
dGhvZCBtZXRob2QsIEluUGFyYW0xIHBhcmFtZXRlcjEsIEluUGFyYW0yIHBhcmFtZXRlcjIsIElu
UGFyYW0zIHBhcmFtZXRlcjMsIEluUGFyYW00IHBhcmFtZXRlcjQsIEluUGFyYW01IHBhcmFtZXRl
cjUpCisgICAgICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgICAgICwgbV9wYXJh
bWV0ZXIxKHBhcmFtZXRlcjEpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMihwYXJhbWV0ZXIy
KQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjMocGFyYW1ldGVyMykKKyAgICAgICAgICAgICwg
bV9wYXJhbWV0ZXI0KHBhcmFtZXRlcjQpCisgICAgICAgICAgICAsIG1fcGFyYW1ldGVyNShwYXJh
bWV0ZXI1KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIs
IG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUpOworICAgICAgICB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgICAgIFAxIG1fcGFy
YW1ldGVyMTsKKyAgICAgICAgUDIgbV9wYXJhbWV0ZXIyOworICAgICAgICBQMyBtX3BhcmFtZXRl
cjM7CisgICAgICAgIFA0IG1fcGFyYW1ldGVyNDsKKyAgICAgICAgUDUgbV9wYXJhbWV0ZXI1Owog
ICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQ
NCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwg
dHlwZW5hbWUgTVA2PgotICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrNiA6IHB1YmxpYyBHZW5l
cmljV29ya2VyVGFza0Jhc2UgeworICAgIGNsYXNzIEdlbmVyaWNXb3JrZXJUYXNrNiA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgdm9pZCAoKk1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBN
UDMsIE1QNCwgTVA1LCBNUDYpOwogICAgICAgICB0eXBlZGVmIEdlbmVyaWNXb3JrZXJUYXNrNjxQ
MSwgTVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2PiBHZW5l
cmljV29ya2VyVGFzazsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb21wbGV4Q29weUF2b2lk
ZXI8UDE+OjpUeXBlIEluUGFyYW0xOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIENvbXBsZXhD
b3B5QXZvaWRlcjxQMj46OlR5cGUgSW5QYXJhbTI7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
Q29tcGxleENvcHlBdm9pZGVyPFAzPjo6VHlwZSBJblBhcmFtMzsKKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBDb21wbGV4Q29weUF2b2lkZXI8UDQ+OjpUeXBlIEluUGFyYW00OworICAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIENvbXBsZXhDb3B5QXZvaWRlcjxQNT46OlR5cGUgSW5QYXJhbTU7Cisg
ICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29tcGxleENvcHlBdm9pZGVyPFA2Pjo6VHlwZSBJblBh
cmFtNjsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljV29ya2VyVGFzaz4gY3Jl
YXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWV0aG9kIG1ldGhvZCwg
Y29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFy
YW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0ZXI1LCBjb25z
dCBQNiYgcGFyYW1ldGVyNikKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VuZXJpY1dvcmtl
clRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBJblBhcmFtMSBwYXJhbWV0ZXIxLCBJblBhcmFt
MiBwYXJhbWV0ZXIyLCBJblBhcmFtMyBwYXJhbWV0ZXIzLCBJblBhcmFtNCBwYXJhbWV0ZXI0LCBJ
blBhcmFtNSBwYXJhbWV0ZXI1LCBJblBhcmFtNiBwYXJhbWV0ZXI2KQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWNXb3JrZXJUYXNrKG1lc3NhZ2luZ1By
b3h5LCBtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRl
cjQsIHBhcmFtZXRlcjUsIHBhcmFtZXRlcjYpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR2VuZXJpY1dvcmtlclRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBw
YXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2KSk7CiAgICAgICAg
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEdlbmVyaWNXb3JrZXJUYXNrNihXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1ldGhvZCBtZXRob2QsIGNvbnN0IFAxJiBwYXJh
bWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0
IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRl
cjYpCi0gICAgICAgICAgICA6IEdlbmVyaWNXb3JrZXJUYXNrQmFzZShtZXNzYWdpbmdQcm94eSkK
LSAgICAgICAgICAgICwgbV9tZXRob2QobWV0aG9kKQorICAgICAgICBHZW5lcmljV29ya2VyVGFz
azYoTWV0aG9kIG1ldGhvZCwgSW5QYXJhbTEgcGFyYW1ldGVyMSwgSW5QYXJhbTIgcGFyYW1ldGVy
MiwgSW5QYXJhbTMgcGFyYW1ldGVyMywgSW5QYXJhbTQgcGFyYW1ldGVyNCwgSW5QYXJhbTUgcGFy
YW1ldGVyNSwgSW5QYXJhbTYgcGFyYW1ldGVyNikKKyAgICAgICAgICAgIDogbV9tZXRob2QobWV0
aG9kKQogICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKICAgICAgICAgICAg
ICwgbV9wYXJhbWV0ZXIyKHBhcmFtZXRlcjIpCiAgICAgICAgICAgICAsIG1fcGFyYW1ldGVyMyhw
YXJhbWV0ZXIzKQpAQCAtNzgsOCArMjc1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWNhblBlcmZvcm1UYXNrKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9w
YXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3Bh
cmFtZXRlcjUsIG1fcGFyYW1ldGVyNik7CiAgICAgICAgIH0KIApAQCAtOTMsMTMgKzI4OCwxMzUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQNiBtX3BhcmFtZXRlcjY7CiAgICAgfTsK
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0
eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBl
bmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFt
ZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+CisgICAgY2xhc3MgR2VuZXJpY1dvcmtl
clRhc2s3IDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KTsKKyAgICAgICAgdHlwZWRlZiBH
ZW5lcmljV29ya2VyVGFzazc8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwgUDUs
IE1QNSwgUDYsIE1QNiwgUDcsIE1QNz4gR2VuZXJpY1dvcmtlclRhc2s7CisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ29tcGxleENvcHlBdm9pZGVyPFAxPjo6VHlwZSBJblBhcmFtMTsKKyAgICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBDb21wbGV4Q29weUF2b2lkZXI8UDI+OjpUeXBlIEluUGFyYW0y
OworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIENvbXBsZXhDb3B5QXZvaWRlcjxQMz46OlR5cGUg
SW5QYXJhbTM7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29tcGxleENvcHlBdm9pZGVyPFA0
Pjo6VHlwZSBJblBhcmFtNDsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb21wbGV4Q29weUF2
b2lkZXI8UDU+OjpUeXBlIEluUGFyYW01OworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIENvbXBs
ZXhDb3B5QXZvaWRlcjxQNj46OlR5cGUgSW5QYXJhbTY7CisgICAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ29tcGxleENvcHlBdm9pZGVyPFA3Pjo6VHlwZSBJblBhcmFtNzsKKworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxHZW5lcmljV29ya2VyVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIElu
UGFyYW0xIHBhcmFtZXRlcjEsIEluUGFyYW0yIHBhcmFtZXRlcjIsIEluUGFyYW0zIHBhcmFtZXRl
cjMsIEluUGFyYW00IHBhcmFtZXRlcjQsIEluUGFyYW01IHBhcmFtZXRlcjUsIEluUGFyYW02IHBh
cmFtZXRlcjYsIEluUGFyYW03IHBhcmFtZXRlcjcpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY1dvcmtlclRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBw
YXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2
LCBwYXJhbWV0ZXI3KSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEdlbmVy
aWNXb3JrZXJUYXNrNyhNZXRob2QgbWV0aG9kLCBJblBhcmFtMSBwYXJhbWV0ZXIxLCBJblBhcmFt
MiBwYXJhbWV0ZXIyLCBJblBhcmFtMyBwYXJhbWV0ZXIzLCBJblBhcmFtNCBwYXJhbWV0ZXI0LCBJ
blBhcmFtNSBwYXJhbWV0ZXI1LCBJblBhcmFtNiBwYXJhbWV0ZXI2LCBJblBhcmFtNyBwYXJhbWV0
ZXI3KQorICAgICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgICAgICAgICAsIG1fcGFy
YW1ldGVyMShwYXJhbWV0ZXIxKQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjIocGFyYW1ldGVy
MikKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXIzKHBhcmFtZXRlcjMpCisgICAgICAgICAgICAs
IG1fcGFyYW1ldGVyNChwYXJhbWV0ZXI0KQorICAgICAgICAgICAgLCBtX3BhcmFtZXRlcjUocGFy
YW1ldGVyNSkKKyAgICAgICAgICAgICwgbV9wYXJhbWV0ZXI2KHBhcmFtZXRlcjYpCisgICAgICAg
ICAgICAsIG1fcGFyYW1ldGVyNyhwYXJhbWV0ZXI3KQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9w
YXJhbWV0ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3Bh
cmFtZXRlcjUsIG1fcGFyYW1ldGVyNiwgbV9wYXJhbWV0ZXI3KTsKKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgTWV0aG9kIG1fbWV0aG9kOworICAgICAgICBQMSBtX3BhcmFtZXRl
cjE7CisgICAgICAgIFAyIG1fcGFyYW1ldGVyMjsKKyAgICAgICAgUDMgbV9wYXJhbWV0ZXIzOwor
ICAgICAgICBQNCBtX3BhcmFtZXRlcjQ7CisgICAgICAgIFA1IG1fcGFyYW1ldGVyNTsKKyAgICAg
ICAgUDYgbV9wYXJhbWV0ZXI2OworICAgICAgICBQNyBtX3BhcmFtZXRlcjc7CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+CisgICAgUGFzc1JlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgICAg
IHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEpLAorICAgICAgICBj
b25zdCBQMSYgcGFyYW1ldGVyMSkKKyAgICB7CisgICAgICAgIHJldHVybiBHZW5lcmljV29ya2Vy
VGFzazE8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAxPjo6UmV0dXJuVHlwZSwgTVAxPjo6
Y3JlYXRlKAorICAgICAgICAgICAgbWV0aG9kLAorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRBZGFw
dGVyPFAxPjo6YWRhcHQocGFyYW1ldGVyMSkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDI+CisgICAgUGFz
c1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2so
CisgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1Q
MiksCisgICAgICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMikK
KyAgICB7CisgICAgICAgIHJldHVybiBHZW5lcmljV29ya2VyVGFzazI8dHlwZW5hbWUgQ3Jvc3NU
aHJlYWRBZGFwdGVyPFAxPjo6UmV0dXJuVHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZEFk
YXB0ZXI8UDI+OjpSZXR1cm5UeXBlLCBNUDI+OjpjcmVhdGUoCisgICAgICAgICAgICBtZXRob2Qs
CisgICAgICAgICAgICBDcm9zc1RocmVhZEFkYXB0ZXI8UDE+OjphZGFwdChwYXJhbWV0ZXIxKSwg
Q3Jvc3NUaHJlYWRBZGFwdGVyPFAyPjo6YWRhcHQocGFyYW1ldGVyMikpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+CisgICAgUGFzc1JlZlB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgICAgIHZvaWQg
KCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzKSwKKyAgICAg
ICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYg
cGFyYW1ldGVyMykKKyAgICB7CisgICAgICAgIHJldHVybiBHZW5lcmljV29ya2VyVGFzazM8dHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAxPjo6UmV0dXJuVHlwZSwgTVAxLCB0eXBlbmFtZSBD
cm9zc1RocmVhZEFkYXB0ZXI8UDI+OjpSZXR1cm5UeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQWRhcHRlcjxQMz46OlJldHVyblR5cGUsIE1QMz46OmNyZWF0ZSgKKyAgICAgICAgICAgIG1l
dGhvZCwKKyAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMT46OmFkYXB0KHBhcmFtZXRl
cjEpLCBDcm9zc1RocmVhZEFkYXB0ZXI8UDI+OjphZGFwdChwYXJhbWV0ZXIyKSwKKyAgICAgICAg
ICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMz46OmFkYXB0KHBhcmFtZXRlcjMpKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5h
bWUgTVA0PgorICAgIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3Jl
YXRlQ2FsbGJhY2tUYXNrKAorICAgICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0KSwKKyAgICAgICAgY29uc3QgUDEmIHBhcmFtZXRl
cjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQm
IHBhcmFtZXRlcjQpCisgICAgeworICAgICAgICByZXR1cm4gR2VuZXJpY1dvcmtlclRhc2s0PHR5
cGVuYW1lIENyb3NzVGhyZWFkQWRhcHRlcjxQMT46OlJldHVyblR5cGUsIE1QMSwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRBZGFwdGVyPFAyPjo6UmV0dXJuVHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1Ro
cmVhZEFkYXB0ZXI8UDM+OjpSZXR1cm5UeXBlLCBNUDMsCisgICAgICAgICAgICB0eXBlbmFtZSBD
cm9zc1RocmVhZEFkYXB0ZXI8UDQ+OjpSZXR1cm5UeXBlLCBNUDQ+OjpjcmVhdGUoCisgICAgICAg
ICAgICAgICAgbWV0aG9kLAorICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMT46
OmFkYXB0KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZEFkYXB0ZXI8UDI+OjphZGFwdChwYXJhbWV0
ZXIyKSwKKyAgICAgICAgICAgICAgICBDcm9zc1RocmVhZEFkYXB0ZXI8UDM+OjphZGFwdChwYXJh
bWV0ZXIzKSwgQ3Jvc3NUaHJlYWRBZGFwdGVyPFA0Pjo6YWRhcHQocGFyYW1ldGVyNCkpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAy
LCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0
eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDU+CisgICAgUGFzc1JlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgICAg
IHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBN
UDQsIE1QNSksCisgICAgICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1l
dGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQ
NSYgcGFyYW1ldGVyNSkKKyAgICB7CisgICAgICAgIHJldHVybiBHZW5lcmljV29ya2VyVGFzazU8
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAxPjo6UmV0dXJuVHlwZSwgTVAxLCB0eXBlbmFt
ZSBDcm9zc1RocmVhZEFkYXB0ZXI8UDI+OjpSZXR1cm5UeXBlLCBNUDIsIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQWRhcHRlcjxQMz46OlJldHVyblR5cGUsIE1QMywKKyAgICAgICAgICAgIHR5cGVuYW1l
IENyb3NzVGhyZWFkQWRhcHRlcjxQND46OlJldHVyblR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRBZGFwdGVyPFA1Pjo6UmV0dXJuVHlwZSwgTVA1Pjo6Y3JlYXRlKAorICAgICAgICAgICAg
ICAgIG1ldGhvZCwKKyAgICAgICAgICAgICAgICBDcm9zc1RocmVhZEFkYXB0ZXI8UDE+OjphZGFw
dChwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAyPjo6YWRhcHQocGFyYW1ldGVyMiks
CisgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAzPjo6YWRhcHQocGFyYW1ldGVy
MyksIENyb3NzVGhyZWFkQWRhcHRlcjxQND46OmFkYXB0KHBhcmFtZXRlcjQpLAorICAgICAgICAg
ICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQNT46OmFkYXB0KHBhcmFtZXRlcjUpKTsKKyAgICB9
CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlw
ZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5h
bWUgTVA2PgotICAgIFBhc3NSZWZQdHI8R2VuZXJpY1dvcmtlclRhc2s2PFAxLCBNUDEsIFAyLCBN
UDIsIFAzLCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+ID4gY3JlYXRlQ2FsbGJhY2tU
YXNrKAotICAgICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksCisgICAg
UGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rh
c2soCiAgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEs
IE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKICAgICAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEs
IGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBh
cmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBHZW5lcmljV29ya2VyVGFzazY8UDEsIE1QMSwgUDIsIE1QMiwg
UDMsIE1QMywgUDQsIE1QNCwgUDUsIE1QNSwgUDYsIE1QNj46OmNyZWF0ZShtZXNzYWdpbmdQcm94
eSwgbWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0
LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2KTsKKyAgICAgICAgcmV0dXJuIEdlbmVyaWNXb3JrZXJU
YXNrNjx0eXBlbmFtZSBDcm9zc1RocmVhZEFkYXB0ZXI8UDE+OjpSZXR1cm5UeXBlLCBNUDEsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQWRhcHRlcjxQMj46OlJldHVyblR5cGUsIE1QMiwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRBZGFwdGVyPFAzPjo6UmV0dXJuVHlwZSwgTVAzLAorICAgICAgICAgICAgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRBZGFwdGVyPFA0Pjo6UmV0dXJuVHlwZSwgTVA0LCB0eXBlbmFtZSBD
cm9zc1RocmVhZEFkYXB0ZXI8UDU+OjpSZXR1cm5UeXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQWRhcHRlcjxQNj46OlJldHVyblR5cGUsIE1QNj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAg
ICBtZXRob2QsCisgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRBZGFwdGVyPFAxPjo6YWRhcHQo
cGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQWRhcHRlcjxQMj46OmFkYXB0KHBhcmFtZXRlcjIpLAor
ICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMz46OmFkYXB0KHBhcmFtZXRlcjMp
LCBDcm9zc1RocmVhZEFkYXB0ZXI8UDQ+OjphZGFwdChwYXJhbWV0ZXI0KSwKKyAgICAgICAgICAg
ICAgICBDcm9zc1RocmVhZEFkYXB0ZXI8UDU+OjphZGFwdChwYXJhbWV0ZXI1KSwgQ3Jvc3NUaHJl
YWRBZGFwdGVyPFA2Pjo6YWRhcHQocGFyYW1ldGVyNikpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVu
YW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1l
IFA3LCB0eXBlbmFtZSBNUDc+CisgICAgUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCisgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcpLAor
ICAgICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0
IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRl
cjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBHZW5lcmljV29ya2VyVGFzazc8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRBZGFw
dGVyPFAxPjo6UmV0dXJuVHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZEFkYXB0ZXI8UDI+
OjpSZXR1cm5UeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQWRhcHRlcjxQMz46OlJldHVy
blR5cGUsIE1QMywKKyAgICAgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQWRhcHRlcjxQND46
OlJldHVyblR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRBZGFwdGVyPFA1Pjo6UmV0dXJu
VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZEFkYXB0ZXI8UDY+OjpSZXR1cm5UeXBlLCBN
UDYsCisgICAgICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZEFkYXB0ZXI8UDc+OjpSZXR1cm5U
eXBlLCBNUDc+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgbWV0aG9kLAorICAgICAgICAgICAg
ICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQMT46OmFkYXB0KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVh
ZEFkYXB0ZXI8UDI+OjphZGFwdChwYXJhbWV0ZXIyKSwKKyAgICAgICAgICAgICAgICBDcm9zc1Ro
cmVhZEFkYXB0ZXI8UDM+OjphZGFwdChwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRBZGFwdGVyPFA0
Pjo6YWRhcHQocGFyYW1ldGVyNCksCisgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRBZGFwdGVy
PFA1Pjo6YWRhcHQocGFyYW1ldGVyNSksIENyb3NzVGhyZWFkQWRhcHRlcjxQNj46OmFkYXB0KHBh
cmFtZXRlcjYpLAorICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQWRhcHRlcjxQNz46OmFkYXB0
KHBhcmFtZXRlcjcpKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyQ29u
dGV4dC5jcHAKaW5kZXggZmU0NjQzZS4uOGVmMWI0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
V29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5jcHAKQEAg
LTExMSwxOCArMTExLDE2IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwKICAgICBtX3RocmVhZC0+
bWVzc2FnaW5nUHJveHkoKS0+cG9zdFdvcmtlckV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlv
biwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
K3N0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWVzc2FnZURlc3RpbmF0
aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQogeworICAgIGlmIChtZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0
ZSgpKQorICAgICAgICByZXR1cm47CiAgICAgY29udGV4dC0+YWRkTWVzc2FnZShkZXN0aW5hdGlv
biwgc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAog
dm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5h
dGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKIHsKLSAgICAvLyBjcmVhdGVDYWxsYmFja1Rhc2sgaGFzIHRvIGJlIGEgc2VwYXJhdGUgc3Rh
dGVtZW50IGZyb20gcG9zdFRhc2tUb1BhcmVudENvbnRleHQgdG8gbWFrZSB0aGUgZGVzdHJ1Y3Rv
cgotICAgIC8vIGZvciBtZXNzYWdlLmNvcHkoKSBnZXQgY2FsbGVkIGJlZm9yZSBwb3N0VGFza1Rv
UGFyZW50Q29udGV4dC4gIChJZiB0aGV5IGFyZSBvbmUgc3RhdGVtZW50LCB0aGUgZGVzdHJ1Y3Rv
cgotICAgIC8vIGdldHMgY2FsbGVkIGFmdGVyIHBvc3RUYXNrVG9QYXJlbnRDb250ZXh0IHdoaWNo
IGNhdXNlcyBhIHJhY2UgY29uZGl0aW9uLikgCi0gICAgUmVmUHRyPFRhc2s+IHRhc2sgPSBjcmVh
dGVDYWxsYmFja1Rhc2sobV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCksICZhZGRNZXNzYWdlVGFz
aywgZGVzdGluYXRpb24sIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UuY29weSgpLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwuY29weSgpKTsKLSAgICBwb3N0VGFza1RvUGFyZW50Q29udGV4dCh0YXNrLnJl
bGVhc2UoKSk7CisgICAgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZhZGRNZXNzYWdlVGFzaywgbV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCksIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0KIAog
dm9pZCBXb3JrZXJDb250ZXh0OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5z
aWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oCmluZGV4IGU3YmE4YTkuLjYxYjk2MmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHku
aApAQCAtNjMsMTEgKzYzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBy
ZXBvcnRXb3JrZXJUaHJlYWRBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CiAgICAg
ICAgIGJvb2wgd29ya2VyVGhyZWFkSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKKyAgICAg
ICAgYm9vbCBhc2tlZFRvVGVybWluYXRlKCkgY29uc3QgeyByZXR1cm4gbV9hc2tlZFRvVGVybWlu
YXRlOyB9CisKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgR2VuZXJpY1dvcmtl
clRhc2tCYXNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWVzc2FnZVdvcmtlclRhc2s7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJDb250ZXh0RGVzdHJveWVkVGFzazsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIFdvcmtlckV4Y2VwdGlvblRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3Jr
ZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s7CiAKICAgICAgICAgfldvcmtlck1lc3NhZ2luZ1By
b3h5KCk7CkBAIC03NSw3ICs3NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCByZXBvcnRX
b3JrZXJUaHJlYWRBY3Rpdml0eUludGVybmFsKGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICAgICAgV29ya2VyKiB3b3JrZXJPYmplY3QoKSBjb25z
dCB7IHJldHVybiBtX3dvcmtlck9iamVjdDsgfQotICAgICAgICBib29sIGFza2VkVG9UZXJtaW5h
dGUoKSB7IHJldHVybiBtX2Fza2VkVG9UZXJtaW5hdGU7IH0KIAogICAgICAgICBSZWZQdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgICAgICBX
b3JrZXIqIG1fd29ya2VyT2JqZWN0Owo=
</data>
<flag name="review"
          id="12991"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27071</attachid>
            <date>2009-01-27 03:34:32 -0800</date>
            <delta_ts>2009-02-12 21:51:56 -0800</delta_ts>
            <desc>Part 6: Small adjustments to the ThreadableLoader::loadResourceSynchronously to make it easier to implement for Workers</desc>
            <filename>bug22720_part6_2.txt</filename>
            <type>text/plain</type>
            <size>7679</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTFkMzcwYi4uMGMxNDIyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0wMS0yNCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIFNvbWUgc21hbGwgY2hhbmdlcyB0byBUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5CisgICAgICAgIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRv
IGZvciB3b3JrZXJzIChhY3Jvc3MgdGhyZWFkcykuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBj
aGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OlByZWZsaWdodFJlc3VsdENhY2hlOjpjYW5Ta2lwUHJlZmxp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpsb2FkUmVxdWVzdFN5bmNo
cm9ub3VzbHkpOgorCiAyMDA5LTAxLTIzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggMGJhMGM1Ni4uNTQ1MDhlNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgiCkBAIC01NSwxNSArNTYsMjYgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAgICByZXR1
cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihjb250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25p
ZmYpOwogfQogCi11bnNpZ25lZCBsb25nIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3Vuc2lnbmVkIGxvbmcgVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRlckVycm9yVHlw
ZSYgZXJyb3JUeXBlLCBPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4mIHJlc3BvbnNlLCBWZWN0b3I8
Y2hhcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEFTU0VSVChjb250ZXh0
LT5pc0RvY3VtZW50KCkpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KTsKLSAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpKQorICAgIGlm
ICghZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZXJyb3JUeXBlID0gRmFpbGVkTG9hZGVy
RXJyb3I7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+
OjptYXgoKTsKLSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAg
fQorICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgcmVzcG9uc2Uuc2V0KG5ldyBSZXNvdXJj
ZVJlc3BvbnNlKCkpOworICAgIHVuc2lnbmVkIGxvbmcgaWRlbml0aWZlciA9IGRvY3VtZW50LT5m
cmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCBlcnJv
ciwgKnJlc3BvbnNlLCBkYXRhKTsKKyAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIGVy
cm9yVHlwZSA9IE5vTG9hZGVyRXJyb3I7CisgICAgZWxzZSBpZiAoZXJyb3IuaXNDYW5jZWxsYXRp
b24oKSkKKyAgICAgICAgZXJyb3JUeXBlID0gQ2FuY2VsbGVkTG9hZGVyRXJyb3I7CisgICAgZWxz
ZQorICAgICAgICBlcnJvclR5cGUgPSBGYWlsZWRMb2FkZXJFcnJvcjsKKyAgICByZXR1cm4gaWRl
bml0aWZlcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlci5oCmluZGV4IGU4ZmYwNTguLjI5NWQwZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgVGhyZWFkYWJsZUxvYWRlcl9oCiAKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUzLDEy
ICs1NCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERvTm90U25pZmZDb250ZW50
CiAgICAgfTsKIAorICAgIGVudW0gTG9hZGVyRXJyb3JUeXBlIHsKKyAgICAgICAgTm9Mb2FkZXJF
cnJvciwKKyAgICAgICAgRmFpbGVkTG9hZGVyRXJyb3IsCisgICAgICAgIENhbmNlbGxlZExvYWRl
ckVycm9yCisgICAgfTsKKwogICAgIC8vIFVzZWZ1bCBmb3IgZG9pbmcgbG9hZGVyIG9wZXJhdGlv
bnMgZnJvbSBhbnkgdGhyZWFkIChub3QgdGhyZWFkc2FmZSwgCiAgICAgLy8ganVzdCBhYmxlIHRv
IHJ1biBvbiB0aHJlYWRzIG90aGVyIHRoYW4gdGhlIG1haW4gdGhyZWFkKS4KICAgICBjbGFzcyBU
aHJlYWRhYmxlTG9hZGVyIDogTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
TG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmKTsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGxv
bmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBW
ZWN0b3I8Y2hhcj4mIGRhdGEpOworICAgICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBMb2FkZXJFcnJvclR5cGUmLCBPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4mLCBW
ZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7
CiAgICAgICAgIHZvaWQgcmVmKCkgeyByZWZUaHJlYWRhYmxlTG9hZGVyKCk7IH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAppbmRleCBlNDg0Njg2Li4zZWU0ZDJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKLSNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJl
cXVlc3RVcGxvYWQuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNTMsNiArNTMsOCBAQAogI2luY2x1
ZGUgIkpTRE9NV2luZG93LmgiCiAjZW5kaWYKIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hh
c2g+IEhlYWRlcnNTZXQ7CkBAIC0xMzIsNyArMTM0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBQcmVmbGlnaHRSZXN1bHRDYWNoZSgpIHsgfQogCi0gICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6
cGFpcjxTdHJpbmcsIEtVUkw+LCBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0qPiBQcmVmbGlnaHRS
ZXN1bHRIYXNoTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxwYWlyPFN0cmluZywgS1VSTD4sIFBy
ZWZsaWdodFJlc3VsdENhY2hlSXRlbSo+IFByZWZsaWdodFJlc3VsdEhhc2hNYXA7CiAKICAgICBQ
cmVmbGlnaHRSZXN1bHRIYXNoTWFwIG1fcHJlZmxpZ2h0SGFzaE1hcDsKICAgICBNdXRleCBtX211
dGV4OwpAQCAtMjgzLDE0ICsyODUsMTQgQEAgdm9pZCBQcmVmbGlnaHRSZXN1bHRDYWNoZTo6YXBw
ZW5kRW50cnkoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgUHIKIHsKICAg
ICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgIC8vIE5vdGUgdGhhdCB0aGUgZW50cnkg
bWF5IGFscmVhZHkgYmUgcHJlc2VudCBpbiB0aGUgSGFzaE1hcCBpZiBhbm90aGVyIHRocmVhZCBp
cyBhY2Nlc3NpbmcgdGhlIHNhbWUgbG9jYXRpb24uCi0gICAgbV9wcmVmbGlnaHRIYXNoTWFwLnNl
dChzdGQ6Om1ha2VfcGFpcihvcmlnaW4uY29weSgpLCB1cmwuY29weSgpKSwgcHJlZmxpZ2h0UmVz
dWx0KTsKKyAgICBtX3ByZWZsaWdodEhhc2hNYXAuc2V0KG1ha2VfcGFpcihvcmlnaW4uY29weSgp
LCB1cmwuY29weSgpKSwgcHJlZmxpZ2h0UmVzdWx0KTsKIH0KIAogYm9vbCBQcmVmbGlnaHRSZXN1
bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIHJlcXVlc3RIZWFkZXJzKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7
Ci0gICAgUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDo6aXRlcmF0b3IgY2FjaGVJdCA9IG1fcHJlZmxp
Z2h0SGFzaE1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG9yaWdpbiwgdXJsKSk7CisgICAgUHJlZmxp
Z2h0UmVzdWx0SGFzaE1hcDo6aXRlcmF0b3IgY2FjaGVJdCA9IG1fcHJlZmxpZ2h0SGFzaE1hcC5m
aW5kKG1ha2VfcGFpcihvcmlnaW4sIHVybCkpOwogICAgIGlmIChjYWNoZUl0ID09IG1fcHJlZmxp
Z2h0SGFzaE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MDgsMjUgKzgx
MCwyNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpsb2FkUmVxdWVzdFN5bmNocm9ub3VzbHkoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBFeGNlcHRpbwogewogICAgIEFTU0VSVCghbV9hc3luYyk7
CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKLSAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBy
ZXNwb25zZTsKKyAgICBMb2FkZXJFcnJvclR5cGUgZXJyb3JUeXBlID0gTm9Mb2FkZXJFcnJvcjsK
IAotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCBl
cnJvciwgcmVzcG9uc2UsIGRhdGEpOworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCByZXF1ZXN0LCBlcnJvclR5cGUsIHJlc3BvbnNlLCBkYXRhKTsKICAgICBtX2xv
YWRlciA9IDA7CiAKICAgICAvLyBObyBleGNlcHRpb24gZm9yIGZpbGU6Ly8vIHJlc291cmNlcywg
c2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KICAgICAvLyBBbHNvLCBpZiB3ZSBoYXZlIGFu
IEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0d29yayBlcnJvciBpbiBmYWN0Lgot
ICAgIGlmIChlcnJvci5pc051bGwoKSB8fCByZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkgfHwg
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+IDApIHsKLSAgICAgICAgcHJvY2Vzc1N5bmNMb2Fk
UmVzdWx0cyhpZGVudGlmaWVyLCBkYXRhLCByZXNwb25zZSwgZWMpOworICAgIGlmIChlcnJvclR5
cGUgPT0gTm9Mb2FkZXJFcnJvciB8fCByZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkgfHwgKHJl
c3BvbnNlLmdldCgpICYmIHJlc3BvbnNlLT5odHRwU3RhdHVzQ29kZSgpID4gMCkpIHsKKyAgICAg
ICAgcHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyhpZGVudGlmaWVyLCBkYXRhLCAqcmVzcG9uc2UsIGVj
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlv
bigpKSB7CisgICAgaWYgKGVycm9yVHlwZSA9PSBDYW5jZWxsZWRMb2FkZXJFcnJvcikgewogICAg
ICAgICBhYm9ydEVycm9yKCk7CiAgICAgICAgIGVjID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246
OkFCT1JUX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFTU0VSVChlcnJvclR5
cGUgPT0gRmFpbGVkTG9hZGVyRXJyb3IpOwogICAgIG5ldHdvcmtFcnJvcigpOwogICAgIGVjID0g
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogfQo=
</data>
<flag name="review"
          id="12992"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27101</attachid>
            <date>2009-01-28 04:53:52 -0800</date>
            <delta_ts>2009-01-29 23:48:20 -0800</delta_ts>
            <desc>Part 5b: Add a Worker implementation for the async portion of ThreadableLoader.</desc>
            <filename>bug22720_part5b.txt</filename>
            <type>text/plain</type>
            <size>36990</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2ZkZWE4NC4uYzVkN2MzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAwOS0wMS0yOCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIEVuYWJsZSBUaHJlYWRhYmxlTG9hZGVyIGZvciB3b3JrZXJzLiAgTm93
LCB3aGVuIHRoZSB4aHIgYmluZGluZ3MgYXJlCisgICAgICAgIGV4cG9zZWQgdG8gd29ya2Vycywg
YXN5bmMgeGhyIHNob3VsZCB3b3JrLgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGlu
IGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnNjb25zOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6
CisgICAgICAgICogZG9tL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgICogbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6OlRocmVhZGFi
bGVMb2FkZXJDbGllbnRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRl
ckNsaWVudEJyaWRnZTo6Y3JlYXRlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVMb2FkZXJDbGllbnRCcmlkZ2U6On5UaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6OndvcmtlclRocmVh
ZGFibGVMb2FkZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRl
ckNsaWVudEJyaWRnZTo6d29ya2VyVGhyZWFkYWJsZUxvYWRlckRlc3Ryb3llZEludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6OmNhbmNlbCk6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlOjpjYW5jZWxM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6
ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudEJy
aWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVM
b2FkZXJDbGllbnRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlOjpkaWRHZXRDYW5jZWxsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudEJyaWRnZS5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp+V29ya2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6YXNrZWRUb1Rlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkU2VuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVu
dERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjp0ZWxsQ2xpZW50RGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZEdl
dENhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp0
ZWxsQ2xpZW50RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpyZWZUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmRlcmVmVGhyZWFkYWJsZUxvYWRlcik6CisK
IDIwMDktMDEtMjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRy
eSB0byBmaXggVGlnZXIgYnVpbGRib3QuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBiZTE3MmQ4Li5kMWJhNzQxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTEwOTIsNiArMTA5MiwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyLmggXAogCVdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBcCisJ
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZS5jcHAgXAorCVdlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuaCBcCisJV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuaCBcCiAJV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlLmggXAog
CVdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIFwKIAlXZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMDI0MTAyNC4uYjhjZTQxYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBA
IC04MTIsNiArODEyLDggQEAgU09VUkNFUyArPSBcCiAgICAgbG9hZGVyL1RleHREb2N1bWVudC5j
cHAgXAogICAgIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBcCiAgICAgbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwIFwKKyAgICBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudEJy
aWRnZS5jcHAgXAorICAgIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBcCiAgICAg
cGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBcCiAgICAgcGFnZS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCBcICAgIAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3QuY3BwIFwgICAg
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuc2NvbnMgYi9XZWJDb3JlL1dlYkNvcmUuc2Nv
bnMKaW5kZXggZDBiNDk2Yy4uM2MxZDczYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnNj
b25zCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5zY29ucwpAQCAtMzU3LDcgKzM1Nyw5IEBAIHNvdXJj
ZXNbJ2xvYWRlciddID0gWwogICAgICdsb2FkZXIvVGV4dERvY3VtZW50LmNwcCcsCiAgICAgJ2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCcsCiAgICAgJ2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcCcsCisgICAgJ2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlLmNwcCcs
CiAgICAgJ2xvYWRlci9Vc2VyU3R5bGVTaGVldExvYWRlci5jcHAnLAorICAgICdsb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAnLAogXQogc291cmNlc1sncGFnZSddID0gWwogICAgICdw
YWdlL0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDk5NDRmZmUuLjE3MjJlZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMjkzNSw2ICsyOTM1LDIyIEBACiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxsb2FkZXJcVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRCcmlkZ2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXFRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxv
YWRlclxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJpY29u
Ig0KIAkJCQk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3MjJmZGZkLi45ZTcwZTAzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM5LDYgKzEzOSwxMCBAQAogCQkwQjkwNTYxQjBGMjU3OEJGMDA5NUZGNkEg
LyogVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEI5MDU2MTcwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwQjkwNTYxQzBGMjU3
OEJGMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2MTgwRjI1NzhCRTAwOTVGRjZBIC8q
IFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgp
OyB9OyB9OwogCQkwQjkwNTYxRTBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYx
RDBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgKi87IH07CisJCTBCOTA1
NkY4MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NkY2MEYyNjg1RjMw
MDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLzsgfTsKKwkJMEI5MDU2Rjkw
RjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NkY3MEYyNjg1RjMwMDk1RkY2
QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoKTsgfTsgfTsKKwkJMEI5NEQzNDEwRjMwODA1MjAwQUUxMjg0IC8qIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEI5NEQzM0YwRjMwODA1MjAwQUUxMjg0IC8qIFRocmVhZGFibGVMb2FkZXJDbGll
bnRCcmlkZ2UuY3BwICovOyB9OworCQkwQjk0RDM0MjBGMzA4MDUyMDBBRTEyODQgLyogVGhyZWFk
YWJsZUxvYWRlckNsaWVudEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEI5NEQzNDAwRjMwODA1MjAwQUUxMjg0IC8qIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRCcmlkZ2UuaCAqLzsgfTsKIAkJMEJBNUQzODYwRjI0MEZCNDAwOUI4NzBCIC8qIEdl
bmVyaWNXb3JrZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCAq
LzsgfTsKIAkJMEJCNERCRTIwRjJFRTI5ODAwMzU0NjE5IC8qIENyb3NzVGhyZWFkQWRhcHRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkI0REJF
MTBGMkVFMjk4MDAzNTQ2MTkgLyogQ3Jvc3NUaHJlYWRBZGFwdGVyLmNwcCAqLzsgfTsKIAkJMEY1
NjAyOEYwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAv
KiBSZW5kZXJNYXJxdWVlLmggKi87IH07CkBAIC00OTg0LDYgKzQ5ODgsMTAgQEAKIAkJMEI5MDU2
MTcwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkYWJsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQjkwNTYxODBGMjU3OEJFMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NjFEMEYyNTdFOTMw
MDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRocmVhZGFibGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwQjkwNTZGNjBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEI5MDU2RjcwRjI2
ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwQjk0RDMzRjBGMzA4MDUyMDBBRTEyODQgLyogVGhyZWFkYWJsZUxv
YWRlckNsaWVudEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEI5NEQzNDAwRjMwODA1MjAwQUUxMjg0IC8qIFRocmVhZGFibGVMb2FkZXJDbGll
bnRCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkYWJsZUxv
YWRlckNsaWVudEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkE1RDM4
NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dvcmtlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEJCNERCRTEwRjJFRTI5ODAwMzU0NjE5IC8qIENyb3NzVGhyZWFkQWRhcHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc1RocmVhZEFk
YXB0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2MDI4RDBFNEI3NjU4
MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNYXJxdWVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU5
Nyw4ICsxMzYwNSwxMiBAQAogCQkJCTBCOTA1NjFEMEYyNTdFOTMwMDk1RkY2QSAvKiBUaHJlYWRh
YmxlTG9hZGVyLmNwcCAqLywKIAkJCQkwQjkwNTYxNzBGMjU3OEJFMDA5NUZGNkEgLyogVGhyZWFk
YWJsZUxvYWRlci5oICovLAogCQkJCTBCOTA1NjE4MEYyNTc4QkUwMDk1RkY2QSAvKiBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmggKi8sCisJCQkJMEI5NEQzM0YwRjMwODA1MjAwQUUxMjg0IC8qIFRo
cmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuY3BwICovLAorCQkJCTBCOTREMzQwMEYzMDgwNTIw
MEFFMTI4NCAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlLmggKi8sCiAJCQkJNzI4NEFE
REIwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCAqLywKIAkJCQk3
Mjg0QUREQzBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuaCAqLywKKwkJ
CQkwQjkwNTZGNjBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAg
Ki8sCisJCQkJMEI5MDU2RjcwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaCAqLywKIAkJCQlCQ0IxNkMxMzA5NzlDM0JEMDA0Njc3NDEgLyogbG9hZGVyLmNwcCAqLywK
IAkJCQlCQ0IxNkMxNDA5NzlDM0JEMDA0Njc3NDEgLyogbG9hZGVyLmggKi8sCiAJCQkpOwpAQCAt
MTY0ODgsNiArMTY1MDAsNyBAQAogCQkJCUUxRkY1N0EzMEYwMTI1NUIwMDg5MUVCQiAvKiBUaHJl
YWRHbG9iYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQjkwNTYxQjBGMjU3OEJGMDA5NUZG
NkEgLyogVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEI5MDU2MUMwRjI1
NzhCRjAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBCOTREMzQyMEYzMDgwNTIwMEFFMTI4NCAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJp
ZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNCMDBDRDYzMzEwMDBGQURBNzUgLyogVGlt
ZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8q
IFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyog
VGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTY1OTYsNiArMTY2MDksNyBAQAog
CQkJCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTA4MjI0QjBFQzMxNTNBMDBFOTM5NTMgLyogV29ya2VyVGFz
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDMkM0MjQwRUFDRTBCQzAwN0U2MUZCIC8qIFdvcmtl
clRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEI5MDU2RjkwRjI2ODVGMzAwOTVGRjZBIC8q
IFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTI0MDk5
RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTY1NjU4MjAyMDlEMTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzc3MkM0NzBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTg0NzksNiArMTg0OTMsNyBAQAogCQkJCTUxREY2RDgw
MEI5MkExOEUwMEMyREM4NSAvKiBUaHJlYWRDaGVjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUx
RkY1N0E2MEYwMTI1NkIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBCOTA1NjFFMEYyNTdFOTMwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBCOTREMzQxMEYzMDgwNTIwMEFFMTI4NCAvKiBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50QnJpZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxM0FGMENE
NjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5
RUE0MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5
MTFDRjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTE4NTc4LDYgKzE4NTkzLDcgQEAKIAkJCQlFMUE2NDNGRDBFQzA5N0EwMDA3Nzk2
NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTA4
MjI0RjBFQzMxNTY3MDBFOTM5NTMgLyogV29ya2VyVGFzay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMUMyQzQyOTBFQUNFMEUwMDA3RTYxRkIgLyogV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBCOTA1NkY4MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTIzMDk5RTY0OTIwMDU2RTU4MSAvKiBX
cmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgz
M0M3Q0MwQTJDRjA3NDAwRDU3NjY0IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM3NzJDNDYwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wgYi9XZWJDb3Jl
L1dlYkNvcmVTb3VyY2VzLmJrbAppbmRleCAyM2U0ZGE5Li4yYzVlZjdmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAorKysgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJr
bApAQCAtNjU5LDYgKzY1OSw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxl
cyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgbG9hZGVyL1RleHREb2N1bWVudC5j
cHAKICAgICAgICAgbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCiAgICAgICAgIGxvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorICAgICAgICBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNs
aWVudEJyaWRnZS5jcHAKKyAgICAgICAgbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CiAgICAgICAgIGxvYWRlci9sb2FkZXIuY3BwCiAgICAgPC9zZXQ+CiAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFk
LmNwcAppbmRleCBhNzYyZTBiLi43YWUwODVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAKQEAgLTM0LDcg
KzM0LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIldvcmtlci5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJNZXNzYWdpbmdQ
cm94eS5oIgogI2luY2x1ZGUgIldvcmtlclRhc2suaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggMGYyMmZiZS4uMGJhMGM1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsOCArNDUsMTMgQEAgUGFzc1JlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY28KIHsKICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBBU1NFUlQoY29udGV4dCk7
Ci0gICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKKyNpZiBFTkFCTEUoV09SS0VS
UykKKyAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+
KGNvbnRleHQpLCBjbGllbnQsIHJlcXVlc3QsIGNhbGxiYWNrc1NldHRpbmcsIGNvbnRlbnRTbmlm
Zik7CisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCisKKyAgICBBU1NFUlQoY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKICAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBjYWxsYmFj
a3NTZXR0aW5nLCBjb250ZW50U25pZmYpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGZkZTQwNC4uMjEwYjc4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXJDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiwgaW50IC8qbGVuZ3RoUmVjZWl2ZWQqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmZXIqLykgeyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlm
aWVyKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkR2V0Q2FuY2VsbGVkKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmFlZWQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuY3BwCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50QnJpZGdlLmgiCisKKyNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgor
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1RocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6OlRocmVhZGFibGVMb2FkZXJDbGllbnRC
cmlkZ2UoV29ya2VyVGhyZWFkYWJsZUxvYWRlciogd29ya2VyTG9hZGVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVu
dFNuaWZmIGNvbnRlbnRTbmlmZikKKyAgICA6IG1fd29ya2VyTG9hZGVyKHdvcmtlckxvYWRlcikK
K3sKKyAgICBtX3dvcmtlckxvYWRlci0+bV93b3JrZXJDb250ZXh0LT5wb3N0VGFza1RvUGFyZW50
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJlRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6
OmNyZWF0ZUxvYWRlciwgdGhpcywgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNu
aWZmKSk7Cit9CisKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6Y3JlYXRlTG9h
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGll
bnRCcmlkZ2UqIGJyaWRnZSwgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
PiByZXF1ZXN0RGF0YSwgTG9hZENhbGxiYWNrcyBjYWxsYmFja3NTZXR0aW5nLCBDb250ZW50U25p
ZmYgY29udGVudFNuaWZmKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydCBmYWlscyBmb3Ig
bmVzdGVkIHdvcmtlcnMuICBSZW1vdmluZyB0aGUgYXNzZXJ0IHdvdWxkIGFsbG93IGl0IHRvIHdv
cmssCisgICAgLy8gYnV0IHRoZW4gdGhlcmUgd291bGQgYmUgb25lIFdvcmtlclRocmVhZGFibGVM
b2FkZXIgaW4gZXZlcnkgaW50ZXJtZWRpYXRlIHdvcmtlciBzaW1wbHkKKyAgICAvLyBjaGFpbmlu
ZyB0aGUgcmVxdWVzdHMsIHdoaWNoIGlzIG5vdCB2ZXJ5IGdvb2QuIEluc3RlYWQsIHRoZSBwb3N0
VGFza1RvUGFyZW50Q29udGV4dCBzaG91bGQgYmUgYQorICAgIC8vIHBvc3RUYXNrVG9Eb2N1bWVu
dENvbnRleHQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGJvb2wgYXNrZWRU
b1Rlcm1pbmF0ZTsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvYWRlckxvY2tlcihicmlk
Z2UtPm1fd29ya2VyTG9hZGVyTXV0ZXgpOworICAgICAgICBhc2tlZFRvVGVybWluYXRlID0gIWJy
aWRnZS0+bV93b3JrZXJMb2FkZXIgfHwgYnJpZGdlLT5tX3dvcmtlckxvYWRlci0+YXNrZWRUb1Rl
cm1pbmF0ZSgpOworICAgIH0KKworICAgIGlmIChhc2tlZFRvVGVybWluYXRlKSB7CisgICAgICAg
IGJyaWRnZS0+ZGlkRmFpbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklY
TUU6IHRoZSBjcmVhdGVkIGxvYWRlciBoYXMgbm8ga25vd2xlZGdlIG9mIHRoZSBvcmlnaW4gb2Yg
dGhlIHdvcmtlciBkb2luZyB0aGUgbG9hZCByZXF1ZXN0LgorICAgIC8vIEJhc2ljYWxseSBldmVy
eSBzZXR0aW5nIGRvbmUgaW4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSAoaW5jbHVkaW5nIHRo
ZSBjb250ZW50cyBvZiBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCkKKyAgICAvLyBuZWVkcyB0byBi
ZSBleGFtaW5lZCBmb3IgaG93IGl0IHNob3VsZCBiZSB0YWtlIGludG8gYWNjb3VudCBhIGRpZmZl
cmVudCBvcmlnaW5hdG9yLgorICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0YSkpOworICAgIGJyaWRnZS0+bV9wYXJlbnRM
b2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoY29udGV4dCwgYnJpZGdlLCAqcmVxdWVz
dCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKTsKKyAgICBpZiAoIWJyaWRnZS0+bV9w
YXJlbnRMb2FkZXIpCisgICAgICAgIGJyaWRnZS0+ZGlkRmFpbCgpOworfQorCitUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50QnJpZGdlOjp+VGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZSgpCit7Cit9
CisKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6d29ya2VyVGhyZWFkYWJsZUxv
YWRlckRlc3Ryb3llZCgpCit7CisgICAgLy8gV2l0aCBhbiBlbXB0eSBtX3dvcmtlckxvYWRlciBu
byBtb3JlIGNhbGxiYWNrcyB3aWxsIGJlIG1hZGUuCisgICAgLy8gSW4gdGhlIGxpZmVjeWNsZSBv
ZiBhIFdvcmtlckNvbnRleHQsIHRoZSBsYXRlc3QgdGhpcyBoYXBwZW5zIGlzIHdoZW4gdGhlIHdv
cmtlcgorICAgIC8vIGNvbnRleHQncyBzY3JpcHQgZW52aXJvbm1lbnQgaXMgYmVpbmcgc2h1dHRp
bmcgZG93biAod2hpY2ggaXMgYmVmb3JlIHRoZQorICAgIC8vIFdvcmtlckNvbnRleHQgaXMgY2xl
YW5lZCB1cCkuCisgICAgUmVmUHRyPFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQ7CisgICAg
eworICAgICAgICBNdXRleExvY2tlciBsb2FkZXJMb2NrZXIobV93b3JrZXJMb2FkZXJNdXRleCk7
CisgICAgICAgIHdvcmtlckNvbnRleHQgPSBtX3dvcmtlckxvYWRlci0+bV93b3JrZXJDb250ZXh0
LnJlbGVhc2UoKTsKKyAgICAgICAgbV93b3JrZXJMb2FkZXIgPSAwOworICAgIH0KKworICAgIC8v
IFBvc3QgYSBtZXNzYWdlIHRvIGRvIHRoZSBmaW5hbCBkZXJlZiBzbyB0aGF0IHRoZSBkZXJlZiBv
ZiB0aGUgbV9wYXJlbnRMb2FkZXIgaGFwcGVucyBvbiB0aGUgcGFyZW50IHRocmVhZC4KKyAgICB3
b3JrZXJDb250ZXh0LT5wb3N0VGFza1RvUGFyZW50Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2so
JlRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6OndvcmtlclRocmVhZGFibGVMb2FkZXJEZXN0
cm95ZWRJbnRlcm5hbCwgdGhpcykpOworICAgIC8vIFRoZSBpbnN0YW5jZSBtYXkgYmUgZGVsZXRl
ZCBhdCB0aGlzIHBvaW50LgorfQorCit2b2lkIFRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6
OndvcmtlclRocmVhZGFibGVMb2FkZXJEZXN0cm95ZWRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZSogYnJpZGdlKQoreworICAgIGRl
bGV0ZSBicmlkZ2U7Cit9CisKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6Y2Fu
Y2VsKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2FkZXJMb2NrZXIobV93b3JrZXJMb2FkZXJNdXRl
eCk7CisgICAgaWYgKCFtX3dvcmtlckxvYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fd29y
a2VyTG9hZGVyLT5tX3dvcmtlckNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygm
VGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6Y2FuY2VsTG9hZGVyLCB0aGlzKSk7Cit9CisK
K3ZvaWQgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6Y2FuY2VsTG9hZGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlKiBicmlkZ2UpCit7
CisgICAgTXV0ZXhMb2NrZXIgbG9hZGVyTG9ja2VyKGJyaWRnZS0+bV93b3JrZXJMb2FkZXJNdXRl
eCk7CisgICAgaWYgKCFicmlkZ2UtPm1fd29ya2VyTG9hZGVyIHx8ICFicmlkZ2UtPm1fcGFyZW50
TG9hZGVyKQorICAgICAgICByZXR1cm47CisgICAgYnJpZGdlLT5tX3BhcmVudExvYWRlci0+Y2Fu
Y2VsKCk7CisgICAgYnJpZGdlLT5tX3BhcmVudExvYWRlciA9IDA7Cit9CisKK3ZvaWQgVGhyZWFk
YWJsZUxvYWRlckNsaWVudEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKK3sKKyAgICBN
dXRleExvY2tlciBsb2FkZXJMb2NrZXIobV93b3JrZXJMb2FkZXJNdXRleCk7CisgICAgaWYgKCFt
X3dvcmtlckxvYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fd29ya2VyTG9hZGVyLT5tX3dv
cmtlckNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6dGVsbENsaWVudERpZFNlbmREYXRhLCBtX3dvcmtlckxvYWRlciwgYnl0ZXNTZW50
LCB0b3RhbEJ5dGVzVG9CZVNlbnQpKTsKK30KKwordm9pZCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
QnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9hZGVyTG9ja2VyKG1fd29ya2VyTG9hZGVyTXV0ZXgp
OworICAgIGlmICghbV93b3JrZXJMb2FkZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dvcmtl
ckxvYWRlci0+bV93b3JrZXJDb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJldv
cmtlclRocmVhZGFibGVMb2FkZXI6OnRlbGxDbGllbnREaWRSZWNlaXZlUmVzcG9uc2UsIG1fd29y
a2VyTG9hZGVyLCByZXNwb25zZSkpOworfQorCit2b2lkIFRocmVhZGFibGVMb2FkZXJDbGllbnRC
cmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZl
ZCkKK3sKKyAgICBNdXRleExvY2tlciBsb2FkZXJMb2NrZXIobV93b3JrZXJMb2FkZXJNdXRleCk7
CisgICAgaWYgKCFtX3dvcmtlckxvYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGNoYXIqIGNv
cGllZERhdGEgPSBuZXcgY2hhcltsZW5ndGhSZWNlaXZlZF07CisgICAgbWVtY3B5KGNvcGllZERh
dGEsIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICBtX3dvcmtlckxvYWRlci0+bV93b3JrZXJD
b250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OnRlbGxDbGllbnREaWRSZWNlaXZlRGF0YSwgbV93b3JrZXJMb2FkZXIsIGNvcGllZERhdGEs
IGxlbmd0aFJlY2VpdmVkKSk7Cit9CisKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRn
ZTo6ZGlkRmluaXNoTG9hZGluZyhpbnQgaWRlbnRpZmllcikKK3sKKyAgICBNdXRleExvY2tlciBs
b2FkZXJMb2NrZXIobV93b3JrZXJMb2FkZXJNdXRleCk7CisgICAgaWYgKCFtX3dvcmtlckxvYWRl
cikKKyAgICAgICAgcmV0dXJuOworICAgIG1fd29ya2VyTG9hZGVyLT5tX3dvcmtlckNvbnRleHQt
PnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVs
bENsaWVudERpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyTG9hZGVyLCBpZGVudGlmaWVyKSk7Cit9
CisKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6ZGlkRmFpbCgpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9hZGVyTG9ja2VyKG1fd29ya2VyTG9hZGVyTXV0ZXgpOworICAgIGlmICgh
bV93b3JrZXJMb2FkZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dvcmtlckxvYWRlci0+bV93
b3JrZXJDb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFi
bGVMb2FkZXI6OnRlbGxDbGllbnREaWRGYWlsLCBtX3dvcmtlckxvYWRlcikpOworfQorCit2b2lk
IFRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2U6OmRpZEdldENhbmNlbGxlZCgpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9hZGVyTG9ja2VyKG1fd29ya2VyTG9hZGVyTXV0ZXgpOworICAgIGlmICgh
bV93b3JrZXJMb2FkZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dvcmtlckxvYWRlci0+bV93
b3JrZXJDb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFi
bGVMb2FkZXI6OnRlbGxDbGllbnREaWRHZXRDYW5jZWxsZWQsIG1fd29ya2VyTG9hZGVyKSk7Cit9
CisKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorewor
ICAgIE11dGV4TG9ja2VyIGxvYWRlckxvY2tlcihtX3dvcmtlckxvYWRlck11dGV4KTsKKyAgICBp
ZiAoIW1fd29ya2VyTG9hZGVyKQorICAgICAgICByZXR1cm47CisgICAgbV93b3JrZXJMb2FkZXIt
Pm1fd29ya2VyQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0
aW9uLCBtX3dvcmtlckxvYWRlciwgcmVzcG9uc2UpKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuaCBiL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mYjQ1NjljCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudEJyaWRnZS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRocmVhZGFi
bGVMb2FkZXJDbGllbnRCcmlkZ2VfaAorI2RlZmluZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJp
ZGdlX2gKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgorCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CisgICAgY2xhc3MgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjsKKyAgICBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhOworCisgICAgY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNs
aWVudEJyaWRnZSA6IFRocmVhZGFibGVMb2FkZXJDbGllbnQsIE5vbmNvcHlhYmxlIHsKKyAgICBw
dWJsaWM6IAorICAgICAgICAvLyBFeGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJl
YWQuCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UoV29ya2VyVGhyZWFkYWJs
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENvbnRlbnRT
bmlmZik7CisKKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKyAgICAgICAgdm9pZCB3b3JrZXJUaHJl
YWRhYmxlTG9hZGVyRGVzdHJveWVkKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBFeGVj
dXRlZCBvbiB0aGUgcGFyZW50IGNvbnRleHQncyB0aHJlYWQgaW4gb3JkZXIgdG8gY2xlYW4gdXAg
bWVtYmVyIHZhcmlhYmxlcyB0aGF0IHdlcmUgY3JlYXRlZCB0aGVyZS4KKyAgICAgICAgc3RhdGlj
IHZvaWQgd29ya2VyVGhyZWFkYWJsZUxvYWRlckRlc3Ryb3llZEludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlKik7CisgICAgICAgIH5U
aHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlKCk7CisKKyAgICAgICAgLy8gQWxsIGV4ZWN1dGVk
IG9uIHRoZSBwYXJlbnQgY29udGV4dCdzIHRocmVhZC4KKyAgICAgICAgc3RhdGljIHZvaWQgY3Jl
YXRlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
QnJpZGdlKiwgc3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+LCBM
b2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYpOworICAgICAgICBzdGF0aWMgdm9pZCBjYW5jZWxM
b2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlk
Z2UqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBp
bnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhpbnQgaWRlbnRpZmllcik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRDYW5jZWxsZWQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisKKyAgICAgICAgLy8gT25seSB0byBiZSB1c2VkIG9uIHRoZSBwYXJlbnQgY29udGV4
dCdzIHRocmVhZC4KKyAgICAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fcGFyZW50TG9h
ZGVyOworCisgICAgICAgIG11dGFibGUgTXV0ZXggbV93b3JrZXJMb2FkZXJNdXRleDsKKyAgICAg
ICAgLy8gQWxsIHVzYWdlIG9uIHRoZSBwYXJlbnQgY29udGV4dCdzIHRocmVhZCBtdXN0IGJlIGd1
YXJkZWQgd2l0aCB0aGUgbXV0ZXguCisgICAgICAgIC8vIEFsbCBtb2RpZmljYXRpb24gb24gdGhl
IHdvcmtlciBjb250ZXh0J3MgdGhyZWFkIG11c3QgYmUgZ3VhcmRlZCB3aXRoIHRoZSBtdXRleC4K
KyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlciogbV93b3JrZXJMb2FkZXI7CisgICAgfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCisK
KyNlbmRpZiAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50QnJpZGdlX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMzJmMzlmNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgiCisKKyNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgorI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZS5o
IgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJNZXNzYWdpbmdQ
cm94eS5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3Rk
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dvcmtlclRocmVhZGFibGVMb2FkZXI6Oldvcmtl
clRocmVhZGFibGVMb2FkZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExv
YWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZikK
KyAgICA6IG1fd29ya2VyQ29udGV4dCh3b3JrZXJDb250ZXh0KQorICAgICwgbV9jbGllbnQoY2xp
ZW50KQorICAgICwgbV9icmlkZ2UobmV3IFRocmVhZGFibGVMb2FkZXJDbGllbnRCcmlkZ2UodGhp
cywgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKSkKK3sKKyAgICBBU1NF
UlQod29ya2VyQ29udGV4dCk7CisgICAgQVNTRVJUKGNsaWVudCk7Cit9CisKK1dvcmtlclRocmVh
ZGFibGVMb2FkZXI6On5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyKCkKK3sKKyAgICBtX2JyaWRnZS0+
d29ya2VyVGhyZWFkYWJsZUxvYWRlckRlc3Ryb3llZCgpOworfQorCit2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6OmNhbmNlbCgpCit7CisgICAgbV9icmlkZ2UtPmNhbmNlbCgpOworfQorCiti
b29sIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmFza2VkVG9UZXJtaW5hdGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3dvcmtlckNvbnRleHQtPnRocmVhZCgpLT5tZXNzYWdpbmdQcm94eSgpLT5h
c2tlZFRvVGVybWluYXRlKCk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6dGVs
bENsaWVudERpZFNlbmREYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyKiB3b3JrZXJMb2FkZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCit7CisgICAgaWYgKHdvcmtlckxv
YWRlci0+YXNrZWRUb1Rlcm1pbmF0ZSgpIHx8ICF3b3JrZXJMb2FkZXItPm1fY2xpZW50KQorICAg
ICAgICByZXR1cm47CisgICAgd29ya2VyTG9hZGVyLT5tX2NsaWVudC0+ZGlkU2VuZERhdGEoYnl0
ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OnRlbGxDbGllbnREaWRSZWNlaXZlUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqIHdvcmtlckxvYWRlciwgYXV0b19wdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVzcG9uc2VEYXRhKQoreworICAgIGlmICh3b3Jr
ZXJMb2FkZXItPmFza2VkVG9UZXJtaW5hdGUoKSB8fCAhd29ya2VyTG9hZGVyLT5tX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURhdGEpKTsKKyAgICB3b3JrZXJMb2FkZXIt
Pm1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoKnJlc3BvbnNlKTsKK30KKwordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkUmVjZWl2ZURhdGEoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqIHdvcmtlckxvYWRlciwgY2hhciog
Y29waWVkRGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworICAgIGlmICghd29ya2VyTG9hZGVy
LT5hc2tlZFRvVGVybWluYXRlKCkgJiYgd29ya2VyTG9hZGVyLT5tX2NsaWVudCkKKyAgICAgICAg
d29ya2VyTG9hZGVyLT5tX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoY29waWVkRGF0YSwgbGVuZ3Ro
UmVjZWl2ZWQpOworICAgIGRlbGV0ZVtdIGNvcGllZERhdGE7Cit9CisKK3ZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZEZpbmlzaExvYWRpbmcoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqIHdvcmtlckxvYWRlciwgaW50IGlkZW50
aWZpZXIpCit7CisgICAgaWYgKHdvcmtlckxvYWRlci0+YXNrZWRUb1Rlcm1pbmF0ZSgpIHx8ICF3
b3JrZXJMb2FkZXItPm1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgd29ya2VyTG9hZGVy
LT5tX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKK30KKwordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkRmFpbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciogd29ya2VyTG9hZGVyKQoreworICAgIGlmICh3
b3JrZXJMb2FkZXItPmFza2VkVG9UZXJtaW5hdGUoKSB8fCAhd29ya2VyTG9hZGVyLT5tX2NsaWVu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIHdvcmtlckxvYWRlci0+bV9jbGllbnQtPmRpZEZhaWwo
KTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp0ZWxsQ2xpZW50RGlkR2V0Q2Fu
Y2VsbGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKiB3
b3JrZXJMb2FkZXIpCit7CisgICAgaWYgKHdvcmtlckxvYWRlci0+YXNrZWRUb1Rlcm1pbmF0ZSgp
IHx8ICF3b3JrZXJMb2FkZXItPm1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgd29ya2Vy
TG9hZGVyLT5tX2NsaWVudC0+ZGlkR2V0Q2FuY2VsbGVkKCk7Cit9CisKK3ZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6dGVsbENsaWVudERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxh
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciogd29y
a2VyTG9hZGVyLCBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNw
b25zZURhdGEpCit7CisgICAgaWYgKHdvcmtlckxvYWRlci0+YXNrZWRUb1Rlcm1pbmF0ZSgpIHx8
ICF3b3JrZXJMb2FkZXItPm1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgT3duUHRyPFJl
c291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2U6OmFkb3B0KHJlc3BvbnNl
RGF0YSkpOworICAgIHdvcmtlckxvYWRlci0+bV9jbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNhbmNlbGxhdGlvbigqcmVzcG9uc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2ZiMjdhCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdvcmtlclRocmVhZGFibGVMb2FkZXJfaAorI2RlZmlu
ZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyX2gKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnQuaCIKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0OworICAgIGNsYXNzIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQ7CisgICAgY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJy
aWRnZTsKKyAgICBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YTsKKworICAg
IGNsYXNzIFdvcmtlclRocmVhZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyPiwgcHVibGljIFRocmVhZGFibGVMb2FkZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRl
KFdvcmtlckNvbnRleHQqIHdvcmtlciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0
dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZikKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKHdvcmtlciwgY2xpZW50
LCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25pZmYpKTsKKyAgICAgICAgfQor
CisgICAgICAgIH5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGNhbmNlbCgpOworCisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcj46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyPjo6ZGVyZWY7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWZUaHJlYWRhYmxlTG9hZGVyKCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZUaHJlYWRhYmxlTG9hZGVyKCkgeyBkZXJlZigpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZTsKKworICAgICAgICBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZm
KTsKKworICAgICAgICBib29sIGFza2VkVG9UZXJtaW5hdGUoKSBjb25zdDsKKyAgICAgICAgc3Rh
dGljIHZvaWQgdGVsbENsaWVudERpZFNlbmREYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgICAgIHN0YXRpYyB2b2lk
IHRlbGxDbGllbnREaWRSZWNlaXZlUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdv
cmtlclRocmVhZGFibGVMb2FkZXIqLCBzdGQ6OmF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXNwb25zZURhdGE+KTsKKyAgICAgICAgc3RhdGljIHZvaWQgdGVsbENsaWVudERpZFJlY2VpdmVE
YXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKiwgY2hh
ciosIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHRlbGxDbGllbnRE
aWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyKiwgaW50IGlkZW50aWZpZXIpOworICAgICAgICBzdGF0aWMgdm9pZCB0ZWxsQ2xpZW50
RGlkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyVGhyZWFkYWJsZUxvYWRlciop
OworICAgICAgICBzdGF0aWMgdm9pZCB0ZWxsQ2xpZW50RGlkR2V0Q2FuY2VsbGVkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHRlbGxDbGllbnREaWRGYWlsRHVlVG9TZWN1cml0eU9yaWdpbkNoZWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKik7CisgICAgICAgIHN0YXRp
YyB2b2lkIHRlbGxDbGllbnREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZGFibGVMb2FkZXIqLCBzdGQ6OmF1dG9f
cHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KTsKKworICAgICAgICBSZWZQdHI8
V29ya2VyQ29udGV4dD4gbV93b3JrZXJDb250ZXh0OworICAgICAgICBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiBtX2NsaWVudDsKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRlckNsaWVudEJyaWRnZSog
bV9icmlkZ2U7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdPUktFUlMpCisKKyNlbmRpZiAvLyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyX2gK
</data>
<flag name="review"
          id="13018"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>