<?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>155221</bug_id>
          
          <creation_ts>2016-03-08 23:32:01 -0800</creation_ts>
          <short_desc>Add WebAutomationSessionProxy for WebProcess side automation tasks</short_desc>
          <delta_ts>2016-03-28 14:47:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit 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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>andersca</cc>
    
    <cc>bburg</cc>
    
    <cc>clopez</cc>
    
    <cc>graouts</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172436</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-08 23:32:01 -0800</bug_when>
    <thetext>We need to do some work directly on the WebProcess side, so set up a WebAutomationSessionProxy object and messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172437</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-08 23:32:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/25054868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172438</commentid>
    <comment_count>2</comment_count>
      <attachid>273402</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-08 23:34:22 -0800</bug_when>
    <thetext>Created attachment 273402
WIP Sketch

This builds but I didn&apos;t test it in any way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172441</commentid>
    <comment_count>3</comment_count>
      <attachid>273402</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-08 23:40:02 -0800</bug_when>
    <thetext>Comment on attachment 273402
WIP Sketch

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

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.h:53
&gt; +class WebAutomationSession final : public API::ObjectImpl&lt;API::Object::Type::AutomationSession&gt;, public IPC::MessageReceiver

This needs to register as a message receiver with the process pool when WebAutomationSession::setProcessPool is called.

processPool-&gt;addMessageReceiver(Messages::WebAutomationSession::messageReceiverName(), *this);

And unregister is the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172827</commentid>
    <comment_count>4</comment_count>
      <attachid>273402</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-09 15:46:36 -0800</bug_when>
    <thetext>Comment on attachment 273402
WIP Sketch

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

&gt; Source/WebKit2/DerivedSources.make:113
&gt; +    WebAutomationSessionProxy \

Need the analogue changes for CMakeLists.txt, too.

&gt; Source/WebKit2/WebProcess/WebProcess.h:355
&gt; +    RefPtr&lt;WebAutomationSessionProxy&gt; m_automationSessionProxy;

Shouldn&apos;t this be owned by the WebProcess class? Not seeing the need for RefPtr in my imagination yet..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172849</commentid>
    <comment_count>5</comment_count>
      <attachid>273402</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-09 15:59:15 -0800</bug_when>
    <thetext>Comment on attachment 273402
WIP Sketch

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

&gt;&gt; Source/WebKit2/WebProcess/WebProcess.h:355
&gt;&gt; +    RefPtr&lt;WebAutomationSessionProxy&gt; m_automationSessionProxy;
&gt; 
&gt; Shouldn&apos;t this be owned by the WebProcess class? Not seeing the need for RefPtr in my imagination yet..

You are right. It could be an OwnedPtr that we create and destroy as needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173034</commentid>
    <comment_count>6</comment_count>
      <attachid>273551</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-10 02:16:51 -0800</bug_when>
    <thetext>Created attachment 273551
WIP Sketch v2

This adds an injected script to the WebProcess side so it is easy to implement the JS heavy features like element mapping and evaluating scripts.

This patch replaces the refresh end point and calls a test function on the injected script. I verified this worked before passing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173038</commentid>
    <comment_count>7</comment_count>
      <attachid>273551</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-10 02:24:36 -0800</bug_when>
    <thetext>Comment on attachment 273551
WIP Sketch v2

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

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:258
&gt; +    page-&gt;process().send(Messages::WebAutomationSessionProxy::EvaluateJavaScript(page-&gt;mainFrame()-&gt;frameID(), WTF::emptyString()), 0);

Note: mainFrame can be null. It is null when the WebPageProxy is first created. I am not sure on when it is available yet, be we should null check it.

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.messages.in:25
&gt; +messages -&gt; WebAutomationSession {
&gt; +    Test()
&gt; +}

We will likely need these messages to the UIProcess to implement execute_async or any other events.

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:101
&gt; +    JSRetainPtr&lt;JSStringRef&gt; testString(Adopt, JSStringCreateWithUTF8CString(&quot;test&quot;));
&gt; +    JSObjectRef testFunction = (JSObjectRef)JSObjectGetProperty(context, scriptObject, testString.get(), &amp;exception);
&gt; +    RELEASE_ASSERT(!exception);
&gt; +    RELEASE_ASSERT(JSObjectIsFunction(context, testFunction));
&gt; +
&gt; +    JSObjectCallAsFunction(context, testFunction, nullptr, 0, nullptr, &amp;exception);
&gt; +    RELEASE_ASSERT(!exception);

Just a test. This would call JSEvaluateScript and pass the result to the injected script for processing (turning elements into handles, etc.)

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.js:43
&gt; +    test()
&gt; +    {
&gt; +        console.log(&quot;Hello World!&quot;);
&gt; +    }

This gets called in the end by requesting the refresh endpoint right now.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1584
&gt; +    if (auto automationSessionProxy = WebProcess::singleton().automationSessionProxy())
&gt; +        automationSessionProxy-&gt;didClearWindowObjectForFrame(*m_frame);

Needed so we unprotect our script object ref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174822</commentid>
    <comment_count>8</comment_count>
      <attachid>274056</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-14 17:15:02 -0700</bug_when>
    <thetext>Created attachment 274056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174844</commentid>
    <comment_count>9</comment_count>
      <attachid>274056</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-14 17:48:11 -0700</bug_when>
    <thetext>Comment on attachment 274056
Patch

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

Looks good, I&apos;ll let Brian review the Automation bits.

&gt; Source/WebKit2/CMakeLists.txt:799
&gt; +    COMMAND ${CMAKE_COMMAND} -E echo &quot;//# sourceURL=__WebInspectorInjectedScript__&quot; &gt; ${DERIVED_SOURCES_WEBKIT2_DIR}/WebAutomationSessionProxy.min.js

Should we be reusing the sourceURL &quot;__WebInspectorInjectedScript__&quot; here? Perhaps &quot;__WebAutomationInjectedScript__&quot;?

If we want this to be hidden from WebInspector we can update: Utilities.js

    function isWebInspectorDebugScript(url)
    {
        return url &amp;&amp; url.startsWith(&quot;__WebInspector&quot;);
    }

To just check &quot;__Web&quot; or something.

&gt; Source/WebKit2/DerivedSources.make:236
&gt; +	echo &quot;//# sourceURL=__WebInspectorInjectedScript__&quot; &gt; $(basename $(notdir $&lt;)).min.js

Same comment about the name &quot;WebInspector&quot;.

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:92
&gt; +    JSObjectRef scriptObjectFunction = const_cast&lt;JSObjectRef&gt;(JSEvaluateScript(context, toJSString(script).get(), nullptr, nullptr, 0, &amp;exception));

I think JSValueToObject be safer then these casts, is there precedent for just casting?

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.js:26
&gt; +//# sourceURL=__WebInspectorInjectedScript__

Same comment about the use of &quot;WebInspector&quot; here.

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.js:32
&gt; +var Object = {}.constructor;
&gt; +
&gt; +var AutomationSessionProxy = class AutomationSessionProxy

Use `let` instead of `var? `Object` and evaluate/createUUID aren&apos;t used yet, but I expect they will be soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174876</commentid>
    <comment_count>10</comment_count>
      <attachid>274056</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-14 20:04:39 -0700</bug_when>
    <thetext>Comment on attachment 274056
Patch

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

&gt; Source/WebKit2/CMakeLists.txt:795
&gt; +add_custom_command(

This command should go after the list(APPEND WebKit2_HEADERS for the inspector generated files.

&gt; Source/WebKit2/CMakeLists.txt:802
&gt; +    VERBATIM)

The CMake build failed because you forgot the following:

list(APPEND WebKit2_HEADERS ${DERIVED_SOURCES_WEBKIT2_DIR}/WebauotmationSessionProxyScriptSource.h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174889</commentid>
    <comment_count>11</comment_count>
      <attachid>274056</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-14 21:17:04 -0700</bug_when>
    <thetext>Comment on attachment 274056
Patch

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

&gt;&gt; Source/WebKit2/CMakeLists.txt:795
&gt;&gt; +add_custom_command(
&gt; 
&gt; This command should go after the list(APPEND WebKit2_HEADERS for the inspector generated files.

Thanks. I was just throwing crap at the wall here.

&gt;&gt; Source/WebKit2/CMakeLists.txt:799
&gt;&gt; +    COMMAND ${CMAKE_COMMAND} -E echo &quot;//# sourceURL=__WebInspectorInjectedScript__&quot; &gt; ${DERIVED_SOURCES_WEBKIT2_DIR}/WebAutomationSessionProxy.min.js
&gt; 
&gt; Should we be reusing the sourceURL &quot;__WebInspectorInjectedScript__&quot; here? Perhaps &quot;__WebAutomationInjectedScript__&quot;?
&gt; 
&gt; If we want this to be hidden from WebInspector we can update: Utilities.js
&gt; 
&gt;     function isWebInspectorDebugScript(url)
&gt;     {
&gt;         return url &amp;&amp; url.startsWith(&quot;__WebInspector&quot;);
&gt;     }
&gt; 
&gt; To just check &quot;__Web&quot; or something.

Yeah, I will make that change. I will post a separate patch for Utilities.js.

&gt;&gt; Source/WebKit2/CMakeLists.txt:802
&gt;&gt; +    VERBATIM)
&gt; 
&gt; The CMake build failed because you forgot the following:
&gt; 
&gt; list(APPEND WebKit2_HEADERS ${DERIVED_SOURCES_WEBKIT2_DIR}/WebauotmationSessionProxyScriptSource.h)

Thanks.

&gt;&gt; Source/WebKit2/DerivedSources.make:236
&gt;&gt; +	echo &quot;//# sourceURL=__WebInspectorInjectedScript__&quot; &gt; $(basename $(notdir $&lt;)).min.js
&gt; 
&gt; Same comment about the name &quot;WebInspector&quot;.

Will do.

&gt;&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.js:32
&gt;&gt; +var AutomationSessionProxy = class AutomationSessionProxy
&gt; 
&gt; Use `let` instead of `var? `Object` and evaluate/createUUID aren&apos;t used yet, but I expect they will be soon.

Will do. Yes a follow up uses them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174891</commentid>
    <comment_count>12</comment_count>
      <attachid>274056</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-14 21:18:57 -0700</bug_when>
    <thetext>Comment on attachment 274056
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:92
&gt;&gt; +    JSObjectRef scriptObjectFunction = const_cast&lt;JSObjectRef&gt;(JSEvaluateScript(context, toJSString(script).get(), nullptr, nullptr, 0, &amp;exception));
&gt; 
&gt; I think JSValueToObject be safer then these casts, is there precedent for just casting?

I can change it. Some Safari extensions code just casts for values expected to be objects. In this case we control both sides of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174903</commentid>
    <comment_count>13</comment_count>
      <attachid>274075</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-14 22:32:21 -0700</bug_when>
    <thetext>Created attachment 274075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175070</commentid>
    <comment_count>14</comment_count>
      <attachid>274075</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-03-15 13:06:24 -0700</bug_when>
    <thetext>Comment on attachment 274075
Patch

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

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.h:71
&gt; +    // Called by WebAutomationSession messages
&gt; +    // FIXME: Add message functions here.
&gt; +    void test() { };

Messages handlers should be private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175073</commentid>
    <comment_count>15</comment_count>
      <attachid>274075</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-15 13:17:37 -0700</bug_when>
    <thetext>Comment on attachment 274075
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.h:71
&gt;&gt; +    void test() { };
&gt; 
&gt; Messages handlers should be private.

Okay, will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175129</commentid>
    <comment_count>16</comment_count>
      <attachid>274136</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-15 15:00:53 -0700</bug_when>
    <thetext>Created attachment 274136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178426</commentid>
    <comment_count>17</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-28 09:41:16 -0700</bug_when>
    <thetext>https://trac.webkit.org/r198736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178474</commentid>
    <comment_count>18</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2016-03-28 11:28:21 -0700</bug_when>
    <thetext>So... Looks like the reason why the Gtk and Efl bots are red is a typo. Which I can fix with this:

diff --git a/Source/WebKit2/CMakeLists.txt b/Source/WebKit2/CMakeLists.txt
index 85dd3d7..71278d4 100644
--- a/Source/WebKit2/CMakeLists.txt
+++ b/Source/WebKit2/CMakeLists.txt
@@ -815,7 +815,7 @@ add_custom_command(
     VERBATIM)
 
 list(APPEND WebKit2_HEADERS
-    ${DERIVED_SOURCES_WEBKIT2_DIR}/WebauotmationSessionProxyScriptSource.h
+    ${DERIVED_SOURCES_WEBKIT2_DIR}/WebAutomationSessionProxyScriptSource.h
 )

But now the build fails with:

ninja: error: &apos;/xxd.pl&apos;, needed by &apos;DerivedSources/WebKit2/WebAutomationSessionProxyScriptSource.h&apos;, missing and no known rule to make it

Suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178475</commentid>
    <comment_count>19</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-28 11:32:03 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; So... Looks like the reason why the Gtk and Efl bots are red is a typo.
&gt; Which I can fix with this:
&gt; 
&gt; diff --git a/Source/WebKit2/CMakeLists.txt b/Source/WebKit2/CMakeLists.txt
&gt; index 85dd3d7..71278d4 100644
&gt; --- a/Source/WebKit2/CMakeLists.txt
&gt; +++ b/Source/WebKit2/CMakeLists.txt
&gt; @@ -815,7 +815,7 @@ add_custom_command(
&gt;      VERBATIM)
&gt;  
&gt;  list(APPEND WebKit2_HEADERS
&gt; -    ${DERIVED_SOURCES_WEBKIT2_DIR}/WebauotmationSessionProxyScriptSource.h
&gt; +    ${DERIVED_SOURCES_WEBKIT2_DIR}/WebAutomationSessionProxyScriptSource.h
&gt;  )
&gt; 
&gt; But now the build fails with:
&gt; 
&gt; ninja: error: &apos;/xxd.pl&apos;, needed by
&gt; &apos;DerivedSources/WebKit2/WebAutomationSessionProxyScriptSource.h&apos;, missing
&gt; and no known rule to make it
&gt; 
&gt; Suggestions?

xxd.pl should be in the JavaScriptCore_SCRIPTS_DIR directory.

$(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178497</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-03-28 13:06:04 -0700</bug_when>
    <thetext>(In reply to comment #19) 
&gt; xxd.pl should be in the JavaScriptCore_SCRIPTS_DIR directory.
&gt; 
&gt; $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl

Looks like JavaScriptCore_SCRIPTS_DIR is an empty string :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178506</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-03-28 13:22:57 -0700</bug_when>
    <thetext>This fixes the CMake part

--- a/Source/WebKit2/CMakeLists.txt
+++ b/Source/WebKit2/CMakeLists.txt
@@ -750,6 +750,12 @@ set(PluginProcess_LIBRARIES
     WebKit2
 )
 
+if (WIN32 AND INTERNAL_BUILD)
+    set(JavaScriptCore_SCRIPTS_DIR &quot;${CMAKE_BINARY_DIR}/../include/private/JavaScriptCore/Scripts&quot;)
+else ()
+    set(JavaScriptCore_SCRIPTS_DIR &quot;${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts&quot;)
+endif ()
+
 # librt is needed for shm_open on Linux.
 find_library(LIBRT_LIBRARIES NAMES rt)
 mark_as_advanced(LIBRT_LIBRARIES)
@@ -815,7 +821,7 @@ add_custom_command(
     VERBATIM)
 
 list(APPEND WebKit2_HEADERS
-    ${DERIVED_SOURCES_WEBKIT2_DIR}/WebauotmationSessionProxyScriptSource.h
+    ${DERIVED_SOURCES_WEBKIT2_DIR}/WebAutomationSessionProxyScriptSource.h
 )
 




But then the build fails here:


In file included from ../../Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:27:
../../Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.h:68:12: error: field has incomplete type &apos;WTF::String&apos;
    String m_sessionIdentifier;
           ^
../../Source/WTF/wtf/Forward.h:49:7: note: forward declaration of &apos;WTF::String&apos;
class String;
      ^
In file included from ../../Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:27:
../../Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.h:46:12: error: incomplete result type &apos;WTF::String&apos; in function definition
    String sessionIdentifier() const { return m_sessionIdentifier; }
           ^
../../Source/WTF/wtf/Forward.h:49:7: note: forward declaration of &apos;WTF::String&apos;
class String;
      ^
../../Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:101:29: error: no matching member function for call to &apos;addMessageReceiver&apos;
    WebProcess::singleton().addMessageReceiver(Messages::WebAutomationSessionProxy::messageReceiverName(), *this);
    ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
../../Source/WebKit2/Shared/ChildProcess.h:61:10: note: candidate function not viable: no known conversion from &apos;WebKit::WebAutomationSessionProxy&apos; to &apos;IPC::MessageReceiver &amp;&apos; for 2nd argument
    void addMessageReceiver(IPC::StringReference messageReceiverName, IPC::MessageReceiver&amp;);
         ^
../../Source/WebKit2/Shared/ChildProcess.h:62:10: note: candidate function not viable: requires 3 arguments, but 2 were provided
    void addMessageReceiver(IPC::StringReference messageReceiverName, uint64_t destinationID, IPC::MessageReceiver&amp;);
         ^
3 errors generated.
[107/604] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178530</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-03-28 14:00:07 -0700</bug_when>
    <thetext>Committed r198757: &lt;http://trac.webkit.org/changeset/198757&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178532</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-03-28 14:14:49 -0700</bug_when>
    <thetext>I&apos;m a bit confused why we had to redefine JavaScriptCore_SCRIPTS_DIR in WebKit2/CMakeLists.txt. I wonder if CMake is processing WebKit2/CMakeLists.txt before it processes JavaScriptCore/CMakeLists.txt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178549</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-03-28 14:39:38 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I&apos;m a bit confused why we had to redefine JavaScriptCore_SCRIPTS_DIR in
&gt; WebKit2/CMakeLists.txt. I wonder if CMake is processing
&gt; WebKit2/CMakeLists.txt before it processes JavaScriptCore/CMakeLists.txt.

Is also redefined in Source/WebCore/CMakeLists.txt
Basically I copied the definition from there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178552</commentid>
    <comment_count>25</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-28 14:47:25 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I&apos;m a bit confused why we had to redefine JavaScriptCore_SCRIPTS_DIR in
&gt; WebKit2/CMakeLists.txt. I wonder if CMake is processing
&gt; WebKit2/CMakeLists.txt before it processes JavaScriptCore/CMakeLists.txt.

Sorry about the breakage folks, Mac CMake just started working again recently or I would have caught it. I am not sure why variable needs to be redefined, but I have run into this before and just redefined it without figuring why. :|</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273402</attachid>
            <date>2016-03-08 23:34:22 -0800</date>
            <delta_ts>2016-03-10 02:16:51 -0800</delta_ts>
            <desc>WIP Sketch</desc>
            <filename>155221.patch</filename>
            <type>text/plain</type>
            <size>25397</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBkNTcyMDQuLjg5YTY3ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzYsNiArMzYsNyBAQCBWUEFUSCA9IFwKICAg
ICAkKFdlYktpdDIpL1NoYXJlZC9BdXRoZW50aWNhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9TaGFy
ZWQvbWFjIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCisg
ICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dG9tYXRpb24gXAogICAgICQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9Db29raWVzIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4gXApAQCAtMTA4
LDYgKzEwOSw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFZpZXdVcGRhdGVEaXNwYXRj
aGVyIFwKICAgICBWaXNpdGVkTGlua1N0b3JlIFwKICAgICBWaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlciBcCisgICAgV2ViQXV0b21hdGlvblNlc3Npb24gXAorICAgIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkgXAogICAgIFdlYkNvbm5lY3Rpb24gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIgXAog
ICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCAyZmQ4
YWE1Li45ODViNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgV2ViQXV0b21hdGlvblNlc3Npb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ5LDcgKzUwLDcgQEAgY2xh
c3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFz
cyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb24gZmluYWwgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXRvbWF0aW9uU2Vzc2lv
bj4KK2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0b21hdGlvblNlc3Npb24+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIHB1Ymxp
YyBJbnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQKICNlbmRpZgpAQCAtNjIsNiArNjMs
MTIgQEAgcHVibGljOgogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uKCk7CiAgICAgfldlYkF1dG9t
YXRpb25TZXNzaW9uKCk7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0
b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisK
KyAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb24gbWVzc2FnZXMKKyAgICB2b2lk
IHRlc3QoKSB7IH0KKwogICAgIHZvaWQgc2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50Pik7CiAKICAgICB2b2lkIHNldFNlc3Npb25JZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpIHsgbV9zZXNzaW9uSWRlbnRpZmllciA9
IHNlc3Npb25JZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTdjNzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25TZXNzaW9u
IHsKKyAgICBUZXN0KCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IDk1NmU3NmMuLmM1MmExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTEyNyw3ICsxMTI3LDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25TZXNzaW9uKFJlZlB0cjxXZWJBdXRvbWF0aW9uU2Vzc2lv
bj4mJiBhdXRvbWF0CiAgICAgaWYgKG1fYXV0b21hdGlvblNlc3Npb24pIHsKICAgICAgICAgbV9h
dXRvbWF0aW9uU2Vzc2lvbi0+aW5pdCgpOwogICAgICAgICBtX2F1dG9tYXRpb25TZXNzaW9uLT5z
ZXRQcm9jZXNzUG9vbCh0aGlzKTsKLSAgICB9CisKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkpOwor
ICAgIH0gZWxzZQorICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
MjQzMTQwLi43OGY1MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTgsNiArNTE4LDEyIEBACiAJCTFBRkU0MzY1MThCNkMw
ODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjMxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUu
bW0gKi87IH07CiAJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFNDM2NDE4QjZD
MDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oICovOyB9OwogCQkxQUZGNDkwMDE4MzNERTc4MDA5
QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkY0OEZFMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0Rl
cHJlY2F0ZWRGdW5jdGlvbnMuY3BwICovOyB9OworCQkxQzBBMTk0NjFDOEZGMUE4MDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBBMTk0NDFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5jcHAgKi87IH07CisJCTFDMEExOTQ3MUM4RkYxQTgwMEZFMEVC
QiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBBMTk0NTFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5oICovOyB9OworCQkxQzBBMTk1MzFDOEZGREZCMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBBMTk1MTFDOEZGREZCMDBG
RTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CisJCTFDMEExOTU0MUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMEExOTUyMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
TWVzc2FnZXMuaCAqLzsgfTsKKwkJMUMwQTE5NTcxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTU1MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTFDMEExOTU4MUM5MDA2
OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBBMTk1NjFDOTAwNjhGMDBGRTBF
QkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlcy5oICovOyB9OwogCQkxQzg5MUQ2NTE5
QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCAqLzsgfTsKIAkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLzsgfTsK
IAkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvci5oICovOyB9OwpAQCAtMjQ3MSw2ICsyNDc3LDE0IEBACiAJCTFB
RkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVJRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlv
bnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAy
QkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDMEExOTQ0MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzBBMTk0NTFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTQ4MUM4RkYzMEUwMEZF
MEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1MjFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1NjFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMEExOTU5MUM5MDA2RUEwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM3N0MxOTUxMjg4QTg3MjAwNkE3NDJGIC8qIFdlYklu
c3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg5
MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9y
VUkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNDgsNyArMzA2Miw2IEBACiAJCTc2MkI3
NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotICAg
ICAgICAKIAkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTlDRDhD
MjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2OTQsNiAr
NDcwNywxNiBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCTFDMEExOTQzMUM4RkYxQTgwMEZFMEVCQiAvKiBBdXRvbWF0aW9uICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzBBMTk0NDFDOEZGMUE4MDBG
RTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgKi8sCisJCQkJMUMwQTE5NDUx
QzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCAqLywKKwkJCQkx
QzBBMTk0ODFDOEZGMzBFMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gQXV0b21hdGlvbjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCTFGMDE4MTY4MTg1OERDMTUwMEY5Mjg4NCAvKiBDb2NvYSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC01NTc2LDYgKzU1
OTksNyBAQAogCQkJCTk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24g
Ki8sCiAJCQkJOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcCAqLywKIAkJCQk5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNl
c3Npb24uaCAqLywKKwkJCQkxQzBBMTk1OTFDOTAwNkVBMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9IEF1dG9tYXRpb247CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTYzNSw2ICs1NjU5LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJF
IC8qIGNvY29hICovLAorCQkJCTFDMEExOTQzMUM4RkYxQTgwMEZFMEVCQiAvKiBBdXRvbWF0aW9u
ICovLAogCQkJCTMzMDkzNDRCMTMxNUI5M0EwMDk3QTdCQyAvKiBDb29raWVzICovLAogCQkJCTUx
MkE5NzU0MTgwREY5MjcwMDM5QTE0OSAvKiBEYXRhYmFzZXMgKi8sCiAJCQkJQkNBQ0M0M0IxNkIy
NEM1RDAwQjZFMDkyIC8qIEVudHJ5UG9pbnQgKi8sCkBAIC02ODU2LDYgKzY4ODEsMTAgQEAKIAkJ
CQkxQTYwMjI0QjE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VzLmgg
Ki8sCiAJCQkJMUE4RTdEM0ExOEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250
cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFN0QzQjE4QzE1MTQ5MDA1QTcw
MkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAorCQkJCTFDMEEx
OTU1MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCisJCQkJMUMwQTE5NTYxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQkxQzBBMTk1MTFDOEZGREZCMDBGRTBFQkIgLyogV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMUMwQTE5
NTIxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5o
ICovLAogCQkJCTFBMUZFQzFBMTYyN0I0NTYwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTFGRUMxQjE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29u
bmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJMzMwOTM0NDMxMzE1QjkyMjAwOTdBN0JDIC8qIFdl
YkNvb2tpZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNzMyOCw2ICs3MzU3LDcg
QEAKIAkJCQlCQ0E4QzZBOTExRTNCQTVGMDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgxNDdBOTEyRjY0Q0RBMDA3QjJDMzIg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0E4QzZCMDExRTNDMDg3MDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTFDMEExOTU4MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU1QTZGNzFDNzk4NkU1
MDBFQjZBOTMgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLApAQCAtNzQwNiw2ICs3NDM2LDcgQEAK
IAkJCQkxQTJEODQzQTEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyRDgyQTcxMjdGNEVBQjAwMUVCOTYyIC8q
IE5QT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4MkE5MTI3RjRFQUIwMDFF
Qjk2MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMwQTE5NDcx
QzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMjE2MUIwMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjE2MkIxMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRp
bWVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4NEEzMTI3RjZBRDEwMDFFQjk2
MiAvKiBOUFZhcmlhbnREYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTc0MzQsNiArNzQ2NSw3IEBA
CiAJCQkJMUE4RUY5NkYxMjUyQUY2QjAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTE3OTc4MDEzN0VFODJDMDBGOTdENDUgLyog
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzNGOEM5MTE3
M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTFDMEExOTU0MUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUZDQzEyMTFEMDFGOTYwMDgyMTlEMyAvKiBQ
bHVnaW5JbmZvU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0Q2MTAyMTNBN0NDMkEwMEY5
NUQ0RSAvKiBQbHVnaW5Nb2R1bGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0Mzk3NjEy
NEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODUz
LDYgKzg4ODUsNyBAQAogCQkJCTFBMkQ4MkE0MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdE1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAx
RUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEyRDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMwQTE5NTMxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEyRDgyQTgxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMjE2MUIxMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmpl
Y3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYyQjAxMUYzODk3MTAwOEFEMEY1IC8q
IE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkwOTQsNiArOTEyNyw3
IEBACiAJCQkJMUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODkxRDY1MTlCMTI0RkYwMEJB
NzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4Qjk1NDEy
N0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLywKKwkJ
CQkxQzBBMTk1NzFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgx
IC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEQTk0NEExMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZhY3RvcnkubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDMDMzN0REMzEyN0EyQTBFMDA4RkY0RjQgLyogV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxODgsNiArOTIyMiw3IEBACiAJCQkJMUE1MkMwRjcx
QTM4Q0RDNzAwMTYxNjBBIC8qIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0M1NzE1QzExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJm
YWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwMzJGMTgxODBGNzNCQjAwOTYxQkI3IC8qIFdl
YlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzBB
MTk0NjFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMDMzN0REODEyN0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRBMzE4ODRFNEYwMDBFRDg2REIgLyogV2Vi
VG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0EwRUY4MDEyMzMxRTc4MDA3
RDNDRkIgLyogV2ViVW5kb1N0ZXAuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg1
MGFkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Jl
ZjxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpj
cmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkpOworfQorCitXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgKnRoaXMpOworfQorCitXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp+V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eSgpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQzOWEyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlfaAorI2RlZmlu
ZSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5X2gKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk+IGNyZWF0ZSgpOworICAgIH5XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CisK
KyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIC8vIENhbGxlZCBieSBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCisgICAgdm9pZCB0ZXN0KCkgeyB9CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSgpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY2OGQ1YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eSB7CisgICAgVGVzdCgpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCA1OGNhNDNiLi45ZDA5NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTZXNzaW9uVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEu
aCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMTQzNCw2ICsxNDM1LDE2IEBA
IHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNl
cywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2CiB9CiAjZW5kaWYKIAordm9pZCBXZWJQcm9jZXNzOjpl
bnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKK3sKKyAgICBtX2F1dG9tYXRpb25TZXNzaW9u
UHJveHkgPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpjcmVhdGUoKTsKK30KKwordm9pZCBX
ZWJQcm9jZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCit7CisgICAgbV9hdXRv
bWF0aW9uU2Vzc2lvblByb3h5ID0gbnVsbHB0cjsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpwcmVm
ZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIGlmIChob3N0bmFtZS5pc0Vt
cHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGExMWY3ODgu
LmY2NzZkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC03Niw2
ICs3Niw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlOwogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOwogY2xhc3MgT2JqQ09iamVjdEdyYXBoOwogY2xhc3MgVXNlckRhdGE7CitjbGFzcyBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2VQcm94eTsKQEAgLTI3OSw2
ICsyODAsOSBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkQWNrbm93bGVkZ2VXaGVu
UmVhZHlUb1N1c3BlbmQgeyBObywgWWVzIH07CiAgICAgdm9pZCBhY3R1YWxQcmVwYXJlVG9TdXNw
ZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kKTsKIAorICAgIHZvaWQgZW5z
dXJlQXV0b21hdGlvblNlc3Npb25Qcm94eSgpOworICAgIHZvaWQgZGVzdHJveUF1dG9tYXRpb25T
ZXNzaW9uUHJveHkoKTsKKwogICAgIC8vIENoaWxkUHJvY2VzcwogICAgIHZvaWQgaW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CkBAIC0zNDgsNiArMzUyLDggQEAg
cHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9kbnNQcmVmZXRjaGVkSG9zdHM7CiAgICAg
V2ViQ29yZTo6SHlzdGVyZXNpc0FjdGl2aXR5IG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzOwogCisg
ICAgUmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+IG1fYXV0b21hdGlvblNlc3Npb25Q
cm94eTsKKwogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlV2Vi
VG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgUmVmUHRyPFdlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbj4gbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
YmNmMWFiNy4uOGE3YzE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtOTIsNiArOTIsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRFbmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFn
ZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnZpY2VzLCBib29sIGhhc1JpY2hDb250ZW50
U2VydmljZXMpCiAjZW5kaWYKIAorICAgIEVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQor
ICAgIERlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKKwogICAgIFByb2Nlc3NXaWxsU3Vz
cGVuZEltbWluZW50bHkoKSAtPiAoYm9vbCBoYW5kbGVkKQogICAgIFByZXBhcmVUb1N1c3BlbmQo
KQogICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273551</attachid>
            <date>2016-03-10 02:16:51 -0800</date>
            <delta_ts>2016-03-14 17:14:51 -0700</delta_ts>
            <desc>WIP Sketch v2</desc>
            <filename>155221.patch</filename>
            <type>text/plain</type>
            <size>37669</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNTQ0ZmJiZC4uNTQ5OWI4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTQyLDYgKzQyLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvV2Vic2l0ZURhdGEiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvQXBwbGlj
YXRpb25DYWNoZSIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9BdXRvbWF0aW9uIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0JhdHRlcnkiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvQ29va2llcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9E
YXRhYmFzZXMiCkBAIC00OTksNiArNTAwLDggQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFdl
YlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcAogICAgIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKIAorICAgIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcAorCiAgICAgV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRlcnlNYW5hZ2Vy
LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC02
NzAsNiArNjczLDggQEAgc2V0KFdlYktpdDJfTUVTU0FHRVNfSU5fRklMRVMKICAgICBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluCiAgICAgVUlQcm9j
ZXNzL1dlYlZpYnJhdGlvblByb3h5Lm1lc3NhZ2VzLmluCiAKKyAgICBVSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorCiAgICAgVUlQcm9jZXNzL0Rh
dGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC02ODYsNiArNjkxLDggQEAg
c2V0KFdlYktpdDJfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgogCisgICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKwogICAgIFdlYlByb2Nlc3MvQmF0dGVyeS9XZWJCYXR0
ZXJ5TWFuYWdlci5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBk
NTcyMDQuLjY1Y2Y5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzYsNiAr
MzYsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9BdXRoZW50aWNhdGlvbiBc
CiAgICAgJChXZWJLaXQyKS9TaGFyZWQvbWFjIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
QXBwbGljYXRpb25DYWNoZSBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dG9tYXRpb24g
XAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9Db29raWVzIFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4gXApAQCAtNzEsNiArNzIsMTUgQEAgVlBBVEggPSBcCiAgICAgJChXRUJLSVRB
RERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUykgXAogIwogCitQWVRIT04gPSBweXRob24KK1BF
UkwgPSBwZXJsCisKK2lmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCisgICAgREVMRVRFID0gY21kIC8v
QyBkZWwKK2Vsc2UKKyAgICBERUxFVEUgPSBybSAtZgorZW5kaWYKKwogTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKICAgICBDaGlsZFByb2Nlc3MgXApA
QCAtMTA4LDYgKzExOCw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFZpZXdVcGRhdGVE
aXNwYXRjaGVyIFwKICAgICBWaXNpdGVkTGlua1N0b3JlIFwKICAgICBWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlciBcCisgICAgV2ViQXV0b21hdGlvblNlc3Npb24gXAorICAgIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgXAogICAgIFdlYkNvbm5lY3Rpb24gXAogICAgIFdlYkNvb2tpZU1hbmFn
ZXIgXAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCkBAIC0yMTksMyArMjMxLDExIEBAICQo
Zmlyc3R3b3JkICQoQVVUT01BVElPTl9QUk9UT0NPTF9PVVRQVVRfRklMRVMpKSA6ICQoQVVUT01B
VElPTl9QUk9UT0NPTF9JTlBVVF9GCiAJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSAtLWZyYW1ld29y
ayBXZWJLaXQgLS1iYWNrZW5kIC0tb3V0cHV0RGlyIC4gJChBVVRPTUFUSU9OX1BST1RPQ09MX0lO
UFVUX0ZJTEVTKQogCiBhbGwgOiAkKGZpcnN0d29yZCAkKEFVVE9NQVRJT05fUFJPVE9DT0xfT1VU
UFVUX0ZJTEVTKSkKKworJVNjcmlwdFNvdXJjZS5oIDogJS5qcyAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwK
KwllY2hvICIvLyMgc291cmNlVVJMPV9fV2ViSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHRfXyIgPiAk
KGJhc2VuYW1lICQobm90ZGlyICQ8KSkubWluLmpzCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJDwgPj4gJChiYXNlbmFtZSAkKG5vdGRpciAkPCkp
Lm1pbi5qcworCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsICQo
YmFzZW5hbWUgJChub3RkaXIgJDwpKVNjcmlwdFNvdXJjZSAkKGJhc2VuYW1lICQobm90ZGlyICQ8
KSkubWluLmpzICRACisJJChERUxFVEUpICQoYmFzZW5hbWUgJChub3RkaXIgJDwpKS5taW4uanMK
KworYWxsIDogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKaW5kZXggOTQ2ZDQwMS4uMjBkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCIKKyNpbmNs
dWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CkBAIC01
Nyw2ICs1OSw5IEBAIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigp
CiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6fldlYkF1dG9tYXRpb25TZXNzaW9uKCkKIHsKICAgICBB
U1NFUlQoIW1fY2xpZW50KTsKKworICAgIGlmIChtX3Byb2Nlc3NQb29sKQorICAgICAgICBtX3By
b2Nlc3NQb29sLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+IGNsaWVudCkKQEAgLTY0LDYgKzY5LDE3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
CiAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnNldFByb2Nlc3NQb29sKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
b29sKQoreworICAgIGlmIChtX3Byb2Nlc3NQb29sKQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgbV9wcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29sOwor
CisgICAgaWYgKG1fcHJvY2Vzc1Bvb2wpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgKnRoaXMpOworfQorCiAvLyBOT1RFOiB0aGlzIGNsYXNzIGNvdWxkIGJlIHNwbGl0
IGF0IHNvbWUgcG9pbnQgdG8gc3VwcG9ydCBsb2NhbCBhbmQgcmVtb3RlIGF1dG9tYXRpb24gc2Vz
c2lvbnMuCiAvLyBGb3Igbm93LCBpdCBvbmx5IHdvcmtzIHdpdGggYSByZW1vdGUgYXV0b21hdGlv
biBkcml2ZXIgb3ZlciBhIFJlbW90ZUluc3BlY3RvciBjb25uZWN0aW9uLgogCkBAIC0yMzQsOSAr
MjUwLDEyIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4
dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0CiAgICAgaWYgKCFwYWdlKQogICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKIAot
ICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IGZhbHNlOwotICAgIGNvbnN0IGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgcGFnZS0+cmVsb2FkKHJlbG9hZEZy
b21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworLy8gICAgY29uc3QgYm9vbCByZWxv
YWRGcm9tT3JpZ2luID0gZmFsc2U7CisvLyAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQgPSB0cnVlOworLy8gICAgcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRl
bnRCbG9ja2Vyc0VuYWJsZWQpOworCisgICAgLy8gVEVTVDogVGhpcyBzZW5kcyBhIG1lc3NhZ2Ug
dG8gdGhlIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHksIHdoaWNoIGp1c3QgY2FsbHMgdGhlIHRl
c3QgZnVuY3Rpb24gb24gdGhlIFdlYlByb2Nlc3Mgc2lkZSByaWdodCBub3cuCisgICAgcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1
YXRlSmF2YVNjcmlwdChwYWdlLT5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBXVEY6OmVtcHR5U3Ry
aW5nKCkpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
aAppbmRleCAyZmQ4YWE1Li5lNTUyY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTI3LDYg
KzI3LDcgQEAKICNkZWZpbmUgV2ViQXV0b21hdGlvblNlc3Npb25faAogCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ5LDcg
KzUwLDcgQEAgY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CiBjbGFzcyBXZWJQYWdl
UHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViQXV0b21hdGlvblNlc3Np
b24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXRv
bWF0aW9uU2Vzc2lvbj4KK2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0b21hdGlvblNlc3Npb24+LCBw
dWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQKICNlbmRpZgpA
QCAtNjIsMTMgKzYzLDE5IEBAIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbigpOwog
ICAgIH5XZWJBdXRvbWF0aW9uU2Vzc2lvbigpOwogCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2Vu
ZXJhdGVkIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
IG92ZXJyaWRlOworCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uIG1lc3Nh
Z2VzCisgICAgdm9pZCB0ZXN0KCkgeyB9CisKICAgICB2b2lkIHNldENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4pOwogCiAgICAgdm9pZCBzZXRTZXNz
aW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKSB7IG1fc2Vzc2lv
bklkZW50aWZpZXIgPSBzZXNzaW9uSWRlbnRpZmllcjsgfQogICAgIFN0cmluZyBzZXNzaW9uSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklkZW50aWZpZXI7IH0KIAogICAgIFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm9j
ZXNzUG9vbDsgfQotICAgIHZvaWQgc2V0UHJvY2Vzc1Bvb2woV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCogcHJvY2Vzc1Bvb2wpIHsgbV9wcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29sOyB9CisgICAgdm9p
ZCBzZXRQcm9jZXNzUG9vbChXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCk7CiAK
ICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAvLyBJbnNwZWN0b3I6OlJlbW90ZUF1
dG9tYXRpb25UYXJnZXQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmlu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTdjNzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25TZXNzaW9uIHsK
KyAgICBUZXN0KCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDA1N2NhMjkuLjZmOTgwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtOTkyLDYgKzk5MiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZQogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7Cit9CisKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewogICAgIG1fbWVz
c2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsKQEAgLTExMjcsNyArMTEzMiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRBdXRvbWF0aW9uU2Vzc2lvbihSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+JiYg
YXV0b21hdAogICAgIGlmIChtX2F1dG9tYXRpb25TZXNzaW9uKSB7CiAgICAgICAgIG1fYXV0b21h
dGlvblNlc3Npb24tPmluaXQoKTsKICAgICAgICAgbV9hdXRvbWF0aW9uU2Vzc2lvbi0+c2V0UHJv
Y2Vzc1Bvb2wodGhpcyk7Ci0gICAgfQorCisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eSgpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
ZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRkN2YxZjYuLmZiY2Q4NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMjYsNiArMTI2
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAg
ICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
OworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDI0NWU3YTIuLjM1MTM3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUxOCw2ICs1MTgs
MTMgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFNDM2MzE4QjZDMDgx
MDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUFGRTQzNjYxOEI2QzA4MTAwOUM3
QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi87IH07
CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRjQ4RkUx
ODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi87IH07CisJCTFD
MEExOTQ2MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTQ0MUM4
RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCAqLzsgfTsKKwkJ
MUMwQTE5NDcxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTQ1MUM4
RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggKi87IH07CisJCTFD
MEExOTUzMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMUMwQTE5NTQxQzhGRkRGQjAwRkUwRUJCIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwQTE5NTIxQzhGRkRGQjAwRkUwRUJCIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oICovOyB9OworCQkxQzBBMTk1NzFDOTAw
NjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwQTE5NTUxQzkw
MDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKKwkJMUMwQTE5NTgxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMEExOTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2Vz
LmggKi87IH07CisJCTFDMEExOTVDMUM5MTZFMUIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5U2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzBBMTk1QjFDOTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oICovOyB9OwogCQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5
REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJ
LmNwcCAqLzsgfTsKIAkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2
MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLzsgfTsKIAkJMUM4RTI4MjAx
Mjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvci5oICovOyB9OwpAQCAtMjQ3MSw2ICsyNDc4LDE2IEBACiAJCTFBRkU0MzY0MThCNkMw
ODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVJRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRjQ4RkUx
ODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4
dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDMEExOTQ0MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk0NTFD
OEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTQ4MUM4RkYzMEUwMEZFMEVCQiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEEx
OTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzBBMTk1MjFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
QXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzBBMTk1NjFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Np
b25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0
aW9uU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEEx
OTU5MUM5MDA2RUEwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMwQTE5NUExQzkxNjY5NTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1QjFDOTE2RTFCMDBG
RTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0
U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNzdDMTk1MTI4OEE4NzIw
MDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjkzLDYgKzQ3
MTAsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQkxQzBBMTk0MzFDOEZGMUE4MDBGRTBFQkIgLyogQXV0b21hdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwQTE5NDQxQzhGRjFBODAwRkUw
RUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwICovLAorCQkJCTFDMEExOTQ1MUM4
RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggKi8sCisJCQkJMUMw
QTE5NUExQzkxNjY5NTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMgKi8s
CisJCQkJMUMwQTE5NDgxQzhGRjMwRTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IEF1dG9tYXRpb247CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxRjAxODE2ODE4NThEQzE1MDBGOTI4ODQgLyog
Q29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNTU3
NSw2ICs1NjAzLDcgQEAKIAkJCQk5OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0b21hdGlv
bi5qc29uICovLAogCQkJCTk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgKi8sCiAJCQkJOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uLmggKi8sCisJCQkJMUMwQTE5NTkxQzkwMDZFQTAwRkUwRUJCIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBBdXRvbWF0
aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU2MzQsNiArNTY2Myw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNkU3MEY4MThCMkQ0N0Uw
MEYyNEUyRSAvKiBjb2NvYSAqLywKKwkJCQkxQzBBMTk0MzFDOEZGMUE4MDBGRTBFQkIgLyogQXV0
b21hdGlvbiAqLywKIAkJCQkzMzA5MzQ0QjEzMTVCOTNBMDA5N0E3QkMgLyogQ29va2llcyAqLywK
IAkJCQk1MTJBOTc1NDE4MERGOTI3MDAzOUExNDkgLyogRGF0YWJhc2VzICovLAogCQkJCUJDQUND
NDNCMTZCMjRDNUQwMEI2RTA5MiAvKiBFbnRyeVBvaW50ICovLApAQCAtNjg1NSw2ICs2ODg1LDEx
IEBACiAJCQkJMUE2MDIyNEIxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNz
YWdlcy5oICovLAogCQkJCTFBOEU3RDNBMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4RTdEM0IxOEMxNTE0
OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXMuaCAqLywKKwkJ
CQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdl
UmVjZWl2ZXIuY3BwICovLAorCQkJCTFDMEExOTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggKi8sCisJCQkJMUMwQTE5NTExQzhGRkRGQjAwRkUwRUJC
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJ
CTFDMEExOTUyMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVz
c2FnZXMuaCAqLywKKwkJCQkxQzBBMTk1QjFDOTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oICovLAogCQkJCTFBMUZFQzFBMTYyN0I0NTYwMDcw
MEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTFGRUMx
QjE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJMzMw
OTM0NDMxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLApAQCAtNzMyNyw2ICs3MzYyLDcgQEAKIAkJCQlCQ0E4QzZBOTExRTNCQTVGMDA4MTJG
QjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzgxNDdBOTEyRjY0Q0RBMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzZCMDExRTNDMDg3MDA4MTJGQjcgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDMEExOTU4MUM5
MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OTU1QTZGNzFDNzk4NkU1MDBFQjZBOTMgLyogSW5zcGVjdG9yUHJvdG9jb2xP
YmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0YgLyog
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcx
MjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzM0NCw2ICs3MzgwLDcgQEAKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkg
LyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4RTZDNjAw
NTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjMyOTAzMTYyQzg2NzMwMEQ4
MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI4RkYxNjJD
ODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM0
QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAqLywKQEAg
LTc0MDUsNiArNzQ0Miw3IEBACiAJCQkJMUEyRDg0M0ExMjdGNjVENTAwMUVCOTYyIC8qIE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4MkE3
MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTJEODJBOTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFDMEExOTQ3MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUgLyog
TlBSdW50aW1lT2JqZWN0TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxNjJCMTExRjM4OTcx
MDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJE
ODRBMzEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NDMzLDYgKzc0NzEsNyBAQAogCQkJCTFBOEVGOTZGMTI1MkFGNkIwMEY3MDY3RiAvKiBQbHVn
aW5Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExNzk3ODAx
MzdFRTgyQzAwRjk3RDQ1IC8qIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0MzRjhDOTExNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQzBBMTk1NDFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVGQ0MxMjEx
RDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTNENjEwMjEzQTdDQzJBMDBGOTVENEUgLyogUGx1Z2luTW9kdWxlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEwNDM5NzYxMjREMDM0ODAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3MuaCBpbiBI
ZWFkZXJzICovLApAQCAtODg1Miw2ICs4ODkxLDcgQEAKIAkJCQkxQTJEODJBNDEyN0Y0RUFCMDAx
RUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE2MTI3RjRFQUIwMDFFQjk2
MiAvKiBOUE9iamVjdFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMEExOTUzMUM4RkZE
RkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90
ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQw
RjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIw
MTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC05MDkzLDYgKzkxMzMsNyBAQAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBX
ZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
Qzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMUMwQTE5NTcxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJF
NEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRBMTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZl
bnRGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDMxMjdBMkEwRTAwOEZGNEY0
IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTg3LDYgKzkyMjgs
NyBAQAogCQkJCTFBNTJDMEY3MUEzOENEQzcwMDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDNTcxNUMxMTVBREFFRjAwMUNDQUY5
IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMDMyRjE4MTgw
RjczQkIwMDk2MUJCNyAvKiBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMUMwQTE5NDYxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAwOEZG
NEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0QTMxODg0
RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNBMEVGODAxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmEzZWRkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eVNjcmlwdFNvdXJjZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSgpCit7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6fldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKK30KKwor
SlNPYmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2NyaXB0T2JqZWN0Rm9yRnJh
bWUoV2ViRnJhbWUmIGZyYW1lKQoreworICAgIGF1dG8gaXRlciA9IG1fd2ViRnJhbWVTY3JpcHRP
YmplY3RNYXAuZmluZChmcmFtZS5mcmFtZUlEKCkpOworICAgIGlmIChpdGVyICE9IG1fd2ViRnJh
bWVTY3JpcHRPYmplY3RNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKwor
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKKyAgICBKU0dsb2JhbENvbnRleHRS
ZWYgY29udGV4dCA9IGZyYW1lLmpzQ29udGV4dCgpOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHNjcmlwdChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoKGNvbnN0
IGNoYXIgKilXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlKSk7CisgICAgSlNP
YmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSAoSlNPYmplY3RSZWYpSlNFdmFsdWF0ZVNj
cmlwdChjb250ZXh0LCBzY3JpcHQuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZleGNlcHRp
b24pOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGNlcHRpb24pOworICAgIFJFTEVBU0VfQVNTRVJU
KEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBzY3JpcHRPYmplY3RGdW5jdGlvbikpOworCisgICAg
SlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0gKEpTT2JqZWN0UmVmKUpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb24oY29udGV4dCwgc2NyaXB0T2JqZWN0RnVuY3Rpb24sIG51bGxwdHIsIDAsIG51bGxwdHIs
ICZleGNlcHRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGNlcHRpb24pOworICAgIFJFTEVB
U0VfQVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBzY3JpcHRPYmplY3QpKTsKKworICAg
IEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdCk7CisgICAgbV93ZWJGcmFtZVNj
cmlwdE9iamVjdE1hcC5hZGQoZnJhbWUuZnJhbWVJRCgpLCBzY3JpcHRPYmplY3QpOworCisgICAg
cmV0dXJuIHNjcmlwdE9iamVjdDsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKK3sKKyAgICBh
dXRvIGl0ZXIgPSBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLmZpbmQoZnJhbWUuZnJhbWVJRCgp
KTsKKyAgICBpZiAoaXRlciA9PSBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlVW5wcm90ZWN0KGZyYW1lLmpzQ29udGV4dCgpLCBp
dGVyLT52YWx1ZSk7CisgICAgbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcC5yZW1vdmUoaXRlcik7
Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0
KHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBzY3JpcHQpCit7CisgICAgV2ViRnJhbWUqIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0g
c2NyaXB0T2JqZWN0Rm9yRnJhbWUoKmZyYW1lKTsKKyAgICBpZiAoIXNjcmlwdE9iamVjdCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gZnJhbWUtPmpzQ29udGV4dCgpOworCisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRlc3RTdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJ0ZXN0IikpOworICAgIEpTT2JqZWN0UmVmIHRlc3RGdW5jdGlvbiA9
IChKU09iamVjdFJlZilKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIHNjcmlwdE9iamVjdCwg
dGVzdFN0cmluZy5nZXQoKSwgJmV4Y2VwdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4Y2Vw
dGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQoSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIHRl
c3RGdW5jdGlvbikpOworCisgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCB0ZXN0
RnVuY3Rpb24sIG51bGxwdHIsIDAsIG51bGxwdHIsICZleGNlcHRpb24pOworICAgIFJFTEVBU0Vf
QVNTRVJUKCFleGNlcHRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjNiZGQwZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlfaAorI2RlZmluZSBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5X2gKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSgpOworICAgIH5XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5KCk7CisKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUm
KTsKKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8gQ2FsbGVkIGJ5
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMKKyAgICB2b2lkIGV2YWx1YXRlSmF2
YVNjcmlwdCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgc2NyaXB0KTsKKworcHJpdmF0ZToKKyAg
ICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYpOworCisgICAgdHlw
ZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBKU09iamVjdFJlZj4gV2ViRnJhbWVTY3JpcHRPYmplY3RN
YXA7CisgICAgV2ViRnJhbWVTY3JpcHRPYmplY3RNYXAgbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1h
cDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZmQ3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5qcwpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8jIHNvdXJjZVVSTD1fX1dl
Ykluc3BlY3RvckluamVjdGVkU2NyaXB0X18KKworKGZ1bmN0aW9uICgpIHsKKwordmFyIE9iamVj
dCA9IHt9LmNvbnN0cnVjdG9yOworCit2YXIgQXV0b21hdGlvblNlc3Npb25Qcm94eSA9IGNsYXNz
IEF1dG9tYXRpb25TZXNzaW9uUHJveHkKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAg
IH0KKworICAgIC8vIFB1YmxpYworCisgICAgdGVzdCgpCisgICAgeworICAgICAgICBjb25zb2xl
LmxvZygiSGVsbG8gV29ybGQhIik7CisgICAgfQorfTsKKworcmV0dXJuIG5ldyBBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OworCit9KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjdiZTNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKKyAgICBFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3Qg
ZnJhbWUsIFN0cmluZyBzY3JpcHQpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGI4OWQ3YTEuLmNlY2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUg
IlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
RG9jdW1lbnRMb2FkZXIuaCIKQEAgLTE1NzksNiArMTU4MCw5IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYKIAogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkQ2xl
YXJXaW5kb3dPYmplY3RGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB3b3JsZCk7CiAKKyAgICBp
ZiAoYXV0byBhdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
YXV0b21hdGlvblNlc3Npb25Qcm94eSgpKQorICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvblByb3h5
LT5kaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKCptX2ZyYW1lKTsKKwogI2lmIEhBVkUoQUND
RVNTSUJJTElUWSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkKICAgICAvLyBF
bnN1cmUgdGhlIGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5IGlzIHVwZGF0ZWQuCiAgICAgd2ViUGFn
ZS0+dXBkYXRlQWNjZXNzaWJpbGl0eVRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDU4Y2E0M2IuLjExZGZmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJVc2Vy
RGF0YS5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC0xNDM0LDYgKzE0MzUs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNl
cnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnYKIH0KICNlbmRpZgogCit2b2lkIFdlYlByb2Nl
c3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQoreworICAgIG1fYXV0b21hdGlvblNl
c3Npb25Qcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4o
KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgp
Cit7CisgICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gbnVsbHB0cjsKK30KKwogdm9pZCBX
ZWJQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIGlm
IChob3N0bmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IGZhNmQ2YWMuLjA3ZTUwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC03Niw2ICs3Niw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlOwogY2xhc3MgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogY2xhc3MgT2JqQ09iamVjdEdyYXBoOwogY2xhc3MgVXNl
ckRhdGE7CitjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OwogY2xhc3MgV2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2VQ
cm94eTsKQEAgLTIwOSw2ICsyMTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYpOwogCisgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSogYXV0b21h
dGlvblNlc3Npb25Qcm94eSgpIHsgcmV0dXJuIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eS5nZXQo
KTsgfQorCiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3MoKTsKICAgICB+V2ViUHJvY2VzcygpOwpA
QCAtMjgzLDYgKzI4Niw5IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTaG91bGRBY2tub3ds
ZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGFjdHVhbFByZXBh
cmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpOwogCisgICAg
dm9pZCBlbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CisgICAgdm9pZCBkZXN0cm95QXV0
b21hdGlvblNlc3Npb25Qcm94eSgpOworCiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAgdm9pZCBp
bml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGls
ZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKQEAgLTM1Miw2ICsz
NTgsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Ruc1ByZWZldGNoZWRIb3N0
czsKICAgICBXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9kbnNQcmVmZXRjaEh5c3RlcmVy
aXM7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4gbV9h
dXRvbWF0aW9uU2Vzc2lvblByb3h5OworCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAg
ICAgdm9pZCBlbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBSZWZQ
dHI8V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uPiBtX3dlYlRvRGF0YWJhc2VQcm9jZXNz
Q29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCBiY2YxYWI3Li44YTdjMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Miw2ICs5Miw5IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEVuYWJsZWRTZXJ2
aWNlcyhib29sIGhhc0ltYWdlU2VydmljZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydmljZXMsIGJv
b2wgaGFzUmljaENvbnRlbnRTZXJ2aWNlcykKICNlbmRpZgogCisgICAgRW5zdXJlQXV0b21hdGlv
blNlc3Npb25Qcm94eSgpCisgICAgRGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQorCiAg
ICAgUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIC0+IChib29sIGhhbmRsZWQpCiAgICAg
UHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274056</attachid>
            <date>2016-03-14 17:15:02 -0700</date>
            <delta_ts>2016-03-14 22:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155221-20160314171450.patch</filename>
            <type>text/plain</type>
            <size>43195</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmQwYWNjNDljNWJjMmE2
OWFiMzJhZDI2NzcwM2JjZDg4MmIzODFlMy4uNmVlOGY4ZTQ2Yzk5MmViODNiYmU4NTJlYzI0MTdi
ZDliMWE3ZTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAzLTE0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eSBmb3IgV2ViUHJvY2VzcyBzaWRlIGF1dG9tYXRpb24gdGFza3MKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjIxCisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1MDU0ODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIGJ1aWxkIHN0ZXAg
dG8gYnVpbGQtaW4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcy4KKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246On5XZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpzZXRQcm9jZXNzUG9vbCk6IEFkZCAvIHJlbW92ZSBtZXNzYWdlIHJl
Y2VpdmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgIFRlc3QgbWVzc2FnZSB0byBnZXQgdGhp
bmdzIHRvIGJ1aWxkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uU2Vzc2lvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIG5ldyBmaWxlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvSlNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojp0
b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6fldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVVVSUQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICBDcmVhdGUgYSBzY3JpcHQgb2JqZWN0IHBlciBm
cmFtZSB0aGF0IGlzIGV2YWx1YXRlZCBmcm9tIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMu
CisgICAgICAgIENsZWFyIHRoZSBzY3JpcHQgb2JqZWN0IHdoZW4gdGhlIHdpbmRvdyBvYmplY3Qg
aXMgY2xlYXJlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Ojp0ZXN0KToKKyAgICAgICAgQWRkZWQgdGVzdCBtZXNzYWdlIHRvIGxldCB0
aGUgbWVzc2FnZXMgZmlsZXMgYnVpbGQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qczogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjog
QWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgQ2FsbCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lIHRvIGNsZWFy
IHRoZSBzY3JpcHQgb2JqZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Q
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lBdXRvbWF0aW9uU2Vz
c2lvblByb3h5KToKKyAgICAgICAgQ3JlYXRlcyBhbmQgZGVzdHJveXMgdGhlIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgd2hlbiB0aGUgVUlQcm9jZXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uCisg
ICAgICAgIGlzIHNldCBvciByZW1vdmVkIG9uIHRoZSBXZWJQcm9jZXNzUG9vbC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjphdXRvbWF0aW9uU2Vzc2lvblByb3h5KTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkLiBUZXN0IG1lc3NhZ2UgdG8gZ2V0IHRoaW5n
cyB0byBidWlsZC4KKwogMjAxNi0wMy0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTc5ODYpOiBEb24ndCB0cnkgdG8gbGluayB0
byB1bmRlZmluZWQgJChXRUJLSVRfU1lTVEVNX0lOVEVSRkFDRV9MSUJSQVJZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAppbmRleCA1NDRmYmJkYmZjYTBlM2JkZWQyNmUzZjExNjU3MDI0MmUwYzgxMmVmLi5l
OTg4NTY2NGRiZDA1NDA2Mzk2MGFiY2JlNDY3YWYyMzQ5NWI3YTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dApAQCAtNDIsNiArNDIsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2VzcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9BcHBsaWNh
dGlvbkNhY2hlIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0F1dG9tYXRpb24iCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvQmF0dGVyeSIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9Db29raWVzIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rh
dGFiYXNlcyIKQEAgLTQ5OSw2ICs1MDAsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAogCisgICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCisKICAgICBXZWJQcm9jZXNzL0JhdHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIu
Y3BwCiAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTY3
MCw2ICs2NzMsOCBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4KICAgICBVSVByb2Nl
c3MvV2ViVmlicmF0aW9uUHJveHkubWVzc2FnZXMuaW4KIAorICAgIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCisKICAgICBVSVByb2Nlc3MvRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAKICAgICBVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KQEAgLTY4Niw2ICs2OTEsOCBAQCBz
ZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCiAKKyAgICBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgorCiAgICAgV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRl
cnlNYW5hZ2VyLm1lc3NhZ2VzLmluCiAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtNzg1LDYgKzc5MiwxNSBAQCBhZGRfY3VzdG9tX2NvbW1h
bmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1BST1RPQ09MX0dFTkVSQVRP
Ul9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5IC0t
b3V0cHV0RGlyICIke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0iIC0tZnJhbWV3b3JrIFdl
YktpdCAtLWJhY2tlbmQgJHtXZWJLaXQyX0FVVE9NQVRJT05fUFJPVE9DT0xfR0VORVJBVE9SX0lO
UFVUU30KICAgICBWRVJCQVRJTSkKIAorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgIE9VVFBVVCAk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNj
cmlwdFNvdXJjZS5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Lm1pbi5qcworICAgIE1BSU5fREVQRU5ERU5DWSAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcworICAgIERF
UEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5CisgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1F
IGVjaG8gIi8vIyBzb3VyY2VVUkw9X19XZWJJbnNwZWN0b3JJbmplY3RlZFNjcmlwdF9fIiA+ICR7
REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1p
bi5qcworICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcyA+PiAke0RFUklWRURfU09VUkNFU19XRUJL
SVQyX0RJUn0vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5taW4uanMKKyAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSAke0RFUklWRURfU09VUkNFU19XRUJL
SVQyX0RJUn0vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5taW4uanMgJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMl9ESVJ9L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaAor
ICAgIFZFUkJBVElNKQorCiBsaXN0KEFQUEVORCBXZWJLaXQyX0hFQURFUlMKICAgICAke0RFUklW
RURfU09VUkNFU19XRUJLSVQyX0RJUn0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgKICAg
ICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vSW5zcGVjdG9yUHJvdG9jb2xPYmplY3Rz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDBkNTcyMDQ2OTc4MzM4ODE3YWI4
MzQ5MzI3NDJmMjM4NGFmYzAwMzIuLjY1Y2Y5ZTU3NWRkNzllYTM0YTU3NTIxMWVkNmUyOWY2NTU1
YzBiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzYsNiArMzYsNyBAQCBW
UEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9BdXRoZW50aWNhdGlvbiBcCiAgICAgJChX
ZWJLaXQyKS9TaGFyZWQvbWFjIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXBwbGljYXRp
b25DYWNoZSBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dG9tYXRpb24gXAogICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9Db29raWVzIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL0luZGV4ZWREQiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4gXApAQCAtNzEsNiArNzIsMTUgQEAgVlBBVEggPSBcCiAgICAgJChXRUJLSVRBRERJVElPTlNf
SEVBREVSX1NFQVJDSF9QQVRIUykgXAogIwogCitQWVRIT04gPSBweXRob24KK1BFUkwgPSBwZXJs
CisKK2lmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCisgICAgREVMRVRFID0gY21kIC8vQyBkZWwKK2Vs
c2UKKyAgICBERUxFVEUgPSBybSAtZgorZW5kaWYKKwogTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAg
ICAgQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKICAgICBDaGlsZFByb2Nlc3MgXApAQCAtMTA4LDYg
KzExOCw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFZpZXdVcGRhdGVEaXNwYXRjaGVy
IFwKICAgICBWaXNpdGVkTGlua1N0b3JlIFwKICAgICBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxl
ciBcCisgICAgV2ViQXV0b21hdGlvblNlc3Npb24gXAorICAgIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkgXAogICAgIFdlYkNvbm5lY3Rpb24gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIgXAogICAg
IFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCkBAIC0yMTksMyArMjMxLDExIEBAICQoZmlyc3R3b3Jk
ICQoQVVUT01BVElPTl9QUk9UT0NPTF9PVVRQVVRfRklMRVMpKSA6ICQoQVVUT01BVElPTl9QUk9U
T0NPTF9JTlBVVF9GCiAJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSAtLWZyYW1ld29yayBXZWJLaXQg
LS1iYWNrZW5kIC0tb3V0cHV0RGlyIC4gJChBVVRPTUFUSU9OX1BST1RPQ09MX0lOUFVUX0ZJTEVT
KQogCiBhbGwgOiAkKGZpcnN0d29yZCAkKEFVVE9NQVRJT05fUFJPVE9DT0xfT1VUUFVUX0ZJTEVT
KSkKKworJVNjcmlwdFNvdXJjZS5oIDogJS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKKwllY2hvICIv
LyMgc291cmNlVVJMPV9fV2ViSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHRfXyIgPiAkKGJhc2VuYW1l
ICQobm90ZGlyICQ8KSkubWluLmpzCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2pzbWluLnB5IDwgJDwgPj4gJChiYXNlbmFtZSAkKG5vdGRpciAkPCkpLm1pbi5qcwor
CSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsICQoYmFzZW5hbWUg
JChub3RkaXIgJDwpKVNjcmlwdFNvdXJjZSAkKGJhc2VuYW1lICQobm90ZGlyICQ8KSkubWluLmpz
ICRACisJJChERUxFVEUpICQoYmFzZW5hbWUgJChub3RkaXIgJDwpKS5taW4uanMKKworYWxsIDog
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKaW5kZXggOTQ2ZDQwMTgxMTQzNzQ1NGM3NzUzYjk5ZjkyYWQ4Y2RhZWViOTlmMy4uZjQw
ZmIxZjJlYTUxNDhkOTNmYWMyMmI4ZWIxMTllZjdhYjgyMDI3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCIKKyNpbmNs
dWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CkBAIC01
Nyw2ICs1OSw5IEBAIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigp
CiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6fldlYkF1dG9tYXRpb25TZXNzaW9uKCkKIHsKICAgICBB
U1NFUlQoIW1fY2xpZW50KTsKKworICAgIGlmIChtX3Byb2Nlc3NQb29sKQorICAgICAgICBtX3By
b2Nlc3NQb29sLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+IGNsaWVudCkKQEAgLTY0LDYgKzY5LDE3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
CiAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnNldFByb2Nlc3NQb29sKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
b29sKQoreworICAgIGlmIChtX3Byb2Nlc3NQb29sKQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgbV9wcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29sOwor
CisgICAgaWYgKG1fcHJvY2Vzc1Bvb2wpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgKnRoaXMpOworfQorCiAvLyBOT1RFOiB0aGlzIGNsYXNzIGNvdWxkIGJlIHNwbGl0
IGF0IHNvbWUgcG9pbnQgdG8gc3VwcG9ydCBsb2NhbCBhbmQgcmVtb3RlIGF1dG9tYXRpb24gc2Vz
c2lvbnMuCiAvLyBGb3Igbm93LCBpdCBvbmx5IHdvcmtzIHdpdGggYSByZW1vdGUgYXV0b21hdGlv
biBkcml2ZXIgb3ZlciBhIFJlbW90ZUluc3BlY3RvciBjb25uZWN0aW9uLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAppbmRleCAyZmQ4YWE1NDEwZTE5MmVhZDRkNWJhMTNmODNmNzU3YjE5N2Y2NGM5Li43
NWExZWJhMjY0OGVmYjk0NjEwNTE5ZTA3NDFiZjNjZWM2MDcyZDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViQXV0b21hdGlvblNlc3Npb25faAog
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2Vi
QXV0b21hdGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpBdXRvbWF0aW9uU2Vzc2lvbj4KK2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9u
IGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0b21h
dGlvblNlc3Npb24+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25U
YXJnZXQKICNlbmRpZgpAQCAtNjIsMTMgKzYzLDIwIEBAIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0
aW9uU2Vzc2lvbigpOwogICAgIH5XZWJBdXRvbWF0aW9uU2Vzc2lvbigpOwogCisgICAgLy8gSW1w
bGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRp
b25TZXNzaW9uIG1lc3NhZ2VzCisgICAgLy8gRklYTUU6IEFkZCBtZXNzYWdlIGZ1bmN0aW9ucyBo
ZXJlLgorICAgIHZvaWQgdGVzdCgpIHsgfTsKKwogICAgIHZvaWQgc2V0Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Pik7CiAKICAgICB2b2lkIHNldFNl
c3Npb25JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpIHsgbV9zZXNz
aW9uSWRlbnRpZmllciA9IHNlc3Npb25JZGVudGlmaWVyOyB9CiAgICAgU3RyaW5nIHNlc3Npb25J
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSWRlbnRpZmllcjsgfQogCiAgICAg
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2woKSBjb25zdCB7IHJldHVybiBtX3By
b2Nlc3NQb29sOyB9Ci0gICAgdm9pZCBzZXRQcm9jZXNzUG9vbChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sKiBwcm9jZXNzUG9vbCkgeyBtX3Byb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2w7IH0KKyAgICB2
b2lkIHNldFByb2Nlc3NQb29sKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqKTsKIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgIC8vIEluc3BlY3Rvcjo6UmVtb3RlQXV0b21hdGlvblRh
cmdldCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTJmNzUwY2FiMGRiYTRjMGM4Nzg3ZjMxNjdjYjdlY2Q4MDMwMjE1YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb24gewor
ICAgIC8vIEZJWE1FOiBBZGQgbWVzc2FnZXMgaGVyZS4KKyAgICBUZXN0KCkKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGQ3ZGUxZWNhZDc1MWJk
ZGViZjgwZTI3NjEwYTliYmQ1NDZlNWY2NTQuLjBmYjY4YzI3MmVjYmE1YjMxY2IzZjZiZjE3YTAy
MjNmODE3MDUzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtOTk3LDYgKzk5NywxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZQogICAgIG1f
bWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSkKK3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFw
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
KTsKQEAgLTExMzIsNyArMTEzNywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0
aW9uU2Vzc2lvbihSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+JiYgYXV0b21hdAogICAgIGlm
IChtX2F1dG9tYXRpb25TZXNzaW9uKSB7CiAgICAgICAgIG1fYXV0b21hdGlvblNlc3Npb24tPmlu
aXQoKTsKICAgICAgICAgbV9hdXRvbWF0aW9uU2Vzc2lvbi0+c2V0UHJvY2Vzc1Bvb2wodGhpcyk7
Ci0gICAgfQorCisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95QXV0b21hdGlv
blNlc3Npb25Qcm94eSgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDhkMDE0YWVhYzU4NmRkMmYzNzA4N2VkYWRlODY1MjJhYWM4
Zjg1NzUuLmU0NmJkMWJhODllYzNjNmY0YWVjMzYzNDFiZWU0Y2U2MDZkZjJiYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMjYsNiArMTI2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwog
CiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGJmMTY1ZGJiN2UxNDhlYTgxNGMwMWMzNDAyNjYyMzM3OTg1N2QwZTQu
LmQwNTFlMTA5MTRlNjQ1ZGZmYWYxZjZiYjQ2MzE4ODU4Mjk0Njc0ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUxOCw2ICs1
MTgsMTMgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFNDM2MzE4QjZD
MDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUFGRTQzNjYxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi87
IH07CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRjQ4
RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi87IH07CisJ
CTFDMEExOTQ2MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTQ0
MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCAqLzsgfTsK
KwkJMUMwQTE5NDcxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTQ1
MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggKi87IH07CisJ
CTFDMEExOTUzMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMUMwQTE5NTQxQzhGRkRGQjAwRkUwRUJC
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwQTE5NTIxQzhGRkRGQjAwRkUwRUJCIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oICovOyB9OworCQkxQzBBMTk1NzFD
OTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwQTE5NTUx
QzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKKwkJMUMwQTE5NTgxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMEExOTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3Nh
Z2VzLmggKi87IH07CisJCTFDMEExOTVDMUM5MTZFMUIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5U2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzBBMTk1QjFDOTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oICovOyB9OwogCQkxQzg5MUQ2NTE5QjEyNEZGMDBC
QTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3Rv
clVJLmNwcCAqLzsgfTsKIAkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3Rv
clVJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5
MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLzsgfTsKIAkJMUM4RTI4
MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5oICovOyB9OwpAQCAtMjQ3NSw2ICsyNDgyLDE2IEBACiAJCTFBRkU0MzY0MThC
NkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVJRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRjQ4
RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyog
VGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMEExOTQ0MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk0
NTFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTQ4MUM4RkYzMEUwMEZFMEVCQiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
MEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzBBMTk1MjFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzBBMTk1NjFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNl
c3Npb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRv
bWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
MEExOTU5MUM5MDA2RUEwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUMwQTE5NUExQzkxNjY5NTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1QjFDOTE2RTFC
MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2Ny
aXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNzdDMTk1MTI4OEE4
NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJ
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJ
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4OTFENjMxOUIxMjRGRjAwQkE3
OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzAxLDYg
KzQ3MTgsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQkxQzBBMTk0MzFDOEZGMUE4MDBGRTBFQkIgLyogQXV0b21hdGlvbiAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwQTE5NDQxQzhGRjFBODAw
RkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwICovLAorCQkJCTFDMEExOTQ1
MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggKi8sCisJCQkJ
MUMwQTE5NUExQzkxNjY5NTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMg
Ki8sCisJCQkJMUMwQTE5NDgxQzhGRjMwRTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IEF1dG9tYXRpb247CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxRjAxODE2ODE4NThEQzE1MDBGOTI4ODQg
LyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
NTU4Nyw2ICs1NjE1LDcgQEAKIAkJCQk5OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0b21h
dGlvbi5qc29uICovLAogCQkJCTk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAgKi8sCiAJCQkJOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uLmggKi8sCisJCQkJMUMwQTE5NTkxQzkwMDZFQTAwRkUwRUJCIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBBdXRv
bWF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU2NDYsNiArNTY3NSw3IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNkU3MEY4MThCMkQ0
N0UwMEYyNEUyRSAvKiBjb2NvYSAqLywKKwkJCQkxQzBBMTk0MzFDOEZGMUE4MDBGRTBFQkIgLyog
QXV0b21hdGlvbiAqLywKIAkJCQkzMzA5MzQ0QjEzMTVCOTNBMDA5N0E3QkMgLyogQ29va2llcyAq
LywKIAkJCQk1MTJBOTc1NDE4MERGOTI3MDAzOUExNDkgLyogRGF0YWJhc2VzICovLAogCQkJCUJD
QUNDNDNCMTZCMjRDNUQwMEI2RTA5MiAvKiBFbnRyeVBvaW50ICovLApAQCAtNjg2Nyw2ICs2ODk3
LDExIEBACiAJCQkJMUE2MDIyNEIxOEMxNkI5RjAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVN
ZXNzYWdlcy5oICovLAogCQkJCTFBOEU3RDNBMThDMTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUE4RTdEM0IxOEMx
NTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXMuaCAqLywK
KwkJCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFDMEExOTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggKi8sCisJCQkJMUMwQTE5NTExQzhGRkRGQjAwRkUw
RUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAor
CQkJCTFDMEExOTUyMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
TWVzc2FnZXMuaCAqLywKKwkJCQkxQzBBMTk1QjFDOTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oICovLAogCQkJCTFBMUZFQzFBMTYyN0I0NTYw
MDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTFG
RUMxQjE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJ
MzMwOTM0NDMxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLApAQCAtNzMzOSw2ICs3Mzc0LDcgQEAKIAkJCQlCQ0E4QzZBOTExRTNCQTVGMDA4
MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzgxNDdBOTEyRjY0Q0RBMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzZCMDExRTNDMDg3MDA4MTJGQjcgLyog
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDMEExOTU4
MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OTU1QTZGNzFDNzk4NkU1MDBFQjZBOTMgLyogSW5zcGVjdG9yUHJvdG9j
b2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0Yg
LyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERG
NzcxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzM1Niw2ICs3MzkyLDcgQEAKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgy
NjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4RTZD
NjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHlTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjMyOTAzMTYyQzg2NzMw
MEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI4RkYx
NjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0MTgsNiArNzQ1NSw3IEBACiAJCQkJMUEyRDg0M0ExMjdGNjVENTAwMUVCOTYyIC8qIE5Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4
MkE3MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTJEODJBOTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTFDMEExOTQ3MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUg
LyogTlBSdW50aW1lT2JqZWN0TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxNjJCMTExRjM4
OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTJEODRBMzEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NDQ2LDYgKzc0ODQsNyBAQAogCQkJCTFBOEVGOTZGMTI1MkFGNkIwMEY3MDY3RiAvKiBQ
bHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExNzk3
ODAxMzdFRTgyQzAwRjk3RDQ1IC8qIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0MzRjhDOTExNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzBBMTk1NDFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVGQ0Mx
MjExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTNENjEwMjEzQTdDQzJBMDBGOTVENEUgLyogUGx1Z2luTW9kdWxlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEwNDM5NzYxMjREMDM0ODAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3MuaCBp
biBIZWFkZXJzICovLApAQCAtODg2Nyw2ICs4OTA2LDcgQEAKIAkJCQkxQTJEODJBNDEyN0Y0RUFC
MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE2MTI3RjRFQUIwMDFF
Qjk2MiAvKiBOUE9iamVjdFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMEExOTUzMUM4
RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJl
bW90ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4
QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2
MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC05MTA4LDYgKzkxNDgsNyBAQAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUMwQTE5NTcxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFD
QkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRBMTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9T
RXZlbnRGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDMxMjdBMkEwRTAwOEZG
NEY0IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MjAyLDYgKzky
NDMsNyBAQAogCQkJCTFBNTJDMEY3MUEzOENEQzcwMDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDNTcxNUMxMTVBREFFRjAwMUND
QUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMDMyRjE4
MTgwRjczQkIwMDk2MUJCNyAvKiBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUMwQTE5NDYxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAw
OEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0QTMx
ODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNBMEVGODAxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZWVm
ODNhZmEyZTVkYTJiYzA5NTc3NTFlMjE2ZjNlOGEwYjNhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgorCisjaW5jbHVkZSAi
V2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlBh
Z2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZlByaXZh
dGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVVJRC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGlubGlu
ZSBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdG9KU1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KEFkb3B0LCBPcGFxdWVK
U1N0cmluZzo6Y3JlYXRlKHN0cmluZykubGVha1JlZigpKTsKK30KKworc3RhdGljIGlubGluZSBK
U1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHRvSlNTdHJp
bmcoc3RyaW5nKS5nZXQoKSk7Cit9CisKK1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OldlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Cit9CisKK1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6On5XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVm
IGV2YWx1YXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBBU1NFUlRfQVJH
KGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50Q291bnQgPT0gMSk7CisgICAgQVNTRVJUX0FSRyhhcmd1
bWVudHMsIEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIGlm
IChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzY3JpcHQoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICByZXR1cm4gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIsIDAsIGV4Y2VwdGlvbik7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGNyZWF0
ZVVVSUQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHJldHVybiB0b0pTVmFs
dWUoY29udGV4dCwgV2ViQ29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLmNvbnZlcnRU
b0FTQ0lJVXBwZXJjYXNlKCkpOworfQorCitKU09iamVjdFJlZiBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCit7CisgICAgaWYg
KEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdCA9IG1fd2ViRnJhbWVTY3JpcHRPYmplY3RNYXAuZ2V0
KGZyYW1lLmZyYW1lSUQoKSkpCisgICAgICAgIHJldHVybiBzY3JpcHRPYmplY3Q7CisKKyAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNv
bnRleHQgPSBmcmFtZS5qc0NvbnRleHQoKTsKKworICAgIEpTT2JqZWN0UmVmIGV2YWx1YXRlRnVu
Y3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBudWxscHRy
LCBldmFsdWF0ZSk7CisgICAgSlNPYmplY3RSZWYgY3JlYXRlVVVJREZ1bmN0aW9uID0gSlNPYmpl
Y3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgbnVsbHB0ciwgY3JlYXRlVVVJRCk7
CisKKyAgICBTdHJpbmcgc2NyaXB0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmco
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSwgc2l6ZW9mKFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UpKTsKKworICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9i
amVjdEZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChj
b250ZXh0LCB0b0pTU3RyaW5nKHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZl
eGNlcHRpb24pKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9i
amVjdEZ1bmN0aW9uKSk7CisKKyAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdID0geyBldmFsdWF0
ZUZ1bmN0aW9uLCBjcmVhdGVVVUlERnVuY3Rpb24gfTsKKyAgICBKU09iamVjdFJlZiBzY3JpcHRP
YmplY3QgPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNv
bnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uLCBudWxscHRyLCBXVEZfQVJSQVlfTEVOR1RIKGFy
Z3VtZW50cyksIGFyZ3VtZW50cywgJmV4Y2VwdGlvbikpOworICAgIEFTU0VSVChKU1ZhbHVlSXNP
YmplY3QoY29udGV4dCwgc2NyaXB0T2JqZWN0KSk7CisKKyAgICBKU1ZhbHVlUHJvdGVjdChjb250
ZXh0LCBzY3JpcHRPYmplY3QpOworICAgIG1fd2ViRnJhbWVTY3JpcHRPYmplY3RNYXAuYWRkKGZy
YW1lLmZyYW1lSUQoKSwgc2NyaXB0T2JqZWN0KTsKKworICAgIHJldHVybiBzY3JpcHRPYmplY3Q7
Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCit7CisgICAgaWYgKEpTT2JqZWN0UmVmIHNjcmlw
dE9iamVjdCA9IG1fd2ViRnJhbWVTY3JpcHRPYmplY3RNYXAudGFrZShmcmFtZS5mcmFtZUlEKCkp
KQorICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGZyYW1lLmpzQ29udGV4dCgpLCBzY3JpcHRPYmpl
Y3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM3ZTRlZWVjYThkOGM4ODk5ODU4ODI4MmViNTgwYmZlNzFlNmQ1
NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlfaAorI2RlZmluZSBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5X2gKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkZyYW1lOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eSgpOworICAgIH5XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7
CisKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmKTsKKwor
ICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMKKyAgICAvLyBGSVhNRTogQWRkIG1lc3NhZ2Ug
ZnVuY3Rpb25zIGhlcmUuCisgICAgdm9pZCB0ZXN0KCkgeyB9OworCitwcml2YXRlOgorICAgIEpT
T2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJik7CisKKyAgICB0eXBlZGVm
IEhhc2hNYXA8dWludDY0X3QsIEpTT2JqZWN0UmVmPiBXZWJGcmFtZVNjcmlwdE9iamVjdE1hcDsK
KyAgICBXZWJGcmFtZVNjcmlwdE9iamVjdE1hcCBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWUwYTQ2MDJhOWU4MjRiODAwNGZkOGJiYWZhYmEwMjc3OTU0MTE2OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyMgc291cmNlVVJM
PV9fV2ViSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHRfXworCisoZnVuY3Rpb24gKGV2YWx1YXRlLCBj
cmVhdGVVVUlEKSB7CisKK3ZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKKwordmFyIEF1dG9t
YXRpb25TZXNzaW9uUHJveHkgPSBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvblByb3h5Cit7CisgICAg
Ly8gUHVibGljCisKKyAgICAvLyBGSVhNRTogQWRkIGZ1bmN0aW9ucyBoZXJlLgorfTsKKworcmV0
dXJuIG5ldyBBdXRvbWF0aW9uU2Vzc2lvblByb3h5OworCit9KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTNjOGNjYmJiYTNk
MzE0ZDBhOGM5ZGRlYmY4NDM5NWE2YjVlNWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKKyAgICAv
LyBGSVhNRTogQWRkIG1lc3NhZ2VzIGhlcmUuCisgICAgVGVzdCgpCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGI4OWQ3YTFiMzdlMzAzYzVhYTQ5NTYzY2U4NmFlMmFk
ZjRlOWViODAuLmNlY2Q3ZTE4MzNhMDMwYWQwNTY4YTY4NGEzNGMwYzIyZTlhYjliZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV0tCdW5k
bGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTE1NzksNiAr
MTU4MCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYKIAogICAgIHdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSh3ZWJQYWdl
LCBtX2ZyYW1lLCB3b3JsZCk7CiAKKyAgICBpZiAoYXV0byBhdXRvbWF0aW9uU2Vzc2lvblByb3h5
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXV0b21hdGlvblNlc3Npb25Qcm94eSgpKQorICAg
ICAgICBhdXRvbWF0aW9uU2Vzc2lvblByb3h5LT5kaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1l
KCptX2ZyYW1lKTsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgKFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKSkKICAgICAvLyBFbnN1cmUgdGhlIGFjY2Vzc2liaWxpdHkgaGllcmFy
Y2h5IGlzIHVwZGF0ZWQuCiAgICAgd2ViUGFnZS0+dXBkYXRlQWNjZXNzaWJpbGl0eVRyZWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDZiZTdmZTQxMWFk
OTdmYmZjYTFmOGM0MWY3NzM3NGJkMTJmMGIwZWIuLmUwZTM2Y2E1YTU2YzExNjkzMWRjY2YxNDNl
OTVhMzg1NGExMGY3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVk
ZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgorI2luY2x1ZGUgIldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC0xNDQyLDYgKzE0NDMsMTYgQEAgdm9pZCBXZWJQcm9jZXNz
OjpzZXRFbmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVj
dGlvblNlcnYKIH0KICNlbmRpZgogCit2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25T
ZXNzaW9uUHJveHkoKQoreworICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCit7CisgICAgbV9hdXRvbWF0aW9u
U2Vzc2lvblByb3h5ID0gbnVsbHB0cjsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpwcmVmZXRjaERO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDY0ODI4MGNhNDM0Mjdm
MmQyM2FkNDRmZTQ2ZTJkYWYwMTgzMDMwZDcuLjk5NGJjZTY1ZGE3ZWRhMDA2NDZjNTliMGUzMzE5
Yjc4YjNjZDJmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC03
Niw2ICs3Niw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlOwogY2xhc3MgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOwogY2xhc3MgT2JqQ09iamVjdEdyYXBoOwogY2xhc3MgVXNlckRhdGE7CitjbGFz
cyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2VQcm94eTsKQEAgLTIw
OSw2ICsyMTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSogYXV0b21hdGlvblNlc3Npb25Q
cm94eSgpIHsgcmV0dXJuIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eS5nZXQoKTsgfQorCiBwcml2
YXRlOgogICAgIFdlYlByb2Nlc3MoKTsKICAgICB+V2ViUHJvY2VzcygpOwpAQCAtMjg1LDYgKzI4
OCw5IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFk
eVRvU3VzcGVuZCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQo
U2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpOwogCisgICAgdm9pZCBlbnN1cmVB
dXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CisgICAgdm9pZCBkZXN0cm95QXV0b21hdGlvblNlc3Np
b25Qcm94eSgpOworCiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAgdm9pZCBpbml0aWFsaXplUHJv
Y2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKQEAgLTM1NCw2ICszNjAsOCBAQCBwcml2
YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Ruc1ByZWZldGNoZWRIb3N0czsKICAgICBXZWJD
b3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXM7CiAKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4gbV9hdXRvbWF0aW9uU2Vz
c2lvblByb3h5OworCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgdm9pZCBlbnN1
cmVXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBSZWZQdHI8V2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uPiBtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCA4M2E3MzZmOWE2MjJhNDA4ZGZhMjVjZjQwYTU5MjE1OTM2YTYyYjRlLi41NjY0NjI1YTU2
MTdlODVhMGNlZjkwMTI5MDAzNjg1ZmUwNjIzM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Myw2ICs5Myw5IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEVuYWJsZWRTZXJ2aWNl
cyhib29sIGhhc0ltYWdlU2VydmljZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydmljZXMsIGJvb2wg
aGFzUmljaENvbnRlbnRTZXJ2aWNlcykKICNlbmRpZgogCisgICAgRW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eSgpCisgICAgRGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQorCiAgICAg
UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIC0+IChib29sIGhhbmRsZWQpCiAgICAgUHJl
cGFyZVRvU3VzcGVuZCgpCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274075</attachid>
            <date>2016-03-14 22:32:21 -0700</date>
            <delta_ts>2016-03-15 15:00:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155221-20160314223211.patch</filename>
            <type>text/plain</type>
            <size>43161</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmQwYWNjNDljNWJjMmE2
OWFiMzJhZDI2NzcwM2JjZDg4MmIzODFlMy4uNmVlOGY4ZTQ2Yzk5MmViODNiYmU4NTJlYzI0MTdi
ZDliMWE3ZTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAzLTE0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eSBmb3IgV2ViUHJvY2VzcyBzaWRlIGF1dG9tYXRpb24gdGFza3MKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjIxCisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1MDU0ODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIGJ1aWxkIHN0ZXAg
dG8gYnVpbGQtaW4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcy4KKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246On5XZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpzZXRQcm9jZXNzUG9vbCk6IEFkZCAvIHJlbW92ZSBtZXNzYWdlIHJl
Y2VpdmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgIFRlc3QgbWVzc2FnZSB0byBnZXQgdGhp
bmdzIHRvIGJ1aWxkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uU2Vzc2lvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIG5ldyBmaWxlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvSlNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojp0
b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6fldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVVVSUQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICBDcmVhdGUgYSBzY3JpcHQgb2JqZWN0IHBlciBm
cmFtZSB0aGF0IGlzIGV2YWx1YXRlZCBmcm9tIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMu
CisgICAgICAgIENsZWFyIHRoZSBzY3JpcHQgb2JqZWN0IHdoZW4gdGhlIHdpbmRvdyBvYmplY3Qg
aXMgY2xlYXJlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Ojp0ZXN0KToKKyAgICAgICAgQWRkZWQgdGVzdCBtZXNzYWdlIHRvIGxldCB0
aGUgbWVzc2FnZXMgZmlsZXMgYnVpbGQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qczogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjog
QWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgQ2FsbCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lIHRvIGNsZWFy
IHRoZSBzY3JpcHQgb2JqZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Q
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lBdXRvbWF0aW9uU2Vz
c2lvblByb3h5KToKKyAgICAgICAgQ3JlYXRlcyBhbmQgZGVzdHJveXMgdGhlIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgd2hlbiB0aGUgVUlQcm9jZXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uCisg
ICAgICAgIGlzIHNldCBvciByZW1vdmVkIG9uIHRoZSBXZWJQcm9jZXNzUG9vbC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjphdXRvbWF0aW9uU2Vzc2lvblByb3h5KTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkLiBUZXN0IG1lc3NhZ2UgdG8gZ2V0IHRoaW5n
cyB0byBidWlsZC4KKwogMjAxNi0wMy0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTc5ODYpOiBEb24ndCB0cnkgdG8gbGluayB0
byB1bmRlZmluZWQgJChXRUJLSVRfU1lTVEVNX0lOVEVSRkFDRV9MSUJSQVJZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAppbmRleCA1NDRmYmJkYmZjYTBlM2JkZWQyNmUzZjExNjU3MDI0MmUwYzgxMmVmLi5j
Nzc1MDMwNjM4YzFiNDRiZmU5N2JlNjBiNWE5ZDUxZDEwNTNiYTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dApAQCAtNDIsNiArNDIsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2VzcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9BcHBsaWNh
dGlvbkNhY2hlIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0F1dG9tYXRpb24iCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvQmF0dGVyeSIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9Db29raWVzIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rh
dGFiYXNlcyIKQEAgLTQ5OSw2ICs1MDAsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAogCisgICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCisKICAgICBXZWJQcm9jZXNzL0JhdHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIu
Y3BwCiAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTY3
MCw2ICs2NzMsOCBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4KICAgICBVSVByb2Nl
c3MvV2ViVmlicmF0aW9uUHJveHkubWVzc2FnZXMuaW4KIAorICAgIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCisKICAgICBVSVByb2Nlc3MvRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAKICAgICBVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KQEAgLTY4Niw2ICs2OTEsOCBAQCBz
ZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCiAKKyAgICBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgorCiAgICAgV2ViUHJvY2Vzcy9CYXR0ZXJ5L1dlYkJhdHRl
cnlNYW5hZ2VyLm1lc3NhZ2VzLmluCiAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtNzk1LDYgKzgwMiwxOSBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vSW5zcGVjdG9y
UHJvdG9jb2xPYmplY3RzLmNwcAogKQogCithZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVU
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
U2NyaXB0U291cmNlLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkubWluLmpzCisgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzCisgICAg
REVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwgJHtKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKKyAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0g
LUUgZWNobyAiLy8jIHNvdXJjZVVSTD1fX1dlYkF1dG9tYXRpb25JbmplY3RlZFNjcmlwdF9fIiA+
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Lm1pbi5qcworICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcyA+PiAke0RFUklWRURfU09VUkNFU19X
RUJLSVQyX0RJUn0vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5taW4uanMKKyAgICBDT01NQU5E
ICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSAke0RFUklWRURfU09VUkNFU19X
RUJLSVQyX0RJUn0vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5taW4uanMgJHtERVJJVkVEX1NP
VVJDRVNfV0VCS0lUMl9ESVJ9L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2Uu
aAorICAgIFZFUkJBVElNKQorCitsaXN0KEFQUEVORCBXZWJLaXQyX0hFQURFUlMKKyAgICAke0RF
UklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vV2ViYXVvdG1hdGlvblNlc3Npb25Qcm94eVNjcmlw
dFNvdXJjZS5oCispCisKIFdFQktJVF9GUkFNRVdPUksoV2ViS2l0MikKIGFkZF9kZXBlbmRlbmNp
ZXMoV2ViS2l0MiBXZWJDb3JlICR7V0VCS0lUMl9FWFRSQV9ERVBFTkRFTkNJRVN9KQogYWRkX3dl
YmtpdDJfcHJlZml4X2hlYWRlcihXZWJLaXQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggMGQ1NzIwNDY5NzgzMzg4MTdhYjgzNDkzMjc0MmYyMzg0YWZjMDAzMi4uMzJlNjdjMDM2
YzIwOTU2NTg5MjdiMjAyZTE3NGQyZWYyY2YyZjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0zNiw2ICszNiw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9tYWMgXAogICAgICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlIFwKKyAgICAkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvQXV0b21hdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0Nvb2tpZXMgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCIFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCkBAIC03MSw2ICs3MiwxNSBAQCBWUEFUSCA9
IFwKICAgICAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSBcCiAjCiAKK1BZ
VEhPTiA9IHB5dGhvbgorUEVSTCA9IHBlcmwKKworaWZlcSAoJChPUyksV2luZG93c19OVCkKKyAg
ICBERUxFVEUgPSBjbWQgLy9DIGRlbAorZWxzZQorICAgIERFTEVURSA9IHJtIC1mCitlbmRpZgor
CiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXIgXAogICAg
IENoaWxkUHJvY2VzcyBcCkBAIC0xMDgsNiArMTE4LDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAgICAgVmlld1VwZGF0ZURpc3BhdGNoZXIgXAogICAgIFZpc2l0ZWRMaW5rU3RvcmUgXAogICAg
IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKKyAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBc
CisgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBcCiAgICAgV2ViQ29ubmVjdGlvbiBcCiAg
ICAgV2ViQ29va2llTWFuYWdlciBcCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5IFwKQEAgLTIx
OSwzICsyMzEsMTEgQEAgJChmaXJzdHdvcmQgJChBVVRPTUFUSU9OX1BST1RPQ09MX09VVFBVVF9G
SUxFUykpIDogJChBVVRPTUFUSU9OX1BST1RPQ09MX0lOUFVUX0YKIAkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRp
bmdzLnB5IC0tZnJhbWV3b3JrIFdlYktpdCAtLWJhY2tlbmQgLS1vdXRwdXREaXIgLiAkKEFVVE9N
QVRJT05fUFJPVE9DT0xfSU5QVVRfRklMRVMpCiAKIGFsbCA6ICQoZmlyc3R3b3JkICQoQVVUT01B
VElPTl9QUk9UT0NPTF9PVVRQVVRfRklMRVMpKQorCislU2NyaXB0U291cmNlLmggOiAlLmpzICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5ICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL3h4ZC5wbAorCWVjaG8gIi8vIyBzb3VyY2VVUkw9X19XZWJBdXRvbWF0aW9uSW5q
ZWN0ZWRTY3JpcHRfXyIgPiAkKGJhc2VuYW1lICQobm90ZGlyICQ8KSkubWluLmpzCisJJChQWVRI
T04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJDwgPj4gJChiYXNl
bmFtZSAkKG5vdGRpciAkPCkpLm1pbi5qcworCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikveHhkLnBsICQoYmFzZW5hbWUgJChub3RkaXIgJDwpKVNjcmlwdFNvdXJjZSAkKGJh
c2VuYW1lICQobm90ZGlyICQ8KSkubWluLmpzICRACisJJChERUxFVEUpICQoYmFzZW5hbWUgJChu
b3RkaXIgJDwpKS5taW4uanMKKworYWxsIDogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlw
dFNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOTQ2ZDQwMTgxMTQzNzQ1NGM3
NzUzYjk5ZjkyYWQ4Y2RhZWViOTlmMy4uZjQwZmIxZjJlYTUxNDhkOTNmYWMyMmI4ZWIxMTllZjdh
YjgyMDI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAj
aW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JQcm90b2NvbE9iamVjdHMuaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckZyb250ZW5kUm91dGVyLmg+CkBAIC01Nyw2ICs1OSw5IEBAIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigpCiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6fldlYkF1
dG9tYXRpb25TZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoIW1fY2xpZW50KTsKKworICAgIGlmICht
X3Byb2Nlc3NQb29sKQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
OwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+IGNsaWVudCkKQEAgLTY0LDYgKzY5LDE3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVuCiAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldFByb2Nlc3NQb29sKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQoreworICAgIGlmIChtX3Byb2Nlc3NQb29s
KQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgbV9w
cm9jZXNzUG9vbCA9IHByb2Nlc3NQb29sOworCisgICAgaWYgKG1fcHJvY2Vzc1Bvb2wpCisgICAg
ICAgIG1fcHJvY2Vzc1Bvb2wtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCiAvLyBOT1RF
OiB0aGlzIGNsYXNzIGNvdWxkIGJlIHNwbGl0IGF0IHNvbWUgcG9pbnQgdG8gc3VwcG9ydCBsb2Nh
bCBhbmQgcmVtb3RlIGF1dG9tYXRpb24gc2Vzc2lvbnMuCiAvLyBGb3Igbm93LCBpdCBvbmx5IHdv
cmtzIHdpdGggYSByZW1vdGUgYXV0b21hdGlvbiBkcml2ZXIgb3ZlciBhIFJlbW90ZUluc3BlY3Rv
ciBjb25uZWN0aW9uLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCAyZmQ4YWE1NDEwZTE5MmVh
ZDRkNWJhMTNmODNmNzU3YjE5N2Y2NGM5Li43NWExZWJhMjY0OGVmYjk0NjEwNTE5ZTA3NDFiZjNj
ZWM2MDcyZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgV2ViQXV0b21hdGlvblNlc3Npb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ5LDcgKzUwLDcgQEAgY2xhc3Mg
V2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKIAotY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb24gZmluYWwgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXRvbWF0aW9uU2Vzc2lvbj4K
K2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0b21hdGlvblNlc3Npb24+LCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIHB1YmxpYyBJ
bnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQKICNlbmRpZgpAQCAtNjIsMTMgKzYzLDIw
IEBAIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbigpOwogICAgIH5XZWJBdXRvbWF0
aW9uU2Vzc2lvbigpOwogCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkF1dG9t
YXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworCisg
ICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uIG1lc3NhZ2VzCisgICAgLy8gRklY
TUU6IEFkZCBtZXNzYWdlIGZ1bmN0aW9ucyBoZXJlLgorICAgIHZvaWQgdGVzdCgpIHsgfTsKKwog
ICAgIHZvaWQgc2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50Pik7CiAKICAgICB2b2lkIHNldFNlc3Npb25JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkZW50aWZpZXIpIHsgbV9zZXNzaW9uSWRlbnRpZmllciA9IHNlc3Npb25JZGVudGlm
aWVyOyB9CiAgICAgU3RyaW5nIHNlc3Npb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXNzaW9uSWRlbnRpZmllcjsgfQogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogcHJvY2Vz
c1Bvb2woKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9Ci0gICAgdm9pZCBzZXRQcm9j
ZXNzUG9vbChXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkgeyBtX3Byb2Nlc3NQ
b29sID0gcHJvY2Vzc1Bvb2w7IH0KKyAgICB2b2lkIHNldFByb2Nlc3NQb29sKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wqKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIC8vIElu
c3BlY3Rvcjo6UmVtb3RlQXV0b21hdGlvblRhcmdldCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJmNzUwY2FiMGRiYTRjMGM4Nzg3ZjMxNjdj
YjdlY2Q4MDMwMjE1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMg
LT4gV2ViQXV0b21hdGlvblNlc3Npb24geworICAgIC8vIEZJWE1FOiBBZGQgbWVzc2FnZXMgaGVy
ZS4KKyAgICBUZXN0KCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IGQ3ZGUxZWNhZDc1MWJkZGViZjgwZTI3NjEwYTliYmQ1NDZlNWY2NTQuLjBm
YjY4YzI3MmVjYmE1YjMxY2IzZjZiZjE3YTAyMjNmODE3MDUzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtOTk3LDYgKzk5NywxMSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZQogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2
ZXIpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3sKKyAgICBtX21lc3NhZ2VS
ZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7Cit9
CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQog
ewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKQEAgLTExMzIsNyArMTEzNywxMCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uU2Vzc2lvbihSZWZQdHI8V2ViQXV0b21hdGlv
blNlc3Npb24+JiYgYXV0b21hdAogICAgIGlmIChtX2F1dG9tYXRpb25TZXNzaW9uKSB7CiAgICAg
ICAgIG1fYXV0b21hdGlvblNlc3Npb24tPmluaXQoKTsKICAgICAgICAgbV9hdXRvbWF0aW9uU2Vz
c2lvbi0+c2V0UHJvY2Vzc1Bvb2wodGhpcyk7Ci0gICAgfQorCisgICAgICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94
eSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpEZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpKTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDhkMDE0YWVh
YzU4NmRkMmYzNzA4N2VkYWRlODY1MjJhYWM4Zjg1NzUuLmU0NmJkMWJhODllYzNjNmY0YWVjMzYz
NDFiZWU0Y2U2MDZkZjJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC0xMjYsNiArMTI2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJmMTY1ZGJiN2UxNDhl
YTgxNGMwMWMzNDAyNjYyMzM3OTg1N2QwZTQuLmQwNTFlMTA5MTRlNjQ1ZGZmYWYxZjZiYjQ2MzE4
ODU4Mjk0Njc0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTUxOCw2ICs1MTgsMTMgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAq
LzsgfTsKIAkJMUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEw
MDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi87IH07CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1
QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVj
YXRlZEZ1bmN0aW9ucy5jcHAgKi87IH07CisJCTFDMEExOTQ2MUM4RkYxQTgwMEZFMEVCQiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTQ0MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcCAqLzsgfTsKKwkJMUMwQTE5NDcxQzhGRjFBODAwRkUwRUJCIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTQ1MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmggKi87IH07CisJCTFDMEExOTUzMUM4RkZERkIwMEZFMEVCQiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTUxMUM4RkZERkIwMEZFMEVC
QiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
KwkJMUMwQTE5NTQxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUMwQTE5NTIxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNz
YWdlcy5oICovOyB9OworCQkxQzBBMTk1NzFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUMwQTE5NTUxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMUMwQTE5NTgxQzkwMDY4RjAw
RkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTU2MUM5MDA2OEYwMEZFMEVCQiAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggKi87IH07CisJCTFDMEExOTVDMUM5MTZF
MUIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBBMTk1QjFDOTE2
RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oICov
OyB9OwogCQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjIxOUIx
MjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLzsgfTsKIAkJMUM4OTFENjYxOUIx
MjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5z
cGVjdG9yVUkuaCAqLzsgfTsKIAkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4
RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovOyB9OwpAQCAtMjQ3NSw2
ICsyNDgyLDE2IEBACiAJCTFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJRGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVj
YXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTQ0MUM4RkYxQTgwMEZFMEVC
QiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk0NTFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
MEExOTQ4MUM4RkYzMEUwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1MjFDOEZGREZC
MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBF
QkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1NjFDOTAwNjhG
MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTU5MUM5MDA2RUEwMEZFMEVCQiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwQTE5NUExQzkxNjY5
NTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzBBMTk1QjFDOTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eVNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4OTFENjIxOUIxMjRG
RjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NzAxLDYgKzQ3MTgsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkxQzBBMTk0MzFDOEZGMUE4MDBGRTBF
QkIgLyogQXV0b21hdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJMUMwQTE5NDQxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwICovLAorCQkJCTFDMEExOTQ1MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmggKi8sCisJCQkJMUMwQTE5NUExQzkxNjY5NTAwRkUwRUJCIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMgKi8sCisJCQkJMUMwQTE5NDgxQzhGRjMwRTAwRkUw
RUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOwor
CQkJcGF0aCA9IEF1dG9tYXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQkxRjAxODE2ODE4NThEQzE1MDBGOTI4ODQgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNTU4Nyw2ICs1NjE1LDcgQEAKIAkJCQk5OTU1QTZF
OTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICovLAogCQkJCTk5NTVBNkVBMUM3
OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi8sCiAJCQkJOTk1NUE2
RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8sCisJCQkJMUMw
QTE5NTkxQzkwMDZFQTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmlu
ICovLAogCQkJKTsKIAkJCXBhdGggPSBBdXRvbWF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTU2NDYsNiArNTY3NSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTdDNkU3MEY4MThCMkQ0N0UwMEYyNEUyRSAvKiBjb2NvYSAqLywKKwkJCQkx
QzBBMTk0MzFDOEZGMUE4MDBGRTBFQkIgLyogQXV0b21hdGlvbiAqLywKIAkJCQkzMzA5MzQ0QjEz
MTVCOTNBMDA5N0E3QkMgLyogQ29va2llcyAqLywKIAkJCQk1MTJBOTc1NDE4MERGOTI3MDAzOUEx
NDkgLyogRGF0YWJhc2VzICovLAogCQkJCUJDQUNDNDNCMTZCMjRDNUQwMEI2RTA5MiAvKiBFbnRy
eVBvaW50ICovLApAQCAtNjg2Nyw2ICs2ODk3LDExIEBACiAJCQkJMUE2MDIyNEIxOEMxNkI5RjAw
QzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlcy5oICovLAogCQkJCTFBOEU3RDNBMThD
MTUxNDkwMDVBNzAyQSAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMUE4RTdEM0IxOEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyTWVzc2FnZXMuaCAqLywKKwkJCQkxQzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFDMEEx
OTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggKi8s
CisJCQkJMUMwQTE5NTExQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFDMEExOTUyMUM4RkZERkIwMEZFMEVCQiAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQkxQzBBMTk1QjFD
OTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5o
ICovLAogCQkJCTFBMUZFQzFBMTYyN0I0NTYwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTFGRUMxQjE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29u
bmVjdGlvbk1lc3NhZ2VzLmggKi8sCiAJCQkJMzMwOTM0NDMxMzE1QjkyMjAwOTdBN0JDIC8qIFdl
YkNvb2tpZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNzMzOSw2ICs3Mzc0LDcg
QEAKIAkJCQlCQ0E4QzZBOTExRTNCQTVGMDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgxNDdBOTEyRjY0Q0RBMDA3QjJDMzIg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0E4QzZCMDExRTNDMDg3MDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTFDMEExOTU4MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU1QTZGNzFDNzk4NkU1
MDBFQjZBOTMgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLApAQCAtNzM1Niw2ICs3MzkyLDcgQEAK
IAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0
aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyog
TWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMwQTE5NUMxQzkxNkUxQjAwRkUw
RUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMjMyOTAzMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI4RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNv
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVz
c2FnZUZsYWdzLmggaW4gSGVhZGVycyAqLywKQEAgLTc0MTgsNiArNzQ1NSw3IEBACiAJCQkJMUEy
RDg0M0ExMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4MkE3MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVj
dFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBOTEyN0Y0RUFCMDAxRUI5NjIgLyog
TlBSZW1vdGVPYmplY3RNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDMEExOTQ3MUM4RkYxQTgw
MEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTIxNjJCMTExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODRBMzEyN0Y2QUQxMDAxRUI5NjIgLyogTlBW
YXJpYW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDQ2LDYgKzc0ODQsNyBAQAogCQkJCTFB
OEVGOTZGMTI1MkFGNkIwMEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUExNzk3ODAxMzdFRTgyQzAwRjk3RDQ1IC8qIFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzRjhDOTExNzNBRjUyRDAw
N0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzBBMTk1
NDFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUVGQ0MxMjExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5m
b1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNENjEwMjEzQTdDQzJBMDBGOTVENEUgLyog
UGx1Z2luTW9kdWxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDM5NzYxMjREMDM0ODAw
RkZCRkI1IC8qIFBsdWdpblByb2Nlc3MuaCBpbiBIZWFkZXJzICovLApAQCAtODg2Nyw2ICs4OTA2
LDcgQEAKIAkJCQkxQTJEODJBNDEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8q
IE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBMkQ4MkE2MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTFDMEExOTUzMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4
MkE4MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRp
bWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTA4LDYgKzkxNDgsNyBAQAogCQkJ
CTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NTQxMjdDODkxNTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUMwQTE5
NTcxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRB
MTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzAzMzdERDMxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC05MjAyLDYgKzkyNDMsNyBAQAogCQkJCTFBNTJDMEY3MUEzOENEQzcw
MDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNDNTcxNUMxMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxMDMyRjE4MTgwRjczQkIwMDk2MUJCNyAvKiBXZWJUb0RhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMwQTE5NDYxQzhG
RjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0QTMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZl
bnRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMEVGODAxMjMzMUU3ODAwN0QzQ0ZCIC8q
IFdlYlVuZG9TdGVwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZWVmODNhZmEyZTVkYTJiYzA5NTc3NTFlMjE2ZjNlOGEw
YjNhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oIgorCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJX
ZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1N0cmluZ1JlZlByaXZhdGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PcGFxdWVKU1N0cmluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVVJRC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RhdGljIGlubGluZSBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdG9K
U1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHN0cmluZykubGVha1Jl
ZigpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRS
ZWYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlU3RyaW5nKGNvbnRleHQsIHRvSlNTdHJpbmcoc3RyaW5nKS5nZXQoKSk7Cit9CisKK1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Cit9
CisKK1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6On5XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBBU1NFUlRfQVJHKGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50Q291bnQg
PT0gMSk7CisgICAgQVNTRVJUX0FSRyhhcmd1bWVudHMsIEpTVmFsdWVJc1N0cmluZyhjb250ZXh0
LCBhcmd1bWVudHNbMF0pKTsKKworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzY3JpcHQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICByZXR1cm4gSlNFdmFsdWF0ZVNjcmlwdChj
b250ZXh0LCBzY3JpcHQuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIGV4Y2VwdGlvbik7Cit9
CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGNyZWF0ZVVVSUQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIHJldHVybiB0b0pTVmFsdWUoY29udGV4dCwgV2ViQ29yZTo6Y3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkpOworfQorCitKU09i
amVjdFJlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZShX
ZWJGcmFtZSYgZnJhbWUpCit7CisgICAgaWYgKEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdCA9IG1f
d2ViRnJhbWVTY3JpcHRPYmplY3RNYXAuZ2V0KGZyYW1lLmZyYW1lSUQoKSkpCisgICAgICAgIHJl
dHVybiBzY3JpcHRPYmplY3Q7CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7
CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBmcmFtZS5qc0NvbnRleHQoKTsKKwor
ICAgIEpTT2JqZWN0UmVmIGV2YWx1YXRlRnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldp
dGhDYWxsYmFjayhjb250ZXh0LCBudWxscHRyLCBldmFsdWF0ZSk7CisgICAgSlNPYmplY3RSZWYg
Y3JlYXRlVVVJREZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29u
dGV4dCwgbnVsbHB0ciwgY3JlYXRlVVVJRCk7CisKKyAgICBTdHJpbmcgc2NyaXB0ID0gU3RyaW5n
SW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlw
dFNvdXJjZSwgc2l6ZW9mKFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UpKTsK
KworICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1bmN0aW9uID0gY29uc3RfY2FzdDxKU09i
amVjdFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCB0b0pTU3RyaW5nKHNjcmlwdCkuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoSlNWYWx1
ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uKSk7CisKKyAgICBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdID0geyBldmFsdWF0ZUZ1bmN0aW9uLCBjcmVhdGVVVUlERnVuY3Rpb24g
fTsKKyAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVm
PihKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uLCBu
dWxscHRyLCBXVEZfQVJSQVlfTEVOR1RIKGFyZ3VtZW50cyksIGFyZ3VtZW50cywgJmV4Y2VwdGlv
bikpOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgc2NyaXB0T2JqZWN0KSk7
CisKKyAgICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCBzY3JpcHRPYmplY3QpOworICAgIG1fd2Vi
RnJhbWVTY3JpcHRPYmplY3RNYXAuYWRkKGZyYW1lLmZyYW1lSUQoKSwgc2NyaXB0T2JqZWN0KTsK
KworICAgIHJldHVybiBzY3JpcHRPYmplY3Q7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCit7
CisgICAgaWYgKEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdCA9IG1fd2ViRnJhbWVTY3JpcHRPYmpl
Y3RNYXAudGFrZShmcmFtZS5mcmFtZUlEKCkpKQorICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGZy
YW1lLmpzQ29udGV4dCgpLCBzY3JpcHRPYmplY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZTRlZWVjYThk
OGM4ODk5ODU4ODI4MmViNTgwYmZlNzFlNmQ1NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHlfaAorI2RlZmluZSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5X2gKKworI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViUGFnZTsKKwor
Y2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CitwdWJsaWM6CisgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSgpOworICAgIH5X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CisKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUoV2ViRnJhbWUmKTsKKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRl
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
OworCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMK
KyAgICAvLyBGSVhNRTogQWRkIG1lc3NhZ2UgZnVuY3Rpb25zIGhlcmUuCisgICAgdm9pZCB0ZXN0
KCkgeyB9OworCitwcml2YXRlOgorICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1l
KFdlYkZyYW1lJik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEpTT2JqZWN0UmVm
PiBXZWJGcmFtZVNjcmlwdE9iamVjdE1hcDsKKyAgICBXZWJGcmFtZVNjcmlwdE9iamVjdE1hcCBt
X3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmpzIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJhZTU4NWNkMWUxOTI0MjQ3YzQ5MjZlZTBmYjMw
YzUxNzY3YjkxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyMgc291cmNlVVJMPV9fV2ViQXV0b21hdGlvbkluamVjdGVkU2NyaXB0
X18KKworKGZ1bmN0aW9uIChldmFsdWF0ZSwgY3JlYXRlVVVJRCkgeworCisvLyBQcm90ZWN0IGFn
YWluc3QgT2JqZWN0IG92ZXJ3cml0dGVuIGJ5IHRoZSBwYWdlLgorbGV0IE9iamVjdCA9IHt9LmNv
bnN0cnVjdG9yOworCitsZXQgQXV0b21hdGlvblNlc3Npb25Qcm94eSA9IGNsYXNzIEF1dG9tYXRp
b25TZXNzaW9uUHJveHkKK3sKKyAgICAvLyBQdWJsaWMKKworICAgIC8vIEZJWE1FOiBBZGQgZnVu
Y3Rpb25zIGhlcmUuCit9OworCityZXR1cm4gbmV3IEF1dG9tYXRpb25TZXNzaW9uUHJveHk7CisK
K30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRlM2M4Y2NiYmJhM2QzMTRkMGE4YzlkZGViZjg0Mzk1YTZiNWU1Y2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgeworICAgIC8vIEZJWE1FOiBBZGQgbWVzc2FnZXMgaGVyZS4KKyAgICBU
ZXN0KCkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYjg5ZDdhMWIz
N2UzMDNjNWFhNDk1NjNjZTg2YWUyYWRmNGU5ZWI4MC4uY2VjZDdlMTgzM2EwMzBhZDA1NjhhNjg0
YTM0YzBjMjJlOWFiOWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiVXNlckRh
dGEuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVu
dExvYWRlci5oIgpAQCAtMTU3OSw2ICsxNTgwLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJgog
CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRDbGVhcldpbmRv
d09iamVjdEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHdvcmxkKTsKIAorICAgIGlmIChhdXRv
IGF1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRvbWF0
aW9uU2Vzc2lvblByb3h5KCkpCisgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uUHJveHktPmRpZENs
ZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoKm1fZnJhbWUpOworCiAjaWYgSEFWRShBQ0NFU1NJQklM
SVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQogICAgIC8vIEVuc3VyZSB0
aGUgYWNjZXNzaWJpbGl0eSBoaWVyYXJjaHkgaXMgdXBkYXRlZC4KICAgICB3ZWJQYWdlLT51cGRh
dGVBY2Nlc3NpYmlsaXR5VHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNmJlN2ZlNDExYWQ5N2ZiZmNhMWY4YzQxZjc3Mzc0YmQxMmYwYjBlYi4uZTBl
MzZjYTVhNTZjMTE2OTMxZGNjZjE0M2U5NWEzODU0YTEwZjcyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU2Vz
c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlVz
ZXJEYXRhLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgogI2luY2x1
ZGUgIldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTE0NDIsNiArMTQ0
MywxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0ltYWdl
U2VydmljZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydgogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUHJv
Y2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eSgpCit7CisgICAgbV9hdXRvbWF0aW9u
U2Vzc2lvblByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
PigpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5
KCkKK3sKKyAgICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBudWxscHRyOworfQorCiB2b2lk
IFdlYlByb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAg
aWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggNjQ4MjgwY2E0MzQyN2YyZDIzYWQ0NGZlNDZlMmRhZjAxODMwMzBkNy4uOTk0YmNl
NjVkYTdlZGEwMDY0NmM1OWIwZTMzMTliNzhiM2NkMmYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTc2LDYgKzc2LDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGU7
CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBPYmpDT2JqZWN0R3JhcGg7
CiBjbGFzcyBVc2VyRGF0YTsKK2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk7CiBjbGFz
cyBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklj
b25EYXRhYmFzZVByb3h5OwpAQCAtMjA5LDYgKzIxMCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAKKyAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5KiBhdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkgeyByZXR1cm4gbV9hdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwogICAgIH5XZWJQ
cm9jZXNzKCk7CkBAIC0yODUsNiArMjg4LDkgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNo
b3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHsgTm8sIFllcyB9OwogICAgIHZvaWQg
YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVu
ZCk7CiAKKyAgICB2b2lkIGVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKTsKKyAgICB2b2lk
IGRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CisKICAgICAvLyBDaGlsZFByb2Nlc3MK
ICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0
aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3NOYW1l
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpA
QCAtMzU0LDYgKzM2MCw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fZG5zUHJl
ZmV0Y2hlZEhvc3RzOwogICAgIFdlYkNvcmU6Okh5c3RlcmVzaXNBY3Rpdml0eSBtX2Ruc1ByZWZl
dGNoSHlzdGVyZXJpczsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5PiBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHk7CisKICNpZiBFTkFCTEUoREFUQUJBU0Vf
UFJPQ0VTUykKICAgICB2b2lkIGVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigp
OwogICAgIFJlZlB0cjxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fd2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDgzYTczNmY5YTYyMmE0MDhkZmEyNWNmNDBhNTky
MTU5MzZhNjJiNGUuLjU2NjQ2MjVhNTYxN2U4NWEwY2VmOTAxMjkwMDM2ODVmZTA2MjMzZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTkzLDYgKzkzLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNT
ZWxlY3Rpb25TZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29udGVudFNlcnZpY2VzKQogI2VuZGlmCiAK
KyAgICBFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKKyAgICBEZXN0cm95QXV0b21hdGlv
blNlc3Npb25Qcm94eSgpCisKICAgICBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgLT4g
KGJvb2wgaGFuZGxlZCkKICAgICBQcmVwYXJlVG9TdXNwZW5kKCkKICAgICBDYW5jZWxQcmVwYXJl
VG9TdXNwZW5kKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274136</attachid>
            <date>2016-03-15 15:00:53 -0700</date>
            <delta_ts>2016-03-25 20:59:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155221-20160315150042.patch</filename>
            <type>text/plain</type>
            <size>43689</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2ZiOTAxZDIxMDcxODVl
ZmQ3MmNmMTJmOTc2OWIxODIzODZjNGMzNy4uNjY2YzY3YjIwYzBiNWM4YTIwZWEwNWQ5NjI3NTg5
N2QzODdlNDAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAzLTE0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eSBmb3IgV2ViUHJvY2VzcyBzaWRlIGF1dG9tYXRpb24gdGFza3MKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjIxCisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1MDU0ODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIGJ1aWxkIHN0ZXAg
dG8gYnVpbGQtaW4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcy4KKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246On5XZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpzZXRQcm9jZXNzUG9vbCk6IEFkZCAvIHJlbW92ZSBtZXNzYWdlIHJl
Y2VpdmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgIFRlc3QgbWVzc2FnZSB0byBnZXQgdGhp
bmdzIHRvIGJ1aWxkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uU2Vzc2lvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIG5ldyBmaWxlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvSlNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojp0
b0pTVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6fldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVVVSUQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICBDcmVhdGUgYSBzY3JpcHQgb2JqZWN0IHBlciBm
cmFtZSB0aGF0IGlzIGV2YWx1YXRlZCBmcm9tIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMu
CisgICAgICAgIENsZWFyIHRoZSBzY3JpcHQgb2JqZWN0IHdoZW4gdGhlIHdpbmRvdyBvYmplY3Qg
aXMgY2xlYXJlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Ojp0ZXN0KToKKyAgICAgICAgQWRkZWQgdGVzdCBtZXNzYWdlIHRvIGxldCB0
aGUgbWVzc2FnZXMgZmlsZXMgYnVpbGQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qczogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjog
QWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgQ2FsbCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lIHRvIGNsZWFy
IHRoZSBzY3JpcHQgb2JqZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Q
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lBdXRvbWF0aW9uU2Vz
c2lvblByb3h5KToKKyAgICAgICAgQ3JlYXRlcyBhbmQgZGVzdHJveXMgdGhlIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgd2hlbiB0aGUgVUlQcm9jZXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uCisg
ICAgICAgIGlzIHNldCBvciByZW1vdmVkIG9uIHRoZSBXZWJQcm9jZXNzUG9vbC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjphdXRvbWF0aW9uU2Vzc2lvblByb3h5KTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZGVkLiBUZXN0IG1lc3NhZ2UgdG8gZ2V0IHRoaW5n
cyB0byBidWlsZC4KKwogMjAxNi0wMy0xNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRUZMIGJ1aWxkIGhhcyBiZWVuIGJyb2tlbiBzaW5jZSByMTk4
MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDEzMjdkOWQ1MzFkNjhlMDljYTE4ZGRjYzgyZjY0
MWI5NDc2MjZlMTMuLjJiMDVhNDkyOGVjNTNlNWFiM2Q0ZDAxNDM4OWYzNzliYzk0YTAxNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0CkBAIC00Miw2ICs0Miw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL1dlYnNpdGVEYXRhIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQ
cm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbiIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9CYXR0ZXJ5IgogICAg
ICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Nvb2tpZXMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1dlYlByb2Nlc3MvRGF0YWJhc2VzIgpAQCAtNTAyLDYgKzUwMyw4IEBAIHNldChXZWJLaXQyX1NP
VVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHAKICAgICBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCiAKKyAgICBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKwogICAgIFdlYlByb2Nlc3MvQmF0dGVyeS9XZWJC
YXR0ZXJ5TWFuYWdlci5jcHAKIAogICAgIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcApAQCAtNjczLDYgKzY3Niw4IEBAIHNldChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVT
CiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5p
bgogICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogCisgICAgVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KKwogICAg
IFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KIAog
ICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjg5
LDYgKzY5NCw4IEBAIHNldChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KIAorICAgIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisKICAgICBXZWJQcm9jZXNzL0Jh
dHRlcnkvV2ViQmF0dGVyeU1hbmFnZXIubWVzc2FnZXMuaW4KIAogICAgIFdlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC03OTgsNiArODA1LDE5IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJf
RElSfS9JbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwCiApCiAKK2FkZF9jdXN0b21fY29tbWFu
ZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaCAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJ
Un0vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5taW4uanMKKyAgICBNQUlOX0RFUEVOREVOQ1kg
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuanMKKyAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5w
bCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQorICAgIENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fV2ViQXV0b21hdGlvbkluamVj
dGVkU2NyaXB0X18iID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkubWluLmpzCisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzID4+ICR7REVS
SVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1pbi5q
cworICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVJ9L3h4ZC5wbCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlICR7REVS
SVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1pbi5q
cyAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eVNjcmlwdFNvdXJjZS5oCisgICAgVkVSQkFUSU0pCisKK2xpc3QoQVBQRU5EIFdlYktpdDJfSEVB
REVSUworICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9XZWJhdW90bWF0aW9uU2Vz
c2lvblByb3h5U2NyaXB0U291cmNlLmgKKykKKwogV0VCS0lUX0ZSQU1FV09SSyhXZWJLaXQyKQog
YWRkX2RlcGVuZGVuY2llcyhXZWJLaXQyIFdlYkNvcmUgJHtXRUJLSVQyX0VYVFJBX0RFUEVOREVO
Q0lFU30pCiBhZGRfd2Via2l0Ml9wcmVmaXhfaGVhZGVyKFdlYktpdDIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAwZDU3MjA0Njk3ODMzODgxN2FiODM0OTMyNzQyZjIzODRhZmMw
MDMyLi4zMmU2N2MwMzZjMjA5NTY1ODkyN2IyMDJlMTc0ZDJlZjJjZjJmOWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM2LDYgKzM2LDcgQEAgVlBBVEggPSBcCiAgICAgJChX
ZWJLaXQyKS9TaGFyZWQvQXV0aGVudGljYXRpb24gXAogICAgICQoV2ViS2l0MikvU2hhcmVkL21h
YyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXAorICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nl
c3MvQ29va2llcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKQEAgLTcxLDYgKzcy
LDE1IEBAIFZQQVRIID0gXAogICAgICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFU
SFMpIFwKICMKIAorUFlUSE9OID0gcHl0aG9uCitQRVJMID0gcGVybAorCitpZmVxICgkKE9TKSxX
aW5kb3dzX05UKQorICAgIERFTEVURSA9IGNtZCAvL0MgZGVsCitlbHNlCisgICAgREVMRVRFID0g
cm0gLWYKK2VuZGlmCisKIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIEF1dGhlbnRpY2F0aW9u
TWFuYWdlciBcCiAgICAgQ2hpbGRQcm9jZXNzIFwKQEAgLTEwOCw2ICsxMTgsOCBAQCBNRVNTQUdF
X1JFQ0VJVkVSUyA9IFwKICAgICBWaWV3VXBkYXRlRGlzcGF0Y2hlciBcCiAgICAgVmlzaXRlZExp
bmtTdG9yZSBcCiAgICAgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgXAorICAgIFdlYkF1dG9t
YXRpb25TZXNzaW9uIFwKKyAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IFwKICAgICBXZWJD
b25uZWN0aW9uIFwKICAgICBXZWJDb29raWVNYW5hZ2VyIFwKICAgICBXZWJDb29raWVNYW5hZ2Vy
UHJveHkgXApAQCAtMjE5LDMgKzIzMSwxMSBAQCAkKGZpcnN0d29yZCAkKEFVVE9NQVRJT05fUFJP
VE9DT0xfT1VUUFVUX0ZJTEVTKSkgOiAkKEFVVE9NQVRJT05fUFJPVE9DT0xfSU5QVVRfRgogCSQo
UFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkgLS1mcmFtZXdvcmsgV2ViS2l0IC0tYmFja2VuZCAtLW91dHB1
dERpciAuICQoQVVUT01BVElPTl9QUk9UT0NPTF9JTlBVVF9GSUxFUykKIAogYWxsIDogJChmaXJz
dHdvcmQgJChBVVRPTUFUSU9OX1BST1RPQ09MX09VVFBVVF9GSUxFUykpCisKKyVTY3JpcHRTb3Vy
Y2UuaCA6ICUuanMgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsCisJZWNobyAiLy8jIHNvdXJjZVVSTD1fX1dl
YkF1dG9tYXRpb25JbmplY3RlZFNjcmlwdF9fIiA+ICQoYmFzZW5hbWUgJChub3RkaXIgJDwpKS5t
aW4uanMKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkg
PCAkPCA+PiAkKGJhc2VuYW1lICQobm90ZGlyICQ8KSkubWluLmpzCisJJChQRVJMKSAkKEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgJChiYXNlbmFtZSAkKG5vdGRpciAkPCkpU2Ny
aXB0U291cmNlICQoYmFzZW5hbWUgJChub3RkaXIgJDwpKS5taW4uanMgJEAKKwkkKERFTEVURSkg
JChiYXNlbmFtZSAkKG5vdGRpciAkPCkpLm1pbi5qcworCithbGwgOiBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5U2NyaXB0U291cmNlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA5NDZk
NDAxODExNDM3NDU0Yzc3NTNiOTlmOTJhZDhjZGFlZWI5OWYzLi5mNDBmYjFmMmVhNTE0OGQ5M2Zh
YzIyYjhlYjExOWVmN2FiODIwMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yOCw2
ICsyOCw4IEBACiAKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRp
b25TZXNzaW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KQEAgLTU3LDYgKzU5LDkgQEAgV2Vi
QXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRpb25TZXNzaW9uKCkKIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp+V2ViQXV0b21hdGlvblNlc3Npb24oKQogewogICAgIEFTU0VSVCghbV9jbGllbnQp
OworCisgICAgaWYgKG1fcHJvY2Vzc1Bvb2wpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4gY2xpZW50KQpA
QCAtNjQsNiArNjksMTcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW4KICAgICBtX2NsaWVudCA9
IFdURk1vdmUoY2xpZW50KTsKIH0KIAordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0UHJv
Y2Vzc1Bvb2woV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCit7CisgICAgaWYg
KG1fcHJvY2Vzc1Bvb2wpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSk7CisKKyAgICBtX3Byb2Nlc3NQb29sID0gcHJvY2Vzc1Bvb2w7CisKKyAgICBpZiAobV9wcm9j
ZXNzUG9vbCkKKyAgICAgICAgbV9wcm9jZXNzUG9vbC0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7
Cit9CisKIC8vIE5PVEU6IHRoaXMgY2xhc3MgY291bGQgYmUgc3BsaXQgYXQgc29tZSBwb2ludCB0
byBzdXBwb3J0IGxvY2FsIGFuZCByZW1vdGUgYXV0b21hdGlvbiBzZXNzaW9ucy4KIC8vIEZvciBu
b3csIGl0IG9ubHkgd29ya3Mgd2l0aCBhIHJlbW90ZSBhdXRvbWF0aW9uIGRyaXZlciBvdmVyIGEg
UmVtb3RlSW5zcGVjdG9yIGNvbm5lY3Rpb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDJm
ZDhhYTU0MTBlMTkyZWFkNGQ1YmExM2Y4M2Y3NTdiMTk3ZjY0YzkuLmRiNmZjMzJjYjAxMGI1Mjk3
NDI4NmZiZjVhNGJkNmUxNjBkOTdlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMjcsNiAr
MjcsNyBAQAogI2RlZmluZSBXZWJBdXRvbWF0aW9uU2Vzc2lvbl9oCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDksNyAr
NTAsNyBAQCBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCi1jbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lv
biBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9t
YXRpb25TZXNzaW9uPgorY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXRvbWF0aW9uU2Vzc2lvbj4sIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQog
ICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlQXV0b21hdGlvblRhcmdldAogI2VuZGlmCkBA
IC02OCw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2Vzc2lvbklkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3Nlc3Npb25JZGVudGlmaWVyOyB9CiAKICAgICBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sKiBwcm9jZXNzUG9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1Bvb2w7IH0K
LSAgICB2b2lkIHNldFByb2Nlc3NQb29sKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
b29sKSB7IG1fcHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbDsgfQorICAgIHZvaWQgc2V0UHJvY2Vz
c1Bvb2woV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCopOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAgICAgLy8gSW5zcGVjdG9yOjpSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0IEFQSQpAQCAt
OTMsNiArOTQsMTMgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFn
ZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBoYW5kbGVGb3JXZWJQ
YWdlUHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIAorICAgIC8vIEltcGxlbWVudGVkIGlu
IGdlbmVyYXRlZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29k
ZXImKSBvdmVycmlkZTsKKworICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBt
ZXNzYWdlcworICAgIC8vIEZJWE1FOiBBZGQgbWVzc2FnZSBmdW5jdGlvbnMgaGVyZS4KKyAgICB2
b2lkIHRlc3QoKSB7IH07CisKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQ
b29sIHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50PiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllciB7IEFT
Q0lJTGl0ZXJhbCgiVW50aXRsZWQgU2Vzc2lvbiIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZjc1MGNhYjBkYmE0YzBjODc4N2YzMTY3Y2I3
ZWNkODAzMDIxNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2
IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+
IFdlYkF1dG9tYXRpb25TZXNzaW9uIHsKKyAgICAvLyBGSVhNRTogQWRkIG1lc3NhZ2VzIGhlcmUu
CisgICAgVGVzdCgpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCAwNTdjYTI5MTUwYWZiNDRhNjIwOTI0MmM1NGUwZWNiZjdhODJiMzBkLi4yNzA4
NWNhMDQzYjZiMjQ0MjljZmRhODRhODZhY2NhMjFjNmJmMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTk5Miw2ICs5OTIsMTEgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2FnZVJlY2VpdmVy
KTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit7CisgICAgbV9tZXNzYWdlUmVj
ZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOworfQor
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsK
ICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CkBAIC0xMTI3LDcgKzExMzIsMTAgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvblNlc3Npb24oUmVmUHRyPFdlYkF1dG9tYXRpb25T
ZXNzaW9uPiYmIGF1dG9tYXQKICAgICBpZiAobV9hdXRvbWF0aW9uU2Vzc2lvbikgewogICAgICAg
ICBtX2F1dG9tYXRpb25TZXNzaW9uLT5pbml0KCk7CiAgICAgICAgIG1fYXV0b21hdGlvblNlc3Np
b24tPnNldFByb2Nlc3NQb29sKHRoaXMpOwotICAgIH0KKworICAgICAgICBzZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHko
bV9hdXRvbWF0aW9uU2Vzc2lvbi0+c2Vzc2lvbklkZW50aWZpZXIoKSkpOworICAgIH0gZWxzZQor
ICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lB
dXRvbWF0aW9uU2Vzc2lvblByb3h5KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNGQ3ZjFmNmU2M2IzMDk4YTQ2N2JiYmFkMWEx
MDg2YWYzNDg2ZmZiNy4uZmJjZDg0MmMzY2U3ZWJlNDc4NjZiNjcxOGEwYmRhY2ExODA2NWJkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTEyNiw2ICsx
MjYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwog
ICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVy
Jik7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCk7CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWU4NmNjMzFjNDY3ODFmZGRmM2RlOWY3YzZhZDgyMmMz
NWE0OGJmOC4uNmU2ZmViNmJkOGJlNzQ5OWZmYWE1MzE2MmFiZjhhNDlkMTA1NmJkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTE4LDYgKzUxOCwxMyBAQAogCQkxQUZFNDM2NTE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0
MzYzMThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tICovOyB9OwogCQkxQUZFNDM2NjE4
QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjQxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdh
dGUuaCAqLzsgfTsKIAkJMUFGRjQ5MDAxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1
bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAq
LzsgfTsKKwkJMUMwQTE5NDYxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUMwQTE5NDQxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
ICovOyB9OworCQkxQzBBMTk0NzFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUMwQTE5NDUxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCAq
LzsgfTsKKwkJMUMwQTE5NTMxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUMwQTE5NTExQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQkxQzBBMTk1NDFDOEZGREZC
MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzBBMTk1MjFDOEZGREZCMDBG
RTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTFD
MEExOTU3MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzBBMTk1NTFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQkxQzBBMTk1ODFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21h
dGlvblNlc3Npb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUMwQTE5NTYxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uTWVzc2FnZXMuaCAqLzsgfTsKKwkJMUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEExOTVCMUM5MTZFMUIwMEZFMEVCQiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlLmggKi87IH07CiAJCTFDODkxRDY1MTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuY3BwICovOyB9OwogCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovOyB9Owog
CQkxQzhFMjgyMDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRTEyNzVEMTU0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLmggKi87IH07CkBAIC0yNDc4LDYgKzI0ODUsMTYgQEAKIAkJMUFG
RTQzNjQxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVUlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRGVwcmVjYXRlZEZ1bmN0aW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCQjQxN0M5MTJDMDBDQ0EwMDJC
RTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUMwQTE5NDQxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDMEExOTQ1MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwQTE5NDgxQzhGRjMwRTAwRkUw
RUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUMwQTE5NTExQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTUyMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDMEExOTU1MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTU2MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUMwQTE5NTkxQzkwMDZFQTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzBBMTk1QTFDOTE2Njk1MDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMEExOTVC
MUM5MTZFMUIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHlTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM3N0Mx
OTUxMjg4QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5z
cGVjdG9yVUkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg5MUQ2MzE5QjEy
NEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5zcGVjdG9yVUkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ3MTEsNiArNDcyOCwxNyBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTFDMEExOTQzMUM4RkYxQTgwMEZFMEVCQiAvKiBBdXRvbWF0aW9uICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzBBMTk0NDFD
OEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgKi8sCisJCQkJ
MUMwQTE5NDUxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCAq
LywKKwkJCQkxQzBBMTk1QTFDOTE2Njk1MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5qcyAqLywKKwkJCQkxQzBBMTk0ODFDOEZGMzBFMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gQXV0b21hdGlv
bjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFGMDE4MTY4MTg1OERDMTUw
MEY5Mjg4NCAvKiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC01NTk4LDYgKzU2MjYsNyBAQAogCQkJCTk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uLmpzb24gKi8sCiAJCQkJOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLywKIAkJCQk5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMg
LyogV2ViQXV0b21hdGlvblNlc3Npb24uaCAqLywKKwkJCQkxQzBBMTk1OTFDOTAwNkVBMDBGRTBF
QkIgLyogV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IEF1dG9tYXRpb247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTY1Nyw2ICs1
Njg2LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M2RTcw
RjgxOEIyRDQ3RTAwRjI0RTJFIC8qIGNvY29hICovLAorCQkJCTFDMEExOTQzMUM4RkYxQTgwMEZF
MEVCQiAvKiBBdXRvbWF0aW9uICovLAogCQkJCTMzMDkzNDRCMTMxNUI5M0EwMDk3QTdCQyAvKiBD
b29raWVzICovLAogCQkJCTUxMkE5NzU0MTgwREY5MjcwMDM5QTE0OSAvKiBEYXRhYmFzZXMgKi8s
CiAJCQkJQkNBQ0M0M0IxNkIyNEM1RDAwQjZFMDkyIC8qIEVudHJ5UG9pbnQgKi8sCkBAIC02ODc4
LDYgKzY5MDgsMTEgQEAKIAkJCQkxQTYwMjI0QjE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExp
bmtTdG9yZU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RTdEM0ExOEMxNTE0OTAwNUE3MDJBIC8qIFZp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThF
N0QzQjE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdl
cy5oICovLAorCQkJCTFDMEExOTU1MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMUMwQTE5NTYxQzkwMDY4RjAwRkUwRUJC
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQkxQzBBMTk1MTFDOEZG
REZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJMUMwQTE5NTIxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTFDMEExOTVCMUM5MTZFMUIwMEZFMEVCQiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlLmggKi8sCiAJCQkJMUExRkVDMUEx
NjI3QjQ1NjAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTFBMUZFQzFCMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LywKIAkJCQkzMzA5MzQ0MzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC03MzUwLDYgKzczODUsNyBAQAogCQkJCUJDQThDNkE5MTFF
M0JBNUYwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDODE0N0E5MTJGNjRDREEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZVBh
Z2VQb2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQThDNkIwMTFFM0MwODcwMDgx
MkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUMwQTE5NTgxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAvKiBJbnNwZWN0
b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzNFMEQxMTI0MDhFODYw
MDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE0REY3NzEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5o
IGluIEhlYWRlcnMgKi8sCkBAIC03MzY3LDYgKzc0MDMsNyBAQAogCQkJCTFBMjRCNUYzMTFGNTMx
RTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJE
NTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQzBBMTk1QzFDOTE2RTFCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI5MDMx
NjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTIzMjhGRjE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzQzMCw2ICs3NDY3LDcgQEAKIAkJCQkxQTJEODQzQTEyN0Y2NUQ1MDAxRUI5
NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEyRDgyQTcxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMkQ4MkE5MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUMwQTE5NDcxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjE2MUIwMTFGMzc2NjQw
MDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjE2
MkIxMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMkQ4NEEzMTI3RjZBRDEwMDFFQjk2MiAvKiBOUFZhcmlhbnREYXRhLmggaW4gSGVh
ZGVycyAqLywKQEAgLTc0NTgsNiArNzQ5Niw3IEBACiAJCQkJMUE4RUY5NkYxMjUyQUY2QjAwRjcw
NjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTE3OTc4MDEzN0VFODJDMDBGOTdENDUgLyogUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzNGOEM5MTE3M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTFDMEExOTU0MUM4RkZERkIwMEZFMEVCQiAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBRUZDQzEyMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBM0Q2MTAyMTNBN0NDMkEwMEY5NUQ0RSAvKiBQbHVnaW5Nb2R1bGVJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTA0Mzk3NjEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJv
Y2Vzcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODgwLDYgKzg5MTksNyBAQAogCQkJCTFBMkQ4MkE0
MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTYxMjdG
NEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUMw
QTE5NTMxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTgxMjdGNEVBQjAwMUVCOTYy
IC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MUIxMTFG
Mzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEyMTYyQjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTkxMjEsNiArOTE2MSw3IEBACiAJCQkJMUNBOEI5NDUxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFDODkxRDY1MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yVUlNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzBBMTk1NzFDOTAwNjhGMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQTk0NEExMTg4NEU0RjAwMEVEODZEQiAv
KiBXZWJJT1NFdmVudEZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REMzEyN0Ey
QTBFMDA4RkY0RjQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTky
MTYsNiArOTI1Nyw3IEBACiAJCQkJMUE1MkMwRjcxQTM4Q0RDNzAwMTYxNjBBIC8qIFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0M1NzE1QzExNUFE
QUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTEwMzJGMTgxODBGNzNCQjAwOTYxQkI3IC8qIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzBBMTk0NjFDOEZGMUE4MDBGRTBFQkIgLyogV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REODEy
N0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
REE5NDRBMzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0EwRUY4MDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTJlMTVhYzY3ZGVmNDk2MGFhMjE3NjE4YmI2ZjI1MTVjYmVhZGQ4YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCisKKyNp
bmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5n
UmVmUHJpdmF0ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9VVUlELmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0
aWMgaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oQWRvcHQs
IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoc3RyaW5nKS5sZWFrUmVmKCkpOworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWVSZWYgdG9KU1ZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwg
dG9KU1N0cmluZyhzdHJpbmcpLmdldCgpKTsKK30KKworV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlm
aWVyKQorICAgIDogbV9zZXNzaW9uSWRlbnRpZmllcihzZXNzaW9uSWRlbnRpZmllcikKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwor
fQorCitXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp+V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eSgpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZShKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgQVNTRVJUX0FSRyhhcmd1bWVudENvdW50LCBhcmd1bWVudENvdW50
ID09IDEpOworICAgIEFTU0VSVF9BUkcoYXJndW1lbnRzLCBKU1ZhbHVlSXNTdHJpbmcoY29udGV4
dCwgYXJndW1lbnRzWzBdKSk7CisKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gc2NyaXB0KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgcmV0dXJuIEpTRXZhbHVhdGVTY3JpcHQo
Y29udGV4dCwgc2NyaXB0LmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCBleGNlcHRpb24pOwor
fQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjcmVhdGVVVUlEKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICByZXR1cm4gdG9KU1ZhbHVlKGNvbnRleHQsIFdlYkNvcmU6OmNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpKTsKK30KKworSlNP
YmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2NyaXB0T2JqZWN0Rm9yRnJhbWUo
V2ViRnJhbWUmIGZyYW1lKQoreworICAgIGlmIChKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBt
X3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLmdldChmcmFtZS5mcmFtZUlEKCkpKQorICAgICAgICBy
ZXR1cm4gc2NyaXB0T2JqZWN0OworCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gZnJhbWUuanNDb250ZXh0KCk7CisK
KyAgICBKU1ZhbHVlUmVmIHNlc3Npb25JZGVudGlmaWVyID0gdG9KU1ZhbHVlKGNvbnRleHQsIG1f
c2Vzc2lvbklkZW50aWZpZXIpOworICAgIEpTT2JqZWN0UmVmIGV2YWx1YXRlRnVuY3Rpb24gPSBK
U09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBudWxscHRyLCBldmFsdWF0
ZSk7CisgICAgSlNPYmplY3RSZWYgY3JlYXRlVVVJREZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVu
Y3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgbnVsbHB0ciwgY3JlYXRlVVVJRCk7CisKKyAgICBT
dHJpbmcgc2NyaXB0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSwgc2l6ZW9mKFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHlTY3JpcHRTb3VyY2UpKTsKKworICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1bmN0
aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCB0
b0pTU3RyaW5nKHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsICZleGNlcHRpb24p
KTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0
aW9uKSk7CisKKyAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdID0geyBzZXNzaW9uSWRlbnRpZmll
ciwgZXZhbHVhdGVGdW5jdGlvbiwgY3JlYXRlVVVJREZ1bmN0aW9uIH07CisgICAgSlNPYmplY3RS
ZWYgc2NyaXB0T2JqZWN0ID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNPYmplY3RDYWxsQXNG
dW5jdGlvbihjb250ZXh0LCBzY3JpcHRPYmplY3RGdW5jdGlvbiwgbnVsbHB0ciwgV1RGX0FSUkFZ
X0xFTkdUSChhcmd1bWVudHMpLCBhcmd1bWVudHMsICZleGNlcHRpb24pKTsKKyAgICBBU1NFUlQo
SlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNjcmlwdE9iamVjdCkpOworCisgICAgSlNWYWx1ZVBy
b3RlY3QoY29udGV4dCwgc2NyaXB0T2JqZWN0KTsKKyAgICBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0
TWFwLmFkZChmcmFtZS5mcmFtZUlEKCksIHNjcmlwdE9iamVjdCk7CisKKyAgICByZXR1cm4gc2Ny
aXB0T2JqZWN0OworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFy
V2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQoreworICAgIGlmIChKU09iamVj
dFJlZiBzY3JpcHRPYmplY3QgPSBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLnRha2UoZnJhbWUu
ZnJhbWVJRCgpKSkKKyAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChmcmFtZS5qc0NvbnRleHQoKSwg
c2NyaXB0T2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWNiZmVhNDc4OWRmZmQ5YWI1N2M0YzVlMDRm
OWJmNTcxZGM0YmZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5X2gKKyNkZWZp
bmUgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eV9oCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgor
ICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRp
Zmllcik7CisgICAgfldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkoKTsKKworICAgIFN0cmluZyBz
ZXNzaW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklkZW50aWZpZXI7IH0K
KworICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYpOworCitw
cml2YXRlOgorICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJik7
CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIC8vIENhbGxlZCBieSBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCisgICAgLy8gRklYTUU6IEFkZCBtZXNz
YWdlIGZ1bmN0aW9ucyBoZXJlLgorICAgIHZvaWQgdGVzdCgpIHsgfTsKKworICAgIFN0cmluZyBt
X3Nlc3Npb25JZGVudGlmaWVyOworCisgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBKU09i
amVjdFJlZj4gV2ViRnJhbWVTY3JpcHRPYmplY3RNYXA7CisgICAgV2ViRnJhbWVTY3JpcHRPYmpl
Y3RNYXAgbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5qcyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDJmMzJiN2UyMTNkMmFjMWM1Mjgy
M2FkOWE2MjQ3MDJjZmYzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLy8jIHNvdXJjZVVSTD1fX1dlYkF1dG9tYXRpb25JbmplY3Rl
ZFNjcmlwdF9fCisKKyhmdW5jdGlvbiAoc2Vzc2lvbklkZW50aWZpZXIsIGV2YWx1YXRlLCBjcmVh
dGVVVUlEKSB7CisKKy8vIFByb3RlY3QgYWdhaW5zdCBPYmplY3Qgb3ZlcndyaXR0ZW4gYnkgdGhl
IHBhZ2UuCitsZXQgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7CisKK2xldCBBdXRvbWF0aW9uU2Vz
c2lvblByb3h5ID0gY2xhc3MgQXV0b21hdGlvblNlc3Npb25Qcm94eQoreworICAgIC8vIFB1Ymxp
YworCisgICAgLy8gRklYTUU6IEFkZCBmdW5jdGlvbnMgaGVyZS4KK307CisKK3JldHVybiBuZXcg
QXV0b21hdGlvblNlc3Npb25Qcm94eTsKKworfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUzYzhjY2JiYmEzZDMxNGQwYThj
OWRkZWJmODQzOTVhNmI1ZTVjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSB7CisgICAgLy8gRklYTUU6
IEFkZCBtZXNzYWdlcyBoZXJlLgorICAgIFRlc3QoKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCBiODlkN2ExYjM3ZTMwM2M1YWE0OTU2M2NlODZhZTJhZGY0ZTllYjgw
Li5jZWNkN2UxODMzYTAzMGFkMDU2OGE2ODRhMzRjMGMyMmU5YWI5YmUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsdWdp
blZpZXcuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgiCkBAIC0xNTc5LDYgKzE1ODAsOSBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmCiAKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxv
YWRlckNsaWVudCgpLmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFt
ZSwgd29ybGQpOwogCisgICAgaWYgKGF1dG8gYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmF1dG9tYXRpb25TZXNzaW9uUHJveHkoKSkKKyAgICAgICAgYXV0
b21hdGlvblNlc3Npb25Qcm94eS0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSgqbV9mcmFt
ZSk7CisKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKEVGTCkpCiAgICAgLy8gRW5zdXJlIHRoZSBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeSBpcyB1
cGRhdGVkLgogICAgIHdlYlBhZ2UtPnVwZGF0ZUFjY2Vzc2liaWxpdHlUcmVlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0NWMwMjYxNDc4NWY2NzMyZDll
MDFkNjgwMTllNTg3OGMzMjAwYmVhLi4xZjFlZTVhZjFhOTM2NTFkN2NiNWMyOTU5MjM4MzdjOWVh
ZWIxZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRp
c3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgpAQCAtMTQzMyw2ICsxNDM0LDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5h
YmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2
CiB9CiAjZW5kaWYKIAordm9pZCBXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpCit7CisgICAgbV9hdXRvbWF0aW9u
U2Vzc2lvblByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
PihzZXNzaW9uSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveUF1dG9t
YXRpb25TZXNzaW9uUHJveHkoKQoreworICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IG51
bGxwdHI7Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKIHsKICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBmYTZkNmFjMTc3OTE4ZmRjNDgyY2JkZTljMDU1ODM4
NmRmMTYzOWY0Li43MzBlOWVmYjBiNDYwMzE1MzUyZmI2ZDdkNGM4ODAzODM4ZjkxYzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNzYsNiArNzYsNyBAQCBjbGFz
cyBJbmplY3RlZEJ1bmRsZTsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNz
IE9iakNPYmplY3RHcmFwaDsKIGNsYXNzIFVzZXJEYXRhOworY2xhc3MgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTsKIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKIGNsYXNzIFdlYkZy
YW1lOwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlUHJveHk7CkBAIC0yMDksNiArMjEwLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKTsKIAorICAgIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkqIGF1dG9tYXRpb25TZXNzaW9uUHJveHkoKSB7IHJldHVybiBt
X2F1dG9tYXRpb25TZXNzaW9uUHJveHkuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzKCk7CiAgICAgfldlYlByb2Nlc3MoKTsKQEAgLTI4Myw2ICsyODYsOSBAQCBwcml2YXRlOgog
ICAgIGVudW0gY2xhc3MgU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgeyBObywg
WWVzIH07CiAgICAgdm9pZCBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdl
V2hlblJlYWR5VG9TdXNwZW5kKTsKIAorICAgIHZvaWQgZW5zdXJlQXV0b21hdGlvblNlc3Npb25Q
cm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIGRlc3Ryb3lB
dXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CisKICAgICAvLyBDaGlsZFByb2Nlc3MKICAgICB2b2lk
IGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENo
aWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpAQCAtMzUyLDYg
KzM1OCw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fZG5zUHJlZmV0Y2hlZEhv
c3RzOwogICAgIFdlYkNvcmU6Okh5c3RlcmVzaXNBY3Rpdml0eSBtX2Ruc1ByZWZldGNoSHlzdGVy
ZXJpczsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PiBt
X2F1dG9tYXRpb25TZXNzaW9uUHJveHk7CisKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykK
ICAgICB2b2lkIGVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIFJl
ZlB0cjxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fd2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IGJjZjFhYjcwYWM2NzQ4NjhlMDQwMDY2ZDg2YjZiNjgzMmEyN2E1
ZjEuLjM5YWVkZDVlZmZlNjJhOGQ2NDA1MjlkNTU2ODZmMzgyZDFlOTcwMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTkyLDYg
KzkyLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25T
ZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29udGVudFNlcnZpY2VzKQogI2VuZGlmCiAKKyAgICBFbnN1
cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcikKKyAgICBE
ZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCisKICAgICBQcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5KCkgLT4gKGJvb2wgaGFuZGxlZCkKICAgICBQcmVwYXJlVG9TdXNwZW5kKCkKICAg
ICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkK
</data>
<flag name="commit-queue"
          id="298643"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>